diff --git a/servers/extracts/tomcat-8.5.27/.cargo b/servers/extracts/tomcat-8.5.27/.cargo deleted file mode 100644 index c3a09082a41401aca6ecb609d1baae8a5ad22675..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/.cargo +++ /dev/null @@ -1 +0,0 @@ -Do not remove this file \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/LICENSE b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/LICENSE deleted file mode 100644 index e6a6baf74814df2708effe0814a7bc89991b8e61..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/LICENSE +++ /dev/null @@ -1,1061 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - -APACHE TOMCAT SUBCOMPONENTS: - -Apache Tomcat includes a number of subcomponents with separate copyright notices -and license terms. Your use of these subcomponents is subject to the terms and -conditions of the following licenses. - - -For the Eclipse JDT Core Batch Compiler (ecj-x.x.x.jar) component: - -Eclipse Public License - v 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation -distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are -distributed by that particular Contributor. A Contribution 'originates' from a -Contributor if it was added to the Program by such Contributor itself or anyone -acting on such Contributor's behalf. Contributions do not include additions to -the Program which: (i) are separate modules of software distributed in -conjunction with the Program under their own license agreement, and (ii) are not -derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - -a) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free copyright license to -reproduce, prepare derivative works of, publicly display, publicly perform, -distribute and sublicense the Contribution of such Contributor, if any, and such -derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed -Patents to make, use, sell, offer to sell, import and otherwise transfer the -Contribution of such Contributor, if any, in source code and object code form. -This patent license shall apply to the combination of the Contribution and the -Program if, at the time the Contribution is added by the Contributor, such -addition of the Contribution causes such combination to be covered by the -Licensed Patents. The patent license shall not apply to any other combinations -which include the Contribution. No hardware per se is licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses to -its Contributions set forth herein, no assurances are provided by any -Contributor that the Program does not infringe the patent or other intellectual -property rights of any other entity. Each Contributor disclaims any liability to -Recipient for claims brought by any other entity based on infringement of -intellectual property rights or otherwise. As a condition to exercising the -rights and licenses granted hereunder, each Recipient hereby assumes sole -responsibility to secure any other intellectual property rights needed, if any. -For example, if a third party patent license is required to allow Recipient to -distribute the Program, it is Recipient's responsibility to acquire that license -before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient copyright -rights in its Contribution, if any, to grant the copyright license set forth in -this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under its -own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: - -i) effectively disclaims on behalf of all Contributors all warranties and -conditions, express and implied, including warranties or conditions of title and -non-infringement, and implied warranties or conditions of merchantability and -fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for -damages, including direct, indirect, special, incidental and consequential -damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered by -that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such Contributor, -and informs licensees how to obtain it in a reasonable manner on or through a -medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within the -Program. - -Each Contributor must identify itself as the originator of its Contribution, if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, if -a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, damages -and costs (collectively "Losses") arising from claims, lawsuits and other legal -actions brought by a third party against the Indemnified Contributor to the -extent caused by the acts or omissions of such Commercial Contributor in -connection with its distribution of the Program in a commercial product -offering. The obligations in this section do not apply to any claims or Losses -relating to any actual or alleged intellectual property infringement. In order -to qualify, an Indemnified Contributor must: a) promptly notify the Commercial -Contributor in writing of such claim, and b) allow the Commercial Contributor -to control, and cooperate with the Commercial Contributor in, the defense and -any related settlement negotiations. The Indemnified Contributor may -participate in any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If that -Commercial Contributor then makes performance claims, or offers warranties -related to Product X, those performance claims and warranties are such -Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a court -requires any other Contributor to pay any damages as a result, the Commercial -Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using and -distributing the Program and assumes all risks associated with its exercise of -rights under this Agreement , including but not limited to the risks and costs -of program errors, compliance with applicable laws, damage to or loss of data, -programs or equipment, and unavailability or interruption of operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST -PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS -GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under applicable -law, it shall not affect the validity or enforceability of the remainder of the -terms of this Agreement, and without further action by the parties hereto, such -provision shall be reformed to the minimum extent necessary to make such -provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted under -Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue and -survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to time. -No one other than the Agreement Steward has the right to modify this Agreement. -The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation -may assign the responsibility to serve as the Agreement Steward to a suitable -separate entity. Each new version of the Agreement will be given a -distinguishing version number. The Program (including Contributions) may always -be distributed subject to the version of the Agreement under which it was -received. In addition, after a new version of the Agreement is published, -Contributor may elect to distribute the Program (including its Contributions) -under the new version. Except as expressly stated in Sections 2(a) and 2(b) -above, Recipient receives no rights or licenses to the intellectual property of -any Contributor under this Agreement, whether expressly, by implication, -estoppel or otherwise. All rights in the Program not expressly granted under -this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. - - -For the Windows Installer component: - - * All NSIS source code, plug-ins, documentation, examples, header files and - graphics, with the exception of the compression modules and where - otherwise noted, are licensed under the zlib/libpng license. - * The zlib compression module for NSIS is licensed under the zlib/libpng - license. - * The bzip2 compression module for NSIS is licensed under the bzip2 license. - * The lzma compression module for NSIS is licensed under the Common Public - License version 1.0. - -zlib/libpng license - -This software is provided 'as-is', without any express or implied warranty. In -no event will the authors be held liable for any damages arising from the use of -this software. - -Permission is granted to anyone to use this software for any purpose, including -commercial applications, and to alter it and redistribute it freely, subject to -the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not claim - that you wrote the original software. If you use this software in a - product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - -bzip2 license - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - 2. The origin of this software must not be misrepresented; you must not claim - that you wrote the original software. If you use this software in a - product, an acknowledgment in the product documentation would be - appreciated but is not required. - 3. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 4. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT -SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT -OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGE. - -Julian Seward, Cambridge, UK. - -jseward@acm.org -Common Public License version 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation -distributed under this Agreement, and b) in the case of each subsequent -Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are -distributed by that particular Contributor. A Contribution 'originates' from a -Contributor if it was added to the Program by such Contributor itself or anyone -acting on such Contributor's behalf. Contributions do not include additions to -the Program which: (i) are separate modules of software distributed in -conjunction with the Program under their own license agreement, and (ii) are not -derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents " mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - -a) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free copyright license to -reproduce, prepare derivative works of, publicly display, publicly perform, -distribute and sublicense the Contribution of such Contributor, if any, and such -derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed -Patents to make, use, sell, offer to sell, import and otherwise transfer the -Contribution of such Contributor, if any, in source code and object code form. -This patent license shall apply to the combination of the Contribution and the -Program if, at the time the Contribution is added by the Contributor, such -addition of the Contribution causes such combination to be covered by the -Licensed Patents. The patent license shall not apply to any other combinations -which include the Contribution. No hardware per se is licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses to -its Contributions set forth herein, no assurances are provided by any -Contributor that the Program does not infringe the patent or other intellectual -property rights of any other entity. Each Contributor disclaims any liability to -Recipient for claims brought by any other entity based on infringement of -intellectual property rights or otherwise. As a condition to exercising the -rights and licenses granted hereunder, each Recipient hereby assumes sole -responsibility to secure any other intellectual property rights needed, if any. -For example, if a third party patent license is required to allow Recipient to -distribute the Program, it is Recipient's responsibility to acquire that license -before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient copyright -rights in its Contribution, if any, to grant the copyright license set forth in -this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under its -own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: - -i) effectively disclaims on behalf of all Contributors all warranties and -conditions, express and implied, including warranties or conditions of title and -non-infringement, and implied warranties or conditions of merchantability and -fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for -damages, including direct, indirect, special, incidental and consequential -damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered by -that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such Contributor, -and informs licensees how to obtain it in a reasonable manner on or through a -medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within the -Program. - -Each Contributor must identify itself as the originator of its Contribution, if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, if -a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, damages -and costs (collectively "Losses") arising from claims, lawsuits and other legal -actions brought by a third party against the Indemnified Contributor to the -extent caused by the acts or omissions of such Commercial Contributor in -connection with its distribution of the Program in a commercial product -offering. The obligations in this section do not apply to any claims or Losses -relating to any actual or alleged intellectual property infringement. In order -to qualify, an Indemnified Contributor must: a) promptly notify the Commercial -Contributor in writing of such claim, and b) allow the Commercial Contributor to -control, and cooperate with the Commercial Contributor in, the defense and any -related settlement negotiations. The Indemnified Contributor may participate in -any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If that -Commercial Contributor then makes performance claims, or offers warranties -related to Product X, those performance claims and warranties are such -Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a court -requires any other Contributor to pay any damages as a result, the Commercial -Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using and -distributing the Program and assumes all risks associated with its exercise of -rights under this Agreement, including but not limited to the risks and costs of -program errors, compliance with applicable laws, damage to or loss of data, -programs or equipment, and unavailability or interruption of operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST -PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS -GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under applicable -law, it shall not affect the validity or enforceability of the remainder of the -terms of this Agreement, and without further action by the parties hereto, such -provision shall be reformed to the minimum extent necessary to make such -provision valid and enforceable. - -If Recipient institutes patent litigation against a Contributor with respect to -a patent applicable to software (including a cross-claim or counterclaim in a -lawsuit), then any patent licenses granted by that Contributor to such Recipient -under this Agreement shall terminate as of the date such litigation is filed. In -addition, if Recipient institutes patent litigation against any entity -(including a cross-claim or counterclaim in a lawsuit) alleging that the Program -itself (excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted under -Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue and -survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to time. -No one other than the Agreement Steward has the right to modify this Agreement. -IBM is the initial Agreement Steward. IBM may assign the responsibility to serve -as the Agreement Steward to a suitable separate entity. Each new version of the -Agreement will be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the Agreement -under which it was received. In addition, after a new version of the Agreement -is published, Contributor may elect to distribute the Program (including its -Contributions) under the new version. Except as expressly stated in Sections -2(a) and 2(b) above, Recipient receives no rights or licenses to the -intellectual property of any Contributor under this Agreement, whether -expressly, by implication, estoppel or otherwise. All rights in the Program not -expressly granted under this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. - -Special exception for LZMA compression module - -Igor Pavlov and Amir Szekely, the authors of the LZMA compression module for -NSIS, expressly permit you to statically or dynamically link your code (or bind -by name) to the files from the LZMA compression module for NSIS without -subjecting your linked code to the terms of the Common Public license version -1.0. Any modifications or additions to files from the LZMA compression module -for NSIS, however, are subject to the terms of the Common Public License version -1.0. - - -For the following XML Schemas for Java EE Deployment Descriptors: - - javaee_5.xsd - - javaee_web_services_1_2.xsd - - javaee_web_services_client_1_2.xsd - - javaee_6.xsd - - javaee_web_services_1_3.xsd - - javaee_web_services_client_1_3.xsd - - jsp_2_2.xsd - - web-app_3_0.xsd - - web-common_3_0.xsd - - web-fragment_3_0.xsd - - javaee_7.xsd - - javaee_web_services_1_4.xsd - - javaee_web_services_client_1_4.xsd - - jsp_2_3.xsd - - web-app_3_1.xsd - - web-common_3_1.xsd - - web-fragment_3_1.xsd - - javaee_8.xsd - - web-app_4_0.xsd - - web-common_4_0.xsd - - web-fragment_4_0.xsd - -COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 - -1. Definitions. - - 1.1. Contributor. means each individual or entity that creates or contributes - to the creation of Modifications. - - 1.2. Contributor Version. means the combination of the Original Software, - prior Modifications used by a Contributor (if any), and the - Modifications made by that particular Contributor. - - 1.3. Covered Software. means (a) the Original Software, or (b) Modifications, - or (c) the combination of files containing Original Software with files - containing Modifications, in each case including portions thereof. - - 1.4. Executable. means the Covered Software in any form other than Source - Code. - - 1.5. Initial Developer. means the individual or entity that first makes - Original Software available under this License. - - 1.6. Larger Work. means a work which combines Covered Software or portions - thereof with code not governed by the terms of this License. - - 1.7. License. means this document. - - 1.8. Licensable. means having the right to grant, to the maximum extent - possible, whether at the time of the initial grant or subsequently - acquired, any and all of the rights conveyed herein. - - 1.9. Modifications. means the Source Code and Executable form of any of the - following: - - A. Any file that results from an addition to, deletion from or - modification of the contents of a file containing Original Software - or previous Modifications; - - B. Any new file that contains any part of the Original Software or - previous Modification; or - - C. Any new file that is contributed or otherwise made available under - the terms of this License. - - 1.10. Original Software. means the Source Code and Executable form of - computer software code that is originally released under this License. - - 1.11. Patent Claims. means any patent claim(s), now owned or hereafter - acquired, including without limitation, method, process, and apparatus - claims, in any patent Licensable by grantor. - - 1.12. Source Code. means (a) the common form of computer software code in - which modifications are made and (b) associated documentation included - in or with such code. - - 1.13. You. (or .Your.) means an individual or a legal entity exercising - rights under, and complying with all of the terms of, this License. For - legal entities, .You. includes any entity which controls, is controlled - by, or is under common control with You. For purposes of this - definition, .control. means (a) the power, direct or indirect, to cause - the direction or management of such entity, whether by contract or - otherwise, or (b) ownership of more than fifty percent (50%) of the - outstanding shares or beneficial ownership of such entity. - -2. License Grants. - - 2.1. The Initial Developer Grant. - - Conditioned upon Your compliance with Section 3.1 below and subject to - third party intellectual property claims, the Initial Developer hereby - grants You a world-wide, royalty-free, non-exclusive license: - - (a) under intellectual property rights (other than patent or trademark) - Licensable by Initial Developer, to use, reproduce, modify, display, - perform, sublicense and distribute the Original Software (or - portions thereof), with or without Modifications, and/or as part of - a Larger Work; and - - (b) under Patent Claims infringed by the making, using or selling of - Original Software, to make, have made, use, practice, sell, and - offer for sale, and/or otherwise dispose of the Original Software - (or portions thereof). - - (c) The licenses granted in Sections 2.1(a) and (b) are effective on the - date Initial Developer first distributes or otherwise makes the - Original Software available to a third party under the terms of this - License. - - (d) Notwithstanding Section 2.1(b) above, no patent license is granted: - (1) for code that You delete from the Original Software, or (2) for - infringements caused by: (i) the modification of the Original - Software, or (ii) the combination of the Original Software with - other software or devices. - - 2.2. Contributor Grant. - - Conditioned upon Your compliance with Section 3.1 below and subject to third - party intellectual property claims, each Contributor hereby grants You a - world-wide, royalty-free, non-exclusive license: - - (a) under intellectual property rights (other than patent or trademark) - Licensable by Contributor to use, reproduce, modify, display, - perform, sublicense and distribute the Modifications created by such - Contributor (or portions thereof), either on an unmodified basis, - with other Modifications, as Covered Software and/or as part of a - Larger Work; and - - (b) under Patent Claims infringed by the making, using, or selling of - Modifications made by that Contributor either alone and/or in - combination with its Contributor Version (or portions of such - combination), to make, use, sell, offer for sale, have made, and/or - otherwise dispose of: (1) Modifications made by that Contributor (or - portions thereof); and (2) the combination of Modifications made by - that Contributor with its Contributor Version (or portions of such - combination). - - (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on - the date Contributor first distributes or otherwise makes the - Modifications available to a third party. - - (d) Notwithstanding Section 2.2(b) above, no patent license is granted: - (1) for any code that Contributor has deleted from the Contributor - Version; (2) for infringements caused by: (i) third party - modifications of Contributor Version, or (ii) the combination of - Modifications made by that Contributor with other software (except - as part of the Contributor Version) or other devices; or (3) under - Patent Claims infringed by Covered Software in the absence of - Modifications made by that Contributor. - -3. Distribution Obligations. - - 3.1. Availability of Source Code. - Any Covered Software that You distribute or otherwise make available in - Executable form must also be made available in Source Code form and that - Source Code form must be distributed only under the terms of this License. - You must include a copy of this License with every copy of the Source Code - form of the Covered Software You distribute or otherwise make available. - You must inform recipients of any such Covered Software in Executable form - as to how they can obtain such Covered Software in Source Code form in a - reasonable manner on or through a medium customarily used for software - exchange. - - 3.2. Modifications. - The Modifications that You create or to which You contribute are governed - by the terms of this License. You represent that You believe Your - Modifications are Your original creation(s) and/or You have sufficient - rights to grant the rights conveyed by this License. - - 3.3. Required Notices. - You must include a notice in each of Your Modifications that identifies - You as the Contributor of the Modification. You may not remove or alter - any copyright, patent or trademark notices contained within the Covered - Software, or any notices of licensing or any descriptive text giving - attribution to any Contributor or the Initial Developer. - - 3.4. Application of Additional Terms. - You may not offer or impose any terms on any Covered Software in Source - Code form that alters or restricts the applicable version of this License - or the recipients. rights hereunder. You may choose to offer, and to - charge a fee for, warranty, support, indemnity or liability obligations to - one or more recipients of Covered Software. However, you may do so only on - Your own behalf, and not on behalf of the Initial Developer or any - Contributor. You must make it absolutely clear that any such warranty, - support, indemnity or liability obligation is offered by You alone, and - You hereby agree to indemnify the Initial Developer and every Contributor - for any liability incurred by the Initial Developer or such Contributor as - a result of warranty, support, indemnity or liability terms You offer. - - 3.5. Distribution of Executable Versions. - You may distribute the Executable form of the Covered Software under the - terms of this License or under the terms of a license of Your choice, - which may contain terms different from this License, provided that You are - in compliance with the terms of this License and that the license for the - Executable form does not attempt to limit or alter the recipient.s rights - in the Source Code form from the rights set forth in this License. If You - distribute the Covered Software in Executable form under a different - license, You must make it absolutely clear that any terms which differ - from this License are offered by You alone, not by the Initial Developer - or Contributor. You hereby agree to indemnify the Initial Developer and - every Contributor for any liability incurred by the Initial Developer or - such Contributor as a result of any such terms You offer. - - 3.6. Larger Works. - You may create a Larger Work by combining Covered Software with other code - not governed by the terms of this License and distribute the Larger Work - as a single product. In such a case, You must make sure the requirements - of this License are fulfilled for the Covered Software. - -4. Versions of the License. - - 4.1. New Versions. - Sun Microsystems, Inc. is the initial license steward and may publish - revised and/or new versions of this License from time to time. Each - version will be given a distinguishing version number. Except as provided - in Section 4.3, no one other than the license steward has the right to - modify this License. - - 4.2. Effect of New Versions. - You may always continue to use, distribute or otherwise make the Covered - Software available under the terms of the version of the License under - which You originally received the Covered Software. If the Initial - Developer includes a notice in the Original Software prohibiting it from - being distributed or otherwise made available under any subsequent version - of the License, You must distribute and make the Covered Software - available under the terms of the version of the License under which You - originally received the Covered Software. Otherwise, You may also choose - to use, distribute or otherwise make the Covered Software available under - the terms of any subsequent version of the License published by the - license steward. - - 4.3. Modified Versions. - When You are an Initial Developer and You want to create a new license for - Your Original Software, You may create and use a modified version of this - License if You: (a) rename the license and remove any references to the - name of the license steward (except to note that the license differs from - this License); and (b) otherwise make it clear that the license contains - terms which differ from this License. - -5. DISCLAIMER OF WARRANTY. - - COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN .AS IS. BASIS, WITHOUT - WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT - LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, - MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK - AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD - ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL - DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY - SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN - ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED - HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -6. TERMINATION. - - 6.1. This License and the rights granted hereunder will terminate - automatically if You fail to comply with terms herein and fail to - cure such breach within 30 days of becoming aware of the breach. - Provisions which, by their nature, must remain in effect beyond the - termination of this License shall survive. - - 6.2. If You assert a patent infringement claim (excluding declaratory - judgment actions) against Initial Developer or a Contributor (the - Initial Developer or Contributor against whom You assert such claim - is referred to as .Participant.) alleging that the Participant - Software (meaning the Contributor Version where the Participant is a - Contributor or the Original Software where the Participant is the - Initial Developer) directly or indirectly infringes any patent, then - any and all rights granted directly or indirectly to You by such - Participant, the Initial Developer (if the Initial Developer is not - the Participant) and all Contributors under Sections 2.1 and/or 2.2 - of this License shall, upon 60 days notice from Participant terminate - prospectively and automatically at the expiration of such 60 day - notice period, unless if within such 60 day period You withdraw Your - claim with respect to the Participant Software against such - Participant either unilaterally or pursuant to a written agreement - with Participant. - - 6.3. In the event of termination under Sections 6.1 or 6.2 above, all end - user licenses that have been validly granted by You or any - distributor hereunder prior to termination (excluding licenses - granted to You by any distributor) shall survive termination. - -7. LIMITATION OF LIABILITY. - - UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING - NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY - OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF - ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, - INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT - LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, - COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR - LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF - SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR - DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY.S NEGLIGENCE TO THE EXTENT - APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE - EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS - EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. - -8. U.S. GOVERNMENT END USERS. - - The Covered Software is a .commercial item,. as that term is defined in 48 - C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer software. (as - that term is defined at 48 C.F.R. ? 252.227-7014(a)(1)) and commercial - computer software documentation. as such terms are used in 48 C.F.R. 12.212 - (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 - through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered - Software with only those rights set forth herein. This U.S. Government Rights - clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or - provision that addresses Government rights in computer software under this - License. - -9. MISCELLANEOUS. - - This License represents the complete agreement concerning subject matter - hereof. If any provision of this License is held to be unenforceable, such - provision shall be reformed only to the extent necessary to make it - enforceable. This License shall be governed by the law of the jurisdiction - specified in a notice contained within the Original Software (except to the - extent applicable law, if any, provides otherwise), excluding such - jurisdiction's conflict-of-law provisions. Any litigation relating to this - License shall be subject to the jurisdiction of the courts located in the - jurisdiction and venue specified in a notice contained within the Original - Software, with the losing party responsible for costs, including, without - limitation, court costs and reasonable attorneys. fees and expenses. The - application of the United Nations Convention on Contracts for the - International Sale of Goods is expressly excluded. Any law or regulation - which provides that the language of a contract shall be construed against - the drafter shall not apply to this License. You agree that You alone are - responsible for compliance with the United States export administration - regulations (and the export control laws and regulation of any other - countries) when You use, distribute or otherwise make available any Covered - Software. - -10. RESPONSIBILITY FOR CLAIMS. - - As between Initial Developer and the Contributors, each party is responsible - for claims and damages arising, directly or indirectly, out of its - utilization of rights under this License and You agree to work with Initial - Developer and Contributors to distribute such responsibility on an equitable - basis. Nothing herein is intended or shall be deemed to constitute any - admission of liability. - - NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION - LICENSE (CDDL) - - The code released under the CDDL shall be governed by the laws of the State - of California (excluding conflict-of-law provisions). Any litigation relating - to this License shall be subject to the jurisdiction of the Federal Courts of - the Northern District of California and the state courts of the State of - California, with venue lying in Santa Clara County, California. - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/NOTICE b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/NOTICE deleted file mode 100644 index eca541e979912566e38b9a4551413bc17cfbe66c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/NOTICE +++ /dev/null @@ -1,51 +0,0 @@ -Apache Tomcat -Copyright 1999-2018 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -This software contains code derived from netty-native -developed by the Netty project -(http://netty.io, https://github.com/netty/netty-tcnative/) -and from finagle-native developed at Twitter -(https://github.com/twitter/finagle). - -The Windows Installer is built with the Nullsoft -Scriptable Install System (NSIS), which is -open source software. The original software and -related information is available at -http://nsis.sourceforge.net. - -Java compilation software for JSP pages is provided by the Eclipse -JDT Core Batch Compiler component, which is open source software. -The original software and related information is available at -http://www.eclipse.org/jdt/core/. - -For portions of the Tomcat JNI OpenSSL API and the OpenSSL JSSE integration -The org.apache.tomcat.jni and the org.apache.tomcat.net.openssl packages -are derivative work originating from the Netty project and the finagle-native -project developed at Twitter -* Copyright 2014 The Netty Project -* Copyright 2014 Twitter - -The original XML Schemas for Java EE Deployment Descriptors: - - javaee_5.xsd - - javaee_web_services_1_2.xsd - - javaee_web_services_client_1_2.xsd - - javaee_6.xsd - - javaee_web_services_1_3.xsd - - javaee_web_services_client_1_3.xsd - - jsp_2_2.xsd - - web-app_3_0.xsd - - web-common_3_0.xsd - - web-fragment_3_0.xsd - - javaee_7.xsd - - javaee_web_services_1_4.xsd - - javaee_web_services_client_1_4.xsd - - jsp_2_3.xsd - - web-app_3_1.xsd - - web-common_3_1.xsd - - web-fragment_3_1.xsd - -may be obtained from: -http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/RELEASE-NOTES b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/RELEASE-NOTES deleted file mode 100644 index 7e7ff442c50856d38f3e57f52c7e7f88bb0b4b4e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/RELEASE-NOTES +++ /dev/null @@ -1,178 +0,0 @@ -================================================================================ - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -================================================================================ - - - Apache Tomcat Version 8.5.27 - Release Notes - - -========= -CONTENTS: -========= - -* Dependency Changes -* API Stability -* Bundled APIs -* Web application reloading and static fields in shared libraries -* Security manager URLs -* Symlinking static resources -* Viewing the Tomcat Change Log -* Cryptographic software notice -* When all else fails - - -=================== -Dependency Changes: -=================== -Tomcat 8.5 is designed to run on Java SE 7 and later. - - -============== -API Stability: -============== - -The public interfaces for the following classes are fixed and will not be -changed at all during the remaining lifetime of the 8.x series: -- All classes in the javax namespace - -The public interfaces for the following classes may be added to in order to -resolve bugs and/or add new features. No existing interface method will be -removed or changed although it may be deprecated. -- org.apache.catalina.* (excluding sub-packages) - -Note: As Tomcat 8 matures, the above list will be added to. The list is not - considered complete at this time. - -Note: A large number of deprecated methods, fields and configuration options - were removed in the transition from 8.0.x to 8.5.x. If any of those - removals triggers significant problems for the user community that the - deletion may be reverted in a later point release. - -The remaining classes are considered part of the Tomcat internals and may change -without notice between point releases. - - -============= -Bundled APIs: -============= -A standard installation of Tomcat 8.5 makes all of the following APIs available -for use by web applications (by placing them in "lib"): -* annotations-api.jar (Annotations package) -* catalina.jar (Tomcat Catalina implementation) -* catalina-ant.jar (Tomcat Catalina Ant tasks) -* catalina-ha.jar (High availability package) -* catalina-storeconfig.jar (Generation of XML configuration from current state) -* catalina-tribes.jar (Group communication) -* ecj-4.6.3.jar (Eclipse JDT Java compiler) -* el-api.jar (EL 3.0 API) -* jasper.jar (Jasper 2 Compiler and Runtime) -* jasper-el.jar (Jasper 2 EL implementation) -* jsp-api.jar (JSP 2.3 API) -* servlet-api.jar (Servlet 3.1 API) -* tomcat-api.jar (Interfaces shared by Catalina and Jasper) -* tomcat-coyote.jar (Tomcat connectors and utility classes) -* tomcat-dbcp.jar (package renamed database connection pool based on Commons DBCP) -* tomcat-jdbc.jar (Tomcat's database connection pooling solution) -* tomcat-jni.jar (Interface to the native component of the APR/native connector) -* tomcat-util.jar (Various utilities) -* tomcat-websocket.jar (WebSocket 1.1 implementation) -* websocket-api.jar (WebSocket 1.1 API) - -You can make additional APIs available to all of your web applications by -putting unpacked classes into a "classes" directory (not created by default), -or by placing them in JAR files in the "lib" directory. - -To override the XML parser implementation or interfaces, use the appropriate -feature for your JVM. For Java <= 8 use the endorsed standards override -feature. The default configuration defines JARs located in "endorsed" as endorsed. -For Java 9+ use the upgradeable modules feature. - - -================================================================ -Web application reloading and static fields in shared libraries: -================================================================ -Some shared libraries (many are part of the JDK) keep references to objects -instantiated by the web application. To avoid class loading related problems -(ClassCastExceptions, messages indicating that the classloader -is stopped, etc.), the shared libraries state should be reinitialized. - -Something which might help is to avoid putting classes which would be -referenced by a shared static field in the web application classloader, -and putting them in the shared classloader instead (JARs should be put in the -"lib" folder, and classes should be put in the "classes" folder). - - -====================== -Security manager URLs: -====================== -In order to grant security permissions to JARs located inside the -web application repository, use URLs of of the following format -in your policy file: - -file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar - - -============================ -Symlinking static resources: -============================ -By default, Unix symlinks will not work when used in a web application to link -resources located outside the web application root directory. - -This behavior is optional, and the "allowLinking" flag may be used to disable -the check. - - -============================== -Viewing the Tomcat Change Log: -============================== -The full change log is available from http://tomcat.apache.org and is also -included in the documentation web application. - - -============================= -Cryptographic software notice -============================= -This distribution includes cryptographic software. The country in -which you currently reside may have restrictions on the import, -possession, use, and/or re-export to another country, of -encryption software. BEFORE using any encryption software, please -check your country's laws, regulations and policies concerning the -import, possession, or use, and re-export of encryption software, to -see if this is permitted. See for more -information. - -The U.S. Government Department of Commerce, Bureau of Industry and -Security (BIS), has classified this software as Export Commodity -Control Number (ECCN) 5D002.C.1, which includes information security -software using or performing cryptographic functions with asymmetric -algorithms. The form and manner of this Apache Software Foundation -distribution makes it eligible for export under the License Exception -ENC Technology Software Unrestricted (TSU) exception (see the BIS -Export Administration Regulations, Section 740.13) for both object -code and source code. - -The following provides more details on the included cryptographic -software: - - Tomcat includes code designed to work with JSSE - - Tomcat includes code designed to work with OpenSSL - - -==================== -When all else fails: -==================== -See the FAQ -http://tomcat.apache.org/faq/ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/RUNNING.txt b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/RUNNING.txt deleted file mode 100644 index 720b06b08cdc9ad5a8ffd448955ad615004c0ad5..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/RUNNING.txt +++ /dev/null @@ -1,476 +0,0 @@ -================================================================================ - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -================================================================================ - - =================================================== - Running The Apache Tomcat 8.5 Servlet/JSP Container - =================================================== - -Apache Tomcat 8.5 requires a Java Standard Edition Runtime -Environment (JRE) version 7 or later. - -============================= -Running With JRE 7 Or Later -============================= - -(1) Download and Install a Java SE Runtime Environment (JRE) - -(1.1) Download a Java SE Runtime Environment (JRE), - release version 7 or later, from - http://www.oracle.com/technetwork/java/javase/downloads/index.html - -(1.2) Install the JRE according to the instructions included with the - release. - - You may also use a full Java Development Kit (JDK) rather than just - a JRE. - - -(2) Download and Install Apache Tomcat - -(2.1) Download a binary distribution of Tomcat from: - - http://tomcat.apache.org/ - -(2.2) Unpack the binary distribution so that it resides in its own - directory (conventionally named "apache-tomcat-[version]"). - - For the purposes of the remainder of this document, the name - "CATALINA_HOME" is used to refer to the full pathname of that - directory. - -NOTE: As an alternative to downloading a binary distribution, you can -create your own from the Tomcat source code, as described in -"BUILDING.txt". You can either - - a) Do the full "release" build and find the created distribution in the - "output/release" directory and then proceed with unpacking as above, or - - b) Do a simple build and use the "output/build" directory as - "CATALINA_HOME". Be warned that there are some differences between the - contents of the "output/build" directory and a full "release" - distribution. - - -(3) Configure Environment Variables - -Tomcat is a Java application and does not use environment variables directly. -Environment variables are used by the Tomcat startup scripts. The scripts use -the environment variables to prepare the command that starts Tomcat. - -(3.1) Set CATALINA_HOME (required) and CATALINA_BASE (optional) - -The CATALINA_HOME environment variable should be set to the location of the -root directory of the "binary" distribution of Tomcat. - -The Tomcat startup scripts have some logic to set this variable -automatically if it is absent, based on the location of the startup script -in *nix and on the current directory in Windows. That logic might not work -in all circumstances, so setting the variable explicitly is recommended. - -The CATALINA_BASE environment variable specifies location of the root -directory of the "active configuration" of Tomcat. It is optional. It -defaults to be equal to CATALINA_HOME. - -Using distinct values for the CATALINA_HOME and CATALINA_BASE variables is -recommended to simplify further upgrades and maintenance. It is documented -in the "Multiple Tomcat Instances" section below. - - -(3.2) Set JRE_HOME or JAVA_HOME (required) - -These variables are used to specify location of a Java Runtime -Environment or of a Java Development Kit that is used to start Tomcat. - -The JRE_HOME variable is used to specify location of a JRE. The JAVA_HOME -variable is used to specify location of a JDK. - -Using JAVA_HOME provides access to certain additional startup options that -are not allowed when JRE_HOME is used. - -If both JRE_HOME and JAVA_HOME are specified, JRE_HOME is used. - -The recommended place to specify these variables is a "setenv" script. See -below. - - -(3.3) Other variables (optional) - -Other environment variables exist, besides the four described above. -See the comments at the top of catalina.bat or catalina.sh scripts for -the list and a description of each of them. - -One frequently used variable is CATALINA_OPTS. It allows specification of -additional options for the java command that starts Tomcat. - -See the Java documentation for the options that affect the Java Runtime -Environment. - -See the "System Properties" page in the Tomcat Configuration Reference for -the system properties that are specific to Tomcat. - -A similar variable is JAVA_OPTS. It is used less frequently. It allows -specification of options that are used both to start and to stop Tomcat as well -as for other commands. - -Note: Do not use JAVA_OPTS to specify memory limits. You do not need much -memory for a small process that is used to stop Tomcat. Those settings -belong to CATALINA_OPTS. - -Another frequently used variable is CATALINA_PID (on *nix only). It -specifies the location of the file where process id of the forked Tomcat -java process will be written. This setting is optional. It will enable the -following features: - - * better protection against duplicate start attempts and - * allows forceful termination of Tomcat process when it does not react to - the standard shutdown command. - - -(3.4) Using the "setenv" script (optional, recommended) - -Apart from CATALINA_HOME and CATALINA_BASE, all environment variables can -be specified in the "setenv" script. The script is placed either into -CATALINA_BASE/bin or into CATALINA_HOME/bin directory and is named -setenv.bat (on Windows) or setenv.sh (on *nix). The file has to be -readable. - -By default the setenv script file is absent. If the script file is present -both in CATALINA_BASE and in CATALINA_HOME, the one in CATALINA_BASE is -preferred. - -For example, to configure the JRE_HOME and CATALINA_PID variables you can -create the following script file: - -On Windows, %CATALINA_BASE%\bin\setenv.bat: - - set "JRE_HOME=%ProgramFiles%\Java\jre7" - exit /b 0 - -On *nix, $CATALINA_BASE/bin/setenv.sh: - - JRE_HOME=/usr/java/latest - CATALINA_PID="$CATALINA_BASE/tomcat.pid" - - -The CATALINA_HOME and CATALINA_BASE variables cannot be configured in the -setenv script, because they are used to locate that file. - -All the environment variables described here and the "setenv" script are -used only if you use the standard scripts to launch Tomcat. For example, if -you have installed Tomcat as a service on Windows, the service wrapper -launches Java directly and does not use the script files. - - -(4) Start Up Tomcat - -(4.1) Tomcat can be started by executing one of the following commands: - - On Windows: - - %CATALINA_HOME%\bin\startup.bat - - or - - %CATALINA_HOME%\bin\catalina.bat start - - On *nix: - - $CATALINA_HOME/bin/startup.sh - - or - - $CATALINA_HOME/bin/catalina.sh start - -(4.2) After startup, the default web applications included with Tomcat will be - available by visiting: - - http://localhost:8080/ - -(4.3) Further information about configuring and running Tomcat can be found in - the documentation included here, as well as on the Tomcat web site: - - http://tomcat.apache.org/ - - -(5) Shut Down Tomcat - -(5.1) Tomcat can be shut down by executing one of the following commands: - - On Windows: - - %CATALINA_HOME%\bin\shutdown.bat - - or - - %CATALINA_HOME%\bin\catalina.bat stop - - On *nix: - - $CATALINA_HOME/bin/shutdown.sh - - or - - $CATALINA_HOME/bin/catalina.sh stop - -================================================== -Advanced Configuration - Multiple Tomcat Instances -================================================== - -In many circumstances, it is desirable to have a single copy of a Tomcat -binary distribution shared among multiple users on the same server. To make -this possible, you can set the CATALINA_BASE environment variable to the -directory that contains the files for your 'personal' Tomcat instance. - -When running with a separate CATALINA_HOME and CATALINA_BASE, the files -and directories are split as following: - -In CATALINA_BASE: - - * bin - Only the following files: - - * setenv.sh (*nix) or setenv.bat (Windows), - * tomcat-juli.jar - - The setenv scripts were described above. The tomcat-juli library - is documented in the Logging chapter in the User Guide. - - * conf - Server configuration files (including server.xml) - - * lib - Libraries and classes, as explained below - - * logs - Log and output files - - * webapps - Automatically loaded web applications - - * work - Temporary working directories for web applications - - * temp - Directory used by the JVM for temporary files (java.io.tmpdir) - - -In CATALINA_HOME: - - * bin - Startup and shutdown scripts - - The following files will be used only if they are absent in - CATALINA_BASE/bin: - - setenv.sh (*nix), setenv.bat (Windows), tomcat-juli.jar - - * lib - Libraries and classes, as explained below - - * endorsed - Libraries that override standard "Endorsed Standards" - libraries provided by JRE. See Classloading documentation - in the User Guide for details. - This is only supported for Java <= 8. - By default this "endorsed" directory is absent. - -In the default configuration the JAR libraries and classes both in -CATALINA_BASE/lib and in CATALINA_HOME/lib will be added to the common -classpath, but the ones in CATALINA_BASE will be added first and thus will -be searched first. - -The idea is that you may leave the standard Tomcat libraries in -CATALINA_HOME/lib and add other ones such as database drivers into -CATALINA_BASE/lib. - -In general it is advised to never share libraries between web applications, -but put them into WEB-INF/lib directories inside the applications. See -Classloading documentation in the User Guide for details. - - -It might be useful to note that the values of CATALINA_HOME and -CATALINA_BASE can be referenced in the XML configuration files processed -by Tomcat as ${catalina.home} and ${catalina.base} respectively. - -For example, the standard manager web application can be kept in -CATALINA_HOME/webapps/manager and loaded into CATALINA_BASE by using -the following trick: - - * Copy the CATALINA_HOME/webapps/manager/META-INF/context.xml - file as CATALINA_BASE/conf/Catalina/localhost/manager.xml - - * Add docBase attribute as shown below. - -The file will look like the following: - - - - - - -See Deployer chapter in User Guide and Context and Host chapters in the -Configuration Reference for more information on contexts and web -application deployment. - - -================ -Troubleshooting -================ - -There are only really 2 things likely to go wrong during the stand-alone -Tomcat install: - -(1) The most common hiccup is when another web server (or any process for that - matter) has laid claim to port 8080. This is the default HTTP port that - Tomcat attempts to bind to at startup. To change this, open the file: - - $CATALINA_HOME/conf/server.xml - - and search for '8080'. Change it to a port that isn't in use, and is - greater than 1024, as ports less than or equal to 1024 require superuser - access to bind under UNIX. - - Restart Tomcat and you're in business. Be sure that you replace the "8080" - in the URL you're using to access Tomcat. For example, if you change the - port to 1977, you would request the URL http://localhost:1977/ in your - browser. - -(2) The 'localhost' machine isn't found. This could happen if you're behind a - proxy. If that's the case, make sure the proxy configuration for your - browser knows that you shouldn't be going through the proxy to access the - "localhost". - - In Firefox, this is under Tools/Preferences -> Advanced/Network -> - Connection -> Settings..., and in Internet Explorer it is Tools -> - Internet Options -> Connections -> LAN Settings. - - -==================== -Optional Components -==================== - -The following optional components may be included with the Apache Tomcat binary -distribution. If they are not included, you can install them separately. - - 1. Apache Tomcat Native library - - 2. Apache Commons Daemon service launcher - -Both of them are implemented in C language and as such have to be compiled -into binary code. The binary code will be specific for a platform and CPU -architecture and it must match the Java Runtime Environment executables -that will be used to launch Tomcat. - -The Windows-specific binary distributions of Apache Tomcat include binary -files for these components. On other platforms you would have to look for -binary versions elsewhere or compile them yourself. - -If you are new to Tomcat, do not bother with these components to start with. -If you do use them, do not forget to read their documentation. - - -Apache Tomcat Native library ------------------------------ - -It is a library that allows to use the "Apr" variant of HTTP and AJP -protocol connectors in Apache Tomcat. It is built around OpenSSL and Apache -Portable Runtime (APR) libraries. Those are the same libraries as used by -Apache HTTPD Server project. - -This feature was especially important in the old days when Java performance -was poor. It is less important nowadays, but it is still used and respected -by many. See Tomcat documentation for more details. - -For further reading: - - - Apache Tomcat documentation - - * Documentation for APR/Native library in the Tomcat User's Guide - - http://tomcat.apache.org/tomcat-8.5-doc/apr.html - - * Documentation for the HTTP and AJP protocol connectors in the Tomcat - Configuration Reference - - http://tomcat.apache.org/tomcat-8.5-doc/config/http.html - - http://tomcat.apache.org/tomcat-8.5-doc/config/ajp.html - - - Apache Tomcat Native project home - - http://tomcat.apache.org/native-doc/ - - - Other projects - - * OpenSSL - - http://openssl.org/ - - * Apache Portable Runtime - - http://apr.apache.org/ - - * Apache HTTP Server - - http://httpd.apache.org/ - -To disable Apache Tomcat Native library: - - - To disable Apache Tomcat Native library when it is installed, or - - To remove the warning that is logged during Tomcat startup when the - library is not installed: - - Edit the "conf/server.xml" file and remove "AprLifecycleListener" from - it. - -The binary file of Apache Tomcat Native library is usually named - - - "tcnative-1.dll" on Windows - - "libtcnative-1.so" on *nix systems - - -Apache Commons Daemon ----------------------- - -Apache Commons Daemon project provides wrappers that can be used to -install Apache Tomcat as a service on Windows or as a daemon on *nix -systems. - -The Windows-specific implementation of Apache Commons Daemon is called -"procrun". The *nix-specific one is called "jsvc". - -For further reading: - - - Apache Commons Daemon project - - http://commons.apache.org/daemon/ - - - Apache Tomcat documentation - - * Installing Apache Tomcat - - http://tomcat.apache.org/tomcat-8.5-doc/setup.html - - * Windows service HOW-TO - - http://tomcat.apache.org/tomcat-8.5-doc/windows-service-howto.html - -The binary files of Apache Commons Daemon in Apache Tomcat distributions -for Windows are named: - - - "tomcat8.exe" - - "tomcat8w.exe" - -These files are renamed copies of "prunsrv.exe" and "prunmgr.exe" from -Apache Commons Daemon distribution. The file names have a meaning: they are -used as the service name to register the service in Windows, as well as the -key name to store distinct configuration for this installation of -"procrun". If you would like to install several instances of Tomcat 8.5 -in parallel, you have to further rename those files, using the same naming -scheme. diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/catalina.policy b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/catalina.policy deleted file mode 100644 index 8723122d532e2107fb1c641716699091f5a94d53..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/catalina.policy +++ /dev/null @@ -1,278 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// ============================================================================ -// catalina.policy - Security Policy Permissions for Tomcat -// -// This file contains a default set of security policies to be enforced (by the -// JVM) when Catalina is executed with the "-security" option. In addition -// to the permissions granted here, the following additional permissions are -// granted to each web application: -// -// * Read access to the web application's document root directory -// * Read, write and delete access to the web application's working directory -// ============================================================================ - - -// ========== SYSTEM CODE PERMISSIONS ========================================= - - -// These permissions apply to javac -grant codeBase "file:${java.home}/lib/-" { - permission java.security.AllPermission; -}; - -// These permissions apply to all shared system extensions -grant codeBase "file:${java.home}/jre/lib/ext/-" { - permission java.security.AllPermission; -}; - -// These permissions apply to javac when ${java.home] points at $JAVA_HOME/jre -grant codeBase "file:${java.home}/../lib/-" { - permission java.security.AllPermission; -}; - -// These permissions apply to all shared system extensions when -// ${java.home} points at $JAVA_HOME/jre -grant codeBase "file:${java.home}/lib/ext/-" { - permission java.security.AllPermission; -}; - - -// ========== CATALINA CODE PERMISSIONS ======================================= - - -// These permissions apply to the daemon code -grant codeBase "file:${catalina.home}/bin/commons-daemon.jar" { - permission java.security.AllPermission; -}; - -// These permissions apply to the logging API -// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home}, -// update this section accordingly. -// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..} -grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" { - permission java.io.FilePermission - "${java.home}${file.separator}lib${file.separator}logging.properties", "read"; - - permission java.io.FilePermission - "${catalina.base}${file.separator}conf${file.separator}logging.properties", "read"; - permission java.io.FilePermission - "${catalina.base}${file.separator}logs", "read, write"; - permission java.io.FilePermission - "${catalina.base}${file.separator}logs${file.separator}*", "read, write, delete"; - - permission java.lang.RuntimePermission "shutdownHooks"; - permission java.lang.RuntimePermission "getClassLoader"; - permission java.lang.RuntimePermission "setContextClassLoader"; - - permission java.lang.management.ManagementPermission "monitor"; - - permission java.util.logging.LoggingPermission "control"; - - permission java.util.PropertyPermission "java.util.logging.config.class", "read"; - permission java.util.PropertyPermission "java.util.logging.config.file", "read"; - permission java.util.PropertyPermission "org.apache.juli.AsyncLoggerPollInterval", "read"; - permission java.util.PropertyPermission "org.apache.juli.AsyncMaxRecordCount", "read"; - permission java.util.PropertyPermission "org.apache.juli.AsyncOverflowDropType", "read"; - permission java.util.PropertyPermission "org.apache.juli.ClassLoaderLogManager.debug", "read"; - permission java.util.PropertyPermission "catalina.base", "read"; - - // Note: To enable per context logging configuration, permit read access to - // the appropriate file. Be sure that the logging configuration is - // secure before enabling such access. - // E.g. for the examples web application (uncomment and unwrap - // the following to be on a single line): - // permission java.io.FilePermission "${catalina.base}${file.separator} - // webapps${file.separator}examples${file.separator}WEB-INF - // ${file.separator}classes${file.separator}logging.properties", "read"; -}; - -// These permissions apply to the server startup code -grant codeBase "file:${catalina.home}/bin/bootstrap.jar" { - permission java.security.AllPermission; -}; - -// These permissions apply to the servlet API classes -// and those that are shared across all class loaders -// located in the "lib" directory -grant codeBase "file:${catalina.home}/lib/-" { - permission java.security.AllPermission; -}; - - -// If using a per instance lib directory, i.e. ${catalina.base}/lib, -// then the following permission will need to be uncommented -// grant codeBase "file:${catalina.base}/lib/-" { -// permission java.security.AllPermission; -// }; - - -// ========== WEB APPLICATION PERMISSIONS ===================================== - - -// These permissions are granted by default to all web applications -// In addition, a web application will be given a read FilePermission -// for all files and directories in its document root. -grant { - // Required for JNDI lookup of named JDBC DataSource's and - // javamail named MimePart DataSource used to send mail - permission java.util.PropertyPermission "java.home", "read"; - permission java.util.PropertyPermission "java.naming.*", "read"; - permission java.util.PropertyPermission "javax.sql.*", "read"; - - // OS Specific properties to allow read access - permission java.util.PropertyPermission "os.name", "read"; - permission java.util.PropertyPermission "os.version", "read"; - permission java.util.PropertyPermission "os.arch", "read"; - permission java.util.PropertyPermission "file.separator", "read"; - permission java.util.PropertyPermission "path.separator", "read"; - permission java.util.PropertyPermission "line.separator", "read"; - - // JVM properties to allow read access - permission java.util.PropertyPermission "java.version", "read"; - permission java.util.PropertyPermission "java.vendor", "read"; - permission java.util.PropertyPermission "java.vendor.url", "read"; - permission java.util.PropertyPermission "java.class.version", "read"; - permission java.util.PropertyPermission "java.specification.version", "read"; - permission java.util.PropertyPermission "java.specification.vendor", "read"; - permission java.util.PropertyPermission "java.specification.name", "read"; - - permission java.util.PropertyPermission "java.vm.specification.version", "read"; - permission java.util.PropertyPermission "java.vm.specification.vendor", "read"; - permission java.util.PropertyPermission "java.vm.specification.name", "read"; - permission java.util.PropertyPermission "java.vm.version", "read"; - permission java.util.PropertyPermission "java.vm.vendor", "read"; - permission java.util.PropertyPermission "java.vm.name", "read"; - - // Required for OpenJMX - permission java.lang.RuntimePermission "getAttribute"; - - // Allow read of JAXP compliant XML parser debug - permission java.util.PropertyPermission "jaxp.debug", "read"; - - // All JSPs need to be able to read this package - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat"; - - // Precompiled JSPs need access to these packages. - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.el"; - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime"; - permission java.lang.RuntimePermission - "accessClassInPackage.org.apache.jasper.runtime.*"; - - // Precompiled JSPs need access to these system properties. - permission java.util.PropertyPermission - "org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER", "read"; - permission java.util.PropertyPermission - "org.apache.el.parser.COERCE_TO_ZERO", "read"; - - // The cookie code needs these. - permission java.util.PropertyPermission - "org.apache.catalina.STRICT_SERVLET_COMPLIANCE", "read"; - permission java.util.PropertyPermission - "org.apache.tomcat.util.http.ServerCookie.STRICT_NAMING", "read"; - permission java.util.PropertyPermission - "org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR", "read"; - - // Applications using WebSocket need to be able to access these packages - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket"; - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; - - // Applications need to access these packages to use the Servlet 4.0 Preview - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.servlet4preview"; - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.servlet4preview.http"; -}; - - -// The Manager application needs access to the following packages to support the -// session display functionality. It also requires the custom Tomcat -// DeployXmlPermission to enable the use of META-INF/context.xml -// These settings support the following configurations: -// - default CATALINA_HOME == CATALINA_BASE -// - CATALINA_HOME != CATALINA_BASE, per instance Manager in CATALINA_BASE -// - CATALINA_HOME != CATALINA_BASE, shared Manager in CATALINA_HOME -grant codeBase "file:${catalina.base}/webapps/manager/-" { - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina"; - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session"; - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager"; - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util"; - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util"; - permission org.apache.catalina.security.DeployXmlPermission "manager"; -}; -grant codeBase "file:${catalina.home}/webapps/manager/-" { - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina"; - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session"; - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager"; - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util"; - permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util"; - permission org.apache.catalina.security.DeployXmlPermission "manager"; -}; - -// The Host Manager application needs the custom Tomcat DeployXmlPermission to -// enable the use of META-INF/context.xml -// These settings support the following configurations: -// - default CATALINA_HOME == CATALINA_BASE -// - CATALINA_HOME != CATALINA_BASE, per instance Host Manager in CATALINA_BASE -// - CATALINA_HOME != CATALINA_BASE, shared Host Manager in CATALINA_HOME -grant codeBase "file:${catalina.base}/webapps/host-manager/-" { - permission org.apache.catalina.security.DeployXmlPermission "host-manager"; -}; -grant codeBase "file:${catalina.home}/webapps/host-manager/-" { - permission org.apache.catalina.security.DeployXmlPermission "host-manager"; -}; - - -// You can assign additional permissions to particular web applications by -// adding additional "grant" entries here, based on the code base for that -// application, /WEB-INF/classes/, or /WEB-INF/lib/ jar files. -// -// Different permissions can be granted to JSP pages, classes loaded from -// the /WEB-INF/classes/ directory, all jar files in the /WEB-INF/lib/ -// directory, or even to individual jar files in the /WEB-INF/lib/ directory. -// -// For instance, assume that the standard "examples" application -// included a JDBC driver that needed to establish a network connection to the -// corresponding database and used the scrape taglib to get the weather from -// the NOAA web server. You might create a "grant" entries like this: -// -// The permissions granted to the context root directory apply to JSP pages. -// grant codeBase "file:${catalina.base}/webapps/examples/-" { -// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect"; -// permission java.net.SocketPermission "*.noaa.gov:80", "connect"; -// }; -// -// The permissions granted to the context WEB-INF/classes directory -// grant codeBase "file:${catalina.base}/webapps/examples/WEB-INF/classes/-" { -// }; -// -// The permission granted to your JDBC driver -// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar!/-" { -// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect"; -// }; -// The permission granted to the scrape taglib -// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/scrape.jar!/-" { -// permission java.net.SocketPermission "*.noaa.gov:80", "connect"; -// }; - -// To grant permissions for web applications using packed WAR files, use the -// Tomcat specific WAR url scheme. -// -// The permissions granted to the entire web application -// grant codeBase "war:file:${catalina.base}/webapps/examples.war*/-" { -// }; -// -// The permissions granted to a specific JAR -// grant codeBase "war:file:${catalina.base}/webapps/examples.war*/WEB-INF/lib/foo.jar" { -// }; \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/catalina.properties b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/catalina.properties deleted file mode 100644 index 128dba10f296f48477f6bf31c0c7ae38c25acc0b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/catalina.properties +++ /dev/null @@ -1,152 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# -# List of comma-separated packages that start with or equal this string -# will cause a security exception to be thrown when -# passed to checkPackageAccess unless the -# corresponding RuntimePermission ("accessClassInPackage."+package) has -# been granted. -package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.tomcat. -# -# List of comma-separated packages that start with or equal this string -# will cause a security exception to be thrown when -# passed to checkPackageDefinition unless the -# corresponding RuntimePermission ("defineClassInPackage."+package) has -# been granted. -# -# by default, no packages are restricted for definition, and none of -# the class loaders supplied with the JDK call checkPackageDefinition. -# -package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,\ -org.apache.jasper.,org.apache.naming.,org.apache.tomcat. - -# -# -# List of comma-separated paths defining the contents of the "common" -# classloader. Prefixes should be used to define what is the repository type. -# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute. -# If left as blank,the JVM system loader will be used as Catalina's "common" -# loader. -# Examples: -# "foo": Add this folder as a class repository -# "foo/*.jar": Add all the JARs of the specified folder as class -# repositories -# "foo/bar.jar": Add bar.jar as a class repository -# -# Note: Values are enclosed in double quotes ("...") in case either the -# ${catalina.base} path or the ${catalina.home} path contains a comma. -# Because double quotes are used for quoting, the double quote character -# may not appear in a path. -common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar" - -# -# List of comma-separated paths defining the contents of the "server" -# classloader. Prefixes should be used to define what is the repository type. -# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute. -# If left as blank, the "common" loader will be used as Catalina's "server" -# loader. -# Examples: -# "foo": Add this folder as a class repository -# "foo/*.jar": Add all the JARs of the specified folder as class -# repositories -# "foo/bar.jar": Add bar.jar as a class repository -# -# Note: Values may be enclosed in double quotes ("...") in case either the -# ${catalina.base} path or the ${catalina.home} path contains a comma. -# Because double quotes are used for quoting, the double quote character -# may not appear in a path. -server.loader= - -# -# List of comma-separated paths defining the contents of the "shared" -# classloader. Prefixes should be used to define what is the repository type. -# Path may be relative to the CATALINA_BASE path or absolute. If left as blank, -# the "common" loader will be used as Catalina's "shared" loader. -# Examples: -# "foo": Add this folder as a class repository -# "foo/*.jar": Add all the JARs of the specified folder as class -# repositories -# "foo/bar.jar": Add bar.jar as a class repository -# Please note that for single jars, e.g. bar.jar, you need the URL form -# starting with file:. -# -# Note: Values may be enclosed in double quotes ("...") in case either the -# ${catalina.base} path or the ${catalina.home} path contains a comma. -# Because double quotes are used for quoting, the double quote character -# may not appear in a path. -shared.loader= - -# Default list of JAR files that should not be scanned using the JarScanner -# functionality. This is typically used to scan JARs for configuration -# information. JARs that do not contain such information may be excluded from -# the scan to speed up the scanning process. This is the default list. JARs on -# this list are excluded from all scans. The list must be a comma separated list -# of JAR file names. -# The list of JARs to skip may be over-ridden at a Context level for individual -# scan types by configuring a JarScanner with a nested JarScanFilter. -# The JARs listed below include: -# - Tomcat Bootstrap JARs -# - Tomcat API JARs -# - Catalina JARs -# - Jasper JARs -# - Tomcat JARs -# - Common non-Tomcat JARs -# - Test JARs (JUnit, Cobertura and dependencies) -tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\ -bootstrap.jar,commons-daemon.jar,tomcat-juli.jar,\ -annotations-api.jar,el-api.jar,jsp-api.jar,servlet-api.jar,websocket-api.jar,\ -jaspic-api.jar,\ -catalina.jar,catalina-ant.jar,catalina-ha.jar,catalina-storeconfig.jar,\ -catalina-tribes.jar,\ -jasper.jar,jasper-el.jar,ecj-*.jar,\ -tomcat-api.jar,tomcat-util.jar,tomcat-util-scan.jar,tomcat-coyote.jar,\ -tomcat-dbcp.jar,tomcat-jni.jar,tomcat-websocket.jar,\ -tomcat-i18n-en.jar,tomcat-i18n-es.jar,tomcat-i18n-fr.jar,tomcat-i18n-ja.jar,\ -tomcat-juli-adapters.jar,catalina-jmx-remote.jar,catalina-ws.jar,\ -tomcat-jdbc.jar,\ -tools.jar,\ -commons-beanutils*.jar,commons-codec*.jar,commons-collections*.jar,\ -commons-dbcp*.jar,commons-digester*.jar,commons-fileupload*.jar,\ -commons-httpclient*.jar,commons-io*.jar,commons-lang*.jar,commons-logging*.jar,\ -commons-math*.jar,commons-pool*.jar,\ -jstl.jar,taglibs-standard-spec-*.jar,\ -geronimo-spec-jaxrpc*.jar,wsdl4j*.jar,\ -ant.jar,ant-junit*.jar,aspectj*.jar,jmx.jar,h2*.jar,hibernate*.jar,httpclient*.jar,\ -jmx-tools.jar,jta*.jar,log4j*.jar,mail*.jar,slf4j*.jar,\ -xercesImpl.jar,xmlParserAPIs.jar,xml-apis.jar,\ -junit.jar,junit-*.jar,hamcrest-*.jar,easymock-*.jar,cglib-*.jar,\ -objenesis-*.jar,ant-launcher.jar,\ -cobertura-*.jar,asm-*.jar,dom4j-*.jar,icu4j-*.jar,jaxen-*.jar,jdom-*.jar,\ -jetty-*.jar,oro-*.jar,servlet-api-*.jar,tagsoup-*.jar,xmlParserAPIs-*.jar,\ -xom-*.jar - -# Default list of JAR files that should be scanned that overrides the default -# jarsToSkip list above. This is typically used to include a specific JAR that -# has been excluded by a broad file name pattern in the jarsToSkip list. -# The list of JARs to scan may be over-ridden at a Context level for individual -# scan types by configuring a JarScanner with a nested JarScanFilter. -tomcat.util.scan.StandardJarScanFilter.jarsToScan=\ -log4j-web*.jar,log4j-taglib*.jar,log4javascript*.jar,slf4j-taglib*.jar - -# String cache configuration. -tomcat.util.buf.StringCache.byte.enabled=true -#tomcat.util.buf.StringCache.char.enabled=true -#tomcat.util.buf.StringCache.trainThreshold=500000 -#tomcat.util.buf.StringCache.cacheSize=5000 - -# Allow for changes to HTTP request validation -# WARNING: Using this option will expose the server to CVE-2016-6816 -#tomcat.util.http.parser.HttpParser.requestTargetAllow=| diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/context.xml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/context.xml deleted file mode 100644 index 64de61ffef6ee1fbb652ea0a1c5b43da18092dab..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/context.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - WEB-INF/web.xml - ${catalina.base}/conf/web.xml - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/jaspic-providers.xml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/jaspic-providers.xml deleted file mode 100644 index cdebf872537969aba60edf8bf44029e4441925da..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/jaspic-providers.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/jaspic-providers.xsd b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/jaspic-providers.xsd deleted file mode 100644 index 1004a119149188c54a4ff541fbdd87553fe768da..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/jaspic-providers.xsd +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/logging.properties b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/logging.properties deleted file mode 100644 index a2ad9c27ab4f113261102eb0ab7d860bc888518b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/logging.properties +++ /dev/null @@ -1,70 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler - -.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler - -############################################################ -# Handler specific properties. -# Describes specific configuration info for Handlers. -############################################################ - -1catalina.org.apache.juli.AsyncFileHandler.level = FINE -1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs -1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina. - -2localhost.org.apache.juli.AsyncFileHandler.level = FINE -2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs -2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost. - -3manager.org.apache.juli.AsyncFileHandler.level = FINE -3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs -3manager.org.apache.juli.AsyncFileHandler.prefix = manager. - -4host-manager.org.apache.juli.AsyncFileHandler.level = FINE -4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs -4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager. - -java.util.logging.ConsoleHandler.level = FINE -java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter - - -############################################################ -# Facility specific properties. -# Provides extra control for each logger. -############################################################ - -org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO -org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler - -org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO -org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler - -org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO -org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler - -# For example, set the org.apache.catalina.util.LifecycleBase logger to log -# each component that extends LifecycleBase changing state: -#org.apache.catalina.util.LifecycleBase.level = FINE - -# To see debug messages in TldLocationsCache, uncomment the following line: -#org.apache.jasper.compiler.TldLocationsCache.level = FINE - -# To see debug messages for HTTP/2 handling, uncomment the following line: -#org.apache.coyote.http2.level = FINE - -# To see debug messages for WebSocket handling, uncomment the following line: -#org.apache.tomcat.websocket.level = FINE diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/server.xml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/server.xml deleted file mode 100644 index fce8922b01942ac2387dedec4c88e4ab9404be3c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/server.xml +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/tomcat-users.xml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/tomcat-users.xml deleted file mode 100644 index aef66d0f4c8831f593da674e66fb4432b37b796b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/tomcat-users.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/tomcat-users.xsd b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/tomcat-users.xsd deleted file mode 100644 index 948bd015217513b7e5c0029dd4d8c119b82b8199..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/tomcat-users.xsd +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/web.xml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/web.xml deleted file mode 100644 index 6e09cb2a397cd13bdba806d9ae65fd8dfea29f35..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/conf/web.xml +++ /dev/null @@ -1,4699 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - default - org.apache.catalina.servlets.DefaultServlet - - debug - 0 - - - listings - false - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - jsp - org.apache.jasper.servlet.JspServlet - - fork - false - - - xpoweredBy - false - - 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - default - / - - - - - jsp - *.jsp - *.jspx - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 30 - - - - - - - - - - - - - 123 - application/vnd.lotus-1-2-3 - - - 3dml - text/vnd.in3d.3dml - - - 3ds - image/x-3ds - - - 3g2 - video/3gpp2 - - - 3gp - video/3gpp - - - 7z - application/x-7z-compressed - - - aab - application/x-authorware-bin - - - aac - audio/x-aac - - - aam - application/x-authorware-map - - - aas - application/x-authorware-seg - - - abs - audio/x-mpeg - - - abw - application/x-abiword - - - ac - application/pkix-attr-cert - - - acc - application/vnd.americandynamics.acc - - - ace - application/x-ace-compressed - - - acu - application/vnd.acucobol - - - acutc - application/vnd.acucorp - - - adp - audio/adpcm - - - aep - application/vnd.audiograph - - - afm - application/x-font-type1 - - - afp - application/vnd.ibm.modcap - - - ahead - application/vnd.ahead.space - - - ai - application/postscript - - - aif - audio/x-aiff - - - aifc - audio/x-aiff - - - aiff - audio/x-aiff - - - aim - application/x-aim - - - air - application/vnd.adobe.air-application-installer-package+zip - - - ait - application/vnd.dvb.ait - - - ami - application/vnd.amiga.ami - - - anx - application/annodex - - - apk - application/vnd.android.package-archive - - - appcache - text/cache-manifest - - - application - application/x-ms-application - - - apr - application/vnd.lotus-approach - - - arc - application/x-freearc - - - art - image/x-jg - - - asc - application/pgp-signature - - - asf - video/x-ms-asf - - - asm - text/x-asm - - - aso - application/vnd.accpac.simply.aso - - - asx - video/x-ms-asf - - - atc - application/vnd.acucorp - - - atom - application/atom+xml - - - atomcat - application/atomcat+xml - - - atomsvc - application/atomsvc+xml - - - atx - application/vnd.antix.game-component - - - au - audio/basic - - - avi - video/x-msvideo - - - avx - video/x-rad-screenplay - - - aw - application/applixware - - - axa - audio/annodex - - - axv - video/annodex - - - azf - application/vnd.airzip.filesecure.azf - - - azs - application/vnd.airzip.filesecure.azs - - - azw - application/vnd.amazon.ebook - - - bat - application/x-msdownload - - - bcpio - application/x-bcpio - - - bdf - application/x-font-bdf - - - bdm - application/vnd.syncml.dm+wbxml - - - bed - application/vnd.realvnc.bed - - - bh2 - application/vnd.fujitsu.oasysprs - - - bin - application/octet-stream - - - blb - application/x-blorb - - - blorb - application/x-blorb - - - bmi - application/vnd.bmi - - - bmp - image/bmp - - - body - text/html - - - book - application/vnd.framemaker - - - box - application/vnd.previewsystems.box - - - boz - application/x-bzip2 - - - bpk - application/octet-stream - - - btif - image/prs.btif - - - bz - application/x-bzip - - - bz2 - application/x-bzip2 - - - c - text/x-c - - - c11amc - application/vnd.cluetrust.cartomobile-config - - - c11amz - application/vnd.cluetrust.cartomobile-config-pkg - - - c4d - application/vnd.clonk.c4group - - - c4f - application/vnd.clonk.c4group - - - c4g - application/vnd.clonk.c4group - - - c4p - application/vnd.clonk.c4group - - - c4u - application/vnd.clonk.c4group - - - cab - application/vnd.ms-cab-compressed - - - caf - audio/x-caf - - - cap - application/vnd.tcpdump.pcap - - - car - application/vnd.curl.car - - - cat - application/vnd.ms-pki.seccat - - - cb7 - application/x-cbr - - - cba - application/x-cbr - - - cbr - application/x-cbr - - - cbt - application/x-cbr - - - cbz - application/x-cbr - - - cc - text/x-c - - - cct - application/x-director - - - ccxml - application/ccxml+xml - - - cdbcmsg - application/vnd.contact.cmsg - - - cdf - application/x-cdf - - - cdkey - application/vnd.mediastation.cdkey - - - cdmia - application/cdmi-capability - - - cdmic - application/cdmi-container - - - cdmid - application/cdmi-domain - - - cdmio - application/cdmi-object - - - cdmiq - application/cdmi-queue - - - cdx - chemical/x-cdx - - - cdxml - application/vnd.chemdraw+xml - - - cdy - application/vnd.cinderella - - - cer - application/pkix-cert - - - cfs - application/x-cfs-compressed - - - cgm - image/cgm - - - chat - application/x-chat - - - chm - application/vnd.ms-htmlhelp - - - chrt - application/vnd.kde.kchart - - - cif - chemical/x-cif - - - cii - application/vnd.anser-web-certificate-issue-initiation - - - cil - application/vnd.ms-artgalry - - - cla - application/vnd.claymore - - - class - application/java - - - clkk - application/vnd.crick.clicker.keyboard - - - clkp - application/vnd.crick.clicker.palette - - - clkt - application/vnd.crick.clicker.template - - - clkw - application/vnd.crick.clicker.wordbank - - - clkx - application/vnd.crick.clicker - - - clp - application/x-msclip - - - cmc - application/vnd.cosmocaller - - - cmdf - chemical/x-cmdf - - - cml - chemical/x-cml - - - cmp - application/vnd.yellowriver-custom-menu - - - cmx - image/x-cmx - - - cod - application/vnd.rim.cod - - - com - application/x-msdownload - - - conf - text/plain - - - cpio - application/x-cpio - - - cpp - text/x-c - - - cpt - application/mac-compactpro - - - crd - application/x-mscardfile - - - crl - application/pkix-crl - - - crt - application/x-x509-ca-cert - - - cryptonote - application/vnd.rig.cryptonote - - - csh - application/x-csh - - - csml - chemical/x-csml - - - csp - application/vnd.commonspace - - - css - text/css - - - cst - application/x-director - - - csv - text/csv - - - cu - application/cu-seeme - - - curl - text/vnd.curl - - - cww - application/prs.cww - - - cxt - application/x-director - - - cxx - text/x-c - - - dae - model/vnd.collada+xml - - - daf - application/vnd.mobius.daf - - - dart - application/vnd.dart - - - dataless - application/vnd.fdsn.seed - - - davmount - application/davmount+xml - - - dbk - application/docbook+xml - - - dcr - application/x-director - - - dcurl - text/vnd.curl.dcurl - - - dd2 - application/vnd.oma.dd2+xml - - - ddd - application/vnd.fujixerox.ddd - - - deb - application/x-debian-package - - - def - text/plain - - - deploy - application/octet-stream - - - der - application/x-x509-ca-cert - - - dfac - application/vnd.dreamfactory - - - dgc - application/x-dgc-compressed - - - dib - image/bmp - - - dic - text/x-c - - - dir - application/x-director - - - dis - application/vnd.mobius.dis - - - dist - application/octet-stream - - - distz - application/octet-stream - - - djv - image/vnd.djvu - - - djvu - image/vnd.djvu - - - dll - application/x-msdownload - - - dmg - application/x-apple-diskimage - - - dmp - application/vnd.tcpdump.pcap - - - dms - application/octet-stream - - - dna - application/vnd.dna - - - doc - application/msword - - - docm - application/vnd.ms-word.document.macroenabled.12 - - - docx - application/vnd.openxmlformats-officedocument.wordprocessingml.document - - - dot - application/msword - - - dotm - application/vnd.ms-word.template.macroenabled.12 - - - dotx - application/vnd.openxmlformats-officedocument.wordprocessingml.template - - - dp - application/vnd.osgi.dp - - - dpg - application/vnd.dpgraph - - - dra - audio/vnd.dra - - - dsc - text/prs.lines.tag - - - dssc - application/dssc+der - - - dtb - application/x-dtbook+xml - - - dtd - application/xml-dtd - - - dts - audio/vnd.dts - - - dtshd - audio/vnd.dts.hd - - - dump - application/octet-stream - - - dv - video/x-dv - - - dvb - video/vnd.dvb.file - - - dvi - application/x-dvi - - - dwf - model/vnd.dwf - - - dwg - image/vnd.dwg - - - dxf - image/vnd.dxf - - - dxp - application/vnd.spotfire.dxp - - - dxr - application/x-director - - - ecelp4800 - audio/vnd.nuera.ecelp4800 - - - ecelp7470 - audio/vnd.nuera.ecelp7470 - - - ecelp9600 - audio/vnd.nuera.ecelp9600 - - - ecma - application/ecmascript - - - edm - application/vnd.novadigm.edm - - - edx - application/vnd.novadigm.edx - - - efif - application/vnd.picsel - - - ei6 - application/vnd.pg.osasli - - - elc - application/octet-stream - - - emf - application/x-msmetafile - - - eml - message/rfc822 - - - emma - application/emma+xml - - - emz - application/x-msmetafile - - - eol - audio/vnd.digital-winds - - - eot - application/vnd.ms-fontobject - - - eps - application/postscript - - - epub - application/epub+zip - - - es3 - application/vnd.eszigno3+xml - - - esa - application/vnd.osgi.subsystem - - - esf - application/vnd.epson.esf - - - et3 - application/vnd.eszigno3+xml - - - etx - text/x-setext - - - eva - application/x-eva - - - evy - application/x-envoy - - - exe - application/octet-stream - - - exi - application/exi - - - ext - application/vnd.novadigm.ext - - - ez - application/andrew-inset - - - ez2 - application/vnd.ezpix-album - - - ez3 - application/vnd.ezpix-package - - - f - text/x-fortran - - - f4v - video/x-f4v - - - f77 - text/x-fortran - - - f90 - text/x-fortran - - - fbs - image/vnd.fastbidsheet - - - fcdt - application/vnd.adobe.formscentral.fcdt - - - fcs - application/vnd.isac.fcs - - - fdf - application/vnd.fdf - - - fe_launch - application/vnd.denovo.fcselayout-link - - - fg5 - application/vnd.fujitsu.oasysgp - - - fgd - application/x-director - - - fh - image/x-freehand - - - fh4 - image/x-freehand - - - fh5 - image/x-freehand - - - fh7 - image/x-freehand - - - fhc - image/x-freehand - - - fig - application/x-xfig - - - flac - audio/flac - - - fli - video/x-fli - - - flo - application/vnd.micrografx.flo - - - flv - video/x-flv - - - flw - application/vnd.kde.kivio - - - flx - text/vnd.fmi.flexstor - - - fly - text/vnd.fly - - - fm - application/vnd.framemaker - - - fnc - application/vnd.frogans.fnc - - - for - text/x-fortran - - - fpx - image/vnd.fpx - - - frame - application/vnd.framemaker - - - fsc - application/vnd.fsc.weblaunch - - - fst - image/vnd.fst - - - ftc - application/vnd.fluxtime.clip - - - fti - application/vnd.anser-web-funds-transfer-initiation - - - fvt - video/vnd.fvt - - - fxp - application/vnd.adobe.fxp - - - fxpl - application/vnd.adobe.fxp - - - fzs - application/vnd.fuzzysheet - - - g2w - application/vnd.geoplan - - - g3 - image/g3fax - - - g3w - application/vnd.geospace - - - gac - application/vnd.groove-account - - - gam - application/x-tads - - - gbr - application/rpki-ghostbusters - - - gca - application/x-gca-compressed - - - gdl - model/vnd.gdl - - - geo - application/vnd.dynageo - - - gex - application/vnd.geometry-explorer - - - ggb - application/vnd.geogebra.file - - - ggt - application/vnd.geogebra.tool - - - ghf - application/vnd.groove-help - - - gif - image/gif - - - gim - application/vnd.groove-identity-message - - - gml - application/gml+xml - - - gmx - application/vnd.gmx - - - gnumeric - application/x-gnumeric - - - gph - application/vnd.flographit - - - gpx - application/gpx+xml - - - gqf - application/vnd.grafeq - - - gqs - application/vnd.grafeq - - - gram - application/srgs - - - gramps - application/x-gramps-xml - - - gre - application/vnd.geometry-explorer - - - grv - application/vnd.groove-injector - - - grxml - application/srgs+xml - - - gsf - application/x-font-ghostscript - - - gtar - application/x-gtar - - - gtm - application/vnd.groove-tool-message - - - gtw - model/vnd.gtw - - - gv - text/vnd.graphviz - - - gxf - application/gxf - - - gxt - application/vnd.geonext - - - gz - application/x-gzip - - - h - text/x-c - - - h261 - video/h261 - - - h263 - video/h263 - - - h264 - video/h264 - - - hal - application/vnd.hal+xml - - - hbci - application/vnd.hbci - - - hdf - application/x-hdf - - - hh - text/x-c - - - hlp - application/winhlp - - - hpgl - application/vnd.hp-hpgl - - - hpid - application/vnd.hp-hpid - - - hps - application/vnd.hp-hps - - - hqx - application/mac-binhex40 - - - htc - text/x-component - - - htke - application/vnd.kenameaapp - - - htm - text/html - - - html - text/html - - - hvd - application/vnd.yamaha.hv-dic - - - hvp - application/vnd.yamaha.hv-voice - - - hvs - application/vnd.yamaha.hv-script - - - i2g - application/vnd.intergeo - - - icc - application/vnd.iccprofile - - - ice - x-conference/x-cooltalk - - - icm - application/vnd.iccprofile - - - ico - image/x-icon - - - ics - text/calendar - - - ief - image/ief - - - ifb - text/calendar - - - ifm - application/vnd.shana.informed.formdata - - - iges - model/iges - - - igl - application/vnd.igloader - - - igm - application/vnd.insors.igm - - - igs - model/iges - - - igx - application/vnd.micrografx.igx - - - iif - application/vnd.shana.informed.interchange - - - imp - application/vnd.accpac.simply.imp - - - ims - application/vnd.ms-ims - - - in - text/plain - - - ink - application/inkml+xml - - - inkml - application/inkml+xml - - - install - application/x-install-instructions - - - iota - application/vnd.astraea-software.iota - - - ipfix - application/ipfix - - - ipk - application/vnd.shana.informed.package - - - irm - application/vnd.ibm.rights-management - - - irp - application/vnd.irepository.package+xml - - - iso - application/x-iso9660-image - - - itp - application/vnd.shana.informed.formtemplate - - - ivp - application/vnd.immervision-ivp - - - ivu - application/vnd.immervision-ivu - - - jad - text/vnd.sun.j2me.app-descriptor - - - jam - application/vnd.jam - - - jar - application/java-archive - - - java - text/x-java-source - - - jisp - application/vnd.jisp - - - jlt - application/vnd.hp-jlyt - - - jnlp - application/x-java-jnlp-file - - - joda - application/vnd.joost.joda-archive - - - jpe - image/jpeg - - - jpeg - image/jpeg - - - jpg - image/jpeg - - - jpgm - video/jpm - - - jpgv - video/jpeg - - - jpm - video/jpm - - - js - application/javascript - - - jsf - text/plain - - - json - application/json - - - jsonml - application/jsonml+json - - - jspf - text/plain - - - kar - audio/midi - - - karbon - application/vnd.kde.karbon - - - kfo - application/vnd.kde.kformula - - - kia - application/vnd.kidspiration - - - kml - application/vnd.google-earth.kml+xml - - - kmz - application/vnd.google-earth.kmz - - - kne - application/vnd.kinar - - - knp - application/vnd.kinar - - - kon - application/vnd.kde.kontour - - - kpr - application/vnd.kde.kpresenter - - - kpt - application/vnd.kde.kpresenter - - - kpxx - application/vnd.ds-keypoint - - - ksp - application/vnd.kde.kspread - - - ktr - application/vnd.kahootz - - - ktx - image/ktx - - - ktz - application/vnd.kahootz - - - kwd - application/vnd.kde.kword - - - kwt - application/vnd.kde.kword - - - lasxml - application/vnd.las.las+xml - - - latex - application/x-latex - - - lbd - application/vnd.llamagraphics.life-balance.desktop - - - lbe - application/vnd.llamagraphics.life-balance.exchange+xml - - - les - application/vnd.hhe.lesson-player - - - lha - application/x-lzh-compressed - - - link66 - application/vnd.route66.link66+xml - - - list - text/plain - - - list3820 - application/vnd.ibm.modcap - - - listafp - application/vnd.ibm.modcap - - - lnk - application/x-ms-shortcut - - - log - text/plain - - - lostxml - application/lost+xml - - - lrf - application/octet-stream - - - lrm - application/vnd.ms-lrm - - - ltf - application/vnd.frogans.ltf - - - lvp - audio/vnd.lucent.voice - - - lwp - application/vnd.lotus-wordpro - - - lzh - application/x-lzh-compressed - - - m13 - application/x-msmediaview - - - m14 - application/x-msmediaview - - - m1v - video/mpeg - - - m21 - application/mp21 - - - m2a - audio/mpeg - - - m2v - video/mpeg - - - m3a - audio/mpeg - - - m3u - audio/x-mpegurl - - - m3u8 - application/vnd.apple.mpegurl - - - m4a - audio/mp4 - - - m4b - audio/mp4 - - - m4r - audio/mp4 - - - m4u - video/vnd.mpegurl - - - m4v - video/mp4 - - - ma - application/mathematica - - - mac - image/x-macpaint - - - mads - application/mads+xml - - - mag - application/vnd.ecowin.chart - - - maker - application/vnd.framemaker - - - man - text/troff - - - mar - application/octet-stream - - - mathml - application/mathml+xml - - - mb - application/mathematica - - - mbk - application/vnd.mobius.mbk - - - mbox - application/mbox - - - mc1 - application/vnd.medcalcdata - - - mcd - application/vnd.mcd - - - mcurl - text/vnd.curl.mcurl - - - mdb - application/x-msaccess - - - mdi - image/vnd.ms-modi - - - me - text/troff - - - mesh - model/mesh - - - meta4 - application/metalink4+xml - - - metalink - application/metalink+xml - - - mets - application/mets+xml - - - mfm - application/vnd.mfmp - - - mft - application/rpki-manifest - - - mgp - application/vnd.osgeo.mapguide.package - - - mgz - application/vnd.proteus.magazine - - - mid - audio/midi - - - midi - audio/midi - - - mie - application/x-mie - - - mif - application/x-mif - - - mime - message/rfc822 - - - mj2 - video/mj2 - - - mjp2 - video/mj2 - - - mk3d - video/x-matroska - - - mka - audio/x-matroska - - - mks - video/x-matroska - - - mkv - video/x-matroska - - - mlp - application/vnd.dolby.mlp - - - mmd - application/vnd.chipnuts.karaoke-mmd - - - mmf - application/vnd.smaf - - - mmr - image/vnd.fujixerox.edmics-mmr - - - mng - video/x-mng - - - mny - application/x-msmoney - - - mobi - application/x-mobipocket-ebook - - - mods - application/mods+xml - - - mov - video/quicktime - - - movie - video/x-sgi-movie - - - mp1 - audio/mpeg - - - mp2 - audio/mpeg - - - mp21 - application/mp21 - - - mp2a - audio/mpeg - - - mp3 - audio/mpeg - - - mp4 - video/mp4 - - - mp4a - audio/mp4 - - - mp4s - application/mp4 - - - mp4v - video/mp4 - - - mpa - audio/mpeg - - - mpc - application/vnd.mophun.certificate - - - mpe - video/mpeg - - - mpeg - video/mpeg - - - mpega - audio/x-mpeg - - - mpg - video/mpeg - - - mpg4 - video/mp4 - - - mpga - audio/mpeg - - - mpkg - application/vnd.apple.installer+xml - - - mpm - application/vnd.blueice.multipass - - - mpn - application/vnd.mophun.application - - - mpp - application/vnd.ms-project - - - mpt - application/vnd.ms-project - - - mpv2 - video/mpeg2 - - - mpy - application/vnd.ibm.minipay - - - mqy - application/vnd.mobius.mqy - - - mrc - application/marc - - - mrcx - application/marcxml+xml - - - ms - text/troff - - - mscml - application/mediaservercontrol+xml - - - mseed - application/vnd.fdsn.mseed - - - mseq - application/vnd.mseq - - - msf - application/vnd.epson.msf - - - msh - model/mesh - - - msi - application/x-msdownload - - - msl - application/vnd.mobius.msl - - - msty - application/vnd.muvee.style - - - mts - model/vnd.mts - - - mus - application/vnd.musician - - - musicxml - application/vnd.recordare.musicxml+xml - - - mvb - application/x-msmediaview - - - mwf - application/vnd.mfer - - - mxf - application/mxf - - - mxl - application/vnd.recordare.musicxml - - - mxml - application/xv+xml - - - mxs - application/vnd.triscape.mxs - - - mxu - video/vnd.mpegurl - - - n-gage - application/vnd.nokia.n-gage.symbian.install - - - n3 - text/n3 - - - nb - application/mathematica - - - nbp - application/vnd.wolfram.player - - - nc - application/x-netcdf - - - ncx - application/x-dtbncx+xml - - - nfo - text/x-nfo - - - ngdat - application/vnd.nokia.n-gage.data - - - nitf - application/vnd.nitf - - - nlu - application/vnd.neurolanguage.nlu - - - nml - application/vnd.enliven - - - nnd - application/vnd.noblenet-directory - - - nns - application/vnd.noblenet-sealer - - - nnw - application/vnd.noblenet-web - - - npx - image/vnd.net-fpx - - - nsc - application/x-conference - - - nsf - application/vnd.lotus-notes - - - ntf - application/vnd.nitf - - - nzb - application/x-nzb - - - oa2 - application/vnd.fujitsu.oasys2 - - - oa3 - application/vnd.fujitsu.oasys3 - - - oas - application/vnd.fujitsu.oasys - - - obd - application/x-msbinder - - - obj - application/x-tgif - - - oda - application/oda - - - - odb - application/vnd.oasis.opendocument.database - - - - odc - application/vnd.oasis.opendocument.chart - - - - odf - application/vnd.oasis.opendocument.formula - - - odft - application/vnd.oasis.opendocument.formula-template - - - - odg - application/vnd.oasis.opendocument.graphics - - - - odi - application/vnd.oasis.opendocument.image - - - - odm - application/vnd.oasis.opendocument.text-master - - - - odp - application/vnd.oasis.opendocument.presentation - - - - ods - application/vnd.oasis.opendocument.spreadsheet - - - - odt - application/vnd.oasis.opendocument.text - - - oga - audio/ogg - - - ogg - audio/ogg - - - ogv - video/ogg - - - - ogx - application/ogg - - - omdoc - application/omdoc+xml - - - onepkg - application/onenote - - - onetmp - application/onenote - - - onetoc - application/onenote - - - onetoc2 - application/onenote - - - opf - application/oebps-package+xml - - - opml - text/x-opml - - - oprc - application/vnd.palm - - - org - application/vnd.lotus-organizer - - - osf - application/vnd.yamaha.openscoreformat - - - osfpvg - application/vnd.yamaha.openscoreformat.osfpvg+xml - - - otc - application/vnd.oasis.opendocument.chart-template - - - otf - font/otf - - - - otg - application/vnd.oasis.opendocument.graphics-template - - - - oth - application/vnd.oasis.opendocument.text-web - - - oti - application/vnd.oasis.opendocument.image-template - - - - otp - application/vnd.oasis.opendocument.presentation-template - - - - ots - application/vnd.oasis.opendocument.spreadsheet-template - - - - ott - application/vnd.oasis.opendocument.text-template - - - oxps - application/oxps - - - oxt - application/vnd.openofficeorg.extension - - - p - text/x-pascal - - - p10 - application/pkcs10 - - - p12 - application/x-pkcs12 - - - p7b - application/x-pkcs7-certificates - - - p7c - application/pkcs7-mime - - - p7m - application/pkcs7-mime - - - p7r - application/x-pkcs7-certreqresp - - - p7s - application/pkcs7-signature - - - p8 - application/pkcs8 - - - pas - text/x-pascal - - - paw - application/vnd.pawaafile - - - pbd - application/vnd.powerbuilder6 - - - pbm - image/x-portable-bitmap - - - pcap - application/vnd.tcpdump.pcap - - - pcf - application/x-font-pcf - - - pcl - application/vnd.hp-pcl - - - pclxl - application/vnd.hp-pclxl - - - pct - image/pict - - - pcurl - application/vnd.curl.pcurl - - - pcx - image/x-pcx - - - pdb - application/vnd.palm - - - pdf - application/pdf - - - pfa - application/x-font-type1 - - - pfb - application/x-font-type1 - - - pfm - application/x-font-type1 - - - pfr - application/font-tdpfr - - - pfx - application/x-pkcs12 - - - pgm - image/x-portable-graymap - - - pgn - application/x-chess-pgn - - - pgp - application/pgp-encrypted - - - pic - image/pict - - - pict - image/pict - - - pkg - application/octet-stream - - - pki - application/pkixcmp - - - pkipath - application/pkix-pkipath - - - plb - application/vnd.3gpp.pic-bw-large - - - plc - application/vnd.mobius.plc - - - plf - application/vnd.pocketlearn - - - pls - audio/x-scpls - - - pml - application/vnd.ctc-posml - - - png - image/png - - - pnm - image/x-portable-anymap - - - pnt - image/x-macpaint - - - portpkg - application/vnd.macports.portpkg - - - pot - application/vnd.ms-powerpoint - - - potm - application/vnd.ms-powerpoint.template.macroenabled.12 - - - potx - application/vnd.openxmlformats-officedocument.presentationml.template - - - ppam - application/vnd.ms-powerpoint.addin.macroenabled.12 - - - ppd - application/vnd.cups-ppd - - - ppm - image/x-portable-pixmap - - - pps - application/vnd.ms-powerpoint - - - ppsm - application/vnd.ms-powerpoint.slideshow.macroenabled.12 - - - ppsx - application/vnd.openxmlformats-officedocument.presentationml.slideshow - - - ppt - application/vnd.ms-powerpoint - - - pptm - application/vnd.ms-powerpoint.presentation.macroenabled.12 - - - pptx - application/vnd.openxmlformats-officedocument.presentationml.presentation - - - pqa - application/vnd.palm - - - prc - application/x-mobipocket-ebook - - - pre - application/vnd.lotus-freelance - - - prf - application/pics-rules - - - ps - application/postscript - - - psb - application/vnd.3gpp.pic-bw-small - - - psd - image/vnd.adobe.photoshop - - - psf - application/x-font-linux-psf - - - pskcxml - application/pskc+xml - - - ptid - application/vnd.pvi.ptid1 - - - pub - application/x-mspublisher - - - pvb - application/vnd.3gpp.pic-bw-var - - - pwn - application/vnd.3m.post-it-notes - - - pya - audio/vnd.ms-playready.media.pya - - - pyv - video/vnd.ms-playready.media.pyv - - - qam - application/vnd.epson.quickanime - - - qbo - application/vnd.intu.qbo - - - qfx - application/vnd.intu.qfx - - - qps - application/vnd.publishare-delta-tree - - - qt - video/quicktime - - - qti - image/x-quicktime - - - qtif - image/x-quicktime - - - qwd - application/vnd.quark.quarkxpress - - - qwt - application/vnd.quark.quarkxpress - - - qxb - application/vnd.quark.quarkxpress - - - qxd - application/vnd.quark.quarkxpress - - - qxl - application/vnd.quark.quarkxpress - - - qxt - application/vnd.quark.quarkxpress - - - ra - audio/x-pn-realaudio - - - ram - audio/x-pn-realaudio - - - rar - application/x-rar-compressed - - - ras - image/x-cmu-raster - - - rcprofile - application/vnd.ipunplugged.rcprofile - - - rdf - application/rdf+xml - - - rdz - application/vnd.data-vision.rdz - - - rep - application/vnd.businessobjects - - - res - application/x-dtbresource+xml - - - rgb - image/x-rgb - - - rif - application/reginfo+xml - - - rip - audio/vnd.rip - - - ris - application/x-research-info-systems - - - rl - application/resource-lists+xml - - - rlc - image/vnd.fujixerox.edmics-rlc - - - rld - application/resource-lists-diff+xml - - - rm - application/vnd.rn-realmedia - - - rmi - audio/midi - - - rmp - audio/x-pn-realaudio-plugin - - - rms - application/vnd.jcp.javame.midlet-rms - - - rmvb - application/vnd.rn-realmedia-vbr - - - rnc - application/relax-ng-compact-syntax - - - roa - application/rpki-roa - - - roff - text/troff - - - rp9 - application/vnd.cloanto.rp9 - - - rpss - application/vnd.nokia.radio-presets - - - rpst - application/vnd.nokia.radio-preset - - - rq - application/sparql-query - - - rs - application/rls-services+xml - - - rsd - application/rsd+xml - - - rss - application/rss+xml - - - rtf - application/rtf - - - rtx - text/richtext - - - s - text/x-asm - - - s3m - audio/s3m - - - saf - application/vnd.yamaha.smaf-audio - - - sbml - application/sbml+xml - - - sc - application/vnd.ibm.secure-container - - - scd - application/x-msschedule - - - scm - application/vnd.lotus-screencam - - - scq - application/scvp-cv-request - - - scs - application/scvp-cv-response - - - scurl - text/vnd.curl.scurl - - - sda - application/vnd.stardivision.draw - - - sdc - application/vnd.stardivision.calc - - - sdd - application/vnd.stardivision.impress - - - sdkd - application/vnd.solent.sdkm+xml - - - sdkm - application/vnd.solent.sdkm+xml - - - sdp - application/sdp - - - sdw - application/vnd.stardivision.writer - - - see - application/vnd.seemail - - - seed - application/vnd.fdsn.seed - - - sema - application/vnd.sema - - - semd - application/vnd.semd - - - semf - application/vnd.semf - - - ser - application/java-serialized-object - - - setpay - application/set-payment-initiation - - - setreg - application/set-registration-initiation - - - sfd-hdstx - application/vnd.hydrostatix.sof-data - - - sfs - application/vnd.spotfire.sfs - - - sfv - text/x-sfv - - - sgi - image/sgi - - - sgl - application/vnd.stardivision.writer-global - - - sgm - text/sgml - - - sgml - text/sgml - - - sh - application/x-sh - - - shar - application/x-shar - - - shf - application/shf+xml - - - - sid - image/x-mrsid-image - - - sig - application/pgp-signature - - - sil - audio/silk - - - silo - model/mesh - - - sis - application/vnd.symbian.install - - - sisx - application/vnd.symbian.install - - - sit - application/x-stuffit - - - sitx - application/x-stuffitx - - - skd - application/vnd.koan - - - skm - application/vnd.koan - - - skp - application/vnd.koan - - - skt - application/vnd.koan - - - sldm - application/vnd.ms-powerpoint.slide.macroenabled.12 - - - sldx - application/vnd.openxmlformats-officedocument.presentationml.slide - - - slt - application/vnd.epson.salt - - - sm - application/vnd.stepmania.stepchart - - - smf - application/vnd.stardivision.math - - - smi - application/smil+xml - - - smil - application/smil+xml - - - smv - video/x-smv - - - smzip - application/vnd.stepmania.package - - - snd - audio/basic - - - snf - application/x-font-snf - - - so - application/octet-stream - - - spc - application/x-pkcs7-certificates - - - spf - application/vnd.yamaha.smaf-phrase - - - spl - application/x-futuresplash - - - spot - text/vnd.in3d.spot - - - spp - application/scvp-vp-response - - - spq - application/scvp-vp-request - - - spx - audio/ogg - - - sql - application/x-sql - - - src - application/x-wais-source - - - srt - application/x-subrip - - - sru - application/sru+xml - - - srx - application/sparql-results+xml - - - ssdl - application/ssdl+xml - - - sse - application/vnd.kodak-descriptor - - - ssf - application/vnd.epson.ssf - - - ssml - application/ssml+xml - - - st - application/vnd.sailingtracker.track - - - stc - application/vnd.sun.xml.calc.template - - - std - application/vnd.sun.xml.draw.template - - - stf - application/vnd.wt.stf - - - sti - application/vnd.sun.xml.impress.template - - - stk - application/hyperstudio - - - stl - application/vnd.ms-pki.stl - - - str - application/vnd.pg.format - - - stw - application/vnd.sun.xml.writer.template - - - sub - text/vnd.dvb.subtitle - - - sus - application/vnd.sus-calendar - - - susp - application/vnd.sus-calendar - - - sv4cpio - application/x-sv4cpio - - - sv4crc - application/x-sv4crc - - - svc - application/vnd.dvb.service - - - svd - application/vnd.svd - - - svg - image/svg+xml - - - svgz - image/svg+xml - - - swa - application/x-director - - - swf - application/x-shockwave-flash - - - swi - application/vnd.aristanetworks.swi - - - sxc - application/vnd.sun.xml.calc - - - sxd - application/vnd.sun.xml.draw - - - sxg - application/vnd.sun.xml.writer.global - - - sxi - application/vnd.sun.xml.impress - - - sxm - application/vnd.sun.xml.math - - - sxw - application/vnd.sun.xml.writer - - - t - text/troff - - - t3 - application/x-t3vm-image - - - taglet - application/vnd.mynfc - - - tao - application/vnd.tao.intent-module-archive - - - tar - application/x-tar - - - tcap - application/vnd.3gpp2.tcap - - - tcl - application/x-tcl - - - teacher - application/vnd.smart.teacher - - - tei - application/tei+xml - - - teicorpus - application/tei+xml - - - tex - application/x-tex - - - texi - application/x-texinfo - - - texinfo - application/x-texinfo - - - text - text/plain - - - tfi - application/thraud+xml - - - tfm - application/x-tex-tfm - - - tga - image/x-tga - - - thmx - application/vnd.ms-officetheme - - - tif - image/tiff - - - tiff - image/tiff - - - tmo - application/vnd.tmobile-livetv - - - torrent - application/x-bittorrent - - - tpl - application/vnd.groove-tool-template - - - tpt - application/vnd.trid.tpt - - - tr - text/troff - - - tra - application/vnd.trueapp - - - trm - application/x-msterminal - - - tsd - application/timestamped-data - - - tsv - text/tab-separated-values - - - ttc - font/collection - - - ttf - font/ttf - - - ttl - text/turtle - - - twd - application/vnd.simtech-mindmapper - - - twds - application/vnd.simtech-mindmapper - - - txd - application/vnd.genomatix.tuxedo - - - txf - application/vnd.mobius.txf - - - txt - text/plain - - - u32 - application/x-authorware-bin - - - udeb - application/x-debian-package - - - ufd - application/vnd.ufdl - - - ufdl - application/vnd.ufdl - - - ulw - audio/basic - - - ulx - application/x-glulx - - - umj - application/vnd.umajin - - - unityweb - application/vnd.unity - - - uoml - application/vnd.uoml+xml - - - uri - text/uri-list - - - uris - text/uri-list - - - urls - text/uri-list - - - ustar - application/x-ustar - - - utz - application/vnd.uiq.theme - - - uu - text/x-uuencode - - - uva - audio/vnd.dece.audio - - - uvd - application/vnd.dece.data - - - uvf - application/vnd.dece.data - - - uvg - image/vnd.dece.graphic - - - uvh - video/vnd.dece.hd - - - uvi - image/vnd.dece.graphic - - - uvm - video/vnd.dece.mobile - - - uvp - video/vnd.dece.pd - - - uvs - video/vnd.dece.sd - - - uvt - application/vnd.dece.ttml+xml - - - uvu - video/vnd.uvvu.mp4 - - - uvv - video/vnd.dece.video - - - uvva - audio/vnd.dece.audio - - - uvvd - application/vnd.dece.data - - - uvvf - application/vnd.dece.data - - - uvvg - image/vnd.dece.graphic - - - uvvh - video/vnd.dece.hd - - - uvvi - image/vnd.dece.graphic - - - uvvm - video/vnd.dece.mobile - - - uvvp - video/vnd.dece.pd - - - uvvs - video/vnd.dece.sd - - - uvvt - application/vnd.dece.ttml+xml - - - uvvu - video/vnd.uvvu.mp4 - - - uvvv - video/vnd.dece.video - - - uvvx - application/vnd.dece.unspecified - - - uvvz - application/vnd.dece.zip - - - uvx - application/vnd.dece.unspecified - - - uvz - application/vnd.dece.zip - - - vcard - text/vcard - - - vcd - application/x-cdlink - - - vcf - text/x-vcard - - - vcg - application/vnd.groove-vcard - - - vcs - text/x-vcalendar - - - vcx - application/vnd.vcx - - - vis - application/vnd.visionary - - - viv - video/vnd.vivo - - - vob - video/x-ms-vob - - - vor - application/vnd.stardivision.writer - - - vox - application/x-authorware-bin - - - vrml - model/vrml - - - vsd - application/vnd.visio - - - vsf - application/vnd.vsf - - - vss - application/vnd.visio - - - vst - application/vnd.visio - - - vsw - application/vnd.visio - - - vtu - model/vnd.vtu - - - vxml - application/voicexml+xml - - - w3d - application/x-director - - - wad - application/x-doom - - - wav - audio/x-wav - - - wax - audio/x-ms-wax - - - - wbmp - image/vnd.wap.wbmp - - - wbs - application/vnd.criticaltools.wbs+xml - - - wbxml - application/vnd.wap.wbxml - - - wcm - application/vnd.ms-works - - - wdb - application/vnd.ms-works - - - wdp - image/vnd.ms-photo - - - weba - audio/webm - - - webm - video/webm - - - webp - image/webp - - - wg - application/vnd.pmi.widget - - - wgt - application/widget - - - wks - application/vnd.ms-works - - - wm - video/x-ms-wm - - - wma - audio/x-ms-wma - - - wmd - application/x-ms-wmd - - - wmf - application/x-msmetafile - - - - wml - text/vnd.wap.wml - - - - wmlc - application/vnd.wap.wmlc - - - - wmls - text/vnd.wap.wmlscript - - - - wmlsc - application/vnd.wap.wmlscriptc - - - wmv - video/x-ms-wmv - - - wmx - video/x-ms-wmx - - - wmz - application/x-msmetafile - - - woff - font/woff - - - woff2 - font/woff2 - - - wpd - application/vnd.wordperfect - - - wpl - application/vnd.ms-wpl - - - wps - application/vnd.ms-works - - - wqd - application/vnd.wqd - - - wri - application/x-mswrite - - - wrl - model/vrml - - - wsdl - application/wsdl+xml - - - wspolicy - application/wspolicy+xml - - - wtb - application/vnd.webturbo - - - wvx - video/x-ms-wvx - - - x32 - application/x-authorware-bin - - - x3d - model/x3d+xml - - - x3db - model/x3d+binary - - - x3dbz - model/x3d+binary - - - x3dv - model/x3d+vrml - - - x3dvz - model/x3d+vrml - - - x3dz - model/x3d+xml - - - xaml - application/xaml+xml - - - xap - application/x-silverlight-app - - - xar - application/vnd.xara - - - xbap - application/x-ms-xbap - - - xbd - application/vnd.fujixerox.docuworks.binder - - - xbm - image/x-xbitmap - - - xdf - application/xcap-diff+xml - - - xdm - application/vnd.syncml.dm+xml - - - xdp - application/vnd.adobe.xdp+xml - - - xdssc - application/dssc+xml - - - xdw - application/vnd.fujixerox.docuworks - - - xenc - application/xenc+xml - - - xer - application/patch-ops-error+xml - - - xfdf - application/vnd.adobe.xfdf - - - xfdl - application/vnd.xfdl - - - xht - application/xhtml+xml - - - xhtml - application/xhtml+xml - - - xhvml - application/xv+xml - - - xif - image/vnd.xiff - - - xla - application/vnd.ms-excel - - - xlam - application/vnd.ms-excel.addin.macroenabled.12 - - - xlc - application/vnd.ms-excel - - - xlf - application/x-xliff+xml - - - xlm - application/vnd.ms-excel - - - xls - application/vnd.ms-excel - - - xlsb - application/vnd.ms-excel.sheet.binary.macroenabled.12 - - - xlsm - application/vnd.ms-excel.sheet.macroenabled.12 - - - xlsx - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - - - xlt - application/vnd.ms-excel - - - xltm - application/vnd.ms-excel.template.macroenabled.12 - - - xltx - application/vnd.openxmlformats-officedocument.spreadsheetml.template - - - xlw - application/vnd.ms-excel - - - xm - audio/xm - - - xml - application/xml - - - xo - application/vnd.olpc-sugar - - - xop - application/xop+xml - - - xpi - application/x-xpinstall - - - xpl - application/xproc+xml - - - xpm - image/x-xpixmap - - - xpr - application/vnd.is-xpr - - - xps - application/vnd.ms-xpsdocument - - - xpw - application/vnd.intercon.formnet - - - xpx - application/vnd.intercon.formnet - - - xsl - application/xml - - - xslt - application/xslt+xml - - - xsm - application/vnd.syncml+xml - - - xspf - application/xspf+xml - - - xul - application/vnd.mozilla.xul+xml - - - xvm - application/xv+xml - - - xvml - application/xv+xml - - - xwd - image/x-xwindowdump - - - xyz - chemical/x-xyz - - - xz - application/x-xz - - - yang - application/yang - - - yin - application/yin+xml - - - z - application/x-compress - - - Z - application/x-compress - - - z1 - application/x-zmachine - - - z2 - application/x-zmachine - - - z3 - application/x-zmachine - - - z4 - application/x-zmachine - - - z5 - application/x-zmachine - - - z6 - application/x-zmachine - - - z7 - application/x-zmachine - - - z8 - application/x-zmachine - - - zaz - application/vnd.zzazz.deck+xml - - - zip - application/zip - - - zir - application/vnd.zul - - - zirz - application/vnd.zul - - - zmm - application/vnd.handheld-entertainment+xml - - - - - - - - - - - - - - - - - - index.html - index.htm - index.jsp - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/RELEASE-NOTES.txt b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/RELEASE-NOTES.txt deleted file mode 100644 index 7e7ff442c50856d38f3e57f52c7e7f88bb0b4b4e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/RELEASE-NOTES.txt +++ /dev/null @@ -1,178 +0,0 @@ -================================================================================ - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -================================================================================ - - - Apache Tomcat Version 8.5.27 - Release Notes - - -========= -CONTENTS: -========= - -* Dependency Changes -* API Stability -* Bundled APIs -* Web application reloading and static fields in shared libraries -* Security manager URLs -* Symlinking static resources -* Viewing the Tomcat Change Log -* Cryptographic software notice -* When all else fails - - -=================== -Dependency Changes: -=================== -Tomcat 8.5 is designed to run on Java SE 7 and later. - - -============== -API Stability: -============== - -The public interfaces for the following classes are fixed and will not be -changed at all during the remaining lifetime of the 8.x series: -- All classes in the javax namespace - -The public interfaces for the following classes may be added to in order to -resolve bugs and/or add new features. No existing interface method will be -removed or changed although it may be deprecated. -- org.apache.catalina.* (excluding sub-packages) - -Note: As Tomcat 8 matures, the above list will be added to. The list is not - considered complete at this time. - -Note: A large number of deprecated methods, fields and configuration options - were removed in the transition from 8.0.x to 8.5.x. If any of those - removals triggers significant problems for the user community that the - deletion may be reverted in a later point release. - -The remaining classes are considered part of the Tomcat internals and may change -without notice between point releases. - - -============= -Bundled APIs: -============= -A standard installation of Tomcat 8.5 makes all of the following APIs available -for use by web applications (by placing them in "lib"): -* annotations-api.jar (Annotations package) -* catalina.jar (Tomcat Catalina implementation) -* catalina-ant.jar (Tomcat Catalina Ant tasks) -* catalina-ha.jar (High availability package) -* catalina-storeconfig.jar (Generation of XML configuration from current state) -* catalina-tribes.jar (Group communication) -* ecj-4.6.3.jar (Eclipse JDT Java compiler) -* el-api.jar (EL 3.0 API) -* jasper.jar (Jasper 2 Compiler and Runtime) -* jasper-el.jar (Jasper 2 EL implementation) -* jsp-api.jar (JSP 2.3 API) -* servlet-api.jar (Servlet 3.1 API) -* tomcat-api.jar (Interfaces shared by Catalina and Jasper) -* tomcat-coyote.jar (Tomcat connectors and utility classes) -* tomcat-dbcp.jar (package renamed database connection pool based on Commons DBCP) -* tomcat-jdbc.jar (Tomcat's database connection pooling solution) -* tomcat-jni.jar (Interface to the native component of the APR/native connector) -* tomcat-util.jar (Various utilities) -* tomcat-websocket.jar (WebSocket 1.1 implementation) -* websocket-api.jar (WebSocket 1.1 API) - -You can make additional APIs available to all of your web applications by -putting unpacked classes into a "classes" directory (not created by default), -or by placing them in JAR files in the "lib" directory. - -To override the XML parser implementation or interfaces, use the appropriate -feature for your JVM. For Java <= 8 use the endorsed standards override -feature. The default configuration defines JARs located in "endorsed" as endorsed. -For Java 9+ use the upgradeable modules feature. - - -================================================================ -Web application reloading and static fields in shared libraries: -================================================================ -Some shared libraries (many are part of the JDK) keep references to objects -instantiated by the web application. To avoid class loading related problems -(ClassCastExceptions, messages indicating that the classloader -is stopped, etc.), the shared libraries state should be reinitialized. - -Something which might help is to avoid putting classes which would be -referenced by a shared static field in the web application classloader, -and putting them in the shared classloader instead (JARs should be put in the -"lib" folder, and classes should be put in the "classes" folder). - - -====================== -Security manager URLs: -====================== -In order to grant security permissions to JARs located inside the -web application repository, use URLs of of the following format -in your policy file: - -file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar - - -============================ -Symlinking static resources: -============================ -By default, Unix symlinks will not work when used in a web application to link -resources located outside the web application root directory. - -This behavior is optional, and the "allowLinking" flag may be used to disable -the check. - - -============================== -Viewing the Tomcat Change Log: -============================== -The full change log is available from http://tomcat.apache.org and is also -included in the documentation web application. - - -============================= -Cryptographic software notice -============================= -This distribution includes cryptographic software. The country in -which you currently reside may have restrictions on the import, -possession, use, and/or re-export to another country, of -encryption software. BEFORE using any encryption software, please -check your country's laws, regulations and policies concerning the -import, possession, or use, and re-export of encryption software, to -see if this is permitted. See for more -information. - -The U.S. Government Department of Commerce, Bureau of Industry and -Security (BIS), has classified this software as Export Commodity -Control Number (ECCN) 5D002.C.1, which includes information security -software using or performing cryptographic functions with asymmetric -algorithms. The form and manner of this Apache Software Foundation -distribution makes it eligible for export under the License Exception -ENC Technology Software Unrestricted (TSU) exception (see the BIS -Export Administration Regulations, Section 740.13) for both object -code and source code. - -The following provides more details on the included cryptographic -software: - - Tomcat includes code designed to work with JSSE - - Tomcat includes code designed to work with OpenSSL - - -==================== -When all else fails: -==================== -See the FAQ -http://tomcat.apache.org/faq/ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/WEB-INF/web.xml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/WEB-INF/web.xml deleted file mode 100644 index adb10ffdbc635a3253321e929b3dc7c24037123a..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/WEB-INF/web.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - Welcome to Tomcat - - Welcome to Tomcat - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/asf-logo-wide.svg b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/asf-logo-wide.svg deleted file mode 100644 index 5743c4212646ecad6143c68cf7ab6f278120e09f..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/asf-logo-wide.svg +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/bg-button.png b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/bg-button.png deleted file mode 100644 index b544bbfcdf91f6044ece15ffd1ca57575cebb8ee..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/bg-button.png and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/bg-middle.png b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/bg-middle.png deleted file mode 100644 index 0c95a828d10281783d0cf82dba498f954320346e..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/bg-middle.png and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/bg-nav-item.png b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/bg-nav-item.png deleted file mode 100644 index ece86a1500b8dfea8d5a6b16f8c5ff963f51d37f..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/bg-nav-item.png and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/bg-nav.png b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/bg-nav.png deleted file mode 100644 index d44b094f910aadab229d1e33a7640a7ec24b9e8d..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/bg-nav.png and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/bg-upper.png b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/bg-upper.png deleted file mode 100644 index 7d9ae7b18cfa6834f89beaf3ead4d2c7343f1476..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/bg-upper.png and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/favicon.ico b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/favicon.ico deleted file mode 100644 index 6c5bd2c63b38b326cf01f7f9fc61f7b21b5bc5ae..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/favicon.ico and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/index.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/index.jsp deleted file mode 100644 index e9393b9a5e87b7fd2baed755a7f8215dfa98430b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/index.jsp +++ /dev/null @@ -1,223 +0,0 @@ -<%-- -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. ---%> -<%@ page session="false" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %> -<% -java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy"); -request.setAttribute("year", sdf.format(new java.util.Date())); -request.setAttribute("tomcatUrl", "http://tomcat.apache.org/"); -request.setAttribute("tomcatDocUrl", "/docs/"); -request.setAttribute("tomcatExamplesUrl", "/examples/"); -%> - - - - - <%=request.getServletContext().getServerInfo() %> - - - - - - -
- -
-

${pageContext.servletContext.serverInfo}

-
-
-
-

If you're seeing this, you've successfully installed Tomcat. Congratulations!

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

Developer Quick Start

- - -
-
-

Examples

-
-
- -
-
-
-
-
-

Managing Tomcat

-

For security, access to the manager webapp is restricted. - Users are defined in:

-
$CATALINA_HOME/conf/tomcat-users.xml
-

In Tomcat 8.5 access to the manager application is split between - different users.   Read more...

-
-

Release Notes

-

Changelog

-

Migration Guide

-

Security Notices

-
-
-
-
-

Documentation

-

Tomcat 8.5 Documentation

-

Tomcat 8.5 Configuration

-

Tomcat Wiki

-

Find additional important configuration information in:

-
$CATALINA_HOME/RUNNING.txt
-

Developers may be interested in:

- -
-
-
-
-

Getting Help

-

FAQ and Mailing Lists

-

The following mailing lists are available:

- -
-
-
-
- - -
- - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/tomcat-power.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/tomcat-power.gif deleted file mode 100644 index 01c400b09a1cf2579519b5b2200cf80b4ee60a91..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/tomcat-power.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/tomcat.css b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/tomcat.css deleted file mode 100644 index 6995838773e24772ba84ee4a455afd0bf288aaf1..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/tomcat.css +++ /dev/null @@ -1,351 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ -body { - margin: 10px 20px; - text-align: center; - font-family: Arial, sans-serif; -} - -h1, h2, h3, h4, h5, h6, p, ul, ol { - margin: 0 0 0.5em; -} -h1 { - font-size: 18pt; - margin: 0.5em 0 0; -} -h2 { - font-size: 16pt; -} -h3 { - font-size: 13pt; -} -h4 { - font-size: 12pt; -} -h5 { - font-size: 11pt; -} -p { - font-size: 11pt -} - -ul { - margin: 0; - padding: 0 0 0 0.25em; - text-indent: 0; - list-style: none; -} -li { - margin: 0; - padding: 0 0 0.25em; - text-indent: 0; - font-size: 80%; -} - -pre { - text-indent: 0.25em; - width: 90%; - font-size: 90%; -} - -br.separator { - margin: 0; - padding: 0; - clear: both; -} - -a img { - border: 0 none; -} - -.container { - padding: 10px; - margin: 0 0 10px; -} - -.col20 { - float: left; - width: 20%; -} - -.col25 { - float: left; - width: 25%; -} - -#wrapper { - display: block; - margin: 0 auto; - text-align: left; - min-width: 720px; - max-width: 1000px; -} -.curved { - border-radius: 10px; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - -khtml-border-radius: 10px; -} - -#navigation { - background: #eee url(bg-nav.png) repeat-x top left; - margin: 0 0 10px; - padding: 0; -} -#navigation span { - float: left; -} -#navigation span a { - display: block; - padding: 10px; - font-weight: bold; - text-shadow: 1px 1px 1px #fff; -} -#navigation span a:link, -#navigation span a:visited, -#navigation span a:hover, -#navigation span a:active { - color: #666; - text-decoration: none; -} -#navigation span#nav-help { - float: right; - margin-right: 0; -} - -#asf-box { - height: 40px; - background: #fff url(asf-logo-wide.svg) no-repeat top right;} -#asf-box h1 { - padding: 0; - margin: 0; -} - -#upper { - background: #fff url(bg-upper.png) repeat-x top left; -} - -#congrats { - text-align: center; - padding: 10px; - margin: 0 40px 20px; - background-color: #9c9; -} -#congrats h2 { - font-size: 14pt; - padding: 0; - margin: 0; - color: #fff; -} - -#notice { - float: left; - width: 560px; - color: #696; -} -#notice a:link, -#notice a:visited, -#notice a:hover, -#notice a:active { - color: #090; - text-decoration: none; -} -#notice img, -#notice #tasks { - float: left; -} -#tasks a:link, -#tasks a:visited, -#tasks a:hover, -#tasks a:active { - text-decoration: underline; -} -#notice img { - margin-right: 20px; -} - -#actions { - float: right; - width: 140px; -} - -#actions .button { - display: block; - padding: 0; - height: 36px; - background: url(bg-button.png) no-repeat top left; -} - -#actions .button a { - display: block; - padding: 0; -} - -#actions .button a:link, -#actions .button a:visited, -#actions .button a:hover, -#actions .button a:active { - color: #696; - text-decoration: none; -} - -#actions .button a span { - display: block; - padding: 6px 10px; - color: #666; - text-shadow: 1px 1px 1px #fff; - font-size: 10pt; - font-weight: bold; -} - -#middle { - background: #eef url(bg-middle.png) repeat-x top left; - margin: 20px 0; - padding: 1px 10px; -} -#middle h3 { - margin: 0 0 10px; - color: #033; -} -#middle p { - font-size: 10pt; -} -#middle a:link, -#middle a:visited, -#middle a:hover, -#middle a:active { - color: #366; - font-weight: bold; -} -#middle .col25 .container { - padding: 0 0 1px; -} - -#developers { - float: left; - width: 40%; -} -#security { - float: right; - width: 50%; -} - -#lower { - padding: 0; -} - -#lower a:link, -#lower a:visited, -#lower a:hover, -#lower a:active { - color: #600; -} - -#lower strong a:link, -#lower strong a:visited, -#lower strong a:hover, -#lower strong a:active { - color: #c00; -} - -#lower h3 { - color: #963; - font-size: 14pt; -} -#lower h4 { - font-size: 12pt; -} -#lower ul { - padding: 0; - margin: 0.5em 0; -} -#lower p, -#lower li { - font-size: 9pt; - color: #753; - margin: 0 0 0.1em; -} -#lower li { - padding: 3px 5px; -} -#lower li strong { - color: #a53; -} -#lower li#list-announce { - border: 1px solid #f90; - background-color: #ffe8c8; -} -#lower p { - font-size: 10.5pt; -} - -#low-manage, -#low-docs, -#low-help { - float: left; - width: 32%; -} -#low-docs { - margin: 0 0 0 2.2%; -} -#low-help { - float: right; -} - -#low-manage div, -#low-docs div, -#low-help div { - min-height: 280px; - border: 3px solid #ffdc75; - background-color: #fff1c8; - padding: 10px; -} - -#footer { - padding: 0; - margin: 20px 0; - color: #999; - background-color: #eee; -} -#footer h4 { - margin: 0 0 10px; - font-size: 10pt; -} -#footer p { - margin: 0 0 10px; - font-size: 10pt; -} -#footer ul { - margin: 6px 0 1px; - padding: 0; -} -#footer li { - margin: 0; - font-size: 9pt; -} - -#footer a:link, -#footer a:visited, -#footer a:hover, -#footer a:active { - color: #666; -} - -.copyright { - font-size: 10pt; - color: #666; -} \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/tomcat.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/tomcat.gif deleted file mode 100644 index f2aa6f863e43e3924a35854c556a9c1b6d125cba..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/tomcat.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/tomcat.png b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/tomcat.png deleted file mode 100644 index 209b07fd8a8d2429b1a0c9740dc184f803ba3c67..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/tomcat.png and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/tomcat.svg b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/tomcat.svg deleted file mode 100644 index 8823f7986e3cdc3ba54a7a96ff3cdea843e2e9ef..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/ROOT/tomcat.svg +++ /dev/null @@ -1,967 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - 2006-05-09T08:17:21Z - 2006-05-09T08:37:38Z - Illustrator - - - - JPEG - 256 - 184 - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA -AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK -DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f -Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAuAEAAwER -AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA -AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB -UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE -1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ -qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy -obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp -0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo -+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 -FXYq7FXYq7FXYq7FXYq7FXhH/OYHnWfQ/wAurfRLSUxXXmK49GQqaN9VtwJJqH3cxqfYnFXhP5Y/ -85O+f/JU0enaw769okbBJLS8ZvrUKg0IhnarDj/I9R2HHFX2F+Xn5neT/P8ApP6R8u3glKAfW7KS -iXNuzdFljqaezCqnsTirK8VdirsVdirsVdirsVdirC/zM/Nvyd+XemC71255Xcqk2WmQUa5nI2+F -CRxUd3ag+nbFXx1+Zf8Azkn+YvneaW1tLh9C0NgwXTrB2V3Sm/rzji8m3UDitP2cVfV//OOfmabz -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 - - - - - - - image/svg+xml - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 -/Dn4G1vgFa2715u9zrn+L1T7Dxc= - - - TM - \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/BUILDING.txt b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/BUILDING.txt deleted file mode 100644 index f84a6ea9185a8b29d827fdb277824d820d401e0b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/BUILDING.txt +++ /dev/null @@ -1,567 +0,0 @@ -================================================================================ - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -================================================================================ - - ==================================================== - Building The Apache Tomcat 8.5 Servlet/JSP Container - ==================================================== - -This subproject contains the source code for Tomcat 8.5, a container that -implements the Servlet 3.1, JSP 2.3, EL 3.0, WebSocket 1.1 and JASPIC 1.1 -specifications from the Java Community Process . - -Note: If you just need to run Apache Tomcat, it is not necessary to build -it. You may simply download a binary distribution. It is cross-platform. -Read RUNNING.txt for the instruction on how to run it. - -In order to build a binary distribution version of Apache Tomcat from a -source distribution, do the following: - - -(1) Download and Install a Java Development Kit - - 1. If the JDK is already installed, skip to (2). - - 2. Download a version 7 of Java Development Kit (JDK) release (use the - latest update available for your chosen version) from one of: - - http://www.oracle.com/technetwork/java/javase/downloads/index.html - http://openjdk.java.net/install/index.html - or another JDK vendor. - - Note regarding later versions of Java: - - As documented elsewhere, one of components in Apache Tomcat includes - a private copy of the Apache Commons DBCP library. - - The JDBC interfaces implemented by DBCP frequently change in non-backwards - compatible ways between versions of the Java SE specification. Therefore, - it is likely that DBCP will only compile with the specific version of Java - listed above and that compilation will fail if a later version of Java is - used. - - See Apache Commons DBCP project web site for more details on - available versions of the library and its requirements, - - http://commons.apache.org/dbcp/ - - 3. Install the JDK according to the instructions included with the release. - - 4. Set an environment variable JAVA_HOME to the pathname of the directory - into which you installed the JDK release. - - -(2) Install Apache Ant version 1.9.5 or later on your computer. - - 1. If Apache Ant version 1.9.5 or later is already installed on your - computer, skip to (3). - - 2. Download a binary distribution of Ant from: - - http://ant.apache.org/bindownload.cgi - - 3. Unpack the binary distribution into a convenient location so that the - Ant release resides in its own directory (conventionally named - "apache-ant-[version]"). - - For the purposes of the remainder of this document, the symbolic name - "${ant.home}" is used to refer to the full pathname of the release - directory. - - 4. Create an ANT_HOME environment variable to point the directory - ${ant.home}. - - 5. Modify the PATH environment variable to include the directory - ${ant.home}/bin in its list. This makes the "ant" command line script - available, which will be used to actually perform the build. - - -(3) Building Tomcat 8.5 - -(3.1) Checkout or obtain the source code for Tomcat 8.5 - -Checkout the source using SVN, selecting a tag for released version or -trunk for the current development code, or download and unpack a source -package. - - * Tomcat SVN repository URL: - - http://svn.apache.org/repos/asf/tomcat/tc8.5.x/trunk/ - - * Source packages can be downloaded from: - - http://tomcat.apache.org/download-80.cgi - -The location where the source has been placed will be further referred as -${tomcat.source}. - -The Tomcat local build process does not modify line-endings. The svn repository -is configured so that all files will be checked out with the line-ending -appropriate for the current platform. When using a source package you should -ensure that you use the source package that has the appropriate line-ending -for your platform: - - zip -> CRLF - tar.gz -> LF - -Note that the release build process does modify line-endings to ensure that -each release package has the appropriate line-endings. - -(3.2) Building - - 1. The build is controlled by creating a ${tomcat.source}/build.properties - file. - - It is recommended to always create the file, because of unfortunate - default value of base.path property. You may start with the following - content for the file: - - # ----- Default Base Path for Dependent Packages ----- - # Replace this path with the directory path where dependencies binaries - # should be downloaded - base.path=/home/me/some-place-to-download-to - - 2. Configure base.path property by adding it to the - ${tomcat.source}/build.properties file. - - The base.path property specifies the place where Tomcat dependencies - required by the build are downloaded. It is recommended to place this - directory outside of the source tree, so that you do not waste your - time re-downloading the libraries. - -* NOTE: The default value of the base.path property configures the build script - to download the libraries required to build Tomcat to the - ${user.home}/tomcat-build-libs directory. - -* NOTE: Users accessing the Internet through a proxy must use the properties - file to indicate to Ant the proxy configuration. - - The following properties should be added to the ${tomcat.source}/build.properties - file. - - proxy.use=true - proxy.host=proxy.domain - proxy.port=8080 - proxy.user=username - proxy.password=password - - See Apache Ant documentation for the task for details. - - 3. Go to the sources directory and run Ant: - - cd ${tomcat.source} - ant - - This will execute the "deploy" target in build.xml. - - Once the build has completed successfully, a usable Tomcat installation - will have been produced in the ${tomcat.source}/output/build directory, - and can be started and stopped with the usual scripts. - - Note that the build includes Tomcat documentation, which can be found - in the output/build/webapps/docs directory. - - The path of the output directory can be controlled by specifying the - "tomcat.output" property in the build.properties file. - -* NOTE: Do not run the build as the root user. Building and running Tomcat - does not require root privileges. - - -(4) Updating sources and rebuilding - -It is recommended that you regularly update the downloaded Tomcat 8.5 -sources using your SVN client. - -For a quick rebuild of only modified code you can use: - - cd ${tomcat.source} - ant - - -(5) Special builds - -There are several targets in Tomcat build files that are useful to be -called separately. They build components that you may want to build -quickly, or ones that are included in the full release and are not built -during the default "deploy" build. - -(5.1) Building documentation - -The documentation web application is built during the default "deploy" -build. - -It can be built quickly by using the following commands: - - cd ${tomcat.source} - ant build-docs - -The output of this command will be found in the following directory: - - output/build/webapps/docs - - -The API documentation (Javadoc) is built during a "release" build. It is -easy to build it separately by using the following commands: - - cd ${tomcat.source} - ant javadoc - -The output of this command will be found in the following directories: - - output/dist/webapps/docs/api - output/dist/webapps/docs/elapi - output/dist/webapps/docs/jspapi - output/dist/webapps/docs/servletapi - - -(5.2) Building the extras (commons-logging, webservices etc.) - -These components are documented on the "Additional Components" -(extras.html) page of documentation. They are built during a "release" -build. - -You can build them by using the following commands: - - cd ${tomcat.source} - ant extras - -(5.3) Building the embedded packages - -These are built during a "release" build. - -You can build them by using the following commands: - - cd ${tomcat.source} - ant embed - - -(6) Building a full release (as provided via the ASF download pages) - - A full release includes the Windows installer which requires a Windows - environment to be available to create it. If not building in a Windows - environment, the build scripts assume that Wine is available. If this is not - the case, the skip.installer property may be set to skip the creation of the - Windows installer. - - 1. Configure GPG, if needed - - If the released artifacts have to be cryptographically signed with a - PGP signature, like the official ASF releases are, the following - property can be added to the build.properties file: - - # Location of GPG executable (used only for releases) - gpg.exec=/path/to/gpg - - You do not need it if you do not plan to sign the release. - - If "gpg.exec" property does not point to an existing file, it will be - ignored and this feature will be disabled. - - You will be prompted for the GPG passphrase when the release build - starts, unless "gpg.passphrase" property is set. - - 2. If building the Windows installer - - If running the build in a UAC enabled environment, building the Windows - installer requires elevated privileges. The simplest way to do this is to - open the command prompt used for the build with the "Run as administrator" - option. - - 3. Configure the code signing service - - ASF committers performing official releases will need to configure the code - signing service so that the Windows installer is signed during the build - process. The following properties need to be added to the build.properties - file: - - # Location of GPG executable (used only for releases) - # Code signing of Windows installer - do.codesigning=true - codesigning.user=request-via-pmc - codesigning.pwd=request-via-pmc - codesigning.partnercode=request-via-pmc - codesigning.service=Microsoft Windows Signing - - Release managers will be provided with the necessary credentials by the PMC. - It will also be necessary to enable TLS 1.1 and TLS 1.2 by default (they are - disabled by default on Java 7) for the build process to communicate with the - code signing service. The simplest way is by setting the ANT_OPTS - environment variable. E.g. (for Windows): - - set ANT_OPTS=-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 - - 4. Build the release: - - cd ${tomcat.source} - ant release - - -(7) Tests - -(7.1) Running Tomcat tests - -Tomcat includes a number of junit tests. The tests are not run when a -release is built. There is separate command to run them. - -To run the testsuite use the following command: - - cd ${tomcat.source} - ant test - -It is advisable to redirect output of the above command to a file for later -inspection. - -The JUnit reports generated by the tests will be written to the following -directory: - - output/build/logs - -By default the testsuite is run three times to test 3 different -implementations of Tomcat connectors: NIO, NIO2 and APR. (If you are not -familiar with Tomcat connectors, see config/http.html in documentation for -details). - -The 3 runs are enabled and disabled individually by the following -properties, which all are "true" by default: - - execute.test.nio=true - execute.test.nio2=true - execute.test.apr=true - -The APR connector can be tested only if Tomcat-Native library binaries are -found by the testsuite. The "test.apr.loc" property specifies the directory -where the library binaries are located. - -By default the "test.apr.loc" property specifies the following location: - - output/build/bin/native/ - -If you are on Windows and want to test the APR connector you can put the -tcnative-1.dll file into ${tomcat.source}/bin/native/ and it will be copied -into the above directory when the build runs. - -The unit tests include tests of the clustering functionality which require -multicast to be enabled. There is a simple application provided in the Tomcat -test source (org.apache.catalina.tribes.TesterMulticast) that can be used to -check if a machine supports multicast. Notes on enabling multicast for different -operating systems are provided in the Javadoc for that class. - - -(7.2) Running a single test - -It is possible to run a single JUnit test class by adding the "test.entry" -property to the build.properties file. The property specifies the name of -the test class. - -For example: - - test.entry=org.apache.catalina.util.TestServerInfo - -It is possible to further limit such run to a number of selected test -methods by adding "test.entry.methods" property. The property specifies a -comma-separated list of test case methods. - -For example: - - test.entry=org.apache.el.lang.TestELArithmetic - test.entry.methods=testMultiply01,testMultiply02 - - -(7.3) Running a set of tests - -It is possible to run a set of JUnit test classes by adding the "test.name" -property to the build.properties file. The property specifies an Ant -includes pattern for the fileset of test class files to run. - -The default value is "**/Test*.java", so all test classes are being -executed (with few exceptions - see build.xml for several exclude patterns). - -You can include multiple patterns by concatenating them with a comma (",") -as the separator. - -For example: - - test.name=**/TestSsl.java,**/TestWebSocketFrameClientSSL.java - -You can exclude specific JUnit test classes by adding the "test.exclude" -property to the build.properties file. The property specifies an Ant -excludes pattern for the fileset of test class files to exclude form the run. -The default value is empty, so no classes are excluded. The syntax is the same -as for the property "test.name". - - -(7.4) Other configuration options - - 1. It is possible to configure the directory where JUnit reports are - written to. It is configured by "test.reports" property. The default - value is - - output/build/logs - - 2. It is possible to enable generation of access log file when the tests - are run. This is off by default and can be enabled by the following - property: - - test.accesslog=true - - The "access_log." file will be written to the same directory as - JUnit reports, - - output/build/logs - - 3. The testsuite respects logging configuration as configured by - ${tomcat.source}/conf/logging.properties - - The log files will be written to the temporary directory used by the - tests, - - output/test-tmp/logs - - 4. It is possible to configure formatter used by JUnit reports. - Configuration properties are "junit.formatter.type", - "junit.formatter.extension" and "junit.formatter.usefile". - - For example the following property disables generation of separate report - files: - - junit.formatter.usefile=false - - 5. It is possible to speed up testing by letting JUnit to run several - tests in parallel. - - This is configured by setting "test.threads" property. The recommended - value is one thread per core. - - 6. Optional support is provided for the Cobertura code coverage tool. - -NOTE: Cobertura is licensed under GPL v2 with parts of it being under - Apache License v1.1. See http://cobertura.sf.net for details. Using it - during Tomcat build is optional and is off by default. - - Cobertura can be enabled using the following properties: - - test.cobertura=true - test.threads=1 - - Using Cobertura currently requires setting test.threads configuration - property to the value of 1. Setting that property to a different value - will disable code coverage. - - The report files by default are written to - - output/coverage - - 7. The performance tests are written to run reasonably powerful machines (such - as a developer may use day to day) assuming no other resource hungry - processes are running. - - These assumptions are not always true (e.g. on CI systems running in a - virtual machine) so the performance tests may be disabled by using the - following property: - - test.excludePerformance=true - - 8. Some tests include checks that the access log valve entries are as expected. - These checks include timings. On slower / loaded systems these checks will - often fail. The checks may be relaxed by using the following property: - - test.relaxTiming=true - - 9. It is known that some platforms (e.g. OSX El Capitan) require IPv4 to - be the default for the multicast tests to work. This is configured by - the following property: - - java.net.preferIPv4Stack=true - - 10. It is possible to control whether the output of the tests is displayed - on the console or not. By default it is displayed and can be disabled - by the following property: - - test.verbose=true - -(8) Source code checks - -(8.1) Checkstyle - -NOTE: Checkstyle is licensed under LGPL. Using Checkstyle during Tomcat - build is optional and is off by default. - - See http://checkstyle.sourceforge.net/ for more information. - -Tomcat comes with a Checkstyle configuration that tests its source code -for certain conventions, like presence of the license header. - -To enable Checkstyle, add the following property to build.properties file: - - execute.validate=true - -Once Checkstyle is enabled, the check will be performed automatically -during the build. The check is run before compilation of the source code. - -To speed-up repeated runs of this check, a cache is configured. The cache -is located in the following directory: - - output/res/checkstyle - -It is possible to run the check separately by calling the "validate" -target. The command is: - - cd ${tomcat.source} - ant -Dexecute.validate=true validate - - -(8.2) FindBugs - -NOTE: FindBugs is licensed under LGPL. Using Findbugs during Tomcat build is - optional and is off by default. - - See http://findbugs.sourceforge.net/ for more information. - -To enable FindBugs, add the following property to build.properties file: - - execute.findbugs=true - -To compile Tomcat classes and generate a FindBugs report, call the -"findbugs" target. For example: - - cd ${tomcat.source} - ant -Dexecute.findbugs=true findbugs - -The report file by default is written to - - output/findbugs - - -(8.3) End-of-line conventions check - -You usually would not need to run this check. You can skip this section. - -Apache Tomcat project has convention that all of its textual source files, -stored in Subversion repository, are marked with Subversion property -"svn:eol-style" with value of "native". This convention makes the editing -of source code on different platforms easier. - -This test is used by developers to check that the source code adheres to -this convention. It verifies that the ends of lines in textual files are -appropriate for the operating system where it is run. The idea is to run -this check regularly on two different platforms and notify developers when -an inconsistency is detected. - -The command to run this test is: - - cd ${tomcat.source} - ant validate-eoln diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/RELEASE-NOTES.txt b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/RELEASE-NOTES.txt deleted file mode 100644 index 7e7ff442c50856d38f3e57f52c7e7f88bb0b4b4e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/RELEASE-NOTES.txt +++ /dev/null @@ -1,178 +0,0 @@ -================================================================================ - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -================================================================================ - - - Apache Tomcat Version 8.5.27 - Release Notes - - -========= -CONTENTS: -========= - -* Dependency Changes -* API Stability -* Bundled APIs -* Web application reloading and static fields in shared libraries -* Security manager URLs -* Symlinking static resources -* Viewing the Tomcat Change Log -* Cryptographic software notice -* When all else fails - - -=================== -Dependency Changes: -=================== -Tomcat 8.5 is designed to run on Java SE 7 and later. - - -============== -API Stability: -============== - -The public interfaces for the following classes are fixed and will not be -changed at all during the remaining lifetime of the 8.x series: -- All classes in the javax namespace - -The public interfaces for the following classes may be added to in order to -resolve bugs and/or add new features. No existing interface method will be -removed or changed although it may be deprecated. -- org.apache.catalina.* (excluding sub-packages) - -Note: As Tomcat 8 matures, the above list will be added to. The list is not - considered complete at this time. - -Note: A large number of deprecated methods, fields and configuration options - were removed in the transition from 8.0.x to 8.5.x. If any of those - removals triggers significant problems for the user community that the - deletion may be reverted in a later point release. - -The remaining classes are considered part of the Tomcat internals and may change -without notice between point releases. - - -============= -Bundled APIs: -============= -A standard installation of Tomcat 8.5 makes all of the following APIs available -for use by web applications (by placing them in "lib"): -* annotations-api.jar (Annotations package) -* catalina.jar (Tomcat Catalina implementation) -* catalina-ant.jar (Tomcat Catalina Ant tasks) -* catalina-ha.jar (High availability package) -* catalina-storeconfig.jar (Generation of XML configuration from current state) -* catalina-tribes.jar (Group communication) -* ecj-4.6.3.jar (Eclipse JDT Java compiler) -* el-api.jar (EL 3.0 API) -* jasper.jar (Jasper 2 Compiler and Runtime) -* jasper-el.jar (Jasper 2 EL implementation) -* jsp-api.jar (JSP 2.3 API) -* servlet-api.jar (Servlet 3.1 API) -* tomcat-api.jar (Interfaces shared by Catalina and Jasper) -* tomcat-coyote.jar (Tomcat connectors and utility classes) -* tomcat-dbcp.jar (package renamed database connection pool based on Commons DBCP) -* tomcat-jdbc.jar (Tomcat's database connection pooling solution) -* tomcat-jni.jar (Interface to the native component of the APR/native connector) -* tomcat-util.jar (Various utilities) -* tomcat-websocket.jar (WebSocket 1.1 implementation) -* websocket-api.jar (WebSocket 1.1 API) - -You can make additional APIs available to all of your web applications by -putting unpacked classes into a "classes" directory (not created by default), -or by placing them in JAR files in the "lib" directory. - -To override the XML parser implementation or interfaces, use the appropriate -feature for your JVM. For Java <= 8 use the endorsed standards override -feature. The default configuration defines JARs located in "endorsed" as endorsed. -For Java 9+ use the upgradeable modules feature. - - -================================================================ -Web application reloading and static fields in shared libraries: -================================================================ -Some shared libraries (many are part of the JDK) keep references to objects -instantiated by the web application. To avoid class loading related problems -(ClassCastExceptions, messages indicating that the classloader -is stopped, etc.), the shared libraries state should be reinitialized. - -Something which might help is to avoid putting classes which would be -referenced by a shared static field in the web application classloader, -and putting them in the shared classloader instead (JARs should be put in the -"lib" folder, and classes should be put in the "classes" folder). - - -====================== -Security manager URLs: -====================== -In order to grant security permissions to JARs located inside the -web application repository, use URLs of of the following format -in your policy file: - -file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar - - -============================ -Symlinking static resources: -============================ -By default, Unix symlinks will not work when used in a web application to link -resources located outside the web application root directory. - -This behavior is optional, and the "allowLinking" flag may be used to disable -the check. - - -============================== -Viewing the Tomcat Change Log: -============================== -The full change log is available from http://tomcat.apache.org and is also -included in the documentation web application. - - -============================= -Cryptographic software notice -============================= -This distribution includes cryptographic software. The country in -which you currently reside may have restrictions on the import, -possession, use, and/or re-export to another country, of -encryption software. BEFORE using any encryption software, please -check your country's laws, regulations and policies concerning the -import, possession, or use, and re-export of encryption software, to -see if this is permitted. See for more -information. - -The U.S. Government Department of Commerce, Bureau of Industry and -Security (BIS), has classified this software as Export Commodity -Control Number (ECCN) 5D002.C.1, which includes information security -software using or performing cryptographic functions with asymmetric -algorithms. The form and manner of this Apache Software Foundation -distribution makes it eligible for export under the License Exception -ENC Technology Software Unrestricted (TSU) exception (see the BIS -Export Administration Regulations, Section 740.13) for both object -code and source code. - -The following provides more details on the included cryptographic -software: - - Tomcat includes code designed to work with JSSE - - Tomcat includes code designed to work with OpenSSL - - -==================== -When all else fails: -==================== -See the FAQ -http://tomcat.apache.org/faq/ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/RUNNING.txt b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/RUNNING.txt deleted file mode 100644 index 720b06b08cdc9ad5a8ffd448955ad615004c0ad5..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/RUNNING.txt +++ /dev/null @@ -1,476 +0,0 @@ -================================================================================ - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -================================================================================ - - =================================================== - Running The Apache Tomcat 8.5 Servlet/JSP Container - =================================================== - -Apache Tomcat 8.5 requires a Java Standard Edition Runtime -Environment (JRE) version 7 or later. - -============================= -Running With JRE 7 Or Later -============================= - -(1) Download and Install a Java SE Runtime Environment (JRE) - -(1.1) Download a Java SE Runtime Environment (JRE), - release version 7 or later, from - http://www.oracle.com/technetwork/java/javase/downloads/index.html - -(1.2) Install the JRE according to the instructions included with the - release. - - You may also use a full Java Development Kit (JDK) rather than just - a JRE. - - -(2) Download and Install Apache Tomcat - -(2.1) Download a binary distribution of Tomcat from: - - http://tomcat.apache.org/ - -(2.2) Unpack the binary distribution so that it resides in its own - directory (conventionally named "apache-tomcat-[version]"). - - For the purposes of the remainder of this document, the name - "CATALINA_HOME" is used to refer to the full pathname of that - directory. - -NOTE: As an alternative to downloading a binary distribution, you can -create your own from the Tomcat source code, as described in -"BUILDING.txt". You can either - - a) Do the full "release" build and find the created distribution in the - "output/release" directory and then proceed with unpacking as above, or - - b) Do a simple build and use the "output/build" directory as - "CATALINA_HOME". Be warned that there are some differences between the - contents of the "output/build" directory and a full "release" - distribution. - - -(3) Configure Environment Variables - -Tomcat is a Java application and does not use environment variables directly. -Environment variables are used by the Tomcat startup scripts. The scripts use -the environment variables to prepare the command that starts Tomcat. - -(3.1) Set CATALINA_HOME (required) and CATALINA_BASE (optional) - -The CATALINA_HOME environment variable should be set to the location of the -root directory of the "binary" distribution of Tomcat. - -The Tomcat startup scripts have some logic to set this variable -automatically if it is absent, based on the location of the startup script -in *nix and on the current directory in Windows. That logic might not work -in all circumstances, so setting the variable explicitly is recommended. - -The CATALINA_BASE environment variable specifies location of the root -directory of the "active configuration" of Tomcat. It is optional. It -defaults to be equal to CATALINA_HOME. - -Using distinct values for the CATALINA_HOME and CATALINA_BASE variables is -recommended to simplify further upgrades and maintenance. It is documented -in the "Multiple Tomcat Instances" section below. - - -(3.2) Set JRE_HOME or JAVA_HOME (required) - -These variables are used to specify location of a Java Runtime -Environment or of a Java Development Kit that is used to start Tomcat. - -The JRE_HOME variable is used to specify location of a JRE. The JAVA_HOME -variable is used to specify location of a JDK. - -Using JAVA_HOME provides access to certain additional startup options that -are not allowed when JRE_HOME is used. - -If both JRE_HOME and JAVA_HOME are specified, JRE_HOME is used. - -The recommended place to specify these variables is a "setenv" script. See -below. - - -(3.3) Other variables (optional) - -Other environment variables exist, besides the four described above. -See the comments at the top of catalina.bat or catalina.sh scripts for -the list and a description of each of them. - -One frequently used variable is CATALINA_OPTS. It allows specification of -additional options for the java command that starts Tomcat. - -See the Java documentation for the options that affect the Java Runtime -Environment. - -See the "System Properties" page in the Tomcat Configuration Reference for -the system properties that are specific to Tomcat. - -A similar variable is JAVA_OPTS. It is used less frequently. It allows -specification of options that are used both to start and to stop Tomcat as well -as for other commands. - -Note: Do not use JAVA_OPTS to specify memory limits. You do not need much -memory for a small process that is used to stop Tomcat. Those settings -belong to CATALINA_OPTS. - -Another frequently used variable is CATALINA_PID (on *nix only). It -specifies the location of the file where process id of the forked Tomcat -java process will be written. This setting is optional. It will enable the -following features: - - * better protection against duplicate start attempts and - * allows forceful termination of Tomcat process when it does not react to - the standard shutdown command. - - -(3.4) Using the "setenv" script (optional, recommended) - -Apart from CATALINA_HOME and CATALINA_BASE, all environment variables can -be specified in the "setenv" script. The script is placed either into -CATALINA_BASE/bin or into CATALINA_HOME/bin directory and is named -setenv.bat (on Windows) or setenv.sh (on *nix). The file has to be -readable. - -By default the setenv script file is absent. If the script file is present -both in CATALINA_BASE and in CATALINA_HOME, the one in CATALINA_BASE is -preferred. - -For example, to configure the JRE_HOME and CATALINA_PID variables you can -create the following script file: - -On Windows, %CATALINA_BASE%\bin\setenv.bat: - - set "JRE_HOME=%ProgramFiles%\Java\jre7" - exit /b 0 - -On *nix, $CATALINA_BASE/bin/setenv.sh: - - JRE_HOME=/usr/java/latest - CATALINA_PID="$CATALINA_BASE/tomcat.pid" - - -The CATALINA_HOME and CATALINA_BASE variables cannot be configured in the -setenv script, because they are used to locate that file. - -All the environment variables described here and the "setenv" script are -used only if you use the standard scripts to launch Tomcat. For example, if -you have installed Tomcat as a service on Windows, the service wrapper -launches Java directly and does not use the script files. - - -(4) Start Up Tomcat - -(4.1) Tomcat can be started by executing one of the following commands: - - On Windows: - - %CATALINA_HOME%\bin\startup.bat - - or - - %CATALINA_HOME%\bin\catalina.bat start - - On *nix: - - $CATALINA_HOME/bin/startup.sh - - or - - $CATALINA_HOME/bin/catalina.sh start - -(4.2) After startup, the default web applications included with Tomcat will be - available by visiting: - - http://localhost:8080/ - -(4.3) Further information about configuring and running Tomcat can be found in - the documentation included here, as well as on the Tomcat web site: - - http://tomcat.apache.org/ - - -(5) Shut Down Tomcat - -(5.1) Tomcat can be shut down by executing one of the following commands: - - On Windows: - - %CATALINA_HOME%\bin\shutdown.bat - - or - - %CATALINA_HOME%\bin\catalina.bat stop - - On *nix: - - $CATALINA_HOME/bin/shutdown.sh - - or - - $CATALINA_HOME/bin/catalina.sh stop - -================================================== -Advanced Configuration - Multiple Tomcat Instances -================================================== - -In many circumstances, it is desirable to have a single copy of a Tomcat -binary distribution shared among multiple users on the same server. To make -this possible, you can set the CATALINA_BASE environment variable to the -directory that contains the files for your 'personal' Tomcat instance. - -When running with a separate CATALINA_HOME and CATALINA_BASE, the files -and directories are split as following: - -In CATALINA_BASE: - - * bin - Only the following files: - - * setenv.sh (*nix) or setenv.bat (Windows), - * tomcat-juli.jar - - The setenv scripts were described above. The tomcat-juli library - is documented in the Logging chapter in the User Guide. - - * conf - Server configuration files (including server.xml) - - * lib - Libraries and classes, as explained below - - * logs - Log and output files - - * webapps - Automatically loaded web applications - - * work - Temporary working directories for web applications - - * temp - Directory used by the JVM for temporary files (java.io.tmpdir) - - -In CATALINA_HOME: - - * bin - Startup and shutdown scripts - - The following files will be used only if they are absent in - CATALINA_BASE/bin: - - setenv.sh (*nix), setenv.bat (Windows), tomcat-juli.jar - - * lib - Libraries and classes, as explained below - - * endorsed - Libraries that override standard "Endorsed Standards" - libraries provided by JRE. See Classloading documentation - in the User Guide for details. - This is only supported for Java <= 8. - By default this "endorsed" directory is absent. - -In the default configuration the JAR libraries and classes both in -CATALINA_BASE/lib and in CATALINA_HOME/lib will be added to the common -classpath, but the ones in CATALINA_BASE will be added first and thus will -be searched first. - -The idea is that you may leave the standard Tomcat libraries in -CATALINA_HOME/lib and add other ones such as database drivers into -CATALINA_BASE/lib. - -In general it is advised to never share libraries between web applications, -but put them into WEB-INF/lib directories inside the applications. See -Classloading documentation in the User Guide for details. - - -It might be useful to note that the values of CATALINA_HOME and -CATALINA_BASE can be referenced in the XML configuration files processed -by Tomcat as ${catalina.home} and ${catalina.base} respectively. - -For example, the standard manager web application can be kept in -CATALINA_HOME/webapps/manager and loaded into CATALINA_BASE by using -the following trick: - - * Copy the CATALINA_HOME/webapps/manager/META-INF/context.xml - file as CATALINA_BASE/conf/Catalina/localhost/manager.xml - - * Add docBase attribute as shown below. - -The file will look like the following: - - - - - - -See Deployer chapter in User Guide and Context and Host chapters in the -Configuration Reference for more information on contexts and web -application deployment. - - -================ -Troubleshooting -================ - -There are only really 2 things likely to go wrong during the stand-alone -Tomcat install: - -(1) The most common hiccup is when another web server (or any process for that - matter) has laid claim to port 8080. This is the default HTTP port that - Tomcat attempts to bind to at startup. To change this, open the file: - - $CATALINA_HOME/conf/server.xml - - and search for '8080'. Change it to a port that isn't in use, and is - greater than 1024, as ports less than or equal to 1024 require superuser - access to bind under UNIX. - - Restart Tomcat and you're in business. Be sure that you replace the "8080" - in the URL you're using to access Tomcat. For example, if you change the - port to 1977, you would request the URL http://localhost:1977/ in your - browser. - -(2) The 'localhost' machine isn't found. This could happen if you're behind a - proxy. If that's the case, make sure the proxy configuration for your - browser knows that you shouldn't be going through the proxy to access the - "localhost". - - In Firefox, this is under Tools/Preferences -> Advanced/Network -> - Connection -> Settings..., and in Internet Explorer it is Tools -> - Internet Options -> Connections -> LAN Settings. - - -==================== -Optional Components -==================== - -The following optional components may be included with the Apache Tomcat binary -distribution. If they are not included, you can install them separately. - - 1. Apache Tomcat Native library - - 2. Apache Commons Daemon service launcher - -Both of them are implemented in C language and as such have to be compiled -into binary code. The binary code will be specific for a platform and CPU -architecture and it must match the Java Runtime Environment executables -that will be used to launch Tomcat. - -The Windows-specific binary distributions of Apache Tomcat include binary -files for these components. On other platforms you would have to look for -binary versions elsewhere or compile them yourself. - -If you are new to Tomcat, do not bother with these components to start with. -If you do use them, do not forget to read their documentation. - - -Apache Tomcat Native library ------------------------------ - -It is a library that allows to use the "Apr" variant of HTTP and AJP -protocol connectors in Apache Tomcat. It is built around OpenSSL and Apache -Portable Runtime (APR) libraries. Those are the same libraries as used by -Apache HTTPD Server project. - -This feature was especially important in the old days when Java performance -was poor. It is less important nowadays, but it is still used and respected -by many. See Tomcat documentation for more details. - -For further reading: - - - Apache Tomcat documentation - - * Documentation for APR/Native library in the Tomcat User's Guide - - http://tomcat.apache.org/tomcat-8.5-doc/apr.html - - * Documentation for the HTTP and AJP protocol connectors in the Tomcat - Configuration Reference - - http://tomcat.apache.org/tomcat-8.5-doc/config/http.html - - http://tomcat.apache.org/tomcat-8.5-doc/config/ajp.html - - - Apache Tomcat Native project home - - http://tomcat.apache.org/native-doc/ - - - Other projects - - * OpenSSL - - http://openssl.org/ - - * Apache Portable Runtime - - http://apr.apache.org/ - - * Apache HTTP Server - - http://httpd.apache.org/ - -To disable Apache Tomcat Native library: - - - To disable Apache Tomcat Native library when it is installed, or - - To remove the warning that is logged during Tomcat startup when the - library is not installed: - - Edit the "conf/server.xml" file and remove "AprLifecycleListener" from - it. - -The binary file of Apache Tomcat Native library is usually named - - - "tcnative-1.dll" on Windows - - "libtcnative-1.so" on *nix systems - - -Apache Commons Daemon ----------------------- - -Apache Commons Daemon project provides wrappers that can be used to -install Apache Tomcat as a service on Windows or as a daemon on *nix -systems. - -The Windows-specific implementation of Apache Commons Daemon is called -"procrun". The *nix-specific one is called "jsvc". - -For further reading: - - - Apache Commons Daemon project - - http://commons.apache.org/daemon/ - - - Apache Tomcat documentation - - * Installing Apache Tomcat - - http://tomcat.apache.org/tomcat-8.5-doc/setup.html - - * Windows service HOW-TO - - http://tomcat.apache.org/tomcat-8.5-doc/windows-service-howto.html - -The binary files of Apache Commons Daemon in Apache Tomcat distributions -for Windows are named: - - - "tomcat8.exe" - - "tomcat8w.exe" - -These files are renamed copies of "prunsrv.exe" and "prunmgr.exe" from -Apache Commons Daemon distribution. The file names have a meaning: they are -used as the service name to register the service in Windows, as well as the -key name to store distinct configuration for this installation of -"procrun". If you would like to install several instances of Tomcat 8.5 -in parallel, you have to further rename those files, using the same naming -scheme. diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/WEB-INF/web.xml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/WEB-INF/web.xml deleted file mode 100644 index 8920ccd7561759833a4326a2be3994eadc4a6f11..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/WEB-INF/web.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - Tomcat Documentation - - Tomcat Documentation. - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/aio.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/aio.html deleted file mode 100644 index 1735c1cd6ad35fdadb35e19c4935db983edb051d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/aio.html +++ /dev/null @@ -1,97 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Advanced IO and Tomcat

Advanced IO and Tomcat

Table of Contents

Introduction

- -

- IMPORTANT NOTE: Usage of these features requires using the - HTTP connectors. The AJP connectors do not support them. -

- -

Asynchronous writes

- -

- When using HTTP connectors (based on APR or NIO/NIO2), - Tomcat supports using sendfile to send large static files. - These writes, as soon as the system load increases, will be performed - asynchronously in the most efficient way. Instead of sending a large response using - blocking writes, it is possible to write content to a static file, and write it - using a sendfile code. A caching valve could take advantage of this to cache the - response data in a file rather than store it in memory. Sendfile support is - available if the request attribute org.apache.tomcat.sendfile.support - is set to Boolean.TRUE. -

- -

- Any servlet can instruct Tomcat to perform a sendfile call by setting the appropriate - request attributes. It is also necessary to correctly set the content length - for the response. When using sendfile, it is best to ensure that neither the - request or response have been wrapped, since as the response body will be sent later - by the connector itself, it cannot be filtered. Other than setting the 3 needed - request attributes, the servlet should not send any response data, but it may use - any method which will result in modifying the response header (like setting cookies). -

- -
    -
  • org.apache.tomcat.sendfile.filename: Canonical filename of the file which will be sent as - a String
  • -
  • org.apache.tomcat.sendfile.start: Start offset as a Long
  • -
  • org.apache.tomcat.sendfile.end: End offset as a Long
  • -
-

- In addition to setting these parameters it is necessary to set the content-length header. - Tomcat will not do that for you, since you may have already written data to the output stream. -

- -

- Note that the use of sendfile will disable any compression that Tomcat may - otherwise have performed on the response. -

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/api/index.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/api/index.html deleted file mode 100644 index 8e1a34326b4860de5a8030c3eb83b099c9de62e1..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/api/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - API docs - - - - -Tomcat's internal javadoc is not installed by default. Download and install -the "fulldocs" package to get it. - -You can also access the javadoc online in the Tomcat - -documentation bundle. - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/build.xml.txt b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/build.xml.txt deleted file mode 100644 index 51d8350e8b0c425f03868972c8222cb9819ec467..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/build.xml.txt +++ /dev/null @@ -1,508 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/deployment.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/deployment.html deleted file mode 100644 index 99d5b569e4ef57fd7a12399cfe41e987be330747..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/deployment.html +++ /dev/null @@ -1,244 +0,0 @@ - -Application Developer's Guide (8.5.27) - Deployment

Deployment

Table of Contents

Background

- -

Before describing how to organize your source code directories, -it is useful to examine the runtime organization of a web application. -Prior to the Servlet API Specification, version 2.2, there was little -consistency between server platforms. However, servers that conform -to the 2.2 (or later) specification are required to accept a -Web Application Archive in a standard format, which is discussed -further below.

- -

A web application is defined as a hierarchy of directories and files -in a standard layout. Such a hierarchy can be accessed in its "unpacked" -form, where each directory and file exists in the filesystem separately, -or in a "packed" form known as a Web ARchive, or WAR file. The former format -is more useful during development, while the latter is used when you -distribute your application to be installed.

- -

The top-level directory of your web application hierarchy is also the -document root of your application. Here, you will place the HTML -files and JSP pages that comprise your application's user interface. When the -system administrator deploys your application into a particular server, he -or she assigns a context path to your application (a later section -of this manual describes deployment on Tomcat). Thus, if the -system administrator assigns your application to the context path -/catalog, then a request URI referring to -/catalog/index.html will retrieve the index.html -file from your document root.

- -

Standard Directory Layout

- -

To facilitate creation of a Web Application Archive file in the required -format, it is convenient to arrange the "executable" files of your web -application (that is, the files that Tomcat actually uses when executing -your app) in the same organization as required by the WAR format itself. -To do this, you will end up with the following contents in your -application's "document root" directory:

-
    -
  • *.html, *.jsp, etc. - The HTML and JSP pages, along - with other files that must be visible to the client browser (such as - JavaScript, stylesheet files, and images) for your application. - In larger applications you may choose to divide these files into - a subdirectory hierarchy, but for smaller apps, it is generally - much simpler to maintain only a single directory for these files. -

  • -
  • /WEB-INF/web.xml - The Web Application Deployment - Descriptor for your application. This is an XML file describing - the servlets and other components that make up your application, - along with any initialization parameters and container-managed - security constraints that you want the server to enforce for you. - This file is discussed in more detail in the following subsection. -

  • -
  • /WEB-INF/classes/ - This directory contains any Java - class files (and associated resources) required for your application, - including both servlet and non-servlet classes, that are not combined - into JAR files. If your classes are organized into Java packages, - you must reflect this in the directory hierarchy under - /WEB-INF/classes/. For example, a Java class named - com.mycompany.mypackage.MyServlet - would need to be stored in a file named - /WEB-INF/classes/com/mycompany/mypackage/MyServlet.class. -

  • -
  • /WEB-INF/lib/ - This directory contains JAR files that - contain Java class files (and associated resources) required for your - application, such as third party class libraries or JDBC drivers.
  • -
- -

When you install an application into Tomcat (or any other 2.2 or later -Servlet container), the classes in the WEB-INF/classes/ -directory, as well as all classes in JAR files found in the -WEB-INF/lib/ directory, are made visible to other classes -within your particular web application. Thus, if -you include all of the required library classes in one of these places (be -sure to check licenses for redistribution rights for any third party libraries -you utilize), you will simplify the installation of your web application -- -no adjustment to the system class path (or installation of global library -files in your server) will be necessary.

- -

Much of this information was extracted from Chapter 9 of the Servlet -API Specification, version 2.3, which you should consult for more details.

- -

Shared Library Files

- -

Like most servlet containers, Tomcat also supports mechanisms to install -library JAR files (or unpacked classes) once, and make them visible to all -installed web applications (without having to be included inside the web -application itself). The details of how Tomcat locates and shares such -classes are described in the -Class Loader HOW-TO documentation. -The location commonly used within a Tomcat installation for shared code is -$CATALINA_HOME/lib. JAR files placed here are visible both to -web applications and internal Tomcat code. This is a good place to put JDBC -drivers that are required for both your application or internal Tomcat use -(such as for a JDBCRealm).

- -

Out of the box, a standard Tomcat installation includes a variety -of pre-installed shared library files, including:

-
    -
  • The Servlet 3.1 and JSP 2.3 APIs that are fundamental - to writing servlets and JavaServer Pages.

  • -
- -

Web Application Deployment Descriptor

- -

As mentioned above, the /WEB-INF/web.xml file contains the -Web Application Deployment Descriptor for your application. As the filename -extension implies, this file is an XML document, and defines everything about -your application that a server needs to know (except the context path, -which is assigned by the system administrator when the application is -deployed).

- -

The complete syntax and semantics for the deployment descriptor is defined -in Chapter 13 of the Servlet API Specification, version 2.3. Over time, it -is expected that development tools will be provided that create and edit the -deployment descriptor for you. In the meantime, to provide a starting point, -a basic web.xml file -is provided. This file includes comments that describe the purpose of each -included element.

- -

NOTE - The Servlet Specification includes a Document -Type Descriptor (DTD) for the web application deployment descriptor, and -Tomcat enforces the rules defined here when processing your application's -/WEB-INF/web.xml file. In particular, you must -enter your descriptor elements (such as <filter>, -<servlet>, and <servlet-mapping> in -the order defined by the DTD (see Section 13.3).

- -

Tomcat Context Descriptor

- -

A /META-INF/context.xml file can be used to define Tomcat specific -configuration options, such as an access log, data sources, session manager -configuration and more. This XML file must contain one Context element, which -will be considered as if it was the child of the Host element corresponding -to the Host to which the web application is being deployed. The -Tomcat configuration documentation contains -information on the Context element.

- -

Deployment With Tomcat

- -

The description below uses the variable name $CATALINA_BASE to refer the - base directory against which most relative paths are resolved. If you have - not configured Tomcat for multiple instances by setting a CATALINA_BASE - directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME, - the directory into which you have installed Tomcat.

- -

In order to be executed, a web application must be deployed on -a servlet container. This is true even during development. -We will describe using Tomcat to provide the execution environment. -A web application can be deployed in Tomcat by one of the following -approaches:

-
    -
  • Copy unpacked directory hierarchy into a subdirectory in directory - $CATALINA_BASE/webapps/. Tomcat will assign a - context path to your application based on the subdirectory name you - choose. We will use this technique in the build.xml - file that we construct, because it is the quickest and easiest approach - during development. Be sure to restart Tomcat after installing or - updating your application. -

  • -
  • Copy the web application archive file into directory - $CATALINA_BASE/webapps/. When Tomcat is started, it will - automatically expand the web application archive file into its unpacked - form, and execute the application that way. This approach would typically - be used to install an additional application, provided by a third party - vendor or by your internal development staff, into an existing - Tomcat installation. NOTE - If you use this approach, - and wish to update your application later, you must both replace the - web application archive file AND delete the expanded - directory that Tomcat created, and then restart Tomcat, in order to reflect - your changes. -

  • -
  • Use the Tomcat "Manager" web application to deploy and undeploy - web applications. Tomcat includes a web application, deployed - by default on context path /manager, that allows you to - deploy and undeploy applications on a running Tomcat server without - restarting it. See Manager App HOW-TO - for more information on using the Manager web application.

  • -
  • Use "Manager" Ant Tasks In Your Build Script. Tomcat - includes a set of custom task definitions for the Ant - build tool that allow you to automate the execution of commands to the - "Manager" web application. These tasks are used in the Tomcat deployer. -

  • -
  • Use the Tomcat Deployer. Tomcat includes a packaged tool - bundling the Ant tasks, and can be used to automatically precompile JSPs - which are part of the web application before deployment to the server. -

  • -
- -

Deploying your app on other servlet containers will be specific to each -container, but all containers compatible with the Servlet API Specification -(version 2.2 or later) are required to accept a web application archive file. -Note that other containers are NOT required to accept an -unpacked directory structure (as Tomcat does), or to provide mechanisms for -shared library files, but these features are commonly available.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/index.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/index.html deleted file mode 100644 index 274757770ef86f51e6bc650e65a06c84b4d22c55..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/index.html +++ /dev/null @@ -1,87 +0,0 @@ - -Application Developer's Guide (8.5.27) - Table of Contents

Table of Contents

Preface

- -

This manual includes contributions from many members of the Tomcat Project -developer community. The following authors have provided significant content: -

- - -

Table of Contents

- -

The information presented is divided into the following sections:

-
    -
  • Introduction - - Briefly describes the information covered here, with - links and references to other sources of information.
  • -
  • Installation - - Covers acquiring and installing the required software - components to use Tomcat for web application development.
  • -
  • Deployment Organization - - Discusses the standard directory layout for a web application - (defined in the Servlet API Specification), the Web Application - Deployment Descriptor, and options for integration with Tomcat - in your development environment.
  • -
  • Source Organization - - Describes a useful approach to organizing the source code - directories for your project, and introduces the - build.xml used by Ant to manage compilation.
  • -
  • Development Processes - - Provides brief descriptions of typical development processes - utilizing the recommended deployment and source organizations.
  • -
  • Example Application - - This directory contains a very simple, but functionally complete, - "Hello, World" application built according to the principles - described in this manual. You can use this application to - practice using the described techniques.
  • -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/installation.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/installation.html deleted file mode 100644 index e36e8b0e34ea2699e53f10b1df846904ae8fb4f8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/installation.html +++ /dev/null @@ -1,115 +0,0 @@ - -Application Developer's Guide (8.5.27) - Installation

Installation

Installation

- -

In order to use Tomcat for developing web applications, you must first -install it (and the software it depends on). The required steps are outlined -in the following subsections.

- -

JDK

- -

Tomcat 8.5 was designed to run on Java SE 7. -

- -

Compatible JDKs for many platforms (or links to where they can be found) -are available at -http://www.oracle.com/technetwork/java/javase/downloads/index.html.

- -
- -

Tomcat

- -

Binary downloads of the Tomcat server are available from -http://tomcat.apache.org/. -This manual assumes you are using the most recent release -of Tomcat 8. Detailed instructions for downloading and installing -Tomcat are available here.

- -

In the remainder of this manual, example shell scripts assume that you have -set an environment variable CATALINA_HOME that contains the -pathname to the directory in which Tomcat has been installed. Optionally, if -Tomcat has been configured for multiple instances, each instance will have its -own CATALINA_BASE configured.

- -
- - -

Ant

- -

Binary downloads of the Ant build tool are available from -http://ant.apache.org/. -This manual assumes you are using Ant 1.8 or later. The instructions may -also be compatible with other versions, but this has not been tested.

- -

Download and install Ant. -Then, add the bin directory of the Ant distribution to your -PATH environment variable, following the standard practices for -your operating system platform. Once you have done this, you will be able to -execute the ant shell command directly.

- -
- - -

CVS

- -

Besides the required tools described above, you are strongly encouraged -to download and install a source code control system, such as the -Concurrent Version System (CVS), to maintain historical -versions of the source files that make up your web application. Besides -the server, you will also need appropriate client -tools to check out source code files, and check in modified versions.

- -

Detailed instructions for installing and using source code control -applications is beyond the scope of this manual. However, CVS server and -client tools for many platforms (along with documentation) can be downloaded -from http://www.cvshome.org/.

- -
- - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/introduction.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/introduction.html deleted file mode 100644 index 7374a984952a2ed735421eec72a81cb9ac0df435..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/introduction.html +++ /dev/null @@ -1,100 +0,0 @@ - -Application Developer's Guide (8.5.27) - Introduction

Introduction

Overview

- -

Congratulations! You've decided to (or been told to) learn how to -build web applications using servlets and JSP pages, and picked the -Tomcat server to use for your learning and development. But now what -do you do?

- -

This manual is a primer covering the basic steps of using Tomcat to -set up a development environment, organize your source code, and then -build and test your application. It does not discuss architectures or -recommended coding practices for web application development, -or provide in depth instructions on operating the development -tools that are discussed. References to sources of additional information -are included in the following subsections.

- -

The discussion in this manual is aimed at developers who will be using -a text editor along with command line tools to develop and debug their -applications. As such, the recommendations are fairly generic – but you -should easily be able to apply them in either a Windows-based or Unix-based -development environment. If you are utilizing an Integrated Development -Environment (IDE) tool, you will need to adapt the advice given here to -the details of your particular environment.

- -
- -

The following links provide access to selected sources of online -information, documentation, and software that is useful in developing -web applications with Tomcat.

-
    -
  • http://jcp.org/aboutJava/communityprocess/mrel/jsr245/index2.html - - JavaServer Pages (JSP) Specification, Version 2.3. Describes - the programming environment provided by standard implementations - of the JavaServer Pages (JSP) technology. In conjunction with - the Servlet API Specification (see below), this document describes - what a portable API page is allowed to contain. Specific - information on scripting (Chapter 9), tag extensions (Chapter 7), - and packaging JSP pages (Appendix A) is useful. The Javadoc - API Documentation is included in the specification, and with the - Tomcat download.

  • -
  • http://jcp.org/aboutJava/communityprocess/final/jsr340/index.html - - Servlet API Specification, Version 3.1. Describes the - programming environment that must be provided by all servlet - containers conforming to this specification. In particular, you - will need this document to understand the web application - directory structure and deployment file (Chapter 10), methods of - mapping request URIs to servlets (Chapter 12), container managed - security (Chapter 13), and the syntax of the web.xml - Web Application Deployment Descriptor (Chapter 14). The Javadoc - API Documentation is included in the specification, and with the - Tomcat download.

  • -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/processes.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/processes.html deleted file mode 100644 index d75fcfc70cb4d40bd1af1c4824901e8196f4d8b4..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/processes.html +++ /dev/null @@ -1,315 +0,0 @@ - -Application Developer's Guide (8.5.27) - Development Processes

Development Processes

Table of Contents

Development Processes

- -

Although application development can take many forms, this manual proposes -a fairly generic process for creating web applications using Tomcat. The -following sections highlight the commands and tasks that you, as the developer -of the code, will perform. The same basic approach works when you have -multiple programmers involved, as long as you have an appropriate source code -control system and internal team rules about who is working on what parts -of the application at any given time.

- -

The task descriptions below assume that you will be using CVS for source -code control, and that you have already configured access to the appropriate -CVS repository. Instructions for doing this are beyond the scope of this -manual. If you are using a different source code control environment, you -will need to figure out the corresponding commands for your system.

- - -

One-Time Setup of Ant and Tomcat for Development

- -

In order to take advantage of the special Ant tasks that interact with the -Manager web application, you need to perform the following tasks -once (no matter how many web applications you plan to develop).

-
    -
  • Configure the Ant custom tasks. The implementation code for the - Ant custom tasks is in a JAR file named - $CATALINA_HOME/lib/catalina-ant.jar, which must be - copied in to the lib directory of your Ant installation. -

  • -
  • Define one or more Tomcat users. The Manager web - application runs under a security constraint that requires a user to be - logged in, and have the security role manager-script assigned - to him or her. How such users are defined depends on which Realm you have - configured in Tomcat's conf/server.xml file -- see the - Realm Configuration HOW-TO for more - information. You may define any number of users (with any username - and password that you like) with the manager-script role. -

  • -
- -
- - -

Create Project Source Code Directory

- -

The first step is to create a new project source directory, and customize -the build.xml and build.properties files you will -be using. The directory structure is described in the -previous section, or you can use the -sample application as a starting point.

- -

Create your project source directory, and define it within your CVS -repository. This might be done by a series of commands like this, where -{project} is the name under which your project should be -stored in the CVS repository, and {username} is your login username:

-
cd {my home directory}
-mkdir myapp <-- Assumed "project source directory"
-cd myapp
-mkdir docs
-mkdir src
-mkdir web
-mkdir web/WEB-INF
-cvs import -m "Initial Project Creation" {project} \
-    {username} start
- -

Now, to verify that it was created correctly in CVS, we will perform a -checkout of the new project:

-
cd ..
-mv myapp myapp.bu
-cvs checkout {project}
- -

Next, you will need to create and check in an initial version of the -build.xml script to be used for development. For getting -started quickly and easily, base your build.xml on the -basic build.xml file, included with this manual, -or code it from scratch.

-
cd {my home directory}
-cd myapp
-emacs build.xml     <-- if you want a real editor :-)
-cvs add build.xml
-cvs commit
- -

Until you perform the CVS commit, your changes are local to your own -development directory. Committing makes those changes visible to other -developers on your team that are sharing the same CVS repository.

- -

The next step is to customize the Ant properties that are -named in the build.xml script. This is done by creating a -file named build.properties in your project's top-level -directory. The supported properties are listed in the comments inside -the sample build.xml script. At a minimum, you will generally -need to define the catalina.home property defining where -Tomcat is installed, and the manager application username and password. -You might end up with something like this:

-
# Context path to install this application on
-app.path=/hello
-
-# Tomcat installation directory
-catalina.home=/usr/local/apache-tomcat-<version-major-minor/>
-
-# Manager webapp username and password
-manager.username=myusername
-manager.password=mypassword
- -

In general, you will not want to check the -build.properties file in to the CVS repository, because it -is unique to each developer's environment.

- -

Now, create the initial version of the web application deployment -descriptor. You can base web.xml on the -basic web.xml file, or code it from scratch.

-
cd {my home directory}
-cd myapp/web/WEB-INF
-emacs web.xml
-cvs add web.xml
-cvs commit
- -Note that this is only an example web.xml file. The full definition -of the deployment descriptor file is in the -Servlet Specification. - -
- - -

Edit Source Code and Pages

- -

The edit/build/test tasks will generally be your most common activities -during development and maintenance. The following general principles apply. -As described in Source Organization, newly created -source files should be located in the appropriate subdirectory, under your -project source directory.

- -

Whenever you wish to refresh your development directory to reflect the -work performed by other developers, you will ask CVS to do it for you:

-
cd {my home directory}
-cd myapp
-cvs update -dP
- -

To create a new file, go to the appropriate directory, create the file, -and register it with CVS. When you are satisfied with it's contents (after -building and testing is successful), commit the new file to the repository. -For example, to create a new JSP page:

-
cd {my home directory}
-cd myapp/web        <-- Ultimate destination is document root
-emacs mypage.jsp
-cvs add mypage.jsp
-... build and test the application ...
-cvs commit
- -

Java source code that is defined in packages must be organized in a -directory hierarchy (under the src/ subdirectory) that -matches the package names. For example, a Java class named -com.mycompany.mypackage.MyClass.java should be stored in file -src/com/mycompany/mypackage/MyClass.java. -Whenever you create a new subdirectory, don't forget to -register it with CVS.

- -

To edit an existing source file, you will generally just start editing -and testing, then commit the changed file when everything works. Although -CVS can be configured to required you to "check out" or "lock" a file you -are going to be modifying, this is generally not used.

- -
- - -

Build the Web Application

- -

When you are ready to compile the application, issue the following -commands (generally, you will want a shell window open that is set to -the project source directory, so that only the last command is needed):

-
cd {my home directory}
-cd myapp        <-- Normally leave a window open here
-ant
- -

The Ant tool will be execute the default "compile" target in your -build.xml file, which will compile any new or updated Java -code. If this is the first time you compile after a "build clean", -it will cause everything to be recompiled.

- -

To force the recompilation of your entire application, do this instead:

-
cd {my home directory}
-cd myapp
-ant all
- -

This is a very good habit immediately before checking in changes, to -make sure that you have not introduced any subtle problems that Javac's -conditional checking did not catch.

- -
- - -

Test Your Web Application

- -

To test your application, you will want to install it under Tomcat. The -quickest way to do that is to use the custom Ant tasks that are included in -the sample build.xml script. Using these commands might follow -a pattern like this:

-
    -
  • Start Tomcat if needed. If Tomcat is not already running, - you will need to start it in the usual way. -

  • -
  • Compile your application. Use the ant compile - command (or just ant, since this is the default). Make - sure that there are no compilation errors. -

  • -
  • Install the application. Use the ant install - command. This tells Tomcat to immediately start running your app on - the context path defined in the app.path build property. - Tomcat does NOT have to be restarted for this to - take effect. -

  • -
  • Test the application. Using your browser or other testing - tools, test the functionality of your application. -

  • -
  • Modify and rebuild as needed. As you discover that changes - are required, make those changes in the original source - files, not in the output build directory, and re-issue the - ant compile command. This ensures that your changes will - be available to be saved (via cvs commit) later on -- - the output build directory is deleted and recreated as necessary. -

  • -
  • Reload the application. Tomcat will recognize changes in - JSP pages automatically, but it will continue to use the old versions - of any servlet or JavaBean classes until the application is reloaded. - You can trigger this by executing the ant reload command. -

  • -
  • Remove the application when you are done. When you are through - working on this application, you can remove it from live execution by - running the ant remove command. -

  • -
- -

Do not forget to commit your changes to the source code repository when -you have completed your testing!

- -
- - -

Creating a Release

- -

When you are through adding new functionality, and you've tested everything -(you DO test, don't you :-), it is time to create the distributable version -of your web application that can be deployed on the production server. The -following general steps are required:

-
    -
  • Issue the command ant all from the project source - directory, to rebuild everything from scratch one last time. -

  • -
  • Use the cvs tag command to create an identifier for - all of the source files utilized to create this release. This allows - you to reliably reconstruct a release (from sources) at a later - time. -

  • -
  • Issue the command ant dist to create a distributable - web application archive (WAR) file, as well as a JAR file containing - the corresponding source code. -

  • -
  • Package the contents of the dist directory using the - tar or zip utility, according to - the standard release procedures used by your organization. -

  • -
- -
- - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/build.xml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/build.xml deleted file mode 100644 index 51d8350e8b0c425f03868972c8222cb9819ec467..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/build.xml +++ /dev/null @@ -1,508 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/docs/README.txt b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/docs/README.txt deleted file mode 100644 index f146b0e0702f656aa856446a24cd919bc0834886..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/docs/README.txt +++ /dev/null @@ -1,17 +0,0 @@ - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -This is a dummy README file for the sample -web application. diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/index.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/index.html deleted file mode 100644 index 589bd71d067cf40e526749098a3159fbfba9dd91..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - -Sample Application - - -

Sample Application

-

- The example app has been packaged as a war file and can be downloaded - here (Note: make sure your browser doesn't - change file extension or append a new one). -

-

- The easiest way to run this application is simply to move the war file - to your CATALINA_BASE/webapps directory. A default Tomcat install - will automatically expand and deploy the application for you. You can - view it with the following URL (assuming that you're running tomcat on - port 8080 which is the default): -
- http://localhost:8080/sample -

-

- If you just want to browse the contents, you can unpack the war file - with the jar command. -

-
-        jar -xvf sample.war
-      
-

- Note: CATALINA_BASE is usually the directory in which you - unpacked the Tomcat distribution. For more information on - CATALINA_HOME, CATALINA_BASE and the difference between - them see RUNNING.txt in the directory you unpacked your Tomcat - distribution. -

- - \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/src/mypackage/Hello.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/src/mypackage/Hello.java deleted file mode 100644 index 6984ffe4ef975bcf41adcac1eba00abd832677d8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/src/mypackage/Hello.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package mypackage; - -import java.io.IOException; -import java.io.PrintWriter; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - - -/** - * Simple servlet to validate that the Hello, World example can - * execute servlets. In the web application deployment descriptor, - * this servlet must be mapped to correspond to the link in the - * "index.html" file. - * - * @author Craig R. McClanahan - */ - -public final class Hello extends HttpServlet { - - private static final long serialVersionUID = 1L; - - /** - * Respond to a GET request for the content produced by - * this servlet. - * - * @param request The servlet request we are processing - * @param response The servlet response we are producing - * - * @exception IOException if an input/output error occurs - * @exception ServletException if a servlet error occurs - */ - @Override - public void doGet(HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException { - - response.setContentType("text/html"); - response.setCharacterEncoding("UTF-8"); - try (PrintWriter writer = response.getWriter()) { - - writer.println(""); - writer.println(""); - writer.println(""); - writer.println("Sample Application Servlet Page"); - writer.println(""); - writer.println(""); - - - writer.println("
"); - writer.println("\"\""); - writer.println("
"); - writer.println("

Sample Application Servlet

"); - writer.println("

"); - writer.println("This is the output of a servlet that is part of"); - writer.println("the Hello, World application."); - writer.println("

"); - - writer.println(""); - writer.println(""); - } - } - - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/web/WEB-INF/web.xml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/web/WEB-INF/web.xml deleted file mode 100644 index cbcba17e47b29a390aaa16d1c063937c4432cd9d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/web/WEB-INF/web.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Hello, World Application - - This is a simple web application with a source code organization - based on the recommendations of the Application Developer's Guide. - - - - HelloServlet - mypackage.Hello - - - - HelloServlet - /hello - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/web/hello.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/web/hello.jsp deleted file mode 100644 index bd5680addd413321371463626b9a660ea169194b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/web/hello.jsp +++ /dev/null @@ -1,37 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page session="false" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %> - - - - -Sample Application JSP Page - - - -
- -
-

Sample Application JSP Page

-This is the output of a JSP page that is part of the Hello, World -application. - - -<%= new String("Hello!") %> - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/web/images/tomcat.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/web/images/tomcat.gif deleted file mode 100644 index f2aa6f863e43e3924a35854c556a9c1b6d125cba..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/web/images/tomcat.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/web/index.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/web/index.html deleted file mode 100644 index 1c6938a66806f114ef676192de7fc51191827876..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/sample/web/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - -Sample "Hello, World" Application - - - -
- -
-

Sample "Hello, World" Application

-

This is the home page for a sample application used to illustrate the -source directory organization of a web application utilizing the principles -outlined in the Application Developer's Guide. - -

To prove that they work, you can execute either of the following links:

- - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/source.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/source.html deleted file mode 100644 index 2eff05b8246745238bf16cfeff65c70df7bb54a2..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/source.html +++ /dev/null @@ -1,321 +0,0 @@ - -Application Developer's Guide (8.5.27) - Source Organization

Source Organization

Table of Contents

Directory Structure

- -

The description below uses the variable name $CATALINA_BASE to refer the - base directory against which most relative paths are resolved. If you have - not configured Tomcat for multiple instances by setting a CATALINA_BASE - directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME, - the directory into which you have installed Tomcat.

- -

A key recommendation of this manual is to separate the directory -hierarchy containing your source code (described in this section) from -the directory hierarchy containing your deployable application -(described in the preceding section). Maintaining this separation has -the following advantages:

-
    -
  • The contents of the source directories can be more easily administered, - moved, and backed up if the "executable" version of the application - is not intermixed. -

  • -
  • Source code control is easier to manage on directories that contain - only source files. -

  • -
  • The files that make up an installable distribution of your - application are much easier to select when the deployment - hierarchy is separate.

  • -
- -

As we will see, the ant development tool makes the creation -and processing of such directory hierarchies nearly painless.

- -

The actual directory and file hierarchy used to contain the source code -of an application can be pretty much anything you like. However, the -following organization has proven to be quite generally applicable, and is -expected by the example build.xml configuration file that -is discussed below. All of these components exist under a top level -project source directory for your application:

-
    -
  • docs/ - Documentation for your application, in whatever - format your development team is using.

  • -
  • src/ - Java source files that generate the servlets, - beans, and other Java classes that are unique to your application. - If your source code is organized in packages (highly - recommended), the package hierarchy should be reflected as a directory - structure underneath this directory.

  • -
  • web/ - The static content of your web site (HTML pages, - JSP pages, JavaScript files, CSS stylesheet files, and images) that will - be accessible to application clients. This directory will be the - document root of your web application, and any subdirectory - structure found here will be reflected in the request URIs required to - access those files.

  • -
  • web/WEB-INF/ - The special configuration files required - for your application, including the web application deployment descriptor - (web.xml, defined in the - Servlet Specification), - tag library descriptors for custom tag libraries - you have created, and other resource files you wish to include within - your web application. Even though this directory appears to be a - subdirectory of your document root, the Servlet Specification - prohibits serving the contents of this directory (or any file it contains) - directly to a client request. Therefore, this is a good place to store - configuration information that is sensitive (such as database connection - usernames and passwords), but is required for your application to - operate successfully.
  • -
- -

During the development process, two additional directories will be -created on a temporary basis:

-
    -
  • build/ - When you execute a default build - (ant), this directory will contain an exact image - of the files in the web application archive for this application. - Tomcat allows you to deploy an application in an unpacked - directory like this, either by copying it to the - $CATALINA_BASE/webapps directory, or by installing - it via the "Manager" web application. The latter approach is very - useful during development, and will be illustrated below. -

  • -
  • dist/ - When you execute the ant dist - target, this directory will be created. It will create an exact image - of the binary distribution for your web application, including an license - information, documentation, and README files that you have prepared.
  • -
- -

Note that these two directories should NOT be archived in -your source code control system, because they are deleted and recreated (from -scratch) as needed during development. For that reason, you should not edit -any source files in these directories if you want to maintain a permanent -record of the changes, because the changes will be lost the next time that a -build is performed.

- -

External Dependencies

- -

What do you do if your application requires JAR files (or other - resources) from external projects or packages? A common example is that - you need to include a JDBC driver in your web application, in order to - operate.

- -

Different developers take different approaches to this problem. - Some will encourage checking a copy of the JAR files you depend on into - the source code control archives for every application that requires those - JAR files. However, this can cause significant management issues when you - use the same JAR in many applications - particular when faced with a need - to upgrade to a different version of that JAR file.

- -

Therefore, this manual recommends that you NOT store - a copy of the packages you depend on inside the source control archives - of your applications. Instead, the external dependencies should be - integrated as part of the process of building your - application. In that way, you can always pick up the appropriate version - of the JAR files from wherever your development system administrator has - installed them, without having to worry about updating your application - every time the version of the dependent JAR file is changed.

- -

In the example Ant build.xml file, we will demonstrate - how to define build properties that let you configure the locations - of the files to be copied, without having to modify build.xml - when these files change. The build properties used by a particular - developer can be customized on a per-application basis, or defaulted to - "standard" build properties stored in the developer's home directory.

- -

In many cases, your development system administrator will have already - installed the required JAR files into the lib directory of Tomcat. - If this has been done, you need - to take no actions at all - the example build.xml file - automatically constructs a compile classpath that includes these files.

- -
- -

Source Code Control

- -

As mentioned earlier, it is highly recommended that you place all of the -source files that comprise your application under the management of a -source code control system like the Concurrent Version System (CVS). If you -elect to do this, every directory and file in the source hierarchy should be -registered and saved -- but none of the generated files. If you register -binary format files (such as images or JAR libraries), be sure to indicate -this to your source code control system.

- -

We recommended (in the previous section) that you should not store the -contents of the build/ and dist/ directories -created by your development process in the source code control system. An -easy way to tell CVS to ignore these directories is to create a file named -.cvsignore (note the leading period) in your top-level source -directory, with the following contents:

-
build
-dist
-build.properties
- -

The reason for mentioning build.properties here will be -explained in the Processes section.

- -

Detailed instructions for your source code control environment are beyond -the scope of this manual. However, the following steps are followed when -using a command-line CVS client:

-
    -
  • To refresh the state of your source code to that stored in the - the source repository, go to your project source directory, and - execute cvs update -dP. -

  • -
  • When you create a new subdirectory in the source code hierarchy, register - it in CVS with a command like cvs add {subdirname}. -

  • -
  • When you first create a new source code file, navigate to the directory - that contains it, and register the new file with a command like - cvs add {filename}. -

  • -
  • If you no longer need a particular source code file, navigate to the - containing directory and remove the file. Then, deregister it in CVS - with a command like cvs remove {filename}. -

  • -
  • While you are creating, modifying, and deleting source files, changes - are not yet reflected in the server repository. To save your changes in - their current state, go to the project source directory - and execute cvs commit. You will be asked to write a brief - description of the changes you have just completed, which will be stored - with the new version of any updated source file.
  • -
- -

CVS, like other source code control systems, has many additional features -(such as the ability to tag the files that made up a particular release, and -support for multiple development branches that can later be merged). See the -links and references in the Introduction for -more information.

- -

BUILD.XML Configuration File

- -

We will be using the ant tool to manage the compilation of -our Java source code files, and creation of the deployment hierarchy. Ant -operates under the control of a build file, normally called -build.xml, that defines the processing steps required. This -file is stored in the top-level directory of your source code hierarchy, and -should be checked in to your source code control system.

- -

Like a Makefile, the build.xml file provides several -"targets" that support optional development activities (such as creating -the associated Javadoc documentation, erasing the deployment home directory -so you can build your project from scratch, or creating the web application -archive file so you can distribute your application. A well-constructed -build.xml file will contain internal documentation describing -the targets that are designed for use by the developer, versus those targets -used internally. To ask Ant to display the project documentation, change to -the directory containing the build.xml file and type:

-
ant -projecthelp
- -

To give you a head start, a basic build.xml file -is provided that you can customize and install in the project source directory -for your application. This file includes comments that describe the various -targets that can be executed. Briefly, the following targets are generally -provided:

-
    -
  • clean - This target deletes any existing - build and dist directories, so that they - can be reconstructed from scratch. This allows you to guarantee that - you have not made source code modifications that will result in - problems at runtime due to not recompiling all affected classes. -

  • -
  • compile - This target is used to compile any source code - that has been changed since the last time compilation took place. The - resulting class files are created in the WEB-INF/classes - subdirectory of your build directory, exactly where the - structure of a web application requires them to be. Because - this command is executed so often during development, it is normally - made the "default" target so that a simple ant command will - execute it. -

  • -
  • all - This target is a short cut for running the - clean target, followed by the compile target. - Thus, it guarantees that you will recompile the entire application, to - ensure that you have not unknowingly introduced any incompatible changes. -

  • -
  • javadoc - This target creates Javadoc API documentation - for the Java classes in this web application. The example - build.xml file assumes you want to include the API - documentation with your app distribution, so it generates the docs - in a subdirectory of the dist directory. Because you normally - do not need to generate the Javadocs on every compilation, this target is - usually a dependency of the dist target, but not of the - compile target. -

  • -
  • dist - This target creates a distribution directory for - your application, including any required documentation, the Javadocs for - your Java classes, and a web application archive (WAR) file that will be - delivered to system administrators who wish to install your application. - Because this target also depends on the deploy target, the - web application archive will have also picked up any external dependencies - that were included at deployment time.
  • -
- -

For interactive development and testing of your web application using -Tomcat, the following additional targets are defined:

-
    -
  • install - Tell the currently running Tomcat to make - the application you are developing immediately available for execution - and testing. This action does not require Tomcat to be restarted, but - it is also not remembered after Tomcat is restarted the next time. -

  • -
  • reload - Once the application is installed, you can - continue to make changes and recompile using the compile - target. Tomcat will automatically recognize changes made to JSP pages, - but not to servlet or JavaBean classes - this command will tell Tomcat - to restart the currently installed application so that such changes are - recognized. -

  • -
  • remove - When you have completed your development and - testing activities, you can optionally tell Tomcat to remove this - application from service. -
  • -
- -

Using the development and testing targets requires some additional -one-time setup that is described on the next page.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/web.xml.txt b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/web.xml.txt deleted file mode 100644 index b560a73cf25074405580a35e1738e82f19160fc3..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/appdev/web.xml.txt +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - - My Web Application - - This is version X.X of an application to perform - a wild and wonderful task, based on servlets and - JSP pages. It was written by Dave Developer - (dave@mycompany.com), who should be contacted for - more information. - - - - - - - webmaster - myaddress@mycompany.com - - The EMAIL address of the administrator to whom questions - and comments about this application should be addressed. - - - - - - - - controller - - This servlet plays the "controller" role in the MVC architecture - used in this application. It is generally mapped to the ".do" - filename extension with a servlet-mapping element, and all form - submits in the app will be submitted to a request URI like - "saveCustomer.do", which will therefore be mapped to this servlet. - - The initialization parameter names for this servlet are the - "servlet path" that will be received by this servlet (after the - filename extension is removed). The corresponding value is the - name of the action class that will be used to process this request. - - com.mycompany.mypackage.ControllerServlet - - listOrders - com.mycompany.myactions.ListOrdersAction - - - saveCustomer - com.mycompany.myactions.SaveCustomerAction - - - 5 - - - - graph - - This servlet produces GIF images that are dynamically generated - graphs, based on the input parameters included on the request. - It is generally mapped to a specific request URI like "/graph". - - - - - - - - controller - *.do - - - - graph - /graph - - - - - - - 30 - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/apr.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/apr.html deleted file mode 100644 index 09d0fb2a6da9a36283a27b833992cd0414caf45c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/apr.html +++ /dev/null @@ -1,173 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Apache Portable Runtime (APR) based Native library for Tomcat

Apache Portable Runtime (APR) based Native library for Tomcat

Table of Contents

Introduction

- -

- Tomcat can use the Apache Portable Runtime to - provide superior scalability, performance, and better integration with native server - technologies. The Apache Portable Runtime is a highly portable library that is at - the heart of Apache HTTP Server 2.x. APR has many uses, including access to advanced IO - functionality (such as sendfile, epoll and OpenSSL), OS level functionality (random number - generation, system status, etc), and native process handling (shared memory, NT - pipes and Unix sockets). -

- -

- These features allows making Tomcat a general purpose webserver, will enable much better - integration with other native web technologies, and overall make Java much more viable as - a full fledged webserver platform rather than simply a backend focused technology. -

- -

Installation

- -

- APR support requires three main native components to be installed: -

-
    -
  • APR library
  • -
  • JNI wrappers for APR used by Tomcat (libtcnative)
  • -
  • OpenSSL libraries
  • -
- -

Windows

- -

- Windows binaries are provided for tcnative-1, which is a statically compiled .dll which includes - OpenSSL and APR. It can be downloaded from here - as 32bit or AMD x86-64 binaries. - In security conscious production environments, it is recommended to use separate shared dlls - for OpenSSL, APR, and libtcnative-1, and update them as needed according to security bulletins. - Windows OpenSSL binaries are linked from the Official OpenSSL - website (see related/binaries). -

- -
- -

Linux

- -

- Most Linux distributions will ship packages for APR and OpenSSL. The JNI wrapper (libtcnative) will - then have to be compiled. It depends on APR, OpenSSL, and the Java headers. -

- -

- Requirements: -

-
    -
  • APR 1.2+ development headers (libapr1-dev package)
  • -
  • OpenSSL 1.0.2+ development headers (libssl-dev package)
  • -
  • JNI headers from Java compatible JDK 1.4+
  • -
  • GNU development environment (gcc, make)
  • -
- -

- The wrapper library sources are located in the Tomcat binary bundle, in the - bin/tomcat-native.tar.gz archive. - Once the build environment is installed and the source archive is extracted, the wrapper library - can be compiled using (from the folder containing the configure script): -

-
./configure && make && make install
- -
- -

APR Components

- -

- Once the libraries are properly installed and available to Java (if loading fails, the library path - will be displayed), the Tomcat connectors will automatically use APR. Configuration of the connectors - is similar to the regular connectors, but have a few extra attributes which are used to configure - APR components. Note that the defaults should be well tuned for most use cases, and additional - tweaking shouldn't be required. -

- -

- When APR is enabled, the following features are also enabled in Tomcat: -

-
    -
  • Secure session ID generation by default on all platforms (platforms other than Linux required - random number generation using a configured entropy)
  • -
  • OS level statistics on memory usage and CPU usage by the Tomcat process are displayed by - the status servlet
  • -
- -

APR Lifecycle Listener Configuration

APR Connectors Configuration

- -

HTTP/HTTPS

- -

For HTTP configuration, see the HTTP - connector configuration documentation.

- -

For HTTPS configuration, see the - HTTPS connector configuration - documentation.

- -

An example SSL Connector declaration is:

-
<Connector port="443" maxHttpHeaderSize="8192"
-                 maxThreads="150"
-                 enableLookups="false" disableUploadTimeout="true"
-                 acceptCount="100" scheme="https" secure="true"
-                 SSLEnabled="true"
-                 SSLCertificateFile="${catalina.base}/conf/localhost.crt"
-                 SSLCertificateKeyFile="${catalina.base}/conf/localhost.key" />
- - -
- -

AJP

- -

For AJP configuration, see the AJP - connector configuration documentation.

- -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/index.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/index.html deleted file mode 100644 index 4b6e25832aab902df9fd52bacc6cbb38e45ae47b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/index.html +++ /dev/null @@ -1,77 +0,0 @@ - -Apache Tomcat 8 Architecture (8.5.27) - Table of Contents

Table of Contents

Preface

- -

This section of the Tomcat documentation attempts to explain -the architecture and design of the Tomcat server. It includes significant -contributions from several tomcat developers: -

- - -

Table of Contents

- -

The information presented is divided into the following sections:

-
    -
  • Overview - - An overview of the Tomcat server architecture with key terms - and concepts.
  • -
  • Server Startup - - A detailed description, with sequence diagrams, of how the Tomcat - server starts up.
  • -
  • Request Process Flow - - A detailed description of how Tomcat handles a request.
  • -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/overview.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/overview.html deleted file mode 100644 index 173e338158b6bbb5ad99c06f1c81a7b941c41286..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/overview.html +++ /dev/null @@ -1,146 +0,0 @@ - -Apache Tomcat 8 Architecture (8.5.27) - Architecture Overview

Architecture Overview

Overview

-

-This page provides an overview of the Tomcat server architecture. -

-

Terms

- -

Server

-

-In the Tomcat world, a -Server represents the whole container. -Tomcat provides a default implementation of the -Server interface -which is rarely customized by users. -

-
- -

Service

-

-A Service is an intermediate component -which lives inside a Server and ties one or more Connectors to exactly one -Engine. The Service element is rarely customized by users, as the default -implementation is simple and sufficient: -Service interface. -

-
- -

Engine

-

-An -Engine represents request processing -pipeline for a specific Service. As a Service may have multiple Connectors, -the Engine receives and processes all requests from these connectors, handing -the response back to the appropriate connector for transmission to the client. -The Engine interface -may be implemented to supply custom Engines, though this is uncommon. -

-

-Note that the Engine may be used for Tomcat server clustering via the -jvmRoute parameter. Read the Clustering documentation for more information. -

-
- -

Host

-

-A Host is an association of a network name, -e.g. www.yourcompany.com, to the Tomcat server. An Engine may contain -multiple hosts, and the Host element also supports network aliases such as -yourcompany.com and abc.yourcompany.com. Users rarely create custom -Hosts -because the -StandardHost -implementation provides significant additional functionality. -

-
- -

Connector

-

-A Connector handles communications with the client. There are multiple -connectors available with Tomcat. These include the -HTTP connector which is used for -most HTTP traffic, especially when running Tomcat as a standalone server, -and the AJP connector which implements -the AJP protocol used when connecting Tomcat to a web server such as -Apache HTTPD server. Creating a customized connector is a significant -effort. -

-
- -

Context

-

-A -Context -represents a web application. A Host may contain multiple -contexts, each with a unique path. The -Context -interface may be implemented to create custom Contexts, but -this is rarely the case because the - -StandardContext provides significant additional functionality. -

-
-

Comments

-

-Tomcat is designed to be a fast and efficient implementation of the -Servlet Specification. Tomcat came about as the reference implementation -of this specification, and has remained rigorous in adhering to the -specification. At the same time, significant attention has been paid -to Tomcat's performance and it is now on par with other servlet containers, -including commercial ones. -

-

-In recent releases of Tomcat, mostly starting with Tomcat 5, -we have begun efforts to make more aspects of Tomcat manageable via -JMX. In addition, the Manager and Admin webapps have been greatly -enhanced and improved. Manageability is a primary area of concern -for us as the product matures and the specification becomes more -stable. -

-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/requestProcess.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/requestProcess.html deleted file mode 100644 index 69a3771feb5a0fd942512a7c5754460c0846722a..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/requestProcess.html +++ /dev/null @@ -1,85 +0,0 @@ - -Apache Tomcat 8 Architecture (8.5.27) - Request Process Flow

Request Process Flow

Request Process Flow

- -

-This page describes the process used by Tomcat to handle -an incoming request. This process is largely defined by -the Servlet Specification, which outlines the order -of events that must take place. -

- -

description

-

-TODO -

-
- -

diagrams

-

-A UML sequence diagram of the request process is available -here. -

-

-A UML sequence diagram of the authentication process is available -here. -

- -
- -

comments

-

-The Servlet Specification provides many opportunities for -listening in (using Listeners) or modifying (using Filters) -the request handling process even before the request arrives -at the servlet that will handle it. -

- -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/requestProcess/authentication-process.png b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/requestProcess/authentication-process.png deleted file mode 100644 index e23c33359c42abc6303b216e24275cae80305430..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/requestProcess/authentication-process.png and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/requestProcess/request-process.png b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/requestProcess/request-process.png deleted file mode 100644 index 33ae3c3766459f39c8bb19c035234afa44be1dbd..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/requestProcess/request-process.png and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/startup.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/startup.html deleted file mode 100644 index e847deb87638573e4d76204d054f3c5fcbe8326f..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/startup.html +++ /dev/null @@ -1,84 +0,0 @@ - -Apache Tomcat 8 Architecture (8.5.27) - Startup

Startup

Server Startup

- -

-This page describes how the Tomcat server starts up. There are several -different ways to start tomcat, including: -

-
    -
  • From the command line.
  • -
  • From a Java program as an embedded server.
  • -
  • Automatically as a Windows service.
  • -
- -

description

-

-A text description of the startup procedure is available -here. -

-
- -

diagram

-

-A UML sequence diagram of the startup procedure is available -here. -

-
- -

comments

-

-The startup process can be customized in many ways, both -by modifying Tomcat code and by implementing your own -LifecycleListeners which are then registered in the server.xml -configuration file. -

- -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/startup/serverStartup.pdf b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/startup/serverStartup.pdf deleted file mode 100644 index 34aa59808b3a7bdf36d07278bdbfe8d9750b68c0..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/startup/serverStartup.pdf and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/startup/serverStartup.txt b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/startup/serverStartup.txt deleted file mode 100644 index 716c8d08ebc8ea3a1726897ad10f7f8bf7a456e2..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/architecture/startup/serverStartup.txt +++ /dev/null @@ -1,139 +0,0 @@ - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -Tomcat Startup Sequence - -Sequence 1. Start from Command Line -Class: org.apache.catalina.startup.Bootstrap -What it does: - a) Set up classloaders - commonLoader (common)-> System Loader - sharedLoader (shared)-> commonLoader -> System Loader - catalinaLoader(server) -> commonLoader -> System Loader - (by default the commonLoader is used for the - sharedLoader and the serverLoader) - b) Load startup class (reflection) - org.apache.catalina.startup.Catalina - setParentClassloader -> sharedLoader - Thread.contextClassloader -> catalinaLoader - c) Bootstrap.daemon.init() complete - -Sequence 2. Process command line argument (start, stop) -Class: org.apache.catalina.startup.Bootstrap (assume command->start) -What it does: - a) Catalina.setAwait(true); - b) Catalina.load() - b1) initDirs() -> set properties like - catalina.home - catalina.base == catalina.home (most cases) - b2) initNaming - setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, - org.apache.naming.java.javaURLContextFactory ->default) - b3) createStartDigester() - Configures a digester for the main server.xml elements like - org.apache.catalina.core.StandardServer (can change of course :) - org.apache.catalina.deploy.NamingResources - Stores naming resources in the J2EE JNDI tree - org.apache.catalina.LifecycleListener - implements events for start/stop of major components - org.apache.catalina.core.StandardService - The single entry for a set of connectors, - so that a container can listen to multiple connectors - ie, single entry - org.apache.catalina.Connector - Connectors to listen for incoming requests only - It also adds the following rulesets to the digester - NamingRuleSet - EngineRuleSet - HostRuleSet - ContextRuleSet - b4) Load the server.xml and parse it using the digester - Parsing the server.xml using the digester is an automatic - XML-object mapping tool, that will create the objects defined in server.xml - Startup of the actual container has not started yet. - b5) Assigns System.out and System.err to the SystemLogHandler class - b6) Calls initialize on all components, this makes each object register itself with the - JMX agent. - During the process call the Connectors also initialize the adapters. - The adapters are the components that do the request pre-processing. - Typical adapters are HTTP1.1 (default if no protocol is specified, - org.apache.coyote.http11.Http11NioProtocol) - AJP1.3 for mod_jk etc. - - c) Catalina.start() - c1) Starts the NamingContext and binds all JNDI references into it - c2) Starts the services under which are: - StandardService -> starts Engine (ContainerBase -> Realm,Cluster etc) - c3) StandardHost (started by the service) - Configures a ErrorReportValvem to do proper HTML output for different HTTP - errors codes - Starts the Valves in the pipeline (at least the ErrorReportValve) - Configures the StandardHostValve, - this valves ties the Webapp Class loader to the thread context - it also finds the session for the request - and invokes the context pipeline - Starts the HostConfig component - This component deploys all the webapps - (webapps & conf/Catalina/localhost/*.xml) - HostConfig will create a Digester for your context, this digester - will then invoke ContextConfig.start() - The ContextConfig.start() will process the default web.xml (conf/web.xml) - and then process the applications web.xml (WEB-INF/web.xml) - - c4) During the lifetime of the container (StandardEngine) there is a background thread that - keeps checking if the context has changed. If a context changes (timestamp of war file, - context xml file, web.xml) then a reload is issued (stop/remove/deploy/start) - - d) Tomcat receives a request on an HTTP port - d1) The request is received by a separate thread which is waiting in the ThreadPoolExecutor - class. It is waiting for a request in a regular ServerSocket.accept() method. - When a request is received, this thread wakes up. - d2) The ThreadPoolExecutor assigns the a TaskThread to handle the request. - It also supplies a JMX object name to the catalina container (not used I believe) - d3) The processor to handle the request in this case is Coyote Http11Processor, - and the process method is invoked. - This same processor is also continuing to check the input stream of the socket - until the keep alive point is reached or the connection is disconnected. - d4) The HTTP request is parsed using an internal buffer class (Http11InputBuffer) - The buffer class parses the request line, the headers, etc and store the result in a - Coyote request (not an HTTP request) This request contains all the HTTP info, such - as servername, port, scheme, etc. - d5) The processor contains a reference to an Adapter, in this case it is the - CoyoteAdapter. Once the request has been parsed, the Http11Processor - invokes service() on the adapter. In the service method, the Request contains a - CoyoteRequest and CoyoteResponse (null for the first time) - The CoyoteRequest(Response) implements HttpRequest(Response) and HttpServletRequest(Response) - The adapter parses and associates everything with the request, cookies, the context through a - Mapper, etc - d6) When the parsing is finished, the CoyoteAdapter invokes its container (StandardEngine) - and invokes the invoke(request,response) method. - This initiates the HTTP request into the Catalina container starting at the engine level - d7) The StandardEngine.invoke() simply invokes the container pipeline.invoke() - d8) By default the engine only has one valve the StandardEngineValve, this valve simply - invokes the invoke() method on the Host pipeline (StandardHost.getPipeLine()) - d9) the StandardHost has two valves by default, the StandardHostValve and the ErrorReportValve - d10) The standard host valve associates the correct class loader with the current thread - It also retrieves the Manager and the session associated with the request (if there is one) - If there is a session access() is called to keep the session alive - d11) After that the StandardHostValve invokes the pipeline on the context associated - with the request. - d12) The first valve that gets invoked by the Context pipeline is the FormAuthenticator - valve. Then the StandardContextValve gets invoke. - The StandardContextValve invokes any context listeners associated with the context. - Next it invokes the pipeline on the Wrapper component (StandardWrapperValve) - d13) During the invocation of the StandardWrapperValve, the JSP wrapper (Jasper) gets invoked - This results in the actual compilation of the JSP. - And then invokes the actual servlet. - e) Invocation of the servlet class diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/balancer-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/balancer-howto.html deleted file mode 100644 index d9292087be5af85ed38549ef977de3ed79687fff..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/balancer-howto.html +++ /dev/null @@ -1,61 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Load Balancer HOW-TO

Load Balancer HOW-TO

Table of Contents

Using the JK 1.2.x native connector

- -Please refer to the JK 1.2.x documentation. - -

Using Apache HTTP Server 2.x with mod_proxy

- -Please refer to the mod_proxy documentation for Apache HTTP Server 2.2. This supports either -HTTP or AJP load balancing. This new version of mod_proxy is also usable with -Apache HTTP Server 2.0, but mod_proxy will have to be compiled separately using the code -from Apache HTTP Server 2.2. - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/building.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/building.html deleted file mode 100644 index d06f33c67278bad36a62f281b55609f8137c737f..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/building.html +++ /dev/null @@ -1,278 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Building Tomcat

Building Tomcat

Table of Contents

Introduction

- -

-Building Apache Tomcat from source is very easy, and is the first step to -contributing to Tomcat. The complete and comprehensive instructions are -provided in the file BUILDING.txt. -The following is a quick step by step guide. -

- -

Download a Java Development Kit (JDK) version 7

- -

-Building Apache Tomcat requires a JDK (version 7) to be installed. You can download one from
-http://www.oracle.com/technetwork/java/javase/downloads/index.html
-http://openjdk.java.net/install/index.html
-or another JDK vendor. -

- -

-IMPORTANT: Set an environment variable JAVA_HOME to the pathname of the -directory into which you installed the JDK release. -

- -

Install Apache Ant 1.9.5 or later

- -

-Download a binary distribution of Ant 1.9.5 or later from -here. -

- -

-Unpack the binary distribution into a convenient location so that the -Ant release resides in its own directory (conventionally named -apache-ant-1.9.x). For the remainder of this guide, -the symbolic name ${ant.home} is used to refer to the full pathname of - the Ant installation directory. -

- -

-IMPORTANT: Create an ANT_HOME environment variable to point the directory ${ant.home}, -and modify the PATH environment variable to include directory -${ant.home}/bin in its list. This makes the ant command line script -available, which will be used to actually perform the build. -

- -

Checkout or obtain the Tomcat source code

- -

- Tomcat SVN repository URL: - http://svn.apache.org/repos/asf/tomcat/tc8.5.x/trunk/ -

-

- Tomcat source packages: - http://tomcat.apache.org/download-80.cgi. -

- -

- Checkout the source using SVN, selecting a tag for released version or - trunk for the current development code, or download and unpack a - source package. For the remainder of this guide, the symbolic name - ${tomcat.source} is used to refer to the - location where the source has been placed. -

- -

Configure download area

- -

- Building Tomcat involves downloading a number of libraries that it depends on. - It is strongly recommended to configure download area for those libraries. -

- -

- By default the build is configured to download the dependencies into the - ${user.home}/tomcat-build-libs directory. You can change this - (see below) but it must be an absolute path. -

- -

- The build is controlled by creating a - ${tomcat.source}/build.properties file. It can be used to - redefine any property that is present in build.properties.default - and build.xml files. The build.properties file - does not exist by default. You have to create it. -

- -

- The download area is defined by property base.path. For example: -

- -
# ----- Default Base Path for Dependent Packages -----
-# Replace this path with the directory path where
-# dependencies binaries should be downloaded.
-base.path=/home/me/some-place-to-download-to
- -

- Different versions of Tomcat are allowed to share the same download area. -

- -

- Another example: -

- -
base.path=${user.dir}/../libraries-tomcat8.5
- -

- Users who access the Internet through a proxy must use the properties - file to indicate to Ant the proxy configuration: -

- -
# ----- Proxy setup -----
-proxy.host=proxy.domain
-proxy.port=8080
-proxy.use=on
- -

Building Tomcat

- -

-Use the following commands to build Tomcat: -

- -

-cd ${tomcat.source}
-ant -

- -

-Once the build has completed successfully, a usable Tomcat installation will have been -produced in the ${tomcat.source}/output/build directory, and can be started -and stopped with the usual scripts. -

-

Building with Eclipse

- -

-IMPORTANT: This is not a supported means of building Tomcat; this information is -provided without warranty :-). -The only supported means of building Tomcat is with the Ant build described above. -However, some developers like to work on Java code with a Java IDE, -and the following steps have been used by some developers. -

- -

-NOTE: This will not let you build everything under Eclipse; -the build process requires use of Ant for the many stages that aren't -simple Java compilations. -However, it will allow you to view and edit the Java code, -get warnings, reformat code, perform refactorings, run Tomcat -under the IDE, and so on. -

- -

-WARNING: Do not forget to create and configure - ${tomcat.source}/build.properties file as described above - before running any Ant targets. -

- -

-Sample Eclipse project files and launch targets are provided in the -res/ide-support/eclipse directory of the source tree. -The instructions below will automatically copy these into the required locations. -

-

-An Ant target is provided as a convenience to download all binary dependencies, and to create -the Eclipse project and classpath files in the root of the source tree. -

- -

-cd ${tomcat.source}
-ant ide-eclipse -

- -

-Start Eclipse and create a new Workspace. -

- -

-Open the Preferences dialog and then select Java->Build Path->Classpath -Variables to add two new Classpath Variables: -

- - - - - -
TOMCAT_LIBS_BASEThe same location as the base.path - setting in build.properties, where the binary dependencies have been downloaded
ANT_HOMEthe base path of Ant 1.9.5 or later
- - -

-Use File->Import and choose Existing Projects into Workspace. -From there choose the root directory of the Tomcat source tree (${tomcat.source}) -and import the Tomcat project located there. -

- -

-start-tomcat and stop-tomcat launch configurations are provided in -res/ide-support/eclipse and will be available in the Run->Run Configurations -dialog. Use these to start and stop Tomcat from Eclipse. -If you want to configure these yourself (or are using a different IDE) -then use org.apache.catalina.startup.Bootstrap as the main class, -start/stop etc. as program arguments, and specify -Dcatalina.home=... -(with the name of your build directory) as VM arguments. -

- -

-Tweaking a few formatting preferences will make it much easier to keep consistent with Tomcat -coding conventions (and have your contributions accepted): -

- - - - - - - - -
Java -> Code Style -> Formatter -> Edit...Tab policy: Spaces only
Tab and Indentation size: 4
General -> Editors -> Text EditorsDisplayed tab width: 2
Insert spaces for tabs
Show whitespace characters (optional)
XML -> XML Files -> EditorIndent using spaces
Indentation size: 2
Ant -> Editor -> FormatterTab size: 2
Use tab character instead of spaces: unchecked
- -

-The recommended configuration of Compiler Warnings is documented in -res/ide-support/eclipse/java-compiler-errors-warnings.txt file. -

- -

Building with other IDEs

-

-The same general approach should work for most IDEs; it has been reported -to work in IntelliJ IDEA, for example. -

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/cgi-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/cgi-howto.html deleted file mode 100644 index c3c29b8065b5a6c65d31d032c604c8ebc62233c6..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/cgi-howto.html +++ /dev/null @@ -1,154 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - CGI How To

CGI How To

Table of Contents

Introduction

- -

The CGI (Common Gateway Interface) defines a way for a web server to -interact with external content-generating programs, which are often -referred to as CGI programs or CGI scripts. -

- -

Within Tomcat, CGI support can be added when you are using Tomcat as your -HTTP server and require CGI support. Typically this is done -during development when you don't want to run a web server like -Apache httpd. -Tomcat's CGI support is largely compatible with Apache httpd's, -but there are some limitations (e.g., only one cgi-bin directory). -

- -

CGI support is implemented using the servlet class -org.apache.catalina.servlets.CGIServlet. Traditionally, -this servlet is mapped to the URL pattern "/cgi-bin/*".

- -

By default CGI support is disabled in Tomcat.

-

Installation

- -

CAUTION - CGI scripts are used to execute programs -external to the Tomcat JVM. If you are using the Java SecurityManager this -will bypass your security policy configuration in catalina.policy.

- -

To enable CGI support:

- -
    -
  1. There are commented-out sample servlet and servlet-mapping elements for -CGI servlet in the default $CATALINA_BASE/conf/web.xml file. -To enable CGI support in your web application, copy that servlet and -servlet-mapping declarations into WEB-INF/web.xml file of your -web application.

    - -

    Uncommenting the servlet and servlet-mapping in -$CATALINA_BASE/conf/web.xml file enables CGI for all installed -web applications at once.

    -
  2. - -
  3. Set privileged="true" on the Context element for your -web application.

    - -

    Only Contexts which are marked as privileged are allowed to use the -CGI servlet. Note that modifying the global $CATALINA_BASE/conf/context.xml -file affects all web applications. See -Context documentation for details.

    -
  4. -
- -

Configuration

- -

There are several servlet init parameters which can be used to -configure the behaviour of the CGI servlet.

-
    -
  • cgiPathPrefix - The CGI search path will start at -the web application root directory + File.separator + this prefix. -By default there is no value, which results in the web application root -directory being used as the search path. The recommended value is -WEB-INF/cgi
  • -
  • enableCmdLineArguments - Are command line parameters -generated from the query string as per section 4.4 of 3875 RFC? The default is -true.
  • -
  • environment-variable- - An environment to be set for the -execution environment of the CGI script. The name of variable is taken from the -parameter name. To configure an environment variable named FOO, configure a -parameter named environment-variable-FOO. The parameter value is used as the -environment variable value. The default is no environment variables.
  • -
  • executable - The name of the executable to be used to -run the script. You may explicitly set this parameter to be an empty string -if your script is itself executable (e.g. an exe file). Default is -perl.
  • -
  • executable-arg-1, executable-arg-2, -and so on - additional arguments for the executable. These precede the -CGI script name. By default there are no additional arguments.
  • -
  • envHttpHeaders - A regular expression used to select the -HTTP headers passed to the CGI process as environment variables. Note that -headers are converted to upper case before matching and that the entire header -name must match the pattern. Default is -ACCEPT[-0-9A-Z]*|CACHE-CONTROL|COOKIE|HOST|IF-[-0-9A-Z]*|REFERER|USER-AGENT -
  • -
  • parameterEncoding - Name of the parameter encoding -to be used with the CGI servlet. Default is -System.getProperty("file.encoding","UTF-8"). That is the system -default encoding, or UTF-8 if that system property is not available.
  • -
  • passShellEnvironment - Should the shell environment -variables from Tomcat process (if any) be passed to the CGI script? Default is -false.
  • -
  • stderrTimeout - The time (in milliseconds) to wait for -the reading of stderr to complete before terminating the CGI process. Default -is 2000.
  • -
- -

The CGI script executed depends on the configuration of the CGI Servlet and -how the request is mapped to the CGI Servlet. The CGI search path starts at the -web application root directory + File.separator + cgiPathPrefix. The -pathInfo is then searched unless it is null - in -which case the servletPath is searched.

- -

The search starts with the first path segment and expands one path segment -at a time until no path segments are left (resulting in a 404) or a script is -found. Any remaining path segments are passed to the script in the -PATH_INFO environment variable.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/changelog.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/changelog.html deleted file mode 100644 index bb3f567664220f34718cc4a4e23965e6766fe35b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/changelog.html +++ /dev/null @@ -1,4454 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Changelog

Changelog

Tomcat 8.5.27 (markt)

-

Catalina

-
    -
  • Fix: - Correct a regression in the previous fix for 61916 that meant - that any call to addHeader() would have been replaced with - a call to setHeader() for all requests mapped to the - AddDefaultCharsetFilter. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - 61993: Improve handling for ByteChunk and - CharChunk instances that grow close to the maximum size - allowed by the JRE. (markt) -
  • -
-
-

Jasper

-
    -
  • Add: - 43925: Add a new system property - (org.apache.jasper.runtime.BodyContentImpl.BUFFER_SIZE) to - control the size of the buffer used by Jasper when buffering tag bodies. - (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - 62006: Document the new JvmOptions9 command line - parameter for tomcat9.exe. (markt) -
  • -
-
-

not released Tomcat 8.5.26 (markt)

-

Catalina

-
    -
  • Fix: - Correct Javadoc errors in release build. -
  • -
-
-

not released Tomcat 8.5.25 (markt)

-

Catalina

-
    -
  • Fix: - 47214: Use a loop to preload anonymous inner classes - when running under a SecurityManager, to be safe for - future changes in the code or using a different compiler. (kkolinko) -
  • -
  • Add: - 57619: Implement a small optimisation to how JAR URLs are - processed to reduce the storage of duplicate String objects in memory. - Patch provided by Dmitri Blinov. (markt) -
  • -
  • Fix: - Add some missing NPEs to ServletContext. (remm) -
  • -
  • Fix: - 61916: Extend the AddDefaultCharsetFilter to add - a character set when the content type is set via - setHeader() or addHeader() as well as when it - is set via setContentType(). (markt) -
  • -
  • Fix: - 61999: maxSavePostSize set to 0 should disable saving POST - data during authentication. (remm) -
  • -
-
-

Coyote

-
    -
  • Add: - 60276: Implement GZIP compression support for responses - served over HTTP/2. (markt) -
  • -
  • Fix: - Do not call onDataAvailable without any data to read. (remm) -
  • -
  • Fix: - 61886: Log errors on non-container threads at - DEBUG rather than INFO. The exception will be - made available to the application via the asynchronous error handling - mechanism. (markt) -
  • -
  • Fix: - 61914: Possible NPE with Java 9 when creating a SSL engine. - Patch submitted by Evgenij Ryazanov. (remm) -
  • -
  • Fix: - 61918: Fix connectionLimitLatch counting when closing an - already closed socket. Based on a patch by Ryan Fong. (remm) -
  • -
  • Add: - Add support for the OpenSSL ARIA ciphers to the OpenSSL to JSSE - cipher mapping. (markt) -
  • -
  • Fix: - 61932: Allow a call to AsyncContext.dispatch() - to terminate non-blocking I/O. (markt) -
  • -
  • Fix: - 61948: Improve the handling of malformed ClientHello messages - in the code that extracts the SNI information from a TLS handshake for - the JSSE based NIO and NIO2 connectors. (markt) -
  • -
  • Fix: - Fix NIO2 handshaking with a full input buffer. (remm) -
  • -
  • Add: - Return a simple, plain text error message if a client attempts to make a - plain text HTTP connection to a TLS enabled NIO or NIO2 Connector. - (markt) -
  • -
  • Fix: - Correctly handle EOF when ServletInputStream.isReady() is - called. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 61854: When using sets and/or maps in EL expressions, ensure - that Jasper correctly parses the expression. Patch provided by Ricardo - Martin Camarero. (markt) -
  • -
  • Fix: - Improve the handling of methods with varargs in EL expressions. In - particular, the calling of a varargs method with no parameters now works - correctly. Based on a patch by Nitkalya (Ing) Wiriyanuparb. (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - Remove the Servlet 4.0 early preview example from the examples web - application as the early preview is now deprecated in favour of Tomcat - 9 which provides a full Servlet 4.0 implementation. (markt) -
  • -
  • Add: - 61223: Add the mbeans-descriptors.dtd file to the custom - MBean documentation so users have a reference to use when constructing - mbeans-descriptors.xml files for custom components. (markt) -
  • -
  • Add: - 61566: Expose the currently in use certificate chain and list - of trusted certificates for all virtual hosts configured using the JSSE - style (keystore) TLS configuration via the Manager web application. - (markt) -
  • -
  • Fix: - Partial fix for 61886. Ensure that multiple threads do not - attempt to complete the AsyncContext if an I/O error occurs - in the stock ticker example Servlet. (markt) -
  • -
  • Fix: - 61886: Prevent ConcurrentModificationException - when running the asynchronous stock ticker in the examples web - application. (markt) -
  • -
  • Fix: - 61886: Prevent NullPointerException and other - errors if the stock ticker example is running when the examples web - application is stopped. (markt) -
  • -
  • Fix: - 61910: Clarify the meaning of the allowLinking - option in the documentation web application. (markt) -
  • -
  • Add: - Add OCSP configuration information to the SSL How-To. Patch provided by - Marek Czernek. (markt) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - 61312: Prevent NullPointerExceptionn when using - the statement cache of connection that has been closed. (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - Add an additional system property for the system property replacement. - (remm) -
  • -
  • Fix: - Add missing SHA-512 hash for release artifacts to the build script. - (markt) -
  • -
  • Update: - Update the internal fork of Commons Pool 2 to 2.4.3. (markt) -
  • -
  • Update: - Update the internal fork of Commons DBCP 2 to 8a71764 (2017-10-18) to - pick up some bug fixes and enhancements. (markt) -
  • -
  • Update: - Update the internal fork of Commons FileUpload to 6c00d57 (2017-11-23) - to pick up some code clean-up. (markt) -
  • -
  • Update: - Update the internal fork of Commons Codec to r1817136 to pick up some - code clean-up. (markt) -
  • -
  • Fix: - The native source bundles (for Commons Daemon and Tomcat Native) are no - longer copied to the bin directory for the deploy target. They are now - only copied to the bin directory for the release target. (markt) -
  • -
-
-

2017-11-30 Tomcat 8.5.24 (markt)

-

Catalina

-
    -
  • Add: - When running under Java 9 or later, and the - urlCacheProtection option of the - JreMemoryLeakPreventionListener is enabled, use the API - added in Java 9 to only disable the caching for JAR URL connections. - (markt) -
  • -
  • Fix: - Fix possible SecurityException when using TLS related - request attributes. (markt) -
  • -
  • Fix: - 61597: Extend the StandardJarScanner to scan - JARs on the module path when running on Java 9 and class path scanning - is enabled. (markt) -
  • -
  • Fix: - 61601: Add support for multi-release JARs in JAR scanning and - web application class loading. (markt) -
  • -
  • Fix: - 61681: Allow HTTP/2 push when using request wrapping. (remm) -
  • -
  • Add: - Provide the SessionInitializerFilter that can be used to - ensure that an HTTP session exists when initiating a WebSocket - connection. Patch provided by isapir. (markt) -
  • -
  • Fix: - 61682: When re-prioritising HTTP/2 streams, ensure that both - parent and children fields are correctly updated to avoid a possible - StackOverflowError. (markt) -
  • -
  • Fix: - Improve concurrency by reducing the scope of the synchronisation for - javax.security.auth.message.config.AuthConfigFactory in the - JASPIC API implementation. Based on a patch by Pavan Kumar. (markt) -
  • -
  • Fix: - Avoid a possible NullPointerException when timing out - AsyncContext instances during shut down. (markt) -
  • -
  • Fix: - 61777: Avoid a NullPointerException when - detaching a JASPIC RegistrationListener. Patch provided by - Lazar. (markt) -
  • -
  • Fix: - 61778: Correct the return value when detaching a JASPIC - RegistrationListener. Patch provided by Lazar. (markt) -
  • -
  • Fix: - 61779: Avoid a NullPointerException when a - null RegistrationListener is passed to - AuthConfigFactory.getConfigProvider(). Patch provided by - Lazar. (markt) -
  • -
  • Fix: - 61780: Only include the default JASPIC registration ID in the - return value for a call to - AuthConfigFactory.getRegistrationIDs() if a - RegistrationContext has been registered using the default - registration ID. Patch provided by Lazar. (markt) -
  • -
  • Fix: - 61781: Enable JASPIC provider registrations to be persisted - when the layer and/or application context are null. Patch - provided by Lazar. (markt) -
  • -
  • Fix: - 61782: When calling - AuthConfigFactory.doRegisterConfigProvider() and the - requested JASPIC config provider class is found by the web application - class loader, do not attempt to load the class with the class loader - that loaded the JASPIC API. Patch provided by Lazar. (markt) -
  • -
  • Fix: - 61783: When calling - AuthConfigFactory.removeRegistration() and the registration - is persistent, it should be removed from the persistent store. Patch - provided by Lazar. (markt) -
  • -
  • Fix: - 61784: Correctly handle the case when - AuthConfigFactoryImpl.registerConfigProvider() is called - with a provider name of null. Patch provided by Lazar. - (markt) -
  • -
  • Add: - 61795: Add a property to the Authenticator - implementations to enable a custom JASPIC CallbackHandler - to be specified. Patch provided by Lazar. (markt) -
  • -
-
-

Coyote

-
    -
  • Add: - Enable ALPN and also, therefore, HTTP/2 for the NIO and NIO2 HTTP - connectors when using the JSSE implementation for TLS when running on - Java 9. (markt) -
  • -
  • Add: - 60762: Add the ability to make changes to the TLS - configuration of a connector at runtime without having to restart the - Connector. (markt) -
  • -
  • Fix: - 61568: Avoid a potential SecurityException when - using the NIO2 connector and a new thread is added to the pool. (markt) -
  • -
  • Fix: - 61583: Correct a further regression in the fix to enable the - use of Java key stores that contained multiple keys that did not all - have the same password. This fixes PKCS11 key store handling with - multiple keys selected with an alias. (markt) -
  • -
  • Fix: - Reduce default HTTP/2 stream concurrent execution within a connection - from 200 to 20. (remm) -
  • -
  • Fix: - 61668: Avoid a possible NPE when calling - AbstractHttp11Protocol.getSSLProtocol(). (markt) -
  • -
  • Fix: - 61673: Avoid a possible - ConcurrentModificationException when working with the - streams associated with a connection. (markt) -
  • -
  • Fix: - 61719: Avoid possible NPE calling - InputStream.setReadListener with HTTP/2. (remm) -
  • -
  • Fix: - 61736: Improve performance of NIO connector when clients - leave large time gaps between network packets. Patch provided by Zilong - Song. (markt) -
  • -
  • Fix: - 61740: Correct an off-by-one error in the Hpack header index - validation that caused intermittent request failures when using HTTP/2. - (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 61816: Invalid expressions in attribute values or template - text should trigger a translation (compile time) error, not a run time - error. (markt) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 61604: Add support for authentication in the websocket - client. Patch submitted by J Fernandez. (remm) -
  • -
-
-

Web applications

-
    -
  • Fix: - Enable Javadoc to be built with Java 9. (markt) -
  • -
  • Fix: - 61603: Add XML filtering for the status servlet output where - needed. (remm) -
  • -
  • Fix: - Correct the description of how the CGI servlet maps a request to a - script in the CGI How-To. (markt) -
  • -
-
-

Tribes

-
    -
  • Fix: - Fix incorrect behavior that attempts to resend channel messages more - than the actual setting value of maxRetryAttempts. - (kfujino) -
  • -
  • Fix: - Ensure that the remaining Sender can send channel messages by avoiding - unintended ChannelException caused by comparing the number - of failed members and the number of remaining Senders. (kfujino) -
  • -
  • Fix: - Ensure that remaining SelectionKeys that were not handled by throwing a - ChannelException during SelectionKey processing are - handled. (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - Improve the fix for 61439 and exclude the JPA, JAX-WS and EJB - annotations completely from the Tomcat distributions. (markt) -
  • -
  • Fix: - Improve handling of endorsed directories. The endorsed directory - mechanism will only be used if the JAVA_ENDORSED_DIRS - system property is explicitly set or if - $CATALINA_HOME/endorsed exists. When running on Java 9, any - such attempted use of the endorsed directory mechanism will trigger an - error and Tomcat will fail to start. (rjung) -
  • -
  • Code: - Refactoring in preparation for Java 9. Refactor to avoid using some - methods that will be deprecated in Java 9 onwards. (markt) -
  • -
  • Add: - 51496: When using the Windows installer, check if the - requested service name already exists and, if it does, prompt the user - to select an alternative service name. Patch provided by Ralph - Plawetzki. (markt) -
  • -
  • Fix: - Add necessary Java 9 configuration options to the startup scripts to - prevent warnings being generated on web application stop. (markt) -
  • -
  • Fix: - 61590: Enable service.bat to recognise when - JAVA_HOME is configured for a Java 9 JDK. (markt) -
  • -
  • Fix: - 61598: Update the Windows installer to search the new (as of - Java 9) registry locations when looking for a JRE. (markt) -
  • -
  • Add: - Add generation of a SHA-512 hash for release artifacts to the build - script. (markt) -
  • -
  • Fix: - 61658: Update MIME mappings for fonts to use - font/* as per RFC8081. (markt) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.16 to - pick up the latest Windows binaries built with APR 1.6.3 and OpenSSL - 1.0.2m. (markt) -
  • -
  • Update: - Update the NSIS Installer used to build the Windows installer to version - 3.02.1. (kkolinko) -
  • -
  • Update: - Update the Windows installer to use "The Apache Software Foundation" as - the Publisher when Tomcat is displayed in the list of installed - applications in Microsoft Windows. (kkolinko) -
  • -
  • Fix: - 61803: Remove outdated SSL information from the Security - documentation. (remm) -
  • -
-
-

2017-10-01 Tomcat 8.5.23 (markt)

-

Catalina

-
    -
  • Fix: - Use the correct path when loading the JVM logging.properties - file for Java 9. (rjung) -
  • -
  • Fix: - Add additional validation to the resource handling required to fix - CVE-2017-12617 on Windows. The checks were being performed elsewhere but - adding them to the resource handling ensures that the checks are always - performed. (markt) -
  • -
  • Fix: - 61554: Exclude test files in unusual encodings and markdown - files intended for display in GitHub from RAT analysis. Patch provided - by Chris Thistlethwaite. (markt) -
  • -
-
-

Other

-
    -
  • Fix: - 61563: Correct typos in Spanish translation. Patch provided by - Gonzalo Vásquez. (csutherl) -
  • -
-
-

not released Tomcat 8.5.22 (markt)

-

Catalina

-
    -
  • Fix: - 60963: Add ExtractingRoot, a new - WebResourceRoot implementation that extracts JARs to the - work directory for improved performance when deploying packed WAR files. - (markt) -
  • -
  • Add: - Add an option to reject requests that contain HTTP headers with invalid - (non-token) header names with a 400 response. (markt) -
  • -
  • Fix: - 61542: Fix CVE-2017-12617 and prevent JSPs from being - uploaded via a specially crafted request when HTTP PUT was enabled. - (markt) -
  • -
  • Fix: - Implement the requirements of RFC 7230 (and RFC 2616) that HTTP/1.1 - requests must include a Host header and any request that - does not must be rejected with a 400 response. (markt) -
  • -
  • Fix: - Implement the requirements of RFC 7230 that any HTTP/1.1 request that - specifies a host in the request line, must specify the same host in the - Host header and that any such request that does not, must - be rejected with a 400 response. This check is optional but disabled by - default. It may be enabled with the - allowHostHeaderMismatch attribute of the Connector. (markt) -
  • -
  • Fix: - Implement the requirements of RFC 7230 that any HTTP/1.1 request that - contains multiple Host headers is rejected with a 400 - response. (markt) -
  • -
-
-

Coyote

-
    -
  • Update: - Add a way to set the property source in embedded mode. (remm) -
  • -
  • Fix: - 61557: Correct a further regression in the fix to enable the - use of Java key stores that contain multiple keys that do not all have - the same password. The regression broke support for some FIPS compliant - key stores. (markt) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - 61545: Correctly handle invocations of methods defined in the - PooledConnection interface when using pooled XA - connections. Patch provided by Nils Winkler. (markt) -
  • -
-
-

Other

-
    -
  • Fix: - Update fix for 59904 so that values less than zero are accepted - instead of throwing a NegativeArraySizeException. (remm) -
  • -
-
-

2017-09-19 Tomcat 8.5.21 (markt)

-

Catalina

-
    -
  • Fix: - Before generating an error page in the ErrorReportValve, - check to see if I/O is still permitted for the associated connection - before generating the error page so that the page generation can be - skipped if the page is never going to be sent. (markt) -
  • -
  • Add: - 61189: Add the ability to set environment variables for - individual CGI scripts. Based on a patch by jm009. (markt) -
  • -
  • Fix: - 61210: When running under a SecurityManager, do not print a - warning about not being able to read a logging configuration file when - that file does not exist. (markt) -
  • -
  • Add: - 61280: Add RFC 7617 support to the - BasicAuthenticator. Note that the default configuration - does not change the existing behaviour. (markt) -
  • -
  • Fix: - 61424: Avoid a possible StackOverflowError when - running under a SecurityManager and using - Subject.doAs(). (markt) -
  • -
-
-

Coyote

-
    -
  • Update: - The minimum required Tomcat Native version has been increased to 1.2.14. - This version includes a new API needed for correct client certificate - support when using a Java connector with OpenSSL TLS implementation and - support for the SSL_CONF OpenSSL API. (rjung) -
  • -
  • Add: - Add support for the OpenSSL SSL_CONF API when using - TLS with OpenSSL implementation. It can be used by adding - OpenSSLConf elements underneath SSLHostConfig. - The new element contains a list of OpenSSLConfCmd elements, - each with the attributes name and value. - (rjung) -
  • -
  • Fix: - When using a Java connector in combination with the OpenSSL TLS - implementation, do not configure each SSL connection object via - the OpenSSLEngine. For OpenSSL the SSL object inherits its - settings from the SSL_CTX which we have already configured. - (rjung) -
  • -
  • Fix: - When using JSSE TLS configuration with the OpenSSL implementation and - client certificates: include client CA subjects in the TLS handshake - so that the client can choose an appropriate client certificate to - present. (rjung) -
  • -
  • Fix: - If an invalid option is specified for the - certificateVerification attribute of an - SSLHostConfig element, treat it as required - which is the most secure / restrictive option in addition to reporting - the configuration error. (markt) -
  • -
  • Fix: - Improve the handling of client disconnections during the TLS - renegotiation handshake. (markt) -
  • -
  • Fix: - Prevent exceptions being thrown during normal shutdown of NIO - connections. This enables TLS connections to close cleanly. (markt) -
  • -
  • Fix: - Fix possible race condition when setting IO listeners on an upgraded - connection. (remm) -
  • -
  • Fix: - 48655: Enable Tomcat to shutdown cleanly when using sendfile, - the APR/native connector and a multi-part download is in progress. - (markt) -
  • -
  • Fix: - 58244: Handle the case when OpenSSL resumes a TLS session - using a ticket and the full client certificate chain is not available. - In this case the client certificate without the chain will be presented - to the application. (markt) -
  • -
  • Fix: - Improve the warning message when JSSE and OpenSSL configuration styles - are mixed on the same SSLHostConfig. (markt) -
  • -
  • Fix: - 61415: Fix TLS renegotiation with OpenSSL based connections - and session caching. (markt) -
  • -
  • Fix: - Delay checking that the configured attributes for an - SSLHostConfig instance are consistent with the configured - SSL implementation until Connector start to avoid incorrect - warnings when the SSL implementation changes during initialisation. - (markt) -
  • -
  • Fix: - 61450: Fix default key alias algorithm. (remm) -
  • -
  • Fix: - 61451: Correct a regression in the fix to enable the use of - Java key stores that contained multiple keys that did not all have the - same password. The regression broke support for any key store that did - not store keys in PKCS #8 format such as hardware key stores and Windows - key stores. (markt) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 60523: Reduce the number of packets used to send WebSocket - messages by not flushing between the header and the payload when the - two are written together. (markt) -
  • -
  • Fix: - 61491: When using the permessage-deflate - extension, correctly handle the sending of empty messages after - non-empty messages to avoid the IllegalArgumentException. - (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - Show connector cipher list in the manager web application in the - correct cipher order. (rjung) -
  • -
-
-

Tribes

-
    -
  • Fix: - To avoid unexpected session timeout notification from backup session, - update the access time when receiving the map member notification - message. (kfujino) -
  • -
  • Fix: - Add member info to the log message when the failure detection check - fails in TcpFailureDetector. (kfujino) -
  • -
  • Fix: - Avoid Ping timeout until the added map member by receiving - MSG_START message is completely started. (kfujino) -
  • -
  • Fix: - When sending a channel message, make sure that the Sender has connected. - (kfujino) -
  • -
  • Fix: - Correct the backup node selection logic that node 0 is returned twice - consecutively. (kfujino) -
  • -
  • Fix: - Fix race condition of responseMap in - RpcChannel. (kfujino) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - 61391: Ensure that failed queries are logged if the - SlowQueryReport interceptor is configured to do so and the - connection has been abandoned. Patch provided by Craig Webb. (markt) -
  • -
  • Fix: - 61425: Ensure that transaction of idle connection has - terminated when the testWhileIdle is set to - true and defaultAutoCommit is set to - false. Patch provided by WangZheng. (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - 61439: Remove the Java Annotation API classes from - tomcat-embed-core.jar and package them in a separate JAR in the - embedded distribution to provide end users with greater flexibility to - handle potential conflicts with the JRE and/or other JARs. (markt) -
  • -
  • Fix: - 61441: Improve the detection of JAVA_HOME by the - daemon.sh script when running on a platform where Java has - been installed from an RPM. (rjung) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.14 to - pick up the latest Windows binaries built with APR 1.6.2 and OpenSSL - 1.0.2l. (markt) -
  • -
  • Update: - 61599: Update to Commons Daemon 1.1.0 for improved Java 9 - support. (markt) -
  • -
-
-

2017-08-08 Tomcat 8.5.20 (markt)

-

Catalina

-
    -
  • Fix: - Revert the fix for 49464 since it continued to trigger - regressions. (markt) -
  • -
  • Fix: - Correct a bug in the PushBuilder implementation that - meant push URLs containing %nn sequences were not correctly - decoded. Identified by FindBugs. (markt) -
  • -
  • Add: - 61164: Add support for the %X pattern in the - AccessLogValve that reports the connection status at the - end of the request. Patch provided by Zemian Deng. (markt) -
  • -
  • Fix: - 61351: Correctly handle %nn decoding of URL patterns in - web.xml and similar locations that may legitimately contain characters - that are not permitted by RFC 3986. (markt) -
  • -
  • Add: - 61366: Add a new attribute, localDataSource, to - the JDBCStore that allows the Store to be configured to use - a DataSource defined by the web application rather than the default of - using a globally defined DataSource. Patch provided by Jonathan - Horowitz. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - 61086: Ensure to explicitly signal an empty request body for - HTTP 205 responses. Additional fix to r1795278. Based on a patch - provided by Alexandr Saperov. (violetagg) -
  • -
  • Update: - 61345: Add a server listener that can be used to do system - property replacement from the property source configured in the - digester. (remm) -
  • -
  • Add: - Add additional logging to record problems that occur while waiting for - the NIO pollers to stop during the Connector stop process. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 61364: Ensure that files are closed after detecting encoding - of JSPs so that files do not remain locked by the file system. (markt) -
  • -
-
-

WebSocket

-
    -
  • Add: - 57767: Add support to the WebSocket client for following - redirects when attempting to establish a WebSocket connection. Patch - provided by J Fernandez. (markt) -
  • -
-
-

2017-07-28 Tomcat 8.5.19 (markt)

-

Catalina

-
    -
  • Fix: - Performance improvements for service loader look-ups (and look-ups of - other class loader resources) when the web application is deployed in a - packed WAR file. (markt) -
  • -
  • Fix: - 61253: Add warn message when Digester.updateAttributes - throws an exception instead of ignoring it. (csutherl) -
  • -
  • Fix: - Correct a further regression in the fix for 49464 that could - cause an byte order mark character to appear at the start of content - included by the DefaultServlet. (markt) -
  • -
  • Fix: - 61313: Make the read timeout configurable in the - JNDIRealm and ensure that a read timeout will result in an - attempt to fail over to the alternateURL. Based on patches by Peter - Maloney and Felix Schumacher. (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - Correct the documentation for how StandardRoot is - configured. (markt) -
  • -
-
-

Other

-
    -
  • Fix: - 61316: Fix corruption of UTF-16 encoded source files in - released source distributions. (markt) -
  • -
-
-

not released Tomcat 8.5.18 (markt)

-

Catalina

-
    -
  • Fix: - 61232: When log rotation is disabled only one separator will - be used when generating the log file name. For example if the prefix is - catalina. and the suffix is .log then the log - file name will be catalina.log instead of - catalina..log. Patch provided by Katya Stoycheva. - (violetagg) -
  • -
  • Fix: - 61264: Correct a regression in the refactoring to use - Charset rather than String to store request - character encoding that prevented getReader() throwing an - UnsupportedEncodingException if the user agent specifies - an unsupported character encoding. (markt) -
  • -
  • Fix: - Correct a regression in the fix for 49464 that could cause an - incorrect Content-Length header to be sent by the - DefaultServlet if the encoding of a static is not - consistent with the encoding of the response. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - Enable TLS connectors to use Java key stores that contain multiple keys - where each key has a separate password. Based on a patch by Frank - Taffelt. (markt) -
  • -
  • Fix: - Improve the handling of HTTP/2 stream resets due to excessive headers - when a continuation frame is used. (markt) -
  • -
-
-

Jasper

-
    -
  • Add: - 53031: Add support for the fork option when - compiling JSPs with the Jasper Ant task and javac. (markt) -
  • -
-
-

Other

-
    -
  • Add: - 52791: Add the ability to set the defaults used by the - Windows installer from a configuration file. Patch provided by Sandra - Madden. (markt) -
  • -
-
-

not released Tomcat 8.5.17 (markt)

-

Catalina

-
    -
  • Fix: - 49464: Improve the Default Servlet's handling of static files - when the file encoding is not compatible with the required response - encoding. (markt) -
  • -
  • Fix: - 61214: Remove deleted attribute servlets from - the Context MBean description. Patch provided by Alexis Hassler. (markt) -
  • -
  • Fix: - 61215: Correctly define addConnectorPort and - invalidAuthenticationWhenDeny in the - mbean-descriptors.xml file for the - org.apache.catalina.valves package so that the attributes - are accessible via JMX. (markt) -
  • -
  • Fix: - Make asynchronous error handling more robust. In particular ensure that - onError() is called for any registered - AsyncListeners after an I/O error on a non-container - thread. (markt) -
  • -
  • Fix: - Additional permission for deleting files is granted to JULI as it is - required by FileHandler when running under a Security Manager. The - thread that cleans the log files is marked as daemon thread. - (violetagg) -
  • -
  • Fix: - 61229: Correct a regression in 8.5.15 that broke WebDAV - handling for resources with names that included a & - character. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - Restore the ability to configure support for SSLv3. Enabling this - protocol will trigger a warning in the logs since it is known to be - insecure. (markt) -
  • -
  • Fix: - Do not log a warning when a null session is returned for an - OpenSSL based TLS session since this is expected when session tickets - are enabled. (markt) -
  • -
  • Fix: - When the access log valve logs a TLS related request attribute and the - NIO2 connector is used with OpenSSL, ensure that the TLS attributes are - available to the access log valve when the connection is closing. - (markt) -
  • -
  • Fix: - 60461: Sync SSL session access for the APR connector. (remm) -
  • -
  • Add: - To ease migration from 8.0.x to 8.5.x, if the HTTP or AJP BIO connector - is explicitly configured, rather than failing to start the connector - because BIO has been removed, automatically switch to NIO and continue. - A warning will be logged to alert the user to the switch. (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - Remove references to the Loader attribute - searchExternalFirst from the documentation since the - attribute is no longer supported. (markt) -
  • -
-
-

2017-06-26 Tomcat 8.5.16 (markt)

-

Catalina

-
    -
  • Fix: - 61072: Respect the documentation statements that allow - using the platform default secure random for session id generation. - (remm) -
  • -
  • Fix: - Correct the javadoc for - o.a.c.connector.CoyoteAdapter#parseSessionCookiesId. - Patch provided by John Andrew (XUZHOUWANG) via Github. (violetagg) -
  • -
  • Fix: - 61101: CORS filter should set Vary header in response. - Submitted by Rick Riemer. (remm) -
  • -
  • Add: - 61105: Add a new JULI FileHandler configuration for - specifying the maximum number of days to keep the log files. - (violetagg) -
  • -
  • Fix: - 61125: Ensure that WarURLConnection returns the - correct value for calls to getLastModified() as this is - required for the correct detection of JSP modifications when the JSP is - packaged in a WAR file. (markt) -
  • -
  • Fix: - Improve the SSLValve so it is able to handle client - certificate headers from Nginx. Based on a patch by Lucas Ventura Carro. - (markt) -
  • -
  • Fix: - 61134: Do not use '[' and ']' symbols around substituted - text fragments when generating the default error pages. Patch provided - by Katya Todorova. (violetagg) -
  • -
  • Fix: - 61154: Allow the Manager and Host Manager web applications to - start by default when running under a security manager. This was - accomplished by adding a custom permission, - org.apache.catalina.security.DeployXmlPermission, that - permits an application to use a META-INF/context.xml file - and then granting that permission to the Manager and Host Manager. - (markt) -
  • -
  • Fix: - 61173: Polish the javadoc for - o.a.catalina.startup.Tomcat. Patch provided by - peterhansson_se. (violetagg) -
  • -
  • Add: - A new configuration property crawlerIps is added to the - o.a.catalina.valves.CrawlerSessionManagerValve. Using this - property one can specify a regular expression that will be used to - identify crawlers based on their IP address. Based on a patch provided - by Tetradeus. (violetagg) -
  • -
  • Fix: - 61180: Log a warning message rather than an information - message if it takes more than 100ms to initialised a - SecureRandom instance for a web application to use to - generate session identifiers. Patch provided by Piotr Chlebda. (markt) -
  • -
  • Fix: - 61185: When an asynchronous request is dispatched via - AsyncContext.dispatch() ensure that - getRequestURI() for the dispatched request matches that of - the original request. (markt) -
  • -
  • Fix: - 61197: Ensure that the charset name used in the - Content-Type header has exactly the same form as that - provided by the application. This reverts a behavioural change in - 8.5.15 that caused problems for some clients. (markt) -
  • -
  • Fix: - 61201: Ensure that the SCRIPT_NAME environment - variable for CGI executables is populated in a consistent way regardless - of how the CGI servlet is mapped to a request. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - 61086: Explicitly signal an empty request body for HTTP 205 - responses. (markt) -
  • -
  • Fix: - 61120: Do not ignore path parameters when processing HTTP/2 - requests. (markt) -
  • -
  • Fix: - Revert a change introduced in the fix for bug 60718 that - changed the status code recorded in the access log when the client - dropped the connection from 200 to 500. (markt) -
  • -
  • Fix: - Add additional syncs to the SSL session object provided by the OpenSSL - engine so that a concurrent destruction cannot cause a JVM crash. - (remm) -
  • -
  • Fix: - 61195: Backport, with deprecation where appropriate, the - endpoint and protocol property changes from 9.0.x to ease migration from - 8.5.x to 9.0.x. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 44787: Improve error message when JSP compiler configuration - options are not valid. (markt) -
  • -
  • Fix: - 61137: j.s.jsp.tagext.TagLibraryInfo#uri and - j.s.jsp.tagext.TagLibraryInfo#prefix fields should not be - final. Patch provided by Katya Todorova. (violetagg) -
  • -
-
-

WebSocket

-
    -
  • Fix: - Correct the log message when a MessageHandler for - PongMessage does not implement - MessageHandler.Whole. (rjung) -
  • -
  • Add: - Introduce new API o.a.tomcat.websocket.WsSession#suspend/ - o.a.tomcat.websocket.WsSession#resume that can be used to - suspend/resume reading of the incoming messages. (violetagg) -
  • -
  • Fix: - Improve thread-safety of Futures used to report the result - of sending WebSocket messages. (markt) -
  • -
  • Fix: - 61183: Correct a regression in the previous fix for - 58624 that could trigger a deadlock depending on the locking - strategy employed by the client code. (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - Better document the meaning of the trimSpaces option for Jasper. (markt) -
  • -
  • Fix: - 61150: Configure the Manager and Host-Manager web - applications to permit serialization and deserialization of - CRSFPreventionFilter related session objects to avoid warning messages - and/or stack traces on web application stop and/or start when running - under a security manager. (markt) -
  • -
  • Fix: - Correct the TLS configuration documentation to remove SSLv2 and SSLv3 - from the list of supported protocols. (markt) -
  • -
-
-

Tribes

-
    -
  • Add: - Add JMX support for Tribes components. (kfujino) -
  • -
-
-

Other

-
    -
  • Add: - 45832: Add HTTP DIGEST authentication support to the Catalina - Ant tasks used to communicate with the Manager application. (markt) -
  • -
  • Fix: - 45879: Add the RELEASE-NOTES file to the root of - the installation created by the Tomcat installer for Windows to make it - easier for users to identify the installed Tomcat version. (markt) -
  • -
  • Fix: - 61055: Clarify the code comments in the rewrite valve to make - clear that there are no plans to provide proxy support for this valve - since Tomcat does not have proxy capabilities. (markt) -
  • -
  • Fix: - 61076: Document the altDDName attribute for the - Context element. (markt) -
  • -
  • Fix: - Correct typo in Jar Scan Filter Configuration Reference. - Issue reported via comments.apache.org. (violetagg) -
  • -
  • Fix: - 61145: Add missing @Documented annotation to - annotations in the annotations API. Patch provided by Katya Todorova. - (markt) -
  • -
  • Fix: - 61146: Add missing lookup() method to - @EJB annotation in the annotations API. Patch provided by - Katya Todorova. (markt) -
  • -
  • Fix: - Correct typo in Context Container Configuration Reference. - Patch provided by Katya Todorova. (violetagg) -
  • -
-
-

2017-05-10 Tomcat 8.5.15 (markt)

-

General

-
    -
  • Add: - Allow to exclude JUnit test classes using the build property - test.exclude and document the property in - BUILDING.txt. (rjung) -
  • -
-
-

Catalina

-
    -
  • Fix: - Review those places where Tomcat re-encodes a URI or URI component and - ensure that that correct encoding (path differs from query string) is - applied and that the encoding is applied consistently. (markt) -
  • -
  • Fix: - Avoid a NullPointerException when reading attributes for a - initialised HTTP connector where TLS is enabled. (markt) -
  • -
  • Fix: - Always quote the hostName of an SSLHostConfig - element when using it as part of the JMX object name to avoid errors that - prevent the associated TLS connector from starting if a wild card - hostName is configured (because * is a - reserved character for JMX object names). (markt) -
  • -
  • Code: - Switch to using Charset rather than String to - store encoding settings (including for configuration and for the - Content-Type header) to reduce the number of places the - associated Charset needs to be looked up. (markt) -
  • -
  • Fix: - Use a more reliable mechanism for the DefaultServlet when - determining if the current request is for custom error page or not. - (markt) -
  • -
  • Fix: - Ensure that when the Default or WebDAV servlets process an error - dispatch that the error resource is processed via the - doGet() method irrespective of the method used for the - original request that triggered the error. (markt) -
  • -
  • Fix: - If a static custom error page is specified that does not exist or cannot - be read, ensure that the intended error status is returned rather than a - 404 or 403. (markt) -
  • -
  • Fix: - When the WebDAV servlet is configured and an error dispatch is made to a - custom error page located below WEB-INF, ensure that the - target error page is displayed rather than a 404 response. (markt) -
  • -
  • Add: - 61047: Add MIME mapping for woff2 fonts in the default - web.xml. Patch provided by Justin Williamson. (violetagg) -
  • -
  • Fix: - Correct the logic that selects the encoding to use to decode the query - string in the SSIServletExternalResolver so that the - useBodyEncodingForURI attribute of the - Connector is correctly taken into account. (markt) -
  • -
  • Fix: - Within the Expires filter, make the content type value specified with the - ExpiresByType parameter, case insensitive. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - When a TrustManager is configured that does not support - certificateVerificationDepth only log a warning about that - lack of support when certificateVerificationDepth has been - explicitly set. (markt) -
  • -
  • Fix: - 60970: Extend the fix for large headers to push requests. - (markt) -
  • -
  • Fix: - Do not include a Date header in HTTP/2 responses with - status codes less than 200. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - When no BOM is present and an encoding is detected, do not skip the - bytes used to detect the encoding since they are not part of a BOM. - (markt) -
  • -
  • Update: - 61057: Update to Eclipse JDT Compiler 4.6.3. (violetagg) -
  • -
  • Fix: - 61065: Ensure that once the class is resolved by - javax.el.ImportHandler#resolveClass it will be cached with - the proper name. (violetagg) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 61003: Ensure the flags for reading/writing in - o.a.t.websocket.AsyncChannelWrapperSecure are correctly - reset even if some exceptions occurred during processing. (markt/violetagg) -
  • -
-
-

Web Applications

-
    -
  • Add: - Add documents for maxIdleTime attribute to Channel Receiver - docs. (kfujino) -
  • -
-
-

Other

-
    -
  • Add: - Modify the Ant build script used to publish to a Maven repository so - that it no longer requires artifacts to be GPG signed. This is make it - possible for the CI system to upload snapshot builds to the ASF Maven - repository. (markt) -
  • -
  • Code: - Review i18n property files, remove unnecessary escaping and consistently - use [...] to delimit inserted values. (markt) -
  • -
-
-

2017-04-18 Tomcat 8.5.14 (markt)

-

Catalina

-
    -
  • Fix: - 59825: Log a message that lists the components in the - processing chain that do not support async processing when a call to - ServletRequest.startAsync() fails. (markt) -
  • -
  • Fix: - 60926: Ensure - o.a.c.core.ApplicationContextFacade#setSessionTimeout will - invoke the correct method when running Tomcat with security manager. - (markt) -
  • -
  • Update: - Update the early access Servlet 4.0 API implementation to reflect the - change in method name from getPushBuilder() to - newPushBuilder(). (markt) -
  • -
  • Fix: - Correct a regression in the X to comma refactoring that broke JMX - operations that take parameters. (markt) -
  • -
  • Fix: - Avoid a NullPointerException when reading attributes for a - running HTTP connector where TLS is not enabled. (markt) -
  • -
  • Fix: - 60940: Improve the handling of the META-INF/ and - META-INF/MANIFEST.MF entries for Jar files located in - /WEB-INF/lib when running a web application from a packed - WAR file. (markt) -
  • -
  • Fix: - Pre-load the ExceptionUtils class. Since the class is used - extensively in error handling, it is prudent to pre-load it to avoid any - failure to load this class masking the true problem during error - handling. (markt) -
  • -
  • Fix: - Avoid potential NullPointerExceptions related to access - logging during shutdown, some of which have been observed when running - the unit tests. (markt) -
  • -
  • Fix: - When there is no javax.servlet.WriteListener registered - then a call to javax.servlet.ServletOutputStream#isReady - will return false instead of throwing - IllegalStateException. (violetagg) -
  • -
  • Fix: - When there is no javax.servlet.ReadListener registered - then a call to javax.servlet.ServletInputStream#isReady - will return false instead of throwing - IllegalStateException. (violetagg) -
  • -
-
-

Coyote

-
    -
  • Fix: - Align cipher configuration parsing with current OpenSSL master. (markt) -
  • -
  • Fix: - 60970: Fix infinite loop if application tries to write a - large header to the response when using HTTP/2. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 60925: Improve the handling of access to properties defined - by interfaces when a BeanELResolver is used under a - SecurityManager. (markt) -
  • -
-
-

jdbc-pool

-
    -
  • Code: - Refactor the creating a constructor for a proxy class to reduce - duplicate code. (kfujino) -
  • -
  • Fix: - In StatementFacade, the method call on the statements that - have been closed throw SQLException rather than - NullPointerException. (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - Correct comments about Java 8 in Jre8Compat. - Patch provided by fibbers via Github. (violetagg) -
  • -
  • Fix: - 60932: Correctly escape single quotes when used in i18n - messages. Based on a patch by Michael Osipov. (markt) -
  • -
  • Fix: - Update the custom Ant task that integrates with the Symantec code - signing service to use the now mandatory 2-factor authentication. - (markt) -
  • -
-
-

2017-03-30 Tomcat 8.5.13 (markt)

-

Catalina

-
    -
  • Add: - 54618: Add support to the - HttpHeaderSecurityFilter for the HSTS preload parameter. - (markt) -
  • -
  • Fix: - 60853: Expose the SSLHostConfig and - SSLHostConfigCertificate objects via JMX. (markt) -
  • -
  • Fix: - 60876: Ensure that Set-Cookie headers generated - by the Rfc6265CookieProcessor are aligned with the - specification. Patch provided by Jim Griswold. (markt) -
  • -
  • Fix: - 60882: Fix a NullPointerException when obtaining - a RequestDispatcher for a request that will not have any - pathInfo associated with it. This was a regression in the changes in - 8.5.12 for the Servlet 4.0 API early preview changes. (markt) -
  • -
  • Update: - Align PushBuilder API with changes from Servlet expert - group. (markt) -
  • -
  • Code: - Refactor the various implementations of X to comma separated list to a - single utility class and update the code to use the new utility class. - (markt) -
  • -
  • Fix: - 60911: Ensure NPE will not be thrown when looking for SSL - session ID. Based on a patch by Didier Gutacker. (violetagg) -
  • -
-
-

Coyote

-
    -
  • Add: - 60362: Add a new Connector configuration - sendReasonPhrase. When this attribute is set to - true, a reason phrase will be sent with the response. - By default a reason phrase will not be sent. This option is deprecated - and is not available in Tomcat 9. (violetagg) -
  • -
  • Fix: - Fix HTTP/2 incorrect input unblocking on EOF. (remm) -
  • -
  • Fix: - Close the connection sooner if an event occurs for a current connection - that is not consistent with the current state of that connection. - (markt) -
  • -
  • Fix: - Speed up shutdown when using multiple acceptor threads by ensuring that - the code that unlocks the acceptor threads correctly handles the case - where there are multiple threads. (markt) -
  • -
  • Fix: - 60852: Correctly spell compressible when used in - configuration attributes and internal code. Based on a patch by Michael - Osipov. (markt) -
  • -
  • Fix: - 60900: Avoid a NullPointerException in the APR - Poller if a connection is closed at the same time as new data arrives on - that connection. (markt) -
  • -
  • Fix: - Improve HPACK specification compliance by fixing some test failures - reported by the h2spec tool written by Moto Ishizawa. (markt) -
  • -
  • Fix: - Improve HTTP/2 specification compliance by fixing some test failures - reported by the h2spec tool written by Moto Ishizawa. (markt) -
  • -
  • Fix: - 60918: Fix sendfile processing error that could lead to - subsequent requests experiencing an IllegalStateException. - (markt) -
  • -
  • Fix: - Improve sendfile handling when requests are pipelined. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - Improve the error handling for simple tags to ensure that the tag is - released and destroyed once used. (remm, violetagg) -
  • -
  • Fix: - 60844: Correctly handle the error when fewer parameter values - than required by the method are used to invoke an EL method expression. - Patch provided by Daniel Gray. (markt) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - 60764: Implement equals() and - hashCode() in the StatementFacade in order to - enable these methods to be called on the closed statements if any - statement proxy is set. This behavior can be changed with - useStatementFacade attribute. (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - Refactor the build script and the NSIS installer script so that either - NSIS 2.x or NSIS 3.x can be used to build the installer. This is - primarily to re-enable building the installer on the Linux based CI - system where the combination of NSIS 3.x and wine leads to failed - installer builds. (markt) -
  • -
-
-

2017-03-13 Tomcat 8.5.12 (markt)

-

Catalina

-
    -
  • Fix: - 60469: Refactor RealmBase for better code re-use - when implementing Realms that use a custom Principal. - (markt) -
  • -
  • Fix: - 60490: Various formatting and layout improvements for the - ErrorReportValve. Patch provided by Michael Osipov. (markt) -
  • -
  • Update: - 60596: Improve performance of DefaultServlet when sendfile - feature is disabled on connector. (kkolinko) -
  • -
  • Code: - Make it easier for sub-classes of Tomcat to modify the - default web.xml settings by over-riding - getDefaultWebXmlListener(). Patch provided by Aaron - Anderson. (markt) -
  • -
  • Fix: - Reduce the contention in the default InstanceManager - implementation when multiple threads are managing objects and need to - reference the annotation cache. (markt) -
  • -
  • Code: - 60674: Remove final marker from - CorsFilter to enable sub-classing. (markt) -
  • -
  • Fix: - 60683: Security manager failure causing NPEs when doing IO - on some JVMs. (csutherl) -
  • -
  • Fix: - 60688: Update the internal fork of Apache Commons BCEL to - r1782855 to add early access Java 9 support to the annotation scanning - code. (markt) -
  • -
  • Fix: - 60694: Prevent NPE during authentication when no JASPIC - AuthConfigFactory is available. (markt) -
  • -
  • Fix: - 60697: When HTTP TRACE requests are disabled on the - Connector, ensure that the HTTP OPTIONS response from custom servlets - does not include TRACE in the returned Allow header. (markt) -
  • -
  • Fix: - 60718: Improve error handling for asynchronous processing and - correct a number of cases where the requestDestroyed() - event was not being fired and an entry wasn't being made in the access - logs. (markt) -
  • -
  • Fix: - 60720: Replace "WWW-Authenticate" literal with static final - AUTH_HEADER_NAME in SpnegoAuthenticator. Patch provided by Michael - Osipov. (violetagg) -
  • -
  • Fix: - The default JASPIC AuthConfigFactory now correctly notifies - registered RegistrationListeners when a new - AuthConfigProvider is registered. (markt) -
  • -
  • Code: - Improve the performance of AuthenticatorBase when there is - no JASPIC configuration available. (violetagg) -
  • -
  • Fix: - When HTTP TRACE requests are disabled on the Connector, ensure that the - HTTP OPTIONS response from the WebDAV servlet does not include - TRACE in the returned Allow header. (markt) -
  • -
  • Fix: - 60722: Take account of the - dispatchersUseEncodedPaths setting on the current - Context when generating paths for dispatches triggered - by AsyncContext.dispatch(). (markt) -
  • -
  • Fix: - 60728: Make the separator Tomcat uses in the Tomcat specific - war:file:... URL protocol customizable via a system - property. The separator is equivalent to the use of the ! - character in jar:file:... URLs. The default separator of - * remains unchanged. (markt) -
  • -
  • Update: - Update the org.apache.catalina.servlet4preview package that - can be used to gain early access to Servlet 4.0 features to align with - the latest proposals from the Servlet 4.0 expert group. This includes - updates to the new Servlet mapping API, new methods on the - ServletContext to make the available API more equivalent to - the deployment descriptor, updates to the HTTP push API and the ability - to set default request and response character encoding per web - application. Note that the Servlet 4.0 API is still a work in progress - and further changes are likely. (markt) -
  • -
  • Fix: - 60798: Correct a bug in the handling of JARs in unpacked WARs - that meant multiple attempts to read the same entry from a JAR in - succession would fail for the second and subsequent attempts. (markt) -
  • -
  • Fix: - 60808: Ensure that the Map returned by - ServletRequest.getParameterMap() is fully immutable. Based - on a patch provided by woosan. (markt) -
  • -
  • Fix: - 60824: Correctly cache the Subject in the - session - if there is a session - when running under a - SecurityManager. Patch provided by Jan Engehausen. (markt) -
  • -
  • Fix: - Ensure request and response facades are used when firing application - listeners. (markt/remm) -
  • -
-
-

Coyote

-
    -
  • Fix: - Improve handling of case when an HTTP/2 client sends more data that is - subject to flow control than the current window size allows. (markt) -
  • -
  • Fix: - Improve NIO2 look-ahead parsing of TLS client hello for SNI with large - client hello messages. (markt) -
  • -
  • Fix: - 59807: Provide a better error message when there is no - SSLHostConfig defined with a hostName that - matches the defaultSSLHostConfigName for the associated - Connector. (markt) -
  • -
  • Fix: - Include the value of SslHostConfig.truststoreAlgorithm when - warning that the algorithm does not support the - certificateVerificationDepth configuration option. (markt) -
  • -
  • Fix: - Ensure that executor thread pools used with connectors pre-start the - configured minimum number of idle threads. (markt) -
  • -
  • Add: - 60594: Allow some invalid characters that were recently - restricted to be processed in requests by using the system property - tomcat.util.http.parser.HttpParser.requestTargetAllow. - (csutherl) -
  • -
  • Fix: - 60627: Modify the Rfc6265CookieProcessor so that - in addition to cookie headers that start with an explicit RFC 2109 - $Version=1, cookies that start with $Version=0 - are also parsed as RFC 2109 cookies. (markt) -
  • -
  • Fix: - 60716: Add a new JSSE specific attribute, - revocationEnabled, to SSLHostConfig to permit - JSSE provider revocation checks to be enabled when no - certificateRevocationListFile has been configured. The - expectation is that configuration will be performed via a JSSE provider - specific mechanisms. (markt) -
  • -
  • Fix: - Modify the cookie header generated by the - Rfc6265CookieProcessor so it always sends an - Expires attribute as well as a Max-Age - attribute to avoid problems with Microsoft browsers that do not support - the Max-Age attribute. (markt) -
  • -
  • Fix: - 60761: Expose a protected getter and setter for - NioEndpoint.stopLatch to make the class easier to extend. - (markt) -
  • -
  • Fix: - Prevent blocking reads after a stream exception occurs with HTTP/2. - (remm) -
  • -
-
-

Jasper

-
    -
  • Fix: - Follow up to the fix for 58178. When creating the - ELContext for a tag file, ensure that any registered - ELContextListeners are fired. (markt) -
  • -
  • Fix: - Refactor code generated for JSPs to reduce the size of the code required - for tags. (markt) -
  • -
  • Fix: - 60769: Correct a regression in the XML encoding detection - refactoring carried out for 8.5.10 that incorrectly always used the - detected BOM encoding in preference to any encoding specified in the - prolog. (markt) -
  • -
  • Update: - Update to the Eclipse JDT Compiler 4.6.1. (markt) -
  • -
-
-

Cluster

-
    -
  • Add: - Make the accessTimeout configurable in - BackupManager and ClusterSingleSignOn. The - accessTimeout is used as a timeout period for PING in - replication map. (kfujino) -
  • -
  • Fix: - 60806: To avoid ClassNotFoundException, make - sure that the web application class loader is passed to - ReplicatedContext. (kfujino) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 60617: Correctly create a CONNECT request when - establishing a WebSocket connection via a proxy. Patch provided by - Svetlin Zarev. (markt) -
  • -
-
-

Tribes

-
    -
  • Add: - Add log message that PING message has received beyond the timeout - period. (kfujino) -
  • -
  • Fix: - When a PING message that beyond the time-out period has been received, - make sure that valid member is added to the map membership. (kfujino) -
  • -
  • Fix: - Ensure that NoRpcChannelReply messages are not received on - RpcCallback. (kfujino) -
  • -
-
-

Web Applications

-
    -
  • Fix: - Add Specification and Javadoc references for JASPIC to the Docs - application. (csutherl) -
  • -
-
-

Other

-
    -
  • Fix: - Spelling corrections provided by Josh Soref. (violetagg) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.12 to - pick up the latest Windows binaries built with OpenSSL 1.0.2k. (violetagg) -
  • -
  • Add: - 60784: Update all unit tests that test the HTTP status line - to check for the required space after the status code. Patch provided by - Michael Osipov. (markt) -
  • -
  • Update: - Update the NSIS Installer used to build the Windows installer to version - 3.01. (markt) -
  • -
-
-

2017-01-16 Tomcat 8.5.11 (markt)

-

Catalina

-
    -
  • Add: - 60620: - Extend the JreMemoryLeakPreventionListener to provide - protection against ForkJoinPool.commonPool() related memory - leaks. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - Ensure UpgradeProcessor instances associated with closed connections are - removed from the map of current connections to Processors. (markt) -
  • -
  • Fix: - Remove a workaround for a problem previously reported with WebSocket, - TLS and APR that treated some error conditions as not errors. The - original problem cannot be reproduced with the current code and the - work-around is now causing problems. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 60497: Follow up fix using a better variable name for the - tag reuse flag. (remm) -
  • -
  • Fix: - Revert use of try/finally for simple tags. (remm) -
  • -
-
-

WebSocket

-
    -
  • Fix: - Prevent potential processing loop on unexpected WebSocket connection - closure. (markt) -
  • -
-
-

jdbc-pool

-
    -
  • Add: - Enable reset the statistics without restarting the pool. (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - Spelling corrections provided by Josh Soref. (violetagg) -
  • -
-
-

not released Tomcat 8.5.10 (markt)

-

Catalina

-
    -
  • Add: - 53602: Add HTTP status code 451 (RFC 7725) to the list of - HTTP status codes recognised by the ErrorReportValve. (markt) -
  • -
  • Fix: - 60446: Handle the case where the stored user credential uses - a different key length than the length currently configured for the - CredentialHandler. Based on a patch by Niklas Holm. (markt) -
  • -
  • Update: - Update the warnings that reference required options for running on Java - 9 to use the latest syntax for those options. (markt) -
  • -
  • Fix: - 60513: Fix thread safety issue with RMI cleanup code. (remm) -
  • -
-
-

Coyote

-
    -
  • Fix: - Expand the search process for a server certificate when OpenSSL is used - with a JSSE connector and an explicit alias has not been configured. - (markt) -
  • -
  • Fix: - 60450: Improve the selection algorithm for the default trust - store type for a TLS Virtual Host. In particular, don't use - PKCS12 as a default trust store type. Better document how - the default trust store type is selected for a TLS virtual host. (markt) -
  • -
  • Fix: - 60451: Correctly handle HTTP/2 header values that contain - characters with unicode code points in the range 128 to 255. Reject - with a clear error message HTTP/2 header values that contain characters - with unicode code points above 255. (markt) -
  • -
  • Fix: - Improve the logic that selects an address to use to unlock the Acceptor - to take account of platforms what do not listen on all local addresses - when configured with an address of 0.0.0.0 or - ::. (markt) -
  • -
  • Fix: - Correct a regression in the refactoring to make wider use of - ByteBuffer that caused an intermittent failure in the unit - tests. (markt) -
  • -
  • Fix: - 60482: HTTP/2 shouldn't do URL decoding on the query string. - (remm) -
  • -
  • Fix: - Fix an HTTP/2 compression error. Once a new size has been agreed for the - dynamic HPACK table, the next header block must begin with a dynamic - table update. (markt) -
  • -
  • Fix: - 60508: Set request start time for HTTP/2. (remm) -
  • -
-
-

Jasper

-
    -
  • Update: - Implement a simpler JSP file encoding detector that delegates XML prolog - encoding detection to the JRE rather than using a custom XML parser. - (markt) -
  • -
  • Fix: - 60497: Restore previous tag reuse behavior following the use - of try/finally. (remm) -
  • -
  • Fix: - Improve the error handling for simple tags to ensure that the tag is - released and destroyed once used. (remm) -
  • -
-
-

WebSocket

-
    -
  • Fix: - Correctly handle blocking WebSocket writes when the write times out just - before the write is attempted. (markt) -
  • -
-
-

Web Applications

-
    -
  • Add: - In the documentation web application, be explicit that clustering - requires a secure network for all of the cluster network traffic. - (markt) -
  • -
  • Update: - Update the ASF logos to the new versions. -
  • -
  • Fix: - 60344: Add a note to BUILDING.txt regarding using the source - bundle with the correct line endings. (markt) -
  • -
  • Fix: - 60468: Correct the format of the sample ISO-8601 date used - to report the build date for the documentation. Patch provided by - Michael Osipov. (markt) -
  • -
-
-

Other

-
    -
  • Update: - Update the ASF logos used in the Apache Tomcat installer for Windows to - use the new versions. -
  • -
-
-

2016-12-08 Tomcat 8.5.9 (markt)

-

Catalina

-
    -
  • Update: - 60202: Add an available flag to realms, to indicate the - state, or the realm backend. Update lockout realm to only register - auth failures if the realm is available. (remm) -
  • -
  • Fix: - 60340: Readability improvements for CSS used in - DefaultServlet and ErrorReportValve. Patch provided by Michael - Osipov. (violetagg) -
  • -
  • Fix: - 60351: Delay creating META-INF/war-tracker file - until after the WAR has been expanded to address the case where the - Tomcat process terminates during the expansion. (markt) -
  • -
  • Fix: - Correctly generate URLs for resources located inside JARs that are - themselves located inside a packed WAR file. (markt) -
  • -
  • Fix: - Correctly handle the configClass attribute of a Host when - embedding Tomcat. (markt) -
  • -
  • Fix: - 60368: Restore egde case for embedded allowing the connector - to be removed. (remm) -
  • -
  • Fix: - 60379: Dispose of the GSS credential once it is no longer - required. Patch provided by Michael Osipov. (markt) -
  • -
  • Fix: - 60380: Ensure that a call to - HttpServletRequest#logout() triggers a call to - TomcatPrincipal#logout(). Based on a patch by Michael - Osipov. (markt) -
  • -
  • Fix: - 60387: Correct the javadoc for - o.a.catalina.AccessLog.setRequestAttributesEnabled. - The default value is different for the different implementations. - (violetagg) -
  • -
  • Code: - 60393: Use consistent parameter naming in implementations of - Realm#authenticate(GSSContext, boolean). (markt) -
  • -
  • Fix: - 60395: Log when an Authenticator passes an - incomplete GSSContext to a Realm since it indicates a bug - in the Authenticator. Patch provided by Michael Osipov. - (markt) -
  • -
  • Fix: - 60400: When expanding the buffer used for reading the - request body, ensure the read position will be restored to the - original one. (violetagg) -
  • -
  • Fix: - 60410: Ensure that multiple calls to - JarInputStreamWrapper#close() do not incorrectly trigger - the closure of the underlying JAR or WAR file. (markt) -
  • -
  • Fix: - 60411: Implement support in the RewriteValve for - symbolic names to specify the redirect code to use when returning a - redirect response to the user agent. Patch provided by Michael Osipov. - (markt) -
  • -
  • Fix: - 60413: In the RewriteValve write empty capture - groups as the empty string rather than as "null" - when generating the re-written URL. Based on a patch by Michael Osipov. - (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - 60372: Ensure the response headers' buffer limit is reset to - the capacity of this buffer when IOException occurs while writing the - headers to the socket. (violetagg) -
  • -
  • Fix: - Ensure that the availability of configured upgrade protocols that - require ALPN is correctly reported during Tomcat start. (markt) -
  • -
  • Fix: - 60386: Implement a more sophisticated pruning algorithm for - removing closed streams from the priority tree to ensure that the tree - does not grow too large. (markt) -
  • -
  • Fix: - 60409: When unable to complete sendfile request, ensure the - Processor will be added to the cache only once. (markt/violetagg) -
  • -
  • Fix: - Ensure that the endpoint is able to unlock the acceptor thread during - shutdown if the endpoint is configured to listen to any local address - of a specific type such as 0.0.0.0 or ::. - (markt) -
  • -
  • Add: - Add a new configuration option, ipv6v6only to the APR - connectors that allows them to be configure to only accept IPv6 - connections when configured with an IPv6 address rather than the - default which is to accept IPv4 connections as well if the operating - system uses a dual network stack. (markt) -
  • -
  • Fix: - Improve the logic that unlocks the acceptor thread so a better choice is - made for the address to connect to when a connector is configured for - any local port. This reduces the likelihood of the unlock failing. - (markt) -
  • -
  • Fix: - 60436: Avoid a potential NPE when processing async timeouts. - (markt) -
  • -
  • Fix: - Reduce the window in which an async request that has just started - processing on a container thread remains eligible for an async timeout. - (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 60431: Improve handling of varargs in UEL expressions. Based - on a patch by Ben Wolfe. (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - Fix JDK version number documented in BUILDING.txt. (rjung) -
  • -
  • Fix: - Correct a typo in Host Configuration Reference. - Issue reported via comments.apache.org. (violetagg) -
  • -
  • Fix: - 60412: Add information on the comment syntax for the - RewriteValve configuration. (markt) -
  • -
  • Fix: - 60467: remove problematic characters from XML documentation. - Based upon a patch by Michael Osipov. (schultz) -
  • -
-
-

Tribes

-
    -
  • Fix: - Reduce the warning logs for a message received from a different domain - in order to avoid excessive log outputs. (kfujino) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 60437: Avoid possible handshake overflows in the websocket - client. (remm) -
  • -
-
-

jdbc-pool

-
    -
  • Add: - 58816: Implement the statistics of jdbc-pool. The stats infos - are borrowedCount, returnedCount, - createdCount, releasedCount, - reconnectedCount, releasedIdleCount and - removeAbandonedCount. (kfujino) -
  • -
  • Fix: - 60194: If validationQuery is not specified, - connection validation is done by calling the isValid() - method. (kfujino) -
  • -
  • Fix: - 60398: Fix testcase of TestSlowQueryReport. - (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - Allow customization of service.bat, such as heap memory size, service - startup mode and JVM args. Patch provided by isapir via Github. - (violetagg) -
  • -
  • Fix: - 60366: Change catalina.bat to use directly - LOGGING_MANAGER and LOGGING_CONFIG variables - in order to configure logging, instead of modifying - JAVA_OPTS. Patch provided by Petter Isberg. (violetagg) -
  • -
  • Fix: - 60383: JASPIC API is added as a dependency to the - org.apache.tomcat:tomcat-catalina maven artifact. - (violetagg) -
  • -
  • Fix: - Update the comments associated with the TLS Connector examples in - server.xml. (markt) -
  • -
  • Add: - New property is added test.verbose in order to control - whether the output of the tests is displayed on the console or not. - Patch provided by Emmanuel Bourg. (violetagg) -
  • -
  • Code: - TestOpenSSLCipherConfigurationParser.testSpecification - - if there are test failures, provide more detailed information. Patch - provided by Emmanuel Bourg. (violetagg) -
  • -
-
-

2016-11-08 Tomcat 8.5.8 (markt)

-

Coyote

-
    -
  • Fix: - Check that threadPriority values used in AbstractProtocol are valid. - (fschumacher) -
  • -
-
-

not released Tomcat 8.5.7 (markt)

-

Catalina

-
    -
  • Fix: - When creating a new Connector via JMX, ensure that both HTTP/1.1 and - AJP/1.3 connectors can be created. (markt) -
  • -
  • Fix: - Include the Context name in the log message when an item cannot be - added to the cache. (markt) -
  • -
  • Fix: - Exclude JAR files in /WEB-INF/lib from the static resource - cache. (markt) -
  • -
  • Fix: - When calling getResourceAsStream() on a directory, ensure - that null is returned. (markt) -
  • -
  • Fix: - 60161: Allow creating subcategories of the container logger, - and use it for the rewrite valve. (remm) -
  • -
  • Fix: - Correctly test for control characters when reading the provided shutdown - password. (markt) -
  • -
  • Fix: - 60297: Simplify connector creation in embedded mode. (remm) -
  • -
  • Fix: - Refactor creation of containers in embedded mode for more consistency - and flexibility. (remm) -
  • -
  • Add: - Introduce new methods read(ByteBuffer)/ - write(ByteBuffer) in - o.a.catalina.connector.CoyoteInputStream/ - o.a.catalina.connector.CoyoteOutputStream. (violetagg) -
  • -
  • Fix: - When configuring the JMX remote listener, specify the allowed types for - the credentials. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - Correct the HPACK header table size configuration that transposed the - client and server table sizes when creating the encoder and decoder. - (markt) -
  • -
  • Fix: - Don't continue to process an HTTP/2 stream if it is reset during header - parsing. (markt) -
  • -
  • Fix: - HTTP/2 uses separate headers for each Cookie. As required by RFC 7540, - merge these into a single Cookie header before processing continues. - (markt) -
  • -
  • Fix: - Align the HTTP/2 implementation with the HTTP/1.1 implementation and - return a 500 response when an unhandled exception occurs during request - processing. (markt) -
  • -
  • Fix: - Correct the HTTP header parser so that DEL is not treated as a valid - token character. (markt) -
  • -
  • Add: - Add checks around the handling of HTTP/2 pseudo headers. (markt) -
  • -
  • Add: - Add support for trailer headers to the HTTP/2 implementation. (markt) -
  • -
  • Fix: - 60232: When processing headers for an HTTP/2 stream, ensure - that the read buffer is large enough for the header being processed. - (markt) -
  • -
  • Add: - Add configuration options to the HTTP/2 implementation to control the - maximum number of headers allowed, the maximum size of headers allowed, - the maximum number of trailer headers allowed, the maximum size of - trailer headers allowed and the maximum number of cookies allowed. - (markt) -
  • -
  • Fix: - Correctly differentiate between sending and receiving a reset frame when - tracking the state of an HTTP/2 stream. (markt) -
  • -
  • Fix: - 60319: When using an Executor, disconnect it from the - Connector attributes maxThreads, - minSpareThreads and threadPriority to enable - the configuration settings to be consistently reported. These Connector - attributes will be reported as -1 when an Executor is in - use. The values used by the executor may be set and obtained via the - Executor. (markt) -
  • -
  • Fix: - If an I/O error occurs during async processing on a non-container - thread, ensure that the onError() event is triggered. - (markt) -
  • -
  • Fix: - Improve detection of I/O errors during async processing on non-container - threads and trigger async error handling when they are detected. (markt) -
  • -
  • Add: - Add additional checks for valid characters to the HTTP request line - parsing so invalid request lines are rejected sooner. (markt) -
  • -
-
-

Web applications

-
    -
  • Add: - Add HTTP/2 configuration information to the documentation web - application. (markt) -
  • -
  • Fix: - Fix default value of validationInterval attribute in - jdbc-pool. (kfujino) -
  • -
  • Fix: - Correct a typo in CGI How-To. - Issue reported via comments.apache.org. (violetagg) -
  • -
-
-

Tribes

-
    -
  • Fix: - When the proxy node sends a backup retrieve message, ensure that using - the channelSendOptions that has been set rather than the - default channelSendOptions. (kfujino) -
  • -
-
-

Other

-
    -
  • Add: - Add the JASPIC API jar to the Maven Central publication script. (markt) -
  • -
  • Fix: - Remove classes from tomcat-util-scan.jar that are duplicates of those in - tomcat-util.jar. (markt) -
  • -
-
-

2016-10-10 Tomcat 8.5.6 (markt)

-

Catalina

-
    -
  • Add: - 59961: Add an option to the StandardJarScanner - to control whether or not JAR Manifests are scanned for additional - class path entries. (markt) -
  • -
  • Fix: - 60013: Refactor the previous fix to align the behaviour of - the Rewrite Valve with mod_rewrite. As part of this, provide an - implementation for the B and NE flags and - improve the handling for the QSA flag. Includes multiple - test cases by Santhana Preethiand a patch by Tiago Oliveira. (markt) -
  • -
  • Fix: - 60087: Refactor the web resources handling to use the Tomcat - specific war:file:... URL protocol to refer to WAR files - and their contents rather than the standard jar:file:... - form since some components of the JRE, such as JAR verification, give - unexpected results when the standard form is used. A side-effect of the - refactoring is that when using packed WARs, it is now possible to - reference a WAR and/or specific JARs within a WAR in the security policy - file used when running under a SecurityManager. (markt) -
  • -
  • Fix: - 60116: Fix a problem with the rewrite valve that caused back - references evaluated in conditions to be forced to lower case when using - the NC flag. (markt) -
  • -
  • Fix: - Ensure Digester.useContextClassLoader is considered in - case the class loader is used. (violetagg) -
  • -
  • Fix: - 60117: Ensure that the name of LogLevel is - localized when using OneLineFormatter. Patch provided by - Tatsuya Bessho. (kfujino) -
  • -
  • Fix: - 60138: Fix the SSLHostConfig so that the - protocols attribute is limited to the protocols supported - by the current JSSE implementation rather than the default protocols - used by the implementation. (markt) -
  • -
  • Fix: - 60146: Improve performance for resource retrieval by making - calls to WebResource.getInputStream() trigger caching if the resource is - small enough. Patch provided by mohitchugh. (markt) -
  • -
  • Add: - 60151: Improve the exception error messages when a - ResourceLink fails to specify the type, specifies an - unknown type or specifies the wrong type. (markt) -
  • -
  • Fix: - 60167: Ignore empty lines in /etc/passwd files - when using the PasswdUserDatabase. (markt) -
  • -
  • Fix: - 60170: Exclude the compressed test file - index.html.br from RAT analysis. Patch provided by Gavin - McDonald. (markt) -
  • -
  • Fix: - When starting web resources, ensure that class resources are only - started once. (markt) -
  • -
  • Fix: - Improve the access checks for linked global resources to handle the case - where the current class loader is a child of the web application class - loader. (markt) -
  • -
  • Fix: - 60196: Ensure that the isMandatory flag is - correctly set when using JASPIC authentication. (markt) -
  • -
  • Fix: - 60199: Log a warning if deserialization issues prevent a - session attribute from being loaded. (markt) -
  • -
  • Fix: - 60208: When using RFC6265 compliant cookies, the - / character should not be allowed in a cookie name since - the RFC6265 will drop such cookies as invalid. (markt) -
  • -
-
-

Coyote

-
    -
  • Add: - Refactor the code that implements the requirement that a call to - complete() or dispatch() made from a - non-container thread before the container initiated thread that called - startAsync() completes must be delayed until the container - initiated thread has completed. Rather than implementing this by - blocking the non-container thread, extend the internal state machine to - track this. This removes the possibility that blocking the non-container - thread could trigger a deadlock. (markt) -
  • -
  • Fix: - Fail earlier if the client closes the connection during SNI processing. - (markt) -
  • -
  • Fix: - 60123: Avoid potential threading issues that could cause - excessively large vales to be returned for the processing time of - a current request. (markt) -
  • -
  • Fix: - 60174: Log instances of HeadersTooLargeException - during request processing. (markt) -
  • -
  • Fix: - 60173: Allow up to 64kB HTTP/2 header table size limit. (remm) -
  • -
  • Fix: - Java 9 compatibility of direct ByteBuffer cleaner. (remm) -
  • -
-
-

Jasper

-
    -
  • Fix: - 60101: Remove preloading of the class that was deleted. - (violetagg) -
  • -
-
-

Web applications

-
    -
  • Add: - Expand the documentation for the nested elements within a - Resources element to clarify the behaviour of different - configuration options with respect to the order in which resources are - searched. (markt) -
  • -
  • Add: - Add an example of using the classesToInitialize attribute - of the JreMemoryLeakPreventionListener to the documentation - web application. Based on a patch by Cris Berneburg. (markt) -
  • -
  • Fix: - 60192: Correct a typo in the status output of the Manager - application. Patch provided by Radhakrishna Pemmasani. (markt) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - Notify jmx when returning the connection that has been marked suspect. - (kfujino) -
  • -
  • Fix: - Ensure that the POOL_EMPTY notification has been added to - the jmx notification types. (kfujino) -
  • -
  • Fix: - 60099: Ensure that use all method arguments as a cache key - when using StatementCache. (kfujino) -
  • -
  • Fix: - 60139: Correct Javadocs for - PoolConfiguration.getValidationInterval and - setValidationInterval. Reported by Phillip Webb. (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - Update the download location for Objenesis. (violetagg) -
  • -
  • Fix: - 60164: Replace log4j-core*.jar with - log4j-web*.jar since it is log4j-web*.jar that - contains the ServletContainerInitializer. (markt) -
  • -
  • Add: - Add documentation to the bin/catalina.bat script to remind users that - environment variables don't affect the configuration of Tomcat when - run as a Windows Service. Based upon a documentation patch by - James H.H. Lampert. (schultz) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.10 to - pick up the latest Windows binaries built with OpenSSL 1.0.2j. (markt) -
  • -
-
-

2016-09-05 Tomcat 8.5.5 (markt)

-

Catalina

-
    -
  • Fix: - 18500: Add limited support for wildcard host names and host - aliases. Names of the form *.domainname are now permitted. - Note that an exact host name match takes precedence over a wild card - host name match. (markt) -
  • -
  • Fix: - 59813: Ensure that circular relations of the Class-Path - attribute from JAR manifests will be processed correctly. (violetagg) -
  • -
  • Fix: - Ensure that reading the singleThreadModel attribute of a - StandardWrapper via JMX does not trigger initialisation of - the associated servlet. With some frameworks this can trigger an - unexpected initialisation thread and if initialisation is not thread-safe - the initialisation can then fail. (markt) -
  • -
  • Fix: - Compatibility with rewrite from httpd for non existing headers. - (jfclere) -
  • -
  • Fix: - By default, treat paths used to obtain a request dispatcher as encoded. - This behaviour can be changed per web application via the - dispatchersUseEncodedPaths attribute of the Context. - (markt) -
  • -
  • Fix: - 59839: Apply roleSearchAsUser to all nested searches - in JNDIRealm. (fschumacher) -
  • -
  • Fix: - 59859: Fix resource leak in WebDAV servlet. Based on patch by - Coty Sutherland. (fschumacher) -
  • -
  • Add: - Provide a mechanism that enables the container to check if a component - (typically a web application) has been granted a given permission when - running under a SecurityManager without the current execution stack - having to have passed through the component. Use this new mechanism to - extend SecurityManager protection to the system property replacement - feature of the digester. (markt) -
  • -
  • Add: - When retrieving an object via a ResourceLink, ensure that - the object obtained is of the expected type. (markt) -
  • -
  • Fix: - 59823: Ensure that JASPIC configuration is taken into account - when calling HttpServletRequest.authenticate(). (markt) -
  • -
  • Fix: - 59824: Mark the RewriteValve as supporting async - processing by default. (markt) -
  • -
  • Fix: - 59862: Allow nested jar files scanning to be filtered with - the system property - tomcat.util.scan.StandardJarScanFilter.jarsToSkip. Patch - is provided by Terence Bandoian. (violetagg) -
  • -
  • Fix: - 59866: When scanning WEB-INF/classes for - annotations, don't scan the contents of - WEB-INF/classes/META-INF (if present) since classes will - never be loaded from that location. (markt) -
  • -
  • Fix: - 59888: Correctly handle tabs and spaces in quoted version one - cookies when using the Rfc6265CookieProcessor. (markt) -
  • -
  • Fix: - 59912: Fix an edge case in input stream handling where an - IOException could be thrown when reading a POST body. - (markt) -
  • -
  • Fix: - 59913: Correct a regression introduced with the support for - the Servlet 4 HttpServletRequest.getMapping() API that - caused the attributes for forwarded requests to be lost if requested - from within a subsequent include. (markt) -
  • -
  • Fix: - 59966: Do not start the web application if the error page - configuration in web.xml is invalid. (markt) -
  • -
  • Fix: - Switch the CGI servlet to the standard logging mechanism and remove - support for the debug attribute. (markt) -
  • -
  • Fix: - 60012: Improvements in the log messages. Based on - suggestions by Nemo Chen. (violetagg) -
  • -
  • Fix: - Changes to the allowLinking attribute of a - StandardRoot instance now invalidate the cache if caching - is enabled. (markt) -
  • -
  • Add: - Add a new initialisation parameter, envHttpHeaders, to - the CGI Servlet to mitigate httpoxy - (CVE-2016-5388) by default and to provide a mechanism that can be - used to mitigate any future, similar issues. (markt) -
  • -
  • Add: - When adding and removing ResourceLinks dynamically, ensure - that the global resource is only visible via the - ResourceLinkFactory when it is meant to be. (markt) -
  • -
  • Fix: - 60008: When processing CORs requests, treat any origin with a - URI scheme of file as a valid origin. (markt) -
  • -
  • Fix: - Improve handling of exceptions during a Lifecycle events triggered by a - state transition. The exception is now caught and the component is now - placed into the FAILED state. (markt) -
  • -
  • Fix: - 60013: Fix encoding issues when using the RewriteValve with - UTF-8 query strings or UTF-8 redirect URLs. (markt) -
  • -
  • Fix: - 60022: Improve handling when a WAR file and/or the associated - exploded directory are symlinked into the appBase. (markt) -
  • -
  • Fix: - Fix a file descriptor leak when reading the global web.xml. (markt) -
  • -
  • Fix: - Consistently decode URL patterns provided via web.xml using the encoding - of the web.xml file where specified or UTF-8 where no explicit encoding - is specified. (markt) -
  • -
  • Fix: - Make timing attacks against the Realm implementations harder. (schultz) -
  • -
  • Fix: - A number of the JRE memory leaks addressed by the - JreMemoryLeakPreventionListener have been fixed in Java 9 - so the associated protection is now disabled when running on Java 9 - onwards. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - Correct a regression in refactoring to enable injection of custom - keystores that broke the automatic conversion of OpenSSL style PEM - key and certificate files for use with JSSE TLS connectors. (markt) -
  • -
  • Fix: - 59910: Don't hardcode key alias value to "tomcat" for JSSE. - When using a keystore, OpenSSL will still default to it. (remm) -
  • -
  • Fix: - 59904: Add a limit (default 200) for the number of cookies - allowed per request. Based on a patch by gehui. (markt) -
  • -
  • Fix: - 59925: Correct regression in r1628368 and ensure that HTTP - separators are handled as configured in the - LegacyCookieProcessor. Patch provided by Kyohei Nakamura. - (markt) -
  • -
  • Fix: - 59950: Correct log message when reporting that the current - number of HTTP/2 streams for a connection could not be pruned to below - the limit. (markt) -
  • -
  • Fix: - Ensure that Semaphore.release is called in all cases. Even - when there is an exception. (violetagg) -
  • -
  • Fix: - 60030: Correct a potential infinite loop in the SNI parsing - code triggered by failing to handle an end of stream condition. (markt) -
  • -
  • Fix: - Small logging optimization in the Rfc6265CookieProcessor. - Patch provided by Svetlin Zarev. (markt) -
  • -
  • Fix: - OpenSSL now disables 3DES by default so reflect this when using OpenSSL - syntax to select ciphers. (markt) -
  • -
  • Fix: - Use the proper ERROR socket status code for async errors with NIO2. - (remm) -
  • -
  • Fix: - 60035: Fix a potential connection leak if the client drops a - TLS connection before the handshake completes. (markt) -
  • -
  • Fix: - Refactor the JSSE client certificate validation so that the - effectiveness of the certificateVerificationDepth - configuration attribute does not depend on the presence of a certificate - revocation list. (markt) -
  • -
  • Add: - Log a warning at start up if a JSSE TLS connector is configured with - a trusted certificate that is either not yet valid or has expired. - (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - When writing out a full web.xml file with JspC ensure that the encoding - used in the XML prolog matches the encoding used to write the contents - of the file. (markt) -
  • -
  • Fix: - Improve the error handling for custom tags to ensure that the tag is - returned to the pool or released and destroyed once used. (markt) -
  • -
  • Fix: - 60032: Fix handling of method calls that use varargs within - EL value expressions. (markt) -
  • -
  • Fix: - Ignore engineOptionsClass and scratchdir when - running under a security manager. (markt) -
  • -
  • Fix: - Fixed StringIndexOutOfBoundsException. Based on a patch provided by - wuwen via Github. (violetagg) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 59908: Ensure that a reason phrase is included in the close - message if a session is closed due to a timeout. (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - 59867: Correct the documentation provided by Manager's - 403.jsp. (violetagg) -
  • -
  • Fix: - 59868: Clarify the documentation for the Manager web - application to make clearer that the host name and IP address in the - server section are the primary host name and IP address. (markt) -
  • -
  • Fix: - 59940: Correct the name of the - truststorePassword attribute of the - SSLHostConfig element in the configuration documentation. - (markt) -
  • -
  • Fix: - MBeans Descriptors How-To is moved to - mbeans-descriptors-howto.html. Patch provided by Radoslav - Husar. (violetagg) -
  • -
  • Fix: - Update NIO Connector configuration documentation with an information - about socket.directSslBuffer. (violetagg) -
  • -
  • Fix: - 60034: Correct a typo in the Manager How-To page of the - documentation web application. (markt) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - In order to avoid the unintended skip of PoolCleaner, - remove the check code of the execution interval in the task that has - been scheduled. (kfujino) -
  • -
  • Fix: - 59850: Ensure that the ResultSet is closed when - enabling the StatementCache interceptor. (kfujino) -
  • -
  • Fix: - 59923: Reduce the default value of - validationInterval in order to avoid the potential issue - that continues to return an invalid connection after database restart. - (kfujino) -
  • -
  • Fix: - Ensure that the ResultSet is returned as Proxy object when - enabling the StatementDecoratorInterceptor. (kfujino) -
  • -
  • Fix: - 60043: Ensure that the suspectTimeout works - without removing connection when the removeAbandoned is - disabled. (kfujino) -
  • -
  • Fix: - Add log message of when returning the connection that has been marked - suspect. (kfujino) -
  • -
  • Fix: - Correct Javadoc for ConnectionPool.suspect(). Based on a - patch by Yahya Cahyadi. (markt) -
  • -
-
-

Other

-
    -
  • Add: - 59871: Add a property (timeFormat) to - JULI's OneLineFormatter to enable the format of the - time stamp used in log messages to be configured. (markt) -
  • -
  • Fix: - 59899: Update Tomcat's copy of the Java Persistence - annotations to include the changes made in 2.1 / JavaEE 7. (markt) -
  • -
  • Fix: - Fixed typos in mbeans-descriptors.xml files. (violetagg) -
  • -
  • Update: - Update the internal fork of Commons BCEL to r1757132 to align with the - BCEL 6 release. (markt) -
  • -
  • Update: - Update the internal fork of Commons DBCP2 to r1757164 to pick up a - couple of bug fixes. (markt) -
  • -
  • Update: - Update the internal fork of Commons Codec to r1757174. Code formatting - changes only. (markt) -
  • -
  • Update: - Update the internal fork of Commons FileUpload to afdedc9. This pulls in - a fix to improve the performance with large multipart boundaries. - (markt) -
  • -
-
-

2016-07-12 Tomcat 8.5.4 (markt)

-

Catalina

-
    -
  • Fix: - 57705: Add debug logging for requests denied by the remote - host and remote address valves and filters. Based on a patch by Graham - Leggett. (markt) -
  • -
  • Fix: - Correct a regression in the fix for 58588 that removed the - entire org.apache.juli package from the embedded JARs - rendering them unusable. (markt) -
  • -
  • Add: - 59399: Add a new option to the Realm implementations that - ship with Tomcat that allows the HTTP status code used for HTTP -> HTTPS - redirects to be controlled per Realm. (markt) -
  • -
  • Update: - Change the default of the - sessionCookiePathUsesTrailingSlash attribute of the - Context element to false since the problems - caused when a Servlet is mapped to /* are more significant - than the security risk of not enabling this option by default. (markt) -
  • -
  • Fix: - Follow-up to 59655. Improve the documentation for configuring - permitted cookie names. Patch provided by Kyohei Nakamura. (markt) -
  • -
  • Fix: - Do not attempt to start web resources during a web application's - initialisation phase since the web application is not fully configured - at that point and the web resources may not be correctly configured. - (markt) -
  • -
  • Fix: - 59708: Modify the LockOutRealm logic. Valid authentication - attempts during the lock out period will no longer reset the lock out - timer to zero. (markt) -
  • -
  • Fix: - Improve error handling around user code prior to calling - InstanceManager.destroy() to ensure that the method is - executed. (markt) -
  • -
-
-

Coyote

-
    -
  • Code: - Refactor the certificate keystore and trust store generation to make it - easier for embedded users to inject their own key stores. (markt) -
  • -
  • Add: - 59233: Add the ability to add TLS virtual hosts dynamically. - (markt) -
  • -
  • Update: - Add a maxConcurrentStreamExecution on the HTTP/2 - protocol handler to allow restricting the amount of concurrent stream - that are being executed in a single connection. The default is to - not limit it. (remm) -
  • -
  • Fix: - Correct a problem with ServletRequest.getServerPort() for - secure HTTP/2 connections that meant an incorrect value was returned when - using the default port. (markt) -
  • -
  • Fix: - Improve error handling around user code prior to calling - InstanceManager.destroy() to ensure that the method is - executed. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - Improve error handling around user code prior to calling - InstanceManager.destroy() to ensure that the method is - executed. (markt) -
  • -
-
-

WebSocket

-
    -
  • Code: - Now the WebSocket implementation is not built directly on top of the - Servlet API and can use Tomcat internals, there is no need for the - dedicated WebSocket Executor. It has been replaced by the use of the - Connector/Endpoint provided Executor. (markt) -
  • -
  • Fix: - Improve error handling around user code prior to calling - InstanceManager.destroy() to ensure that the method is - executed. (markt) -
  • -
-
-

Web Applications

-
    -
  • Fix: - Do not log an additional case of IOExceptions in the - error handler for the Drawboard WebSocket example when the root cause is - the client disconnecting since the logs add no value. (markt) -
  • -
  • Fix: - 59642: Mention the localDataSource in the - DataSourceRealm section of the Realm How-To. (markt) -
  • -
  • Fix: - 59672: Update the security considerations page of the - documentation web application to take account of the fact that the - Manager and HostManager applications now have a - RemoteAddrValve configured by default. (markt) -
  • -
  • Fix: - Follow-up to the fix for 59399. Ensure that the new attribute - transportGuaranteeRedirectStatus is documented for all - Realms. Also document the NullRealm and - when it is automatically created for an Engine. (markt) -
  • -
  • Fix: - Fix the description of maxAge attribute in jdbc-pool doc. - This attribute works both when a connection is returned and when a - connection is borrowed. (kfujino) -
  • -
  • Fix: - 59774: Correct the prefix values in the - documented examples for configuring the AccessLogValve. - Patch provided by Mike Noordermeer. (markt) -
  • -
-
-

Extras

-
    -
  • Code: - 58588: Remove the JULI extras package from the distribution. - It was only useful for switching Tomcat's internal logging to log4j - 1.2.x and that version of log4j is no longer supported. No additional - Tomcat code is required if switching Tomcat's internal logging to log - via log4j 2.x. (markt) -
  • -
-
-

Tribes

-
    -
  • Add: - Add log message when the ping has timed-out. (kfujino) -
  • -
  • Fix: - If the ping message has been received at the - AbstractReplicatedMap#leftOver method, ensure that notify - the member is alive than ignore it. (kfujino) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - Fix the duplicated connection release when connection verification - failed. (kfujino) -
  • -
  • Fix: - Ensure that do not remove the abandoned connection that has been already - released. (kfujino) -
  • -
-
-

Other

-
    -
  • Update: - 59276: Update optional Checkstyle library to 6.17. (kkolinko) -
  • -
  • Add: - Use the mirror network rather than the ASF master site to download the - current ASF dependencies. (markt) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.8 to - pick up the latest fixes and make 1.2.8 the minimum recommended version. - (markt) -
  • -
  • Code: - Use UTF-8 with a standard prolog for all XML files. (markt) -
  • -
-
-

2016-06-13 Tomcat 8.5.3 (markt)

-

Catalina

-
    -
  • Fix: - RMI Target related memory leaks are avoidable which makes them an - application bug that needs to be fixed rather than a JRE bug to work - around. Therefore, start logging RMI Target related memory leaks on web - application stop. Add an option that controls if the check for these - leaks is made. Log a warning if running on Java 9 with this check - enabled but without the command line option it requires. (markt) -
  • -
  • Fix: - Ensure NPE will not be thrown during deployment when scanning jar files - without MANIFEST.MF file. (violetagg) -
  • -
  • Code: - Remove the clearReferencesStatic option from - StandardContext. It was known to cause problems with some - libraries (such as log4j) and was only linked to suspected memory leaks - rather than known memory leaks. It had been disabled by default with no - increase in the reports of memory leaks for some time. (markt) -
  • -
  • Fix: - 59604: Correct the assumption made in the URL decoding that - the default platform encoding is always compatible with ISO-8859-1. This - assumption is not always valid, e.g. on z/OS. (markt) -
  • -
  • Fix: - 59608: Skip over any invalid Class-Path attribute - from JAR manifests. Log errors at debug level due to many bad libraries. - (remm) -
  • -
  • Fix: - Fix error message when failed to register MBean. (kfujino) -
  • -
  • Fix: - 59655: Configure the cookie name validation to use RFC6265 rules by default to - align it with the default cookie parser. Document the impact system properties have on - cookie name validation. (mark) -
  • -
-
-

Coyote

-
    -
  • Fix: - Ensure that requests with HTTP method names that are not tokens (as - required by RFC 7231) are rejected with a 400 response. (markt) -
  • -
  • Fix: - When an asynchronous request is processed by the AJP connector, ensure - that request processing has fully completed before starting the next - request. (markt) -
  • -
  • Fix: - Improve handling of HTTP/2 stream resets. (markt) -
  • -
  • Add: - 58750: The HTTP Server header is no longer set by default. A - Server header may be configured by setting the server - attribute on the Connector. A new Connector - attribute, serverRemoveAppProvidedValues may be used to - remove any Server header set by a web application. (markt) -
  • -
  • Fix: - 59564: Correct offset when reading into HTTP/2 input buffer - that could cause problems reading request bodies. (violetagg/markt) -
  • -
  • Fix: - Modify the handling of read/write timeouts so that the appropriate error - handling (ReadListener.onError(), - WriteListener.onError() or - AsyncListener.onError()) is called. (markt) -
  • -
  • Fix: - If an async dispatch results in the completion of request processing, - ensure that any remaining request body is swallowed before starting the - processing of the next request else the remaining body may be read as the - start of the next request leading to a 400 response. (markt) -
  • -
  • Fix: - Fix a cause of multiple attempts to close the same socket. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 59567: Fix NPE scanning webapps for TLDs when an exploded - JAR has an empty WEB-INF/classes/META-INF folder. (remm) -
  • -
  • Fix: - Fix a memory leak in the expression language implementation that caused - the class loader of the first web application to use expressions to be - pinned in memory. (markt) -
  • -
  • Fix: - 59654: Improve error message when attempting to use a TLD - file from an invalid location. Patch provided by Huxing Zhang. (markt) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 59659: Fix possible memory leak in WebSocket handling of - unexpected client disconnects. (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - 58891: Update the SSL how-to. Based on a suggestion by - Alexander Kjäll. (markt) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - Fix a memory leak with the pool cleaner thread that retained a reference - to the web application class loader for the first web application to use - a connection pool. (markt) -
  • -
-
-

Other

-
    -
  • Update: - Update the internal fork of Commons DBCP 2 to r1743696 (2.1.1 plus - additional fixes). (markt) -
  • -
  • Update: - Update the internal fork of Commons Pool 2 to r1743697 (2.4.2 plus - additional fixes). (markt) -
  • -
  • Update: - Update the internal fork of Commons File Upload to r1743698 (1.3.1 plus - additional fixes). (markt) -
  • -
  • Fix: - 58626: Add support for a new environment variable - (USE_NOHUP) that causes nohup to be used when - starting Tomcat. It is disabled by default except on HP-UX where it is - enabled by default since it is required when starting Tomcat at boot on - HP-UX. (markt) -
  • -
-
-

2016-05-16 Tomcat 8.5.2 (markt)

-

Catalina

-
    -
  • Fix: - Ensure that annotated web components packed in web fragments will be - processed when unpackWARs is enabled. (violetagg) -
  • -
-
-

not released Tomcat 8.5.1 (markt)

-

Catalina

-
    -
  • Fix: - 59206: Ensure NPE will not be thrown by - o.a.tomcat.util.file.ConfigFileLoader when - catalina.base is not specified. (violetagg) -
  • -
  • Fix: - 59217: Remove duplication in the recycling of the path in - o.a.tomcat.util.http.ServerCookie. Patch is provided by - Kyohei Nakamura. (violetagg) -
  • -
  • Fix: - Fixed possible NPE in - o.a.catalina.loader.WebappClassLoaderBase.getResourceAsStream - (violetagg) -
  • -
  • Fix: - 59213: Async dispatches should be based off a wrapped request. - (remm) -
  • -
  • Fix: - Ensure that javax.servlet.ServletRequest and - javax.servlet.ServletResponse provided during - javax.servlet.AsyncListener registration are made - available via javax.servlet.AsyncEvent.getSuppliedRequest - and javax.servlet.AsyncEvent.getSuppliedResponse - (violetagg) -
  • -
  • Fix: - 59219: Ensure AsyncListener.onError() is called - if an Exception is thrown during async processing. (markt) -
  • -
  • Fix: - 59220: Ensure that AsyncListener.onComplete() is - called if the async request times out and the response is already - committed. (markt) -
  • -
  • Fix: - 59226: Process the Class-Path attribute from - JAR manifests for JARs on the class path excluding JARs packaged in - WEB-INF/lib. (markt) -
  • -
  • Fix: - 59255: Fix possible NPE in mapper. (kkolinko/remm) -
  • -
  • Fix: - 59256: slf4j-taglib*.jar should not be excluded - from the standard JAR scanning by default. (violetagg) -
  • -
  • Fix: - Clarify in the log message that specifying both urlPatterns and value - attributes in WebServlet and WebFilter annotations is not allowed. - (violetagg) -
  • -
  • Fix: - Ensure the exceptions caused by Valves will be available in the log - files so that they can be evaluated when - o.a.catalina.valves.ErrorReportValve.showReport is - disabled. Patch is provided by Svetlin Zarev. (violetagg) -
  • -
  • Fix: - Remove unused distributable attribute that is defined as - TransientAttribute of Manager in StoreConfig. - (kfujino) -
  • -
  • Fix: - Fix handling of Cluster Receiver in StoreConfig. The bind - and host attributes define as - TransientAttribute. (kfujino) -
  • -
  • Fix: - 59261: ServletRequest.getAsyncContext() now - throws an IllegalStateException as required by the Servlet - specification if the request is not in asynchronous mode when called. - (markt) -
  • -
  • Fix: - 59269: Correct the implementation of - PersistentManagerBase so that minIdleSwap - functions as designed and sessions are swapped out to keep the active - session count below maxActiveSessions. (markt) -
  • -
  • Add: - Add the org.apache.catalina.servlet4preview package that - can be used to gain early access to Servlet 4.0 features. Note that this - package will not be present in Tomcat 9. (markt) -
  • -
  • Fix: - Correctly configure the base path for a resources directory provided by - an expanded JAR file. Patch provided by hengyunabc. (markt) -
  • -
  • Add: - When multiple compressed formats are available and the client does not - express a preference, use the server order to determine the preferred - format. Based on a patch by gmokki. (markt) -
  • -
  • Fix: - 59284: Allow the Tomcat provided JASPIC - SimpleServerAuthConfig to pick up module configuration - properties from either the property set passed to its constructor or - from the properties passed in the call to getAuthContext. - Based on a patch by Thomas Maslen. (markt) -
  • -
  • Fix: - 59310: Do not add a Content-Length: 0 header for - custom responses to HEAD requests that do not set a - Content-Length value. (markt) -
  • -
  • Fix: - When normalizing paths, improve the handling when paths end with - /. or /.. and ensure that input and output are - consistent with respect to whether or not they end with /. - (markt) -
  • -
  • Fix: - 59317: Ensure that - HttpServletRequest.getRequestURI() returns an encoded URI - rather than a decoded URI after a dispatch. (markt) -
  • -
  • Fix: - Use the correct URL for the fragment when reporting errors processing - a web-fragment.xml file from a JAR located in an unpacked - WAR. (markt) -
  • -
  • Fix: - Ensure that JarScanner only uses the explicit call-back to - process WEB-INF/classes and only when configured to treat - the contents of WEB-INF/classes as a possible exploded JAR. - (markt) -
  • -
  • Code: - Remove the java2DDisposerProtection option from the - JreMemoryLeakPreventionListener. The leak is fixed in Java - 7 onwards and Tomcat 8 requires Java 7 so the option is unnecessary. - (markt) -
  • -
  • Fix: - Ensure that the value for the header X-Frame-Options is - constructed correctly according to the specification when - ALLOW-FROM option is used. (violetagg) -
  • -
  • Fix: - Fix an IllegalArgumentException if the first use of an - internal Response object requires JASPIC authentication. - (markt) -
  • -
  • Fix: - Do not trigger unnecessary session ID changes when using JASPIC and the - user is authenticated using cached credentials. (markt) -
  • -
  • Fix: - 59437: Ensure that the JASPIC CallbackHandler is - thread-safe. (markt) -
  • -
  • Fix: - 59449: In ContainerBase, ensure that the process - to remove a child container is the reverse of the process to add one. - Patch provided by Huxing Zhang. (markt) -
  • -
-
-

Coyote

-
    -
  • Fix: - Align cipher configuration parsing with current OpenSSL master. (markt) -
  • -
  • Update: - Change the default for honorCipherOrder to - false. With the current default TLS configuration, it is no - longer necessary for this to be true for a reasonably - secure configuration. (markt) -
  • -
  • Add: - Add a new environment variable JSSE_OPTS that is intended - to be used to pass JVM wide configuration to the JSSE implementation. - The default value is -Djdk.tls.ephemeralDHKeySize=2048 - which protects against weak Diffie-Hellman keys. (markt) -
  • -
  • Fix: - When running on Java 7, exclude DHE ciphers from the default cipher list - for JSSE connectors since they use weak 768 bit DH keys and cannot be - configured to use more secure keys. (markt) -
  • -
  • Fix: - 58970: Fix a connection counting bug in the NIO connector - that meant some dropped connections were not removed from the current - connection count. (markt) -
  • -
  • Fix: - 59289: Do not recycle upgrade processors in unexpected close - situations. (remm) -
  • -
  • Fix: - 59295: Use Locale.toLanguageTag() to construct - the Content-Language HTTP header to ensure the locale is - correctly represented. Patch provided by zikfat. (markt) -
  • -
  • Update: - 59295: Add support for using pem encoded certificates with - JSSE SSL. Submitted by Emmanuel Bourg with additional tweaks. (remm) -
  • -
  • Fix: - Make the TLS certificate chain available to clients when using - JSSE+OpenSSL with the certificate chain stored in a Java KeyStore. - (markt) -
  • -
  • Fix: - Work around a - known issue in OpenSSL that does not permit the TLS handshake to be - failed if the ALPN negotiation fails. (markt) -
  • -
  • Update: - 59421: Add direct HTTP/2 connection support. (remm) -
  • -
  • Fix: - Correctly handle a call to AsyncContext.complete() from a - non-container thread when non-blocking I/O is being used. (markt) -
  • -
  • Fix: - 59451: Correct Javadoc for MessageBytes. Patch - provided by Kyohei Nakamura. (markt) -
  • -
  • Fix: - 59450: Correctly handle the case where the - LegacyCookieProcessor is configured with - allowHttpSepsInV0 set to false and - forwardSlashIsSeparator set to true. Patch - provided by Kyohei Nakamura. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - When scanning JARs for TLDs, correctly handle the (rare) case where a - JAR has been exploded into WEB-INF/classes and the web - application is deployed as a packed WAR. (markt) -
  • -
  • Fix: - 59640: NPEs with not found TLDs. (remm) -
  • -
-
-

WebSocket

-
    -
  • Fix: - 59189: Explicitly release the native memory held by the - Inflater and Deflater when using - PerMessageDeflate and the WebSocket session ends. Based on a patch by - Henrik Olsson. (markt) -
  • -
  • Fix: - Return back a container specific extension to the WsServerContainer - to allow frameworks to more easily dispatch requests to WebSocket - endpoints. (violetagg) -
  • -
  • Fix: - Fix a regression caused by the connector refactoring and ensure that the - thread context class loader is set to the web application - classloader when processing WebSocket messages on the server. (markt) -
  • -
  • Fix: - Ensure that a client disconnection triggers the error handling for the - associated WebSocket end point. (markt) -
  • -
  • Add: - Make WebSocket client more robust when handling errors during the close - of a WebSocket session. (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - 59210: Server push example has to use - o.a.catalina.connector.RequestFacade when obtaining - o.a.catalina.core.ApplicationPushBuilder. Patch is - provided by Huxing Zhang. (violetagg) -
  • -
  • Fix: - 59218: Correct the path to jaspic-providers.xml - in Jaspic How-To. Patch is provided by Tatsuya Bessho. (violetagg) -
  • -
  • Fix: - Remove button that has accidentally been added to the host manager. - Submitted by Coty Sutherland. (remm) -
  • -
  • Fix: - Update in the documentation the link to the maven repository where - Tomcat snapshot artifacts are deployed. (markt/violetagg) -
  • -
  • Fix: - Clarify in the documentation that calls to - ServletContext.log(String, Throwable) or - GenericServlet.log(String, Throwable) are logged at the - SEVERE level. (violetagg) -
  • -
  • Fix: - Correct a typo in SSL/TLS Configuration How-To. - Issue reported via comments.apache.org. (violetagg) -
  • -
-
-

Tribes

-
    -
  • Fix: - Avoid NPE when a proxy node failed to retrieve a backup entry. (kfujino) -
  • -
  • Add: - Add log of when received an unexpected messages. (kfujino) -
  • -
  • Add: - Add the flag indicating that member is a localMember. (kfujino) -
  • -
  • Fix: - Fix potential NPE that depends on the setting order of attributes of - static member when using the static cluster. (kfujino) -
  • -
  • Add: - Add get/set method for the channel that is related to - ChannelInterceptor. (kfujino) -
  • -
  • Fix: - As with the multicast cluster environment, in the static cluster - environment, the local member inherits properties from the cluster - receiver. (kfujino) -
  • -
  • Add: - Add get/set method for the channel that is related to each Channel - services. (kfujino) -
  • -
  • Add: - Add name to channel in order to identify channels. In tomcat cluster - environment, it is set the cluster name + "-Channel" as default value. - (kfujino) -
  • -
  • Add: - Add the channel name to the thread which is invoked by channel services - in order to identify the associated channel. (kfujino) -
  • -
  • Fix: - Ensure that clear the channel instance from channel services when - stopping channel. (kfujino) -
  • -
  • Add: - Implement map state in the replication map. (kfujino) -
  • -
  • Fix: - Ensure that the ping is not executed during the start/stop of the - replication map. (kfujino) -
  • -
  • Fix: - In ping processing in the replication map, send not the - INIT message but the newly introduced PING - message. (kfujino) -
  • -
-
-

Other

-
    -
  • Fix: - 59209: Remove honorCipherOrder=false attribute - from the connector example in server.xml. When the block is uncommented - the connector will use the default value for this attribute which is - false. If one needs to enable it, one can add it - explicitly to the connector definition. Use of this feature requires - Java 8 or later. Patch is provided by Huxing Zhang. (violetagg) -
  • -
  • Fix: - 59211: Add hamcrest to Eclipse classpath. Patch is provided - by Huxing Zhang. (violetagg) -
  • -
  • Update: - 59280: Update the NSIS Installer used to build the - Windows Installers to version 2.51. (kkolinko) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.7 to - pick up the Windows binaries that are based on OpenSSL 1.0.2h and APR - 1.5.2. (markt) -
  • -
-
-

2016-03-24 Tomcat 8.5.0 (markt)

-

General

-
    -
  • Update: - Remove support for Comet. (markt) -
  • -
  • Update: - Tighten up the default file permissions for the .tar.gz - distribution so no files or directories are world readable by default. - Configure Tomcat to run with a default umask of 0027 which - may be overridden by setting UMASK in - setenv.sh. (markt) -
  • -
  • Update: - Remove native code (Windows Service Wrapper, APR/native connector) - support for Windows Itanium. (markt) -
  • -
-
-

Catalina

-
    -
  • Update: - The default HTTP cookie parser has been changed to - org.apache.tomcat.util.http.Rfc6265CookieProcessor. (markt) -
  • -
  • Code: - Refactor creation of MapperListener to ensure that the - Mapper used is the Mapper associated with the - Service for which the listener was created. (markt) -
  • -
  • Add: - Move the functionality that provides redirects for context roots and - directories where a trailing / is added from the Mapper to - the DefaultServlet. This enables such requests to be - processed by any configured Valves and Filters before the redirect is - made. This behaviour is configurable via the - mapperContextRootRedirectEnabled and - mapperDirectoryRedirectEnabled attributes of the Context - which may be used to restore the previous behaviour. (markt) -
  • -
  • Code: - Refactor Service.getContainer() to return an - Engine rather than a Container. (markt) -
  • -
  • Fix: - 34319: Only load those keys in - StoreBase.processExpire from JDBCStore that are old enough - to be expired. Based on a patch by Tom Anderson. (fschumacher) -
  • -
  • Add: - 58351: Make the server build date and server version number - accessible via JMX. Patch provided by Huxing Zhang. (markt) -
  • -
  • Add: - 56917: As per RFC7231 (HTTP/1.1), allow HTTP/1.1 and later - redirects to use relative URIs. This is controlled by a new attribute - useRelativeRedirects on the Context and - defaults to true. (markt) -
  • -
  • Fix: - 58629: Allow an embedded Tomcat instance to start when the - Service has no Engine configured. (markt) -
  • -
  • Fix: - Correctly notify the MapperListener associated with a Service if the - Engine for that Service is changed. (markt) -
  • -
  • Add: - Make a web application's CredentialHandler available through a context - attribute. This allows a web application to use the same algorithm - for validating or generating new stored credentials from cleartext - ones. (schultz) -
  • -
  • Fix: - 58635: Enable break points to be set within agent code when - running Tomcat with a Java agent. Based on a patch by Huxing Zhang. - (markt) -
  • -
  • Fix: - Fixed potential NPE in HostConfig while deploying an - application. Issue reported by coverity scan. (violetagg) -
  • -
  • Fix: - 58655: Fix an IllegalStateException when - calling HttpServletResponse.sendRedirect() with the - RemoteIpFilter. This was caused by trying to correctly - generate the absolute URI for the redirect. With the fix for - 56917, redirects may now be relative making the - sendRedirect() implementation for the - RemoteIpFilter much simpler. This also addresses issues - where the redirect may not have behaved as expected when redirecting - from http to https to from https to http. (markt) -
  • -
  • Fix: - 58657: Exceptions in a Servlet 3.1 ReadListener - or WriteListener do not need to be immediately fatal to the - connection. Allow an error response to be written. (markt) -
  • -
  • Fix: - Correct implementation of - validateClientProvidedNewSessionId so client provided - session IDs may be rejected if validation is enabled. (markt) -
  • -
  • Fix: - 58701: Reset the instanceInitialized field in - StandardWrapper when unloading a Servlet so that a new - instance may be correctly initialized. (markt) -
  • -
  • Update: - Add a new flag aprPreferred to the Apr listener. if set to - false, when using the connector defaults, it will use - NIO + OpenSSL if tomcat-native is available, rather than the APR - connector. (remm) -
  • -
  • Fix: - Add path parameter handling to - HttpServletRequest.getContextPath(). This is a follow-up to - the fix for 57215. (markt) -
  • -
  • Fix: - 58692: Make StandardJarScanner more robust. Log - a warning if a class path entry cannot be scanned rather than triggering - the failure of the web application. Includes a test case written by - Derek Abdine. (markt) -
  • -
  • Fix: - 58702: Ensure an access log entry is generated if the client - aborts the connection. (markt) -
  • -
  • Fix: - Fixed various issues reported by Findbugs. (violetagg) -
  • -
  • Fix: - 58735: Add support for the X-XSS-Protection - header to the HttpHeaderSecurityFilter. Patch provided by - Jacopo Cappellato. (markt) -
  • -
  • Fix: - Add the StatusManagerServlet to the list of Servlets that - can only be loaded by privileged applications. (markt) -
  • -
  • Fix: - Simplify code and fix messages in - org.apache.catalina.core.DefaultInstanceManager class. - (kkolinko) -
  • -
  • Fix: - 58751: Correctly handle the case where an - AsyncListener dispatches to a Servlet on an asynchronous - timeout and the Servlet uses sendError() to trigger an - error page. Includes a test case based on code provided by Andy - Wilkinson.(markt) -
  • -
  • Fix: - Ensure that the proper file encoding, if specified, will be used when - a readme file is served by DefaultServlet. (violetagg) -
  • -
  • Fix: - Fix declaration of localPort attribute of Connector MBean: - it is read-only. (kkolinko) -
  • -
  • Fix: - 58766: Make skipping non-class files during annotation - scanning faster by checking the file name first. Improve debug logging. - (kkolinko) -
  • -
  • Fix: - 58768: Log a warning if a redirect fails because of an - invalid location. (markt) -
  • -
  • Code: - 58827: Remove remains of JSR-77 implementation. (markt) -
  • -
  • Fix: - 58836: Correctly merge query string parameters when - processing a forwarded request where the target includes a query string - that contains a parameter with no value. (markt/kkolinko) -
  • -
  • Fix: - Make sure that shared Digester is reset in an unlikely error case - in HostConfig.deployWAR(). (kkolinko) -
  • -
  • Add: - Extend the feature available in the cluster session manager - implementations that enables session attribute replication to be - filtered based on attribute name to all session manager implementations. - Note that configuration attribute name has changed from - sessionAttributeFilter to - sessionAttributeNameFilter. Apply the filter on load as - well as unload to ensure that configuration changes made while the web - application is stopped are applied to any persisted data. (markt) -
  • -
  • Add: - Extend the session attribute filtering options to include filtering - based on the implementation class of the value and optional - WARN level logging if an attribute is filtered. These - options are available for all of the Manager implementations that ship - with Tomcat. When a SecurityManager is used filtering will - be enabled by default. (markt) -
  • -
  • Code: - Remove distributable and maxInactiveInterval - from the Manager interface because the attributes are never - used. The equivalent attributes from the Context always - take precedence. (markt) -
  • -
  • Fix: - 58867: Improve checking on Host start for WAR files that have - been modified while Tomcat has stopped and re-expand them if - unpackWARs is true. (markt) -
  • -
  • Fix: - 58900: Correctly undeploy symlinked resources and prevent an - infinite cycle of deploy / undeploy. (markt) -
  • -
  • Fix: - Protect initialization of ResourceLinkFactory when - running with a SecurityManager. (kkolinko) -
  • -
  • Fix: - Correct a thread safety issue in the filtering of session attributes - based on the implementing class name of the value object. (markt) -
  • -
  • Fix: - Fix class loader decision on the delegation for class loading and - resource lookup and make it faster too. (rjung) -
  • -
  • Fix: - 58905: Ensure that Tomcat.silence() silences the - correct logger and respects the current setting. (markt) -
  • -
  • Fix: - 58946: Ensure that the request parameter map remains - immutable when processing via a RequestDispatcher. (markt) -
  • -
  • Fix: - Ensure that /WEB-INF/classes is never processed as a web - fragment. (markt) -
  • -
  • Update: - Switch default connector when native is installed. Unless configured - otherwise, the NIO endpoint will be used by default. If SSL is - configured, OpenSSL will be used rather than JSSE. (remm) -
  • -
  • Fix: - Correct a regression in the fix for 58867. When configuring a - Context to use an external directory for the docBase, and - that directory happens to be located along side the original WAR, use - the directory as the docBase rather than expanding the - WAR into the appBase and using the newly created expanded - directory as the docBase. (markt) -
  • -
  • Add: - 58988: Special characters in the substitutions for the - RewriteValve can now be quoted with a backslash. (fschumacher) -
  • -
  • Fix: - 58999: Fix class and resource name filtering in - WebappClassLoader. It throws a StringIndexOutOfBoundsException if the - name is exactly "org" or "javax". (rjung) -
  • -
  • Add: - Add JASPIC (JSR-196) support. (markt) -
  • -
  • Add: - Make checking for var and map replacement in RewriteValve a bit stricter - and correct detection of colon in var replacement. (fschumacher) -
  • -
  • Fix: - Refactor the web application class loader to reduce the impact of JAR - scanning on the memory footprint of the web application. (markt) -
  • -
  • Fix: - Fix some resource leaks in the error handling for accessing files from - JARs and WARs. (markt) -
  • -
  • Fix: - Refactor the JAR and JAR-in-WAR resource handling to reduce the memory - footprint of the web application. (markt) -
  • -
  • Fix: - Refactor the web.xml parsing so a new parser is created every time the - web application starts rather than creating and caching the parser when - the Context is created. This enables the parser to take account of - modified Context configuration parameters and reduces (slightly) the - memory footprint of a running Tomcat instance. (markt) -
  • -
  • Update: - Switch the web application class loader to the - ParallelWebappClassLoader by default. (markt) -
  • -
  • Fix: - 57809: Remove the custom context attribute that held the - effective web.xml. Components needing access to configuration - information may access it via the Servlet API. (markt) -
  • -
  • Fix: - Refactor JAR scanning to reduce memory footprint. (markt) -
  • -
  • Fix: - 59001: Correctly handle the case when Tomcat is installed on - a path where one of the segments ends in an exclamation mark. (markt) -
  • -
  • Fix: - Expand the fix for 59001 to cover the special sequences used - in Tomcat's custom jar:war: URLs. (markt) -
  • -
  • Fix: - 59043: Avoid warning while expiring sessions associated with - a single sign on if HttpServletRequest.logout() is used. - (markt) -
  • -
  • Fix: - 59054: Ensure that using the - CrawlerSessionManagerValve in a distributed environment - does not trigger an error when the Valve registers itself in the - session. (markt) -
  • -
  • Fix: - Add socket properties support to storeconfig. (remm) -
  • -
  • Fix: - Fix incorrect parsing of the NE and NC flags in rewrite rules. (remm) -
  • -
  • Fix: - 59065: Correct the timing of the check for colons in paths - on non-Windows systems implemented in catalina.sh so it - works correctly with Cygwin. Patch provided by Ed Randall. (markt) -
  • -
  • Fix: - When a Host is configured with an appBase that does not exist, create - the appBase before trying to expand an external WAR file into it. - (markt) -
  • -
  • Fix: - 59115: When using the Servlet 3.0 file upload, the submitted - file name may be provided as a token or a quoted-string. If a - quoted-string, unquote the string before returning it to the user. - (markt) -
  • -
  • Fix: - 59123: Close NamingEnumeration objects used by - the JNDIRealm once they are no longer required. - (fschumacher/markt) -
  • -
  • Add: - Implement the proposed Servlet 4.0 API to provide mapping type - information for the current request. (markt) -
  • -
  • Fix: - 59138: Correct a false positive warning for ThreadLocal - related memory leaks when the key class but not the value class has been - loaded by the web application class loader. (markt) -
  • -
  • Add: - 59017: Make the pre-compressed file support in the Default - Servlet generic so any compression may be used rather than just gzip. - Patch provided by Mikko Tiihonen. (markt) -
  • -
  • Fix: - 59145: Don't log an invalid warning when a user logs out of - a session associated with SSO. (markt) -
  • -
  • Fix: - 59150: Add an additional flag on APR listener to allow - disabling automatic use of OpenSSL. (remm) -
  • -
  • Fix: - 59151: Fix a regression in the fix for 56917 that - added additional (and arguably unnecessary) validation to the provided - redirect location. (markt) -
  • -
  • Fix: - 59154: Fix a NullPointerException in the - JAASMemoryLoginModule resulting from the introduction of - the CredentialHandler to Realms. - (schultz/markt) -
  • -
-
-

Coyote

-
    -
  • Update: - Remove support for the HTTP BIO and AJP BIO connectors. (markt) -
  • -
  • Code: - Refactor HTTP upgrade and AJP implementations to reduce duplication. - (markt) -
  • -
  • Add: - Add support for HPACK header encoding and decoding, contributed - by Stuart Douglas. (remm) -
  • -
  • Add: - 57108: Add support for Server Name Indication (SNI). There - has been significant changes to the SSL configuration in server.xml to - support this. (markt) -
  • -
  • Add: - Add SSL engine for JSSE backed by OpenSSL. Includes ALPN support. - Based on code contributed by Numa de Montmollin and derived from code - developed by Twitter and Netty. (remm) -
  • -
  • Fix: - RFC 7230 states that clients should ignore reason phrases in HTTP/1.1 - response messages. Since the reason phrase is optional, Tomcat no longer - sends it. As a result the system property - org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER is no - longer used and has been removed. (markt) -
  • -
  • Update: - The minimum required Tomcat Native version has been increased to 1.2.2. - The 1.2.x branch includes ALPN and SNI support which are required for - HTTP/2. (markt) -
  • -
  • Add: - Add support for HTTP/2 including server push. (markt) -
  • -
  • Fix: - 58621: The certificate chain cannot be set using the main - certificate attribute, so restore the certificate chain property. (remm) -
  • -
  • Fix: - Allow a new SSL config type where a connector can use either JSSE or - OpenSSL. Both could be allowed, but it would likely create support - issues. This type is used by the OpenSSL implementation for NIOx. (remm) -
  • -
  • Fix: - Improve upgrade context classloader handling by using Context.bind and - unbind. (remm) -
  • -
  • Add: - Improve OpenSSL keystore/truststore configuration by using the code - from the JSSE implementation. (remm, jfclere) -
  • -
  • Fix: - Fix a potential loop when a client drops the connection unexpectedly. - (markt) -
  • -
  • Add: - OpenSSL renegotiation support for client certificate authentication. - (remm) -
  • -
  • Fix: - Fix NIO connector renegotiation. (remm) -
  • -
  • Fix: - 58659: Fix a potential deadlock during HTTP/2 processing when - the connection window size is limited. (markt) -
  • -
  • Fix: - Correct an NPE when listing the enabled ciphers (e.g. via the Manager - web application) for a TLS enabled APR/native connector. (markt) -
  • -
  • Add: - New configuration option ajpFlush for the AJP connectors - to disable the sending of AJP flush packets. (rjung) -
  • -
  • Fix: - Handle the case in the NIO connector where the required TLS buffer sizes - increase after the connection has been initiated. (markt) -
  • -
  • Fix: - Handle the case in the NIO2 connector where the required TLS buffer - sizes increase after the connection has been initiated. (markt/remm) -
  • -
  • Fix: - Bad processing of handshake errors in NIO2. (remm) -
  • -
  • Fix: - Use JSSE session configuration options with OpenSSL. (remm) -
  • -
  • Fix: - 59015: Fix potential cause of endless APR Poller loop during - shutdown if the Poller experiences an error during the shutdown process. - (markt) -
  • -
  • Fix: - Align cipher aliases for kECDHE and ECDHE with - the current OpenSSL implementation. (markt) -
  • -
  • Fix: - 59081: Retain the user defined cipher order when defining - ciphers. (markt) -
  • -
  • Fix: - 59089: Correctly ignore HTTP headers that include non-token - characters in the header name. (markt) -
  • -
-
-

Jasper

-
    -
  • Fix: - 57136#c25: Change default value of - quoteAttributeEL setting in Jasper to be true - for better compatibility with other implementations and older versions - of Tomcat. Add command line option -no-quoteAttributeEL in - JspC. (kkolinko) -
  • -
  • Fix: - Fix handling of missing messages in - org.apache.el.util.MessageFactory. (violetagg) -
  • -
  • Update: - Update to the Eclipse JDT Compiler 4.5.1. (markt) -
  • -
  • Fix: - 57583: Improve the performance of - javax.servlet.jsp.el.ScopedAttributeELResolver when - resolving attributes that do not exist. This improvement only works when - Jasper is used with Tomcat's EL implementation. (markt) -
  • -
-
-

Cluster

-
    -
  • Fix: - Enable an explicit configuration of local member in the static cluster - membership. (kfujino) -
  • -
  • Fix: - Fix potential integer overflow in DeltaSession. - Reported by coverity scan. (fschumacher) -
  • -
  • Fix: - In order to avoid that the heartbeat thread and the background thread to - run Channel.heartbeat simultaneously, if - heartbeatBackgroundEnabled of SimpleTcpCluster - set to true, ensure that the heartbeat thread does not - start. (kfujino) -
  • -
-
-

WebSocket

-
    -
  • Add: - 55006: The WebSocket client now honors the - java.net.java.net.ProxySelector configuration (using the - HTTP type) when establishing WebSocket connections to servers. Based on - a patch by Niki Dokovski. (markt) -
  • -
  • Fix: - 57489: Ensure onClose() is called when a - WebSocket connection is closed even if the sending of the close message - fails. Includes test cases by Barry Coughlan. (markt) -
  • -
  • Fix: - 58624: Correct a potential deadlock if the WebSocket - connection is closed when a message write is in progress. (markt) -
  • -
  • Fix: - Fix a timing issue on session close that could result in an exception - being thrown for an incomplete message even through the message was - completed. (markt) -
  • -
  • Fix: - Correctly handle compression of partial messages when the final message - fragment has a zero length payload. (markt) -
  • -
  • Fix: - 59119: Correct read logic for WebSocket client when using - secure connections. (markt) -
  • -
  • Fix: - 59134: Correct client connect logic for secure connections - made through a proxy. (markt) -
  • -
-
-

Web applications

-
    -
  • Fix: - 48674: Implement an option within the Host Manager web - application to persist the current configuration. Based on a patch by - Coty Sutherland. (markt) -
  • -
  • Fix: - 58631: Correct the continuation character use in the Windows - Service How-To page of the documentation web application. (markt) -
  • -
  • Fix: - Correct the SSL documentation for deprecated attributes to point to the - correct, new location for attributes related to individual certificates. - (markt) -
  • -
  • Fix: - Correct some typos in the JNDI resources How-To. (markt) -
  • -
  • Fix: - Don't create session unnecessarily in the Manager application. (markt) -
  • -
  • Fix: - Don't create session unnecessarily in the Host Manager application. - (markt) -
  • -
  • Fix: - 58723: Clarify documentation and error messages for the text - interface of the manager to make clear that version must be used with - path when referencing contexts deployed using parallel deployment. - (markt) -
  • -
  • Add: - Document test.threads option in BUILDING.txt. (kkolinko) -
  • -
  • Fix: - Correct an error in the documentation of the expected behaviour for - automatic deployment. If a WAR is updated and an expanded directory is - present, the directory will always be deleted and recreated by expanding - the WAR if unpackWARs is true. (markt) -
  • -
  • Fix: - 58935: Remove incorrect references in the documentation to - using jar:file: URLs with the Manager application. (markt) -
  • -
  • Fix: - Correct the description of the - ServletRequest.getServerPort() in Proxy How-To. - Issue reported via comments.apache.org. (violetagg) -
  • -
  • Add: - The Manager and Host Manager applications are now only accessible via - localhost by default. (markt) -
  • -
-
-

Tribes

-
    -
  • Fix: - Clarify the handling of Copy message and Copy nodes. (kfujino) -
  • -
  • Fix: - Ensure that the static member is registered to the add suspect list even - if the static member that is registered to the remove suspect list has - disappeared. (kfujino) -
  • -
  • Fix: - When using a static cluster, add the members that have been cached in - the membership service to the map members list in order to ensure that - the map member is a static member. (kfujino) -
  • -
  • Fix: - Add support for the startup notification of local members in the static - cluster. (kfujino) -
  • -
  • Fix: - Ignore the unnecessary member remove operation from different domain. - (kfujino) -
  • -
  • Fix: - Add support for the shutdown notification of local members in the static - cluster. (kfujino) -
  • -
  • Fix: - If promoting a proxy node to a primary node when getting a session, - notify the change of the new primary node to the original backup node. - (kfujino) -
  • -
-
-

jdbc-pool

-
    -
  • Fix: - Correct evaluation of system property - org.apache.tomcat.jdbc.pool.onlyAttemptCurrentClassLoader. - It was basically ignored before. Reported by coverity scan. (fschumacher) -
  • -
  • Fix: - Fix potential integer overflow in ConnectionPool and - PooledConnection. Reported by coverity scan. (fschumacher) -
  • -
-
-

Other

-
    -
  • Add: - Allow to configure multiple JUnit test class patterns with the build - property test.name and document the property in - BUILDING.txt. (rjung) -
  • -
  • Add: - Support the use of the threads attribute on Ant's - junit task. Note that using this with a value of greater than one will - disable Cobertura code coverage. (markt) -
  • -
  • Update: - Update optional Checkstyle library to 6.14.1. (kkolinko) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.4 to - pick up the Windows binaries that are based on OpenSSL 1.0.2e and APR - 1.5.1. (markt) -
  • -
  • Update: - Update the NSIS Installer used to build the Windows Installers to - version 2.50. (markt/kkolinko) -
  • -
  • Update: - Update the internal fork of Commons BCEL to r1725718 to align with the - refactoring for BCEL 6, the next major BCEL release. (markt) -
  • -
  • Update: - Update the internal fork of Commons DBCP 2 to r1725730 (2.1.1 plus - additional fixes). (markt) -
  • -
  • Update: - Update the internal fork of Commons Pool 2 to r1725738 (2.4.2 plus - additional fixes). (markt) -
  • -
  • Update: - Update the internal fork of Commons Codec to r1725746 (1.9 plus - additional fixes). (markt) -
  • -
  • Fix: - 58283: Change the default download location for libraries - during the build process from /usr/share/java to - ${user.home}/temp. Patch provided by Ahmed Hosni. (markt) -
  • -
  • Fix: - 59031: When using the Windows uninstaller, do not remove the - contents of any directories that have been symlinked into the Tomcat - directory structure. (markt) -
  • -
  • Update: - Update the packaged version of the Tomcat Native Library to 1.2.5 to - pick up the Windows binaries that are based on OpenSSL 1.0.2g and APR - 1.5.1. (markt) -
  • -
  • Update: - Modify the default tomcat-users.xml file to make it harder - for users to configure the entries intended for use with the examples - web application for the Manager application. (markt) -
  • -
-
-
\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/class-loader-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/class-loader-howto.html deleted file mode 100644 index 7afa9e6599e3517eb3b77812f962eb647db10063..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/class-loader-howto.html +++ /dev/null @@ -1,264 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Class Loader HOW-TO

Class Loader HOW-TO

Table of Contents

Overview

- -

Like many server applications, Tomcat installs a variety of class loaders -(that is, classes that implement java.lang.ClassLoader) to allow -different portions of the container, and the web applications running on the -container, to have access to different repositories of available classes and -resources. This mechanism is used to provide the functionality defined in the -Servlet Specification, version 2.4 — in particular, Sections 9.4 -and 9.6.

- -

In a Java environment, class loaders are -arranged in a parent-child tree. Normally, when a class loader is asked to -load a particular class or resource, it delegates the request to a parent -class loader first, and then looks in its own repositories only if the parent -class loader(s) cannot find the requested class or resource. Note, that the -model for web application class loaders differs slightly from this, -as discussed below, but the main principles are the same.

- -

When Tomcat is started, it creates a set of class loaders that are -organized into the following parent-child relationships, where the parent -class loader is above the child class loader:

- -
      Bootstrap
-          |
-       System
-          |
-       Common
-       /     \
-  Webapp1   Webapp2 ...
- -

The characteristics of each of these class loaders, including the source -of classes and resources that they make visible, are discussed in detail in -the following section.

- -

Class Loader Definitions

- -

As indicated in the diagram above, Tomcat creates the following class -loaders as it is initialized:

-
    -
  • Bootstrap — This class loader contains the basic - runtime classes provided by the Java Virtual Machine, plus any classes from - JAR files present in the System Extensions directory - ($JAVA_HOME/jre/lib/ext). Note: some JVMs may - implement this as more than one class loader, or it may not be visible - (as a class loader) at all.

  • -
  • System — This class loader is normally initialized - from the contents of the CLASSPATH environment variable. All - such classes are visible to both Tomcat internal classes, and to web - applications. However, the standard Tomcat startup scripts - ($CATALINA_HOME/bin/catalina.sh or - %CATALINA_HOME%\bin\catalina.bat) totally ignore the contents - of the CLASSPATH environment variable itself, and instead - build the System class loader from the following repositories: -

    -
      -
    • $CATALINA_HOME/bin/bootstrap.jar — Contains the - main() method that is used to initialize the Tomcat server, and the - class loader implementation classes it depends on.

    • -
    • $CATALINA_BASE/bin/tomcat-juli.jar or - $CATALINA_HOME/bin/tomcat-juli.jar — Logging - implementation classes. These include enhancement classes to - java.util.logging API, known as Tomcat JULI, - and a package-renamed copy of Apache Commons Logging library - used internally by Tomcat. - See logging documentation for more - details.

      -

      If tomcat-juli.jar is present in - $CATALINA_BASE/bin, it is used instead of the one in - $CATALINA_HOME/bin. It is useful in certain logging - configurations

    • -
    • $CATALINA_HOME/bin/commons-daemon.jar — The classes - from Apache Commons - Daemon project. - This JAR file is not present in the CLASSPATH built by - catalina.bat|.sh scripts, but is referenced - from the manifest file of bootstrap.jar.

    • -
    -
  • -
  • Common — This class loader contains additional - classes that are made visible to both Tomcat internal classes and to all - web applications.

    -

    Normally, application classes should NOT - be placed here. The locations searched by this class loader are defined by - the common.loader property in - $CATALINA_BASE/conf/catalina.properties. The default setting will search the - following locations in the order they are listed:

    -
      -
    • unpacked classes and resources in $CATALINA_BASE/lib
    • -
    • JAR files in $CATALINA_BASE/lib
    • -
    • unpacked classes and resources in $CATALINA_HOME/lib
    • -
    • JAR files in $CATALINA_HOME/lib
    • -
    -

    By default, this includes the following:

    -
      -
    • annotations-api.jar — JavaEE annotations classes.
    • -
    • catalina.jar — Implementation of the Catalina servlet - container portion of Tomcat.
    • -
    • catalina-ant.jar — Tomcat Catalina Ant tasks.
    • -
    • catalina-ha.jar — High availability package.
    • -
    • catalina-storeconfig.jar — Generation of XML - configuration files from current state
    • -
    • catalina-tribes.jar — Group communication package.
    • -
    • ecj-*.jar — Eclipse JDT Java compiler.
    • -
    • el-api.jar — EL 3.0 API.
    • -
    • jasper.jar — Tomcat Jasper JSP Compiler and Runtime.
    • -
    • jasper-el.jar — Tomcat Jasper EL implementation.
    • -
    • jsp-api.jar — JSP 2.3 API.
    • -
    • servlet-api.jar — Servlet 3.1 API.
    • -
    • tomcat-api.jar — Several interfaces defined by Tomcat.
    • -
    • tomcat-coyote.jar — Tomcat connectors and utility classes.
    • -
    • tomcat-dbcp.jar — Database connection pool - implementation based on package-renamed copy of Apache Commons Pool - and Apache Commons DBCP.
    • -
    • tomcat-i18n-**.jar — Optional JARs containing resource bundles - for other languages. As default bundles are also included in each - individual JAR, they can be safely removed if no internationalization - of messages is needed.
    • -
    • tomcat-jdbc.jar — An alternative database connection pool - implementation, known as Tomcat JDBC pool. See - documentation for more details.
    • -
    • tomcat-util.jar — Common classes used by various components of - Apache Tomcat.
    • -
    • tomcat-websocket.jar — WebSocket 1.1 implementation
    • -
    • websocket-api.jar — WebSocket 1.1 API
    • -
  • -
  • WebappX — A class loader is created for each web - application that is deployed in a single Tomcat instance. All unpacked - classes and resources in the /WEB-INF/classes directory of - your web application, plus classes and resources in JAR files - under the /WEB-INF/lib directory of your web application, - are made visible to this web application, but not to other ones.

  • -
- -

As mentioned above, the web application class loader diverges from the -default Java delegation model (in accordance with the recommendations in the -Servlet Specification, version 2.4, section 9.7.2 Web Application Classloader). -When a request to load a -class from the web application's WebappX class loader is processed, -this class loader will look in the local repositories first, -instead of delegating before looking. There are exceptions. Classes which are -part of the JRE base classes cannot be overridden. There are some exceptions -such as the XML parser components which can be overridden using the appropriate -JVM feature which is the endorsed standards override feature for Java <= 8 -and the upgradeable modules feature for Java 9+. -Lastly, the web application class loader will always delegate first for JavaEE -API classes for the specifications implemented by Tomcat -(Servlet, JSP, EL, WebSocket). All other class loaders in Tomcat follow the -usual delegation pattern.

- -

Therefore, from the perspective of a web application, class or resource -loading looks in the following repositories, in this order:

-
    -
  • Bootstrap classes of your JVM
  • -
  • /WEB-INF/classes of your web application
  • -
  • /WEB-INF/lib/*.jar of your web application
  • -
  • System class loader classes (described above)
  • -
  • Common class loader classes (described above)
  • -
- -

If the web application class loader is -configured with -<Loader delegate="true"/> -then the order becomes:

-
    -
  • Bootstrap classes of your JVM
  • -
  • System class loader classes (described above)
  • -
  • Common class loader classes (described above)
  • -
  • /WEB-INF/classes of your web application
  • -
  • /WEB-INF/lib/*.jar of your web application
  • -
- -

XML Parsers and Java

- -

Starting with Java 1.4 a copy of JAXP APIs and an XML parser are packed -inside the JRE. This has impacts on applications that wish to use their own -XML parser.

- -

In old versions of Tomcat, you could simply replace the XML parser -in the Tomcat libraries directory to change the parser -used by all web applications. However, this technique will not be effective -when you are running modern versions of Java, because the usual class loader -delegation process will always choose the implementation inside the JDK in -preference to this one.

- -

Java <= 8 supports a mechanism called the "Endorsed Standards Override -Mechanism" to allow replacement of APIs created outside of the JCP -(i.e. DOM and SAX from W3C). It can also be used to update the XML parser -implementation. For more information, see: - -http://docs.oracle.com/javase/1.5.0/docs/guide/standards/index.html. For -Java 9+, use the upgradeable modules feature.

- -

Tomcat utilizes the endorsed mechanism by including the system property setting --Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS in the -command line that starts the container. The default value of this option is -$CATALINA_HOME/endorsed. This endorsed directory is not -created by default. Note that the endorsed feature is no longer supported -with Java 9 and the above system property will only be set if either the -directory $CATALINA_HOME/endorsed exists, or the variable -JAVA_ENDORSED_DIRS has been set. -

- -

Note that overriding any JRE component carries risk. If the overriding -component does not provide a 100% compatible API (e.g. the API provided by -Xerces is not 100% compatible with the XML API provided by the JRE) then there -is a risk that Tomcat and/or the deployed application will experience errors.

- -

Running under a security manager

- -

When running under a security manager the locations from which classes -are permitted to be loaded will also depend on the contents of your policy -file. See Security Manager HOW-TO -for further information.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/cluster-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/cluster-howto.html deleted file mode 100644 index 24038423ef786bcd83a05e5fe73971ccfa8c22db..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/cluster-howto.html +++ /dev/null @@ -1,669 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Clustering/Session Replication HOW-TO

Clustering/Session Replication HOW-TO

Important Note

-

You can also check the configuration reference documentation. -

-

Table of Contents

For the impatient

-

- Simply add -

-
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-

- to your <Engine> or your <Host> element to enable clustering. -

-

- Using the above configuration will enable all-to-all session replication - using the DeltaManager to replicate session deltas. By all-to-all we mean that the session gets replicated to all the other - nodes in the cluster. This works great for smaller cluster but we don't recommend it for larger clusters(a lot of Tomcat nodes). - Also when using the delta manager it will replicate to all nodes, even nodes that don't have the application deployed.
- To get around this problem, you'll want to use the BackupManager. This manager only replicates the session data to one backup - node, and only to nodes that have the application deployed. Downside of the BackupManager: not quite as battle tested as the delta manager. -

-

- Here are some of the important default values: -

-
    -
  1. Multicast address is 228.0.0.4
  2. -
  3. Multicast port is 45564 (the port and the address together determine cluster membership.
  4. -
  5. The IP broadcasted is java.net.InetAddress.getLocalHost().getHostAddress() (make sure you don't broadcast 127.0.0.1, this is a common error)
  6. -
  7. The TCP port listening for replication messages is the first available server socket in range 4000-4100
  8. -
  9. Listener is configured ClusterSessionListener
  10. -
  11. Two interceptors are configured TcpFailureDetector and MessageDispatchInterceptor
  12. -
-

- The following is the default cluster configuration: -

-
        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
-                 channelSendOptions="8">
-
-          <Manager className="org.apache.catalina.ha.session.DeltaManager"
-                   expireSessionsOnShutdown="false"
-                   notifyListenersOnReplication="true"/>
-
-          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
-            <Membership className="org.apache.catalina.tribes.membership.McastService"
-                        address="228.0.0.4"
-                        port="45564"
-                        frequency="500"
-                        dropTime="3000"/>
-            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
-                      address="auto"
-                      port="4000"
-                      autoBind="100"
-                      selectorTimeout="5000"
-                      maxThreads="6"/>
-
-            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
-              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
-            </Sender>
-            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
-            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
-          </Channel>
-
-          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
-                 filter=""/>
-          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
-
-          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
-                    tempDir="/tmp/war-temp/"
-                    deployDir="/tmp/war-deploy/"
-                    watchDir="/tmp/war-listen/"
-                    watchEnabled="false"/>
-
-          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
-        </Cluster>
-

Will cover this section in more detail later in this document.

-

Security

- -

The cluster implementation is written on the basis that a secure, trusted -network is used for all of the cluster related network traffic. It is not safe -to run a cluster on a insecure, untrusted network.

- -

There are many options for providing a secure, trusted network for use by a -Tomcat cluster. These include:

-
    -
  • private LAN
  • -
  • a Virtual Private Network (VPN)
  • -
  • IPSEC
  • -
- -

Cluster Basics

- -

To run session replication in your Tomcat 8 container, the following steps -should be completed:

-
    -
  • All your session attributes must implement java.io.Serializable
  • -
  • Uncomment the Cluster element in server.xml
  • -
  • If you have defined custom cluster valves, make sure you have the ReplicationValve defined as well under the Cluster element in server.xml
  • -
  • If your Tomcat instances are running on the same machine, make sure the Receiver.port - attribute is unique for each instance, in most cases Tomcat is smart enough to resolve this on it's own by autodetecting available ports in the range 4000-4100
  • -
  • Make sure your web.xml has the - <distributable/> element
  • -
  • If you are using mod_jk, make sure that jvmRoute attribute is set at your Engine <Engine name="Catalina" jvmRoute="node01" > - and that the jvmRoute attribute value matches your worker name in workers.properties
  • -
  • Make sure that all nodes have the same time and sync with NTP service!
  • -
  • Make sure that your loadbalancer is configured for sticky session mode.
  • -
-

Load balancing can be achieved through many techniques, as seen in the -Load Balancing chapter.

-

Note: Remember that your session state is tracked by a cookie, so your URL must look the same from the out - side otherwise, a new session will be created.

-

Note: Clustering support currently requires the JDK version 1.5 or later.

-

The Cluster module uses the Tomcat JULI logging framework, so you can configure logging - through the regular logging.properties file. To track messages, you can enable logging on the key: org.apache.catalina.tribes.MESSAGES

-

Overview

- -

To enable session replication in Tomcat, three different paths can be followed to achieve the exact same thing:

-
    -
  1. Using session persistence, and saving the session to a shared file system (PersistenceManager + FileStore)
  2. -
  3. Using session persistence, and saving the session to a shared database (PersistenceManager + JDBCStore)
  4. -
  5. Using in-memory-replication, using the SimpleTcpCluster that ships with Tomcat (lib/catalina-tribes.jar + lib/catalina-ha.jar)
  6. -
- -

In this release of session replication, Tomcat can perform an all-to-all replication of session state using the DeltaManager or - perform backup replication to only one node using the BackupManager. - The all-to-all replication is an algorithm that is only efficient when the clusters are small. For larger clusters, to use - a primary-secondary session replication where the session will only be stored at one backup server simply setup the BackupManager.
- Currently you can use the domain worker attribute (mod_jk > 1.2.8) to build cluster partitions - with the potential of having a more scalable cluster solution with the DeltaManager(you'll need to configure the domain interceptor for this). - In order to keep the network traffic down in an all-to-all environment, you can split your cluster - into smaller groups. This can be easily achieved by using different multicast addresses for the different groups. - A very simple setup would look like this: -

- -
        DNS Round Robin
-               |
-         Load Balancer
-          /           \
-      Cluster1      Cluster2
-      /     \        /     \
-  Tomcat1 Tomcat2  Tomcat3 Tomcat4
- -

What is important to mention here, is that session replication is only the beginning of clustering. - Another popular concept used to implement clusters is farming, i.e., you deploy your apps only to one - server, and the cluster will distribute the deployments across the entire cluster. - This is all capabilities that can go into with the FarmWarDeployer (s. cluster example at server.xml)

-

In the next section will go deeper into how session replication works and how to configure it.

- -

Cluster Information

-

Membership is established using multicast heartbeats. - Hence, if you wish to subdivide your clusters, you can do this by - changing the multicast IP address or port in the <Membership> element. -

-

- The heartbeat contains the IP address of the Tomcat node and the TCP port that - Tomcat listens to for replication traffic. All data communication happens over TCP. -

-

- The ReplicationValve is used to find out when the request has been completed and initiate the - replication, if any. Data is only replicated if the session has changed (by calling setAttribute or removeAttribute - on the session). -

-

- One of the most important performance considerations is the synchronous versus asynchronous replication. - In a synchronous replication mode the request doesn't return until the replicated session has been - sent over the wire and reinstantiated on all the other cluster nodes. - Synchronous vs. asynchronous is configured using the channelSendOptions - flag and is an integer value. The default value for the SimpleTcpCluster/DeltaManager combo is - 8, which is asynchronous. You can read more on the send flag(overview) or the - send flag(javadoc). - During async replication, the request is returned before the data has been replicated. async replication yields shorter - request times, and synchronous replication guarantees the session to be replicated before the request returns. -

-

Bind session after crash to failover node

-

- If you are using mod_jk and not using sticky sessions or for some reasons sticky session don't - work, or you are simply failing over, the session id will need to be modified as it previously contained - the worker id of the previous tomcat (as defined by jvmRoute in the Engine element). - To solve this, we will use the JvmRouteBinderValve. -

-

- The JvmRouteBinderValve rewrites the session id to ensure that the next request will remain sticky - (and not fall back to go to random nodes since the worker is no longer available) after a fail over. - The valve rewrites the JSESSIONID value in the cookie with the same name. - Not having this valve in place, will make it harder to ensure stickiness in case of a failure for the mod_jk module. -

-

- Remember, if you are adding your own valves in server.xml then the defaults are no longer valid, - make sure that you add in all the appropriate valves as defined by the default. -

-

- Hint:
- With attribute sessionIdAttribute you can change the request attribute name that included the old session id. - Default attribute name is org.apache.catalina.ha.session.JvmRouteOrignalSessionID. -

-

- Trick:
- You can enable this mod_jk turnover mode via JMX before you drop a node to all backup nodes! - Set enable true on all JvmRouteBinderValve backups, disable worker at mod_jk - and then drop node and restart it! Then enable mod_jk Worker and disable JvmRouteBinderValves again. - This use case means that only requested session are migrated. -

- - -

Configuration Example

-
        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
-                 channelSendOptions="6">
-
-          <Manager className="org.apache.catalina.ha.session.BackupManager"
-                   expireSessionsOnShutdown="false"
-                   notifyListenersOnReplication="true"
-                   mapSendOptions="6"/>
-          <!--
-          <Manager className="org.apache.catalina.ha.session.DeltaManager"
-                   expireSessionsOnShutdown="false"
-                   notifyListenersOnReplication="true"/>
-          -->
-          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
-            <Membership className="org.apache.catalina.tribes.membership.McastService"
-                        address="228.0.0.4"
-                        port="45564"
-                        frequency="500"
-                        dropTime="3000"/>
-            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
-                      address="auto"
-                      port="5000"
-                      selectorTimeout="100"
-                      maxThreads="6"/>
-
-            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
-              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
-            </Sender>
-            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
-            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
-            <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
-          </Channel>
-
-          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
-                 filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/>
-
-          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
-                    tempDir="/tmp/war-temp/"
-                    deployDir="/tmp/war-deploy/"
-                    watchDir="/tmp/war-listen/"
-                    watchEnabled="false"/>
-
-          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
-        </Cluster>
-

- Break it down!! -

-
        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
-                 channelSendOptions="6">
-

- The main element, inside this element all cluster details can be configured. - The channelSendOptions is the flag that is attached to each message sent by the - SimpleTcpCluster class or any objects that are invoking the SimpleTcpCluster.send method. - The description of the send flags is available at - our javadoc site - The DeltaManager sends information using the SimpleTcpCluster.send method, while the backup manager - sends it itself directly through the channel. -
For more info, Please visit the reference documentation -

-
          <Manager className="org.apache.catalina.ha.session.BackupManager"
-                   expireSessionsOnShutdown="false"
-                   notifyListenersOnReplication="true"
-                   mapSendOptions="6"/>
-          <!--
-          <Manager className="org.apache.catalina.ha.session.DeltaManager"
-                   expireSessionsOnShutdown="false"
-                   notifyListenersOnReplication="true"/>
-          -->
-

- This is a template for the manager configuration that will be used if no manager is defined in the <Context> - element. In Tomcat 5.x each webapp marked distributable had to use the same manager, this is no longer the case - since Tomcat you can define a manager class for each webapp, so that you can mix managers in your cluster. - Obviously the managers on one node's application has to correspond with the same manager on the same application on the other node. - If no manager has been specified for the webapp, and the webapp is marked <distributable/> Tomcat will take this manager configuration - and create a manager instance cloning this configuration. -
For more info, Please visit the reference documentation -

-
          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
-

- The channel element is Tribes, the group communication framework - used inside Tomcat. This element encapsulates everything that has to do with communication and membership logic. -
For more info, Please visit the reference documentation -

-
            <Membership className="org.apache.catalina.tribes.membership.McastService"
-                        address="228.0.0.4"
-                        port="45564"
-                        frequency="500"
-                        dropTime="3000"/>
-

- Membership is done using multicasting. Please note that Tribes also supports static memberships using the - StaticMembershipInterceptor if you want to extend your membership to points beyond multicasting. - The address attribute is the multicast address used and the port is the multicast port. These two together - create the cluster separation. If you want a QA cluster and a production cluster, the easiest config is to - have the QA cluster be on a separate multicast address/port combination than the production cluster.
- The membership component broadcasts TCP address/port of itself to the other nodes so that communication between - nodes can be done over TCP. Please note that the address being broadcasted is the one of the - Receiver.address attribute. -
For more info, Please visit the reference documentation -

-
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
-                      address="auto"
-                      port="5000"
-                      selectorTimeout="100"
-                      maxThreads="6"/>
-

- In tribes the logic of sending and receiving data has been broken into two functional components. The Receiver, as the name suggests - is responsible for receiving messages. Since the Tribes stack is thread less, (a popular improvement now adopted by other frameworks as well), - there is a thread pool in this component that has a maxThreads and minThreads setting.
- The address attribute is the host address that will be broadcasted by the membership component to the other nodes. -
For more info, Please visit the reference documentation -

-
            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
-              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
-            </Sender>
-

- The sender component, as the name indicates is responsible for sending messages to other nodes. - The sender has a shell component, the ReplicationTransmitter but the real stuff done is done in the - sub component, Transport. - Tribes support having a pool of senders, so that messages can be sent in parallel and if using the NIO sender, - you can send messages concurrently as well.
- Concurrently means one message to multiple senders at the same time and Parallel means multiple messages to multiple senders - at the same time. -
For more info, Please visit the reference documentation -

-
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
-            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
-            <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
-          </Channel>
-

- Tribes uses a stack to send messages through. Each element in the stack is called an interceptor, and works much like the valves do - in the Tomcat servlet container. - Using interceptors, logic can be broken into more manageable pieces of code. The interceptors configured above are:
- TcpFailureDetector - verifies crashed members through TCP, if multicast packets get dropped, this interceptor protects against false positives, - ie the node marked as crashed even though it still is alive and running.
- MessageDispatchInterceptor - dispatches messages to a thread (thread pool) to send message asynchronously.
- ThroughputInterceptor - prints out simple stats on message traffic.
- Please note that the order of interceptors is important. The way they are defined in server.xml is the way they are represented in the - channel stack. Think of it as a linked list, with the head being the first most interceptor and the tail the last. -
For more info, Please visit the reference documentation -

-
          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
-                 filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/>
-

- The cluster uses valves to track requests to web applications, we've mentioned the ReplicationValve and the JvmRouteBinderValve above. - The <Cluster> element itself is not part of the pipeline in Tomcat, instead the cluster adds the valve to its parent container. - If the <Cluster> elements is configured in the <Engine> element, the valves get added to the engine and so on. -
For more info, Please visit the reference documentation -

-
          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
-                    tempDir="/tmp/war-temp/"
-                    deployDir="/tmp/war-deploy/"
-                    watchDir="/tmp/war-listen/"
-                    watchEnabled="false"/>
-

- The default tomcat cluster supports farmed deployment, ie, the cluster can deploy and undeploy applications on the other nodes. - The state of this component is currently in flux but will be addressed soon. There was a change in the deployment algorithm - between Tomcat 5.0 and 5.5 and at that point, the logic of this component changed to where the deploy dir has to match the - webapps directory. -
For more info, Please visit the reference documentation -

-
          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
-        </Cluster>
-

- Since the SimpleTcpCluster itself is a sender and receiver of the Channel object, components can register themselves as listeners to - the SimpleTcpCluster. The listener above ClusterSessionListener listens for DeltaManager replication messages - and applies the deltas to the manager that in turn applies it to the session. -
For more info, Please visit the reference documentation -

- -

Cluster Architecture

- -

Component Levels:

-
         Server
-           |
-         Service
-           |
-         Engine
-           |  \
-           |  --- Cluster --*
-           |
-         Host
-           |
-         ------
-        /      \
-     Cluster    Context(1-N)
-        |             \
-        |             -- Manager
-        |                   \
-        |                   -- DeltaManager
-        |                   -- BackupManager
-        |
-     ---------------------------
-        |                       \
-      Channel                    \
-    ----------------------------- \
-        |                          \
-     Interceptor_1 ..               \
-        |                            \
-     Interceptor_N                    \
-    -----------------------------      \
-     |          |         |             \
-   Receiver    Sender   Membership       \
-                                         -- Valve
-                                         |      \
-                                         |       -- ReplicationValve
-                                         |       -- JvmRouteBinderValve
-                                         |
-                                         -- LifecycleListener
-                                         |
-                                         -- ClusterListener
-                                         |      \
-                                         |       -- ClusterSessionListener
-                                         |
-                                         -- Deployer
-                                                \
-                                                 -- FarmWarDeployer
-
-
- - -

How it Works

-

To make it easy to understand how clustering works, We are gonna take you through a series of scenarios. - In the scenario we only plan to use two tomcat instances TomcatA and TomcatB. - We will cover the following sequence of events:

- -
    -
  1. TomcatA starts up
  2. -
  3. TomcatB starts up (Wait that TomcatA start is complete)
  4. -
  5. TomcatA receives a request, a session S1 is created.
  6. -
  7. TomcatA crashes
  8. -
  9. TomcatB receives a request for session S1
  10. -
  11. TomcatA starts up
  12. -
  13. TomcatA receives a request, invalidate is called on the session (S1)
  14. -
  15. TomcatB receives a request, for a new session (S2)
  16. -
  17. TomcatA The session S2 expires due to inactivity.
  18. -
- -

Ok, now that we have a good sequence, we will take you through exactly what happens in the session replication code

- -
    -
  1. TomcatA starts up -

    - Tomcat starts up using the standard start up sequence. When the Host object is created, a cluster object is associated with it. - When the contexts are parsed, if the distributable element is in place in web.xml - Tomcat asks the Cluster class (in this case SimpleTcpCluster) to create a manager - for the replicated context. So with clustering enabled, distributable set in web.xml - Tomcat will create a DeltaManager for that context instead of a StandardManager. - The cluster class will start up a membership service (multicast) and a replication service (tcp unicast). - More on the architecture further down in this document. -

    -
  2. -
  3. TomcatB starts up -

    - When TomcatB starts up, it follows the same sequence as TomcatA did with one exception. - The cluster is started and will establish a membership (TomcatA,TomcatB). - TomcatB will now request the session state from a server that already exists in the cluster, - in this case TomcatA. TomcatA responds to the request, and before TomcatB starts listening - for HTTP requests, the state has been transferred from TomcatA to TomcatB. - In case TomcatA doesn't respond, TomcatB will time out after 60 seconds, and issue a log - entry. The session state gets transferred for each web application that has distributable in - its web.xml. Note: To use session replication efficiently, all your tomcat instances should be - configured the same. -

    -
  4. -
  5. TomcatA receives a request, a session S1 is created. -

    - The request coming in to TomcatA is treated exactly the same way as without session replication. - The action happens when the request is completed, the ReplicationValve will intercept - the request before the response is returned to the user. - At this point it finds that the session has been modified, and it uses TCP to replicate the - session to TomcatB. Once the serialized data has been handed off to the operating systems TCP logic, - the request returns to the user, back through the valve pipeline. - For each request the entire session is replicated, this allows code that modifies attributes - in the session without calling setAttribute or removeAttribute to be replicated. - a useDirtyFlag configuration parameter can be used to optimize the number of times - a session is replicated. -

    - -
  6. -
  7. TomcatA crashes -

    - When TomcatA crashes, TomcatB receives a notification that TomcatA has dropped out - of the cluster. TomcatB removes TomcatA from its membership list, and TomcatA will no longer - be notified of any changes that occurs in TomcatB. - The load balancer will redirect the requests from TomcatA to TomcatB and all the sessions - are current. -

    -
  8. -
  9. TomcatB receives a request for session S1 -

    Nothing exciting, TomcatB will process the request as any other request. -

    -
  10. -
  11. TomcatA starts up -

    Upon start up, before TomcatA starts taking new request and making itself - available to it will follow the start up sequence described above 1) 2). - It will join the cluster, contact TomcatB for the current state of all the sessions. - And once it receives the session state, it finishes loading and opens its HTTP/mod_jk ports. - So no requests will make it to TomcatA until it has received the session state from TomcatB. -

    -
  12. -
  13. TomcatA receives a request, invalidate is called on the session (S1) -

    The invalidate call is intercepted, and the session is queued with invalidated sessions. - When the request is complete, instead of sending out the session that has changed, it sends out - an "expire" message to TomcatB and TomcatB will invalidate the session as well. -

    - -
  14. -
  15. TomcatB receives a request, for a new session (S2) -

    Same scenario as in step 3) -

    - - -
  16. -
  17. TomcatA The session S2 expires due to inactivity. -

    The invalidate call is intercepted the same was as when a session is invalidated by the user, - and the session is queued with invalidated sessions. - At this point, the invalidated session will not be replicated across until - another request comes through the system and checks the invalid queue. -

    -
  18. -
- -

Phuuuhh! :)

- -

Membership - Clustering membership is established using very simple multicast pings. - Each Tomcat instance will periodically send out a multicast ping, - in the ping message the instance will broad cast its IP and TCP listen port - for replication. - If an instance has not received such a ping within a given timeframe, the - member is considered dead. Very simple, and very effective! - Of course, you need to enable multicasting on your system. -

- -

TCP Replication - Once a multicast ping has been received, the member is added to the cluster - Upon the next replication request, the sending instance will use the host and - port info and establish a TCP socket. Using this socket it sends over the serialized data. - The reason I choose TCP sockets is because it has built in flow control and guaranteed delivery. - So I know, when I send some data, it will make it there :) -

- -

Distributed locking and pages using frames - Tomcat does not keep session instances in sync across the cluster. - The implementation of such logic would be to much overhead and cause all - kinds of problems. If your client accesses the same session - simultaneously using multiple requests, then the last request - will override the other sessions in the cluster. -

- -

Monitoring your Cluster with JMX

-

Monitoring is a very important question when you use a cluster. Some of the cluster objects are JMX MBeans

-

Add the following parameter to your startup script with Java 5:

-
set CATALINA_OPTS=\
--Dcom.sun.management.jmxremote \
--Dcom.sun.management.jmxremote.port=%my.jmx.port% \
--Dcom.sun.management.jmxremote.ssl=false \
--Dcom.sun.management.jmxremote.authenticate=false
- -

- List of Cluster Mbeans -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionMBean ObjectName - EngineMBean ObjectName - Host
ClusterThe complete cluster elementtype=Clustertype=Cluster,host=${HOST}
DeltaManagerThis manager control the sessions and handle session replication type=Manager,context=${APP.CONTEXT.PATH}, host=${HOST}type=Manager,context=${APP.CONTEXT.PATH}, host=${HOST}
FarmWarDeployerManages the process of deploying an application to all nodes in the clusterNot supportedtype=Cluster, host=${HOST}, component=deployer
MemberRepresents a node in the clustertype=Cluster, component=member, name=${NODE_NAME}type=Cluster, host=${HOST}, component=member, name=${NODE_NAME}
ReplicationValveThis valve control the replication to the backup nodestype=Valve,name=ReplicationValvetype=Valve,name=ReplicationValve,host=${HOST}
JvmRouteBinderValveThis is a cluster fallback valve to change the Session ID to the current tomcat jvmroute.type=Valve,name=JvmRouteBinderValve, - context=${APP.CONTEXT.PATH}type=Valve,name=JvmRouteBinderValve,host=${HOST}, - context=${APP.CONTEXT.PATH}
-

FAQ

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/comments.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/comments.html deleted file mode 100644 index 037ad5fae3e35bf7d42c4c01f23ffec702776231..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/comments.html +++ /dev/null @@ -1,122 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Documentation User Comments

Documentation User Comments

Introduction

- -

The Tomcat documentation integrates the -Apache Comments System. -It allows users to add comments to most documentation pages. The comments -section can be found at the end of each page.

- -

Allowed Content

- -

Please use the Apache Comments System responsibly. We can only provide -this service to the community as long as it isn't misused.

- -

The comments are not for general Q&A. -Comments should be pointed towards suggestions on improving the documentation -or server. Questions on how to use Apache Tomcat should be directed -to our mailing lists.

- -

Comments may be removed by moderators if they are either -implemented or considered invalid/off-topic.

- -

HTML is not allowed in comments, and will just display as raw source code -if attempted. Links that do not point to an Apache site (*.apache.org) will -need approval by a moderator before the comment is visible to regular visitors.

- -

License

- -

Any submitted comments must be contributed under the terms of the -Apache License, Version 2.0.

- -

Verified Users

- -

Verified users gain the Apache feather next to their name, -and may post comments with links in them without requiring approval -by a moderator before the comments are shown. Being a verified user -in itself does not give you moderating rights. If you are interested -in becoming a verified user, please contact us on the -users mailing list.

- -

All ASF committers are automatically verified users.

- -

Moderators

- -

Moderators are allowed to mark comments as "Resolved", "Invalid" -or "Sticky", remove marks, approve comments e.g. if they contain -a link, and delete comments. Moderators can also subscribe to new -comments and comment updates and use the dashboard to gain some -overview over all comments of a site.

- -

To use the moderation features, you need to login to the comments -system. Furthermore you will need to allow cookies to be set for -comments.apache.org (this is done using a secure https cookie). Once -logged in as a moderator you will see additional moderation -options attached to each comment.

- -

If you are a long time follower of the Apache Tomcat projects -and you are interested in becoming a moderator, please contact us on the -users mailing list.

- -

Privacy Policy

- -

No data except what you personally submit is kept on record. -A cookie is used to keep track of moderators and other people -who wish to create an account to avoid having to enter their -credentials whenever they wish to post a comment.

- -

To prevent spam and unsolicited comments, we use a digest of -visitors' IPs to keep track of comments posted by them.

- -

Entering an email address when you post a comment is completely -optional, and will not be shared with anyone. If you enter an -email address, it will be used to notify you when someone posts -a reply to one of your comments, provided you have registered -an account and validated your email address.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/ajp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/ajp.html deleted file mode 100644 index 9da96aa4fd389562c3d1783d1c52d011b48911ea..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/ajp.html +++ /dev/null @@ -1,734 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The AJP Connector

The AJP Connector

Table of Contents

Introduction

- -

The AJP Connector element represents a - Connector component that communicates with a web - connector via the AJP protocol. This is used for cases - where you wish to invisibly integrate Tomcat into an existing (or new) - Apache installation, and you want Apache to handle the static content - contained in the web application, and/or utilize Apache's SSL - processing.

- -

This connector supports load balancing when used in conjunction with - the jvmRoute attribute of the - Engine.

- -

The native connectors supported with this Tomcat release are:

-
    -
  • JK 1.2.x with any of the supported servers. See - the JK docs - for details.
  • -
  • mod_proxy on Apache httpd 2.x (included by default in Apache HTTP - Server 2.2), with AJP enabled: see - the - httpd docs for details.
  • -
- -

Other native connectors supporting AJP may work, but are no longer - supported.

- -

Attributes

- -

Common Attributes

- -

All implementations of Connector - support the following attributes:

- -
- Attribute - - Description -
ajpFlush -

A boolean value which can be used to enable or disable sending - AJP flush messages to the fronting proxy whenever an explicit - flush happens. The default value is true.
- An AJP flush message is a SEND_BODY_CHUNK packet with no body content. - Proxy implementations like mod_jk or mod_proxy_ajp will flush the - data buffered in the web server to the client when they receive - such a packet. Setting this to false can reduce - AJP packet traffic but might delay sending packets to the client. - At the end of the response, AJP does always flush to the client.

-
allowTrace -

A boolean value which can be used to enable or disable the TRACE - HTTP method. If not specified, this attribute is set to false.

-
asyncTimeout -

The default timeout for asynchronous requests in milliseconds. If not - specified, this attribute is set to the Servlet specification default of - 30000 (30 seconds).

-
enableLookups -

Set to true if you want calls to - request.getRemoteHost() to perform DNS lookups in - order to return the actual host name of the remote client. Set - to false to skip the DNS lookup and return the IP - address in String form instead (thereby improving performance). - By default, DNS lookups are disabled.

-
maxHeaderCount -

The maximum number of headers in a request that are allowed by the - container. A request that contains more headers than the specified limit - will be rejected. A value of less than 0 means no limit. - If not specified, a default of 100 is used.

-
maxParameterCount -

The maximum number of parameter and value pairs (GET plus POST) which - will be automatically parsed by the container. Parameter and value pairs - beyond this limit will be ignored. A value of less than 0 means no limit. - If not specified, a default of 10000 is used. Note that - FailedRequestFilter filter can be - used to reject requests that hit the limit.

-
maxPostSize -

The maximum size in bytes of the POST which will be handled by - the container FORM URL parameter parsing. The limit can be disabled by - setting this attribute to a value less than zero. If not specified, this - attribute is set to 2097152 (2 megabytes). Note that the - FailedRequestFilter - can be used to reject requests that exceed this limit.

-
maxSavePostSize -

The maximum size in bytes of the POST which will be saved/buffered by - the container during FORM or CLIENT-CERT authentication. For both types - of authentication, the POST will be saved/buffered before the user is - authenticated. For CLIENT-CERT authentication, the POST is buffered for - the duration of the SSL handshake and the buffer emptied when the request - is processed. For FORM authentication the POST is saved whilst the user - is re-directed to the login form and is retained until the user - successfully authenticates or the session associated with the - authentication request expires. The limit can be disabled by setting this - attribute to -1. Setting the attribute to zero will disable the saving of - POST data during authentication. If not specified, this attribute is set - to 4096 (4 kilobytes).

-
parseBodyMethods -

A comma-separated list of HTTP methods for which request - bodies will be parsed for request parameters identically - to POST. This is useful in RESTful applications that want to - support POST-style semantics for PUT requests. - Note that any setting other than POST causes Tomcat - to behave in a way that goes against the intent of the servlet - specification. - The HTTP method TRACE is specifically forbidden here in accordance - with the HTTP specification. - The default is POST

-
port -

The TCP port number on which this Connector - will create a server socket and await incoming connections. Your - operating system will allow only one server application to listen - to a particular port number on a particular IP address. If the special - value of 0 (zero) is used, then Tomcat will select a free port at random - to use for this connector. This is typically only useful in embedded and - testing applications.

-
protocol -

Sets the protocol to handle incoming traffic. To configure an AJP - connector this must be specified. If no value for protocol is provided, - an HTTP connector rather than an AJP connector - will be configured.
- The standard protocol value for an AJP connector is AJP/1.3 - which uses an auto-switching mechanism to select either a Java NIO based - connector or an APR/native based connector. If the - PATH (Windows) or LD_LIBRARY_PATH (on most unix - systems) environment variables contain the Tomcat native library, the - native/APR connector will be used. If the native library cannot be - found, the Java NIO based connector will be used.
- To use an explicit protocol rather than rely on the auto-switching - mechanism described above, the following values may be used:
- org.apache.coyote.ajp.AjpNioProtocol - - non blocking Java NIO connector.
- org.apache.coyote.ajp.AjpNio2Protocol - - non blocking Java NIO2 connector.
- org.apache.coyote.ajp.AjpAprProtocol - - the APR/native connector.
- Custom implementations may also be used.
- Take a look at our Connector - Comparison chart. -

-
proxyName -

If this Connector is being used in a proxy - configuration, configure this attribute to specify the server name - to be returned for calls to request.getServerName(). - See Proxy Support for more - information.

-
proxyPort -

If this Connector is being used in a proxy - configuration, configure this attribute to specify the server port - to be returned for calls to request.getServerPort(). - See Proxy Support for more - information.

-
redirectPort -

If this Connector is supporting non-SSL - requests, and a request is received for which a matching - <security-constraint> requires SSL transport, - Catalina will automatically redirect the request to the port - number specified here.

-
scheme -

Set this attribute to the name of the protocol you wish to have - returned by calls to request.getScheme(). For - example, you would set this attribute to "https" - for an SSL Connector. The default value is "http". -

-
secure -

Set this attribute to true if you wish to have - calls to request.isSecure() to return true - for requests received by this Connector. You would want this on an - SSL Connector or a non SSL connector that is receiving data from a - SSL accelerator, like a crypto card, a SSL appliance or even a webserver. - The default value is false.

-
sendReasonPhrase -

Set this attribute to true if you wish to have - a reason phrase in the response. - The default value is false.

-

Note: This option is deprecated and will be removed - in Tomcat 9. The reason phrase will not be sent.

-
URIEncoding -

This specifies the character encoding used to decode the URI bytes, - after %xx decoding the URL. If not specified, UTF-8 will be used unless - the org.apache.catalina.STRICT_SERVLET_COMPLIANCE - system property is set to true - in which case ISO-8859-1 will be used.

-
useBodyEncodingForURI -

This specifies if the encoding specified in contentType should be used - for URI query parameters, instead of using the URIEncoding. This - setting is present for compatibility with Tomcat 4.1.x, where the - encoding specified in the contentType, or explicitly set using - Request.setCharacterEncoding method was also used for the parameters from - the URL. The default value is false. -

-

Notes: See notes on this attribute in - HTTP Connector documentation.

-
useIPVHosts -

Set this attribute to true to cause Tomcat to use - the IP address passed by the native web server to determine the Host - to send the request to. The default value is false.

-
xpoweredBy -

Set this attribute to true to cause Tomcat to advertise - support for the Servlet specification using the header recommended in the - specification. The default value is false.

-
- -
- -

Standard Implementations

- -

To use AJP, you must specify the protocol attribute (see above).

- -

The standard AJP connectors (NIO, NIO2 and APR/native) all support the - following attributes in addition to the common Connector attributes listed - above.

- -
- Attribute - - Description -
acceptCount -

The maximum queue length for incoming connection requests when - all possible request processing threads are in use. Any requests - received when the queue is full will be refused. The default - value is 100.

-
acceptorThreadCount -

The number of threads to be used to accept connections. Increase this - value on a multi CPU machine, although you would never really need more - than 2. Also, with a lot of non keep alive connections, you - might want to increase this value as well. Default value is - 1.

-
acceptorThreadPriority -

The priority of the acceptor threads. The threads used to accept - new connections. The default value is 5 (the value of the - java.lang.Thread.NORM_PRIORITY constant). See the JavaDoc - for the java.lang.Thread class for more details on what - this priority means.

-
address -

For servers with more than one IP address, this attribute - specifies which address will be used for listening on the specified - port. By default, this port will be used on all IP addresses - associated with the server. A value of 127.0.0.1 - indicates that the Connector will only listen on the loopback - interface.

-
bindOnInit -

Controls when the socket used by the connector is bound. By default it - is bound when the connector is initiated and unbound when the connector is - destroyed. If set to false, the socket will be bound when the - connector is started and unbound when it is stopped.

-
clientCertProvider -

When client certificate information is presented in a form other than - instances of java.security.cert.X509Certificate it needs to - be converted before it can be used and this property controls which JSSE - provider is used to perform the conversion. For example it is used with - the AJP connectors, the HTTP APR connector and - with the - org.apache.catalina.valves.SSLValve.If not specified, the default - provider will be used.

-
connectionLinger -

The number of seconds during which the sockets used by this - Connector will linger when they are closed. The default - value is -1 which disables socket linger.

-
connectionTimeout -

The number of milliseconds this Connector will wait, - after accepting a connection, for the request URI line to be - presented. The default value for AJP protocol connectors - is -1 (i.e. infinite).

-
executor -

A reference to the name in an Executor - element. If this attribute is set, and the named executor exists, the - connector will use the executor, and all the other thread attributes will - be ignored. Note that if a shared executor is not specified for a - connector then the connector will use a private, internal executor to - provide the thread pool.

-
executorTerminationTimeoutMillis -

The time that the private internal executor will wait for request - processing threads to terminate before continuing with the process of - stopping the connector. If not set, the default is 5000 (5 - seconds).

-
keepAliveTimeout -

The number of milliseconds this Connector will wait for - another AJP request before closing the connection. - The default value is to use the value that has been set for the - connectionTimeout attribute.

-
maxConnections -

The maximum number of connections that the server will accept and - process at any given time. When this number has been reached, the server - will accept, but not process, one further connection. This additional - connection be blocked until the number of connections being processed - falls below maxConnections at which point the server will - start accepting and processing new connections again. Note that once the - limit has been reached, the operating system may still accept connections - based on the acceptCount setting. The default value varies by - connector type. For NIO and NIO2 the default is 10000. - For APR/native, the default is 8192.

-

Note that for APR/native on Windows, the configured value will be - reduced to the highest multiple of 1024 that is less than or equal to - maxConnections. This is done for performance reasons.
- If set to a value of -1, the maxConnections feature is disabled - and connections are not counted.

-
maxCookieCount -

The maximum number of cookies that are permitted for a request. A value - of less than zero means no limit. If not specified, a default value of 200 - will be used.

-
maxThreads -

The maximum number of request processing threads to be created - by this Connector, which therefore determines the - maximum number of simultaneous requests that can be handled. If - not specified, this attribute is set to 200. If an executor is associated - with this connector, this attribute is ignored as the connector will - execute tasks using the executor rather than an internal thread pool. Note - that if an executor is configured any value set for this attribute will be - recorded correctly but it will be reported (e.g. via JMX) as - -1 to make clear that it is not used.

-
minSpareThreads -

The minimum number of threads always kept running. If not specified, - the default of 10 is used. If an executor is associated - with this connector, this attribute is ignored as the connector will - execute tasks using the executor rather than an internal thread pool. Note - that if an executor is configured any value set for this attribute will be - recorded correctly but it will be reported (e.g. via JMX) as - -1 to make clear that it is not used.

-
packetSize -

This attribute sets the maximum AJP packet size in Bytes. The maximum - value is 65536. It should be the same as the max_packet_size - directive configured for mod_jk. Normally it is not necessary to change - the maximum packet size. Problems with the default value have been - reported when sending certificates or certificate chains. The default - value is 8192. If set to less than 8192 then the setting will ignored and - the default value of 8192 used.

-
processorCache -

The protocol handler caches Processor objects to speed up performance. - This setting dictates how many of these objects get cached. - -1 means unlimited, default is 200. If not using - Servlet 3.0 asynchronous processing, a good default is to use the same as - the maxThreads setting. If using Servlet 3.0 asynchronous processing, a - good default is to use the larger of maxThreads and the maximum number of - expected concurrent requests (synchronous and asynchronous).

-
requiredSecret -

Only requests from workers with this secret keyword will be accepted. -

-
tcpNoDelay -

If set to true, the TCP_NO_DELAY option will be - set on the server socket, which improves performance under most - circumstances. This is set to true by default.

-
threadPriority -

The priority of the request processing threads within the JVM. - The default value is 5 (the value of the - java.lang.Thread.NORM_PRIORITY constant). See the JavaDoc - for the java.lang.Thread class for more details on what - this priority means.If an executor is associated - with this connector, this attribute is ignored as the connector will - execute tasks using the executor rather than an internal thread pool. Note - that if an executor is configured any value set for this attribute will be - recorded correctly but it will be reported (e.g. via JMX) as - -1 to make clear that it is not used.

-
tomcatAuthentication -

If set to true, the authentication will be done in Tomcat. - Otherwise, the authenticated principal will be propagated from the native - webserver and used for authorization in Tomcat. Note that this principal - will have no roles associated with it. - The default value is true. If - tomcatAuthorization is set to true this - attribute has no effect.

-
tomcatAuthorization -

If set to true, the authenticated principal will be - propagated from the native webserver and considered already authenticated - in Tomcat. If the web application has one or more security constraints, - authorization will then be performed by Tomcat and roles assigned to the - authenticated principal. If the appropriate Tomcat Realm for the request - does not recognise the provided user name, a Principal will be still be - created but it will have no roles. The default value is - false.

-
- -
- -

Java TCP socket attributes

- -

The NIO and NIO2 implementation support the following Java TCP socket - attributes in addition to the common Connector and HTTP attributes listed - above.

- -
- Attribute - - Description -
socket.rxBufSize -

(int)The socket receive buffer (SO_RCVBUF) size in bytes. JVM default - used if not set.

-
socket.txBufSize -

(int)The socket send buffer (SO_SNDBUF) size in bytes. JVM default - used if not set.

-
socket.tcpNoDelay -

(bool)This is equivalent to standard attribute - tcpNoDelay.

-
socket.soKeepAlive -

(bool)Boolean value for the socket's keep alive setting - (SO_KEEPALIVE). JVM default used if not set.

-
socket.ooBInline -

(bool)Boolean value for the socket OOBINLINE setting. JVM default - used if not set.

-
socket.soReuseAddress -

(bool)Boolean value for the sockets reuse address option - (SO_REUSEADDR). JVM default used if not set.

-
socket.soLingerOn -

(bool)Boolean value for the sockets so linger option (SO_LINGER). - A value for the standard attribute connectionLinger - that is >=0 is equivalent to setting this to true. - A value for the standard attribute connectionLinger - that is <0 is equivalent to setting this to false. - Both this attribute and soLingerTime must be set else the - JVM defaults will be used for both.

-
socket.soLingerTime -

(int)Value in seconds for the sockets so linger option (SO_LINGER). - This is equivalent to standard attribute - connectionLinger. - Both this attribute and soLingerOn must be set else the - JVM defaults will be used for both.

-
socket.soTimeout -

This is equivalent to standard attribute - connectionTimeout.

-
socket.performanceConnectionTime -

(int)The first value for the performance settings. See - Socket Performance Options - All three performance attributes must be set else the JVM defaults will - be used for all three.

-
socket.performanceLatency -

(int)The second value for the performance settings. See - Socket Performance Options - All three performance attributes must be set else the JVM defaults will - be used for all three.

-
socket.performanceBandwidth -

(int)The third value for the performance settings. See - Socket Performance Options - All three performance attributes must be set else the JVM defaults will - be used for all three.

-
socket.unlockTimeout -

(int) The timeout for a socket unlock. When a connector is stopped, it will try to release the acceptor thread by opening a connector to itself. - The default value is 250 and the value is in milliseconds

-
-
- -

NIO specific configuration

- -

The following attributes are specific to the NIO connector.

- -
- Attribute - - Description -
socket.directBuffer -

(bool)Boolean value, whether to use direct ByteBuffers or java mapped - ByteBuffers. Default is false.
- When you are using direct buffers, make sure you allocate the - appropriate amount of memory for the direct memory space. On Sun's JDK - that would be something like -XX:MaxDirectMemorySize=256m. -

-
socket.appReadBufSize -

(int)Each connection that is opened up in Tomcat get associated with - a read ByteBuffer. This attribute controls the size of this buffer. By - default this read buffer is sized at 8192 bytes. For lower - concurrency, you can increase this to buffer more data. For an extreme - amount of keep alive connections, decrease this number or increase your - heap size.

-
socket.appWriteBufSize -

(int)Each connection that is opened up in Tomcat get associated with - a write ByteBuffer. This attribute controls the size of this buffer. By - default this write buffer is sized at 8192 bytes. For low - concurrency you can increase this to buffer more response data. For an - extreme amount of keep alive connections, decrease this number or - increase your heap size.
- The default value here is pretty low, you should up it if you are not - dealing with tens of thousands concurrent connections.

-
socket.bufferPool -

(int)The NIO connector uses a class called NioChannel that holds - elements linked to a socket. To reduce garbage collection, the NIO - connector caches these channel objects. This value specifies the size of - this cache. The default value is 500, and represents that - the cache will hold 500 NioChannel objects. Other values are - -1 for unlimited cache and 0 for no cache.

-
socket.bufferPoolSize -

(int)The NioChannel pool can also be size based, not used object - based. The size is calculated as follows:
- NioChannel - buffer size = read buffer size + write buffer size
- SecureNioChannel buffer size = application read buffer size + - application write buffer size + network read buffer size + - network write buffer size
- The value is in bytes, the default value is 1024*1024*100 - (100MB).

-
socket.processorCache -

(int)Tomcat will cache SocketProcessor objects to reduce garbage - collection. The integer value specifies how many objects to keep in the - cache at most. The default is 500. Other values are - -1 for unlimited cache and 0 for no cache.

-
socket.keyCache -

(int)Tomcat will cache KeyAttachment objects to reduce garbage - collection. The integer value specifies how many objects to keep in the - cache at most. The default is 500. Other values are - -1 for unlimited cache and 0 for no cache.

-
socket.eventCache -

(int)Tomcat will cache PollerEvent objects to reduce garbage - collection. The integer value specifies how many objects to keep in the - cache at most. The default is 500. Other values are - -1 for unlimited cache and 0 for no cache.

-
selectorPool.maxSelectors -

(int)The max selectors to be used in the pool, to reduce selector - contention. Use this option when the command line - org.apache.tomcat.util.net.NioSelectorShared value is set - to false. Default value is 200.

-
selectorPool.maxSpareSelectors -

(int)The max spare selectors to be used in the pool, to reduce - selector contention. When a selector is returned to the pool, the system - can decide to keep it or let it be GC'd. Use this option when the - command line org.apache.tomcat.util.net.NioSelectorShared - value is set to false. Default value is -1 (unlimited).

-
command-line-options -

The following command line options are available for the NIO - connector:
- -Dorg.apache.tomcat.util.net.NioSelectorShared=true|false - - default is true. Set this value to false if you wish to - use a selector for each thread. When you set it to false, you can - control the size of the pool of selectors by using the - selectorPool.maxSelectors attribute.

-
-
- -

NIO2 specific configuration

- -

The following attributes are specific to the NIO2 connector.

- -
- Attribute - - Description -
useCaches -

(bool)Use this attribute to enable or disable object caching to - reduce the amount of GC objects produced. - The default value is false.

-
socket.directBuffer -

(bool)Boolean value, whether to use direct ByteBuffers or java mapped - ByteBuffers. Default is false.
- When you are using direct buffers, make sure you allocate the - appropriate amount of memory for the direct memory space. On Sun's JDK - that would be something like -XX:MaxDirectMemorySize=256m. -

-
socket.appReadBufSize -

(int)Each connection that is opened up in Tomcat get associated with - a read ByteBuffer. This attribute controls the size of this buffer. By - default this read buffer is sized at 8192 bytes. For lower - concurrency, you can increase this to buffer more data. For an extreme - amount of keep alive connections, decrease this number or increase your - heap size.

-
socket.appWriteBufSize -

(int)Each connection that is opened up in Tomcat get associated with - a write ByteBuffer. This attribute controls the size of this buffer. By - default this write buffer is sized at 8192 bytes. For low - concurrency you can increase this to buffer more response data. For an - extreme amount of keep alive connections, decrease this number or - increase your heap size.
- The default value here is pretty low, you should up it if you are not - dealing with tens of thousands concurrent connections.

-
socket.bufferPoolSize -

(int)The NIO2 connector uses a class called Nio2Channel that holds - elements linked to a socket. To reduce garbage collection, the NIO - connector caches these channel objects. This value specifies the size of - this cache. The default value is 500, and represents that - the cache will hold 500 Nio2Channel objects. Other values are - -1 for unlimited cache and 0 for no cache.

-
socket.processorCache -

(int)Tomcat will cache SocketProcessor objects to reduce garbage - collection. The integer value specifies how many objects to keep in the - cache at most. The default is 500. Other values are - -1 for unlimited cache and 0 for no cache.

-
-
- -

APR/native specific configuration

- -

The APR/native implementation supports the following attributes in - addition to the common Connector and AJP attributes listed above.

- -
- Attribute - - Description -
pollTime -

Duration of a poll call in microseconds. Lowering this value will - slightly decrease latency of connections being kept alive in some cases - , but will use more CPU as more poll calls are being made. The default - value is 2000 (2ms). -

-
- -
- -

Nested Components

- -

None at this time.

- -

Special Features

- -

Proxy Support

- -

The proxyName and proxyPort attributes can - be used when Tomcat is run behind a proxy server. These attributes - modify the values returned to web applications that call the - request.getServerName() and request.getServerPort() - methods, which are often used to construct absolute URLs for redirects. - Without configuring these attributes, the values returned would reflect - the server name and port on which the connection from the proxy server - was received, rather than the server name and port to whom the client - directed the original request.

- -

For more information, see the - Proxy Support HOW-TO.

- -
- -

Connector Comparison

- -

Below is a small chart that shows how the connectors differ.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Java Nio Connector
NIO
Java Nio2 Connector
NIO2
APR/native Connector
APR
ClassnameAjpNioProtocolAjpNio2ProtocolAjpAprProtocol
Tomcat Version7.x onwards8.x onwards5.5.x onwards
Support PollingYESYESYES
Polling SizemaxConnectionsmaxConnectionsmaxConnections
Read Request HeadersBlockingBlockingBlocking
Read Request BodyBlockingBlockingBlocking
Write Response Headers and BodyBlockingBlockingBlocking
Wait for next RequestNon BlockingNon BlockingNon Blocking
Max ConnectionsmaxConnectionsmaxConnectionsmaxConnections
- -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/automatic-deployment.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/automatic-deployment.html deleted file mode 100644 index 47b1ed42a58e6c5bb9b1e22da668022301c7b7b5..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/automatic-deployment.html +++ /dev/null @@ -1,540 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - Automatic Deployment - Use cases

Automatic Deployment - Use cases

Table of Contents

Introduction

- -

This page defines the expected behaviour of the automatic deployer in many - typical use cases. This is a complex area of Tomcat's functionality. - While any difference between this document and Tomcat's behaviour is a - bug, the fix may be to change this document, Tomcat's behaviour or - both.

- -

Key

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TermDescription
XMLAn XML configuration file located in the Host's - configBase. It must contain a single <Context> element - and may contain optional nested elements. It does not define an - explicit docBase attribute. It represents a single web - application. It is often referred to as a context.xml file.
XML+EWAn XML configuration file located in the Host's - configBase. It must contain a single <Context> element - and may contain optional nested elements. It includes an explicit - docBase attribute that points to an external WAR. It - represents a single web application. It is often referred to as a - context.xml file.
XML+EDAn XML configuration file located in the Host's - configBase. It must contain a single <Context> element - and may contain optional nested elements. It includes an explicit - docBase attribute that points to an external directory. It - represents a single web application. It is often referred to as a - context.xml file.
WARA WAR file located in the Host's appBase. The WAR does - not include an embedded context.xml file.
WAR+XMLA WAR file located in the Host's appBase. The WAR does - include an embedded context.xml file.
DIRA directory located in the Host's appBase. The directory - does not include an embedded context.xml file.
DIR+XMLA directory located in the Host's appBase. The directory - does include an embedded context.xml file.
redeployThe Context object that represents the web application is destroyed - and a new Context object is created. If present and permitted by the - configuration, this new Context object is created by parsing the - context.xml file. The web.xml file is parsed during the application - start process. Any sessions stored in the standard Manager in the - default configuration will not be persisted. Any requests to the web - application during the redeploy will be handled as if the web - application is not deployed.
reloadThe Context object that represents the web application is stopped and - then started. The web.xml file is parsed during the application start - process. Any sessions stored in the standard Manager in the default - configuration will not be persisted. Any requests to the web - application during the reload will be held until the reload completes - at which point they will continue using the reloaded web application. -
- -

New files

- -

This section describes Tomcat's behaviour when the automatic - deployment process discovers a new web application.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Starting artifact(s)Configuration SettingsResult
deployXMLcopyXMLunpackWARsXMLWARDIRNotes
XMLeithereithereitherYNN1, 2, 3
XML+EWeithereitherfalseYNN1
XML+EWeithereithertrueYNY1
XML+EDeithereithereitherYNN1, 2
WAR+XMLfalseeitherfalseNYN4
WAR+XMLfalseeithertrueNYY4
WAR+XMLtruefalsefalseNYN
WAR+XMLtruefalsetrueNYY
WAR+XMLtruetruefalseYYN
WAR+XMLtruetruetrueYYY
WAReithereitherfalseNYN
WAReithereithertrueNYY
DIR+XMLfalseeithereitherNNY4
DIR+XMLtruefalseeitherNNY
DIR+XMLtruetrueeitherYNY
DIRfalseeithereitherNNY
- -

Deleted files

- -

This section describes Tomcat's behaviour when the automatic - deployment process detects that a web application file has been deleted.

- -

When a file is deleted or modified any redeploy resources that are listed - after the modified/deleted resource are themselves deleted (and possibly - re-created). The order of redeploy resources is:

- -
    -
  1. WAR
  2. -
  3. DIR
  4. -
  5. XML
  6. -
  7. global resources
  8. -
- -

There are some exceptions to the deletion rule above:

- -
    -
  • global resources are never deleted
  • -
  • external resources are never deleted
  • -
  • if the WAR or DIR has been modified then the XML file is only deleted if - copyXML is true and deployXML is - true
  • -
- -

In the following table:

- -
    -
  • '-' means "unchanged from not present". i.e. the artifact wasn't present - before the change and isn't present after it either. '-' rather than 'N' - is used to focus attention on what changes.
  • -
  • 'R' means that the directory is re-created by expanding the WAR file. - This will only happen if unpackWARs is true.
  • -
  • 'XW' means that the if the WAR contains a META-INF/context.xml file it - will be extracted and placed in the Host's configBase. - This only happens if copyXML is true and - deployXML is true.
  • -
  • 'XD' means that the if the directory contains a META-INF/context.xml - file it will be copied to the Host's configBase. This only - happens if copyXML is true and deployXML - is true.
  • -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Artifacts presentArtifact removedArtifacts remaining
XMLWARDIRXMLWARDIRNotes
NNYDIR--N
NYNWAR-N-
NYYDIR-YR
NYYWAR-NN
YNNXMLN--
YNYDIRN-N5
YNYXMLXD-Y
YYNWARNN-5
YYNXMLXWY-
YYYDIRXWYR
YYYWARNNN
YYYXMLXWYY
YY (external)NWARYN-3
YY (external)NXMLNY (external)-6
YNY (external)DIRY-N3
YNY (external)XMLN-Y (external)6
YY (external)YDIRYY (external)R
YY (external)YWARYNN3
YY (external)YXMLNY (external)N6
- -

Modified files

- -

This section describes Tomcat's behaviour when the automatic - deployment process detects that a web application file has been modified.

- -

In the following table:

- -
    -
  • '-' means "unchanged from not present". i.e. the artifact wasn't present - before the change and isn't present after it either. '-' rather than 'N' - is used to focus attention on what changes.
  • -
  • 'M' means that the artifact has been modified.
  • -
  • 'R' means that the directory is deleted and re-created by expanding the - WAR file. This will only happen if unpackWARs is - true.
  • -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Artifacts presentArtifact modifiedArtifacts remaining
XMLWARDIRXMLWARDIRAction
NNYDIR--MNone
NYNWAR-M-Redeploy
NYYDIR-YMNone
NYYWAR-MRRedeploy
YNNXMLM--Redeploy
YNYDIRY-MNone
YNYXMLM-YRedeploy
YYNWARYM-Reload
YYNXMLMY-Redeploy
YYYDIRYYMNone
YYYWARYMRReload
YYYXMLMYYRedeploy
YY(external)NWARYM(external)-Reload
YY(external)NXMLMY(external)-Redeploy
YNY(external)DIRY-M(external)None
YNY(external)XMLM-Y(external)Redeploy
YY(external)YDIRYY(external)MNone
YY(external)YWARYM(external)RReload
YY(external)YXMLMY(external)YRedeploy
- -

Added files

- -

This is treated as if the added file has been modified with the following - additional actions:

- -
    -
  • If a WAR is added, any DIR is removed and may be recreated depending on - unpackWARs.
  • -
  • If an XML file is added that refers to an external docBase any - WAR or DIR in the appBase will be removed. The DIR may be recreated if - the external resource is a WAR and unpackWARs is true.
  • -
  • If a DIR is added when a WAR already exists and unpackWARs is - false, the DIR will be ignored but a warning will be - logged when the DIR is first detected. If the WAR is removed, the DIR - will be left and may be deployed via automatic deployment.
  • -
  • If a WAR is added to the appBase when an external WAR already - exists, the WAR in the appBase will be ignored but a warning - will be logged when the WAR in the appBase is first detected. - If the external WAR is removed, the WAR in the appBase will be - left and may be deployed via automatic deployment.
  • -
  • If an XML file is added to the META-INF directory of an application - deployed from that DIR, the application will always be redeployed. The - result will be the same as for a new deployment.
  • -
- -

Notes

- -
    -
  1. deployXML and copyXML are ignored since an XML file - was discovered in the configBase.
  2. -
  3. unpackWARs is ignored since there is no WAR file.
  4. -
  5. The context will fail to start because there is no content in the - expected docBase.
  6. -
  7. The web application fails to deploy because it contains an embedded - META-INF/context.xml, deployXML is false and an - XML has not been provided in the configBase.
  8. -
  9. The XML file is only deleted if copyXML is true - and deployXML is true.
  10. -
  11. Although the external resource is still present, the web application is - fully undeployed as Tomcat has no knowledge of the external resource. -
  12. -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-channel.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-channel.html deleted file mode 100644 index e02e2618c5f6772ea9b531cefebfb6293142aa4d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-channel.html +++ /dev/null @@ -1,140 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Cluster Channel object

The Cluster Channel object

Table of Contents

Introduction

- The cluster channel is the main component of a small framework we've nicknamed Apache Tribes.
- The channel manages a set of sub components and together they create a group communication framework.
- This framework is then used internally by the components that need to send messages between different Tomcat instances. -
- A few examples of these components would be the SimpleTcpCluster that does the messaging for the DeltaManager, - or the BackupManager that uses a different replication strategy. The ReplicatedContext object does also - use the channel object to communicate context attribute changes. -

Nested Components

-

Channel/Membership:
- The Membership component is responsible for auto discovering new nodes in the cluster - and also to provide for notifications for any nodes that have not responded with a heartbeat. - The default implementation uses multicast.
- In the membership component you configure how your nodes, aka. members, are to be discovered and/or - divided up. - You can always find out more about Apache Tribes -

-

Channel/Sender:
- The Sender component manages all outbound connections and data messages that are sent - over the network from one node to another. - This component allows messages to be sent in parallel. - The default implementation uses TCP client sockets, and socket tuning for outgoing messages are - configured here.
- You can always find out more about Apache Tribes -

-

Channel/Sender/Transport:
- The Transport component is the bottom IO layer for the sender component. - The default implementation uses non-blocking TCP client sockets.
- You can always find out more about Apache Tribes -

-

Channel/Receiver:
- The receiver component listens for messages from other nodes. - Here you will configure the cluster thread pool, as it will dispatch incoming - messages to a thread pool for faster processing. - The default implementation uses non-blocking TCP server sockets.
- You can always find out more about Apache Tribes -

-

Channel/Interceptor:
- The channel will send messages through an interceptor stack. Because of this, you have the ability to - customize the way messages are sent and received, and even how membership is handled.
- You can always find out more about Apache Tribes -

-

Attributes

- -

Common Attributes

- -
- Attribute - - Description -
className - The default value here is org.apache.catalina.tribes.group.GroupChannel and is - currently the only implementation available. -
- - -
- -

org.apache.catalina.tribes.group.GroupChannel Attributes

- -
- Attribute - - Description -
heartbeat - Flag whether the channel manages its own heartbeat. - If set to true, the channel start a local thread for the heart beat. - If set this flag to false, you must set SimpleTcpCluster#heartbeatBackgroundEnabled - to true. default value is true. -
heartbeatSleeptime - If heartbeat == true, specifies the interval of heartbeat thread in milliseconds. - The default is 5000 (5 seconds). -
optionCheck - If set to true, the GroupChannel will check the option flags that each - interceptor is using. Reports an error if two interceptor share the same - flag. The default is false. -
jmxEnabled - Flag whether the channel components register with JMX or not. - The default value is true. -
jmxDomain - if jmxEnabled set to true, specifies the jmx domain which - this channel should be registered. The ClusterChannel is used as the - default value. -
jmxPrefix - if jmxEnabled set to true, specifies the jmx prefix which - will be used with channel ObjectName. -
- -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-deployer.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-deployer.html deleted file mode 100644 index 36ae4f92bbc83de535f0b21ec93f4d275d7ba9eb..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-deployer.html +++ /dev/null @@ -1,107 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Cluster Deployer object

The Cluster Deployer object

Table of Contents

Introduction

-

The Farm War Deployer can deploy and undeploy web applications on the other - nodes in the cluster.

-

Note: FarmWarDeployer can be configured at host level - cluster only. -

-

org.apache.catalina.ha.deploy.FarmWarDeployer

- -

Attributes

- -
- Attribute - - Description -
className - The cluster deployer class, currently only one is available, - org.apache.catalina.ha.deploy.FarmWarDeployer. -
deployDir - Deployment directory. This is the pathname of a directory where deploy - the web applications. You may specify an absolute pathname, or a - pathname that is relative to the $CATALINA_BASE directory. In the - current implementation, this attribute must be the same value as the - Host's appBase. -
tempDir - The temporaryDirectory to store binary data when downloading a war from - the cluster. You may specify an absolute pathname, or a pathname that is - relative to the $CATALINA_BASE directory. -
watchDir - This is the pathname of a directory where watch for changes(add/modify/remove) - of web applications. You may specify an absolute pathname, or a pathname - that is relative to the $CATALINA_BASE directory. - Note: if watchEnabled is false, this - attribute will have no effect. -
watchEnabled - Set to true if you want to watch for changes of web applications. - Only when this attribute set to true, you can trigger a deploy/undeploy - of web applications. The flag's value defaults to false. -
processDeployFrequency - Frequency of the Farm watchDir check. Cluster wide deployment will be - done once for the specified amount of backgroundProcess calls (ie, the - lower the amount, the most often the checks will occur). The minimum - value is 1, and the default value is 2. - Note: if watchEnabled is false, this - attribute will have no effect. -
maxValidTime - The maximum valid time(in seconds) of FileMessageFactory. - FileMessageFactory will be removed immediately after receiving the - complete WAR file but when failing to receive a FileMessage which was - sent dividing, FileMessageFactory will leak without being removed. - FileMessageFactory that is leaking will be automatically removed after - maxValidTime. If a negative value specified, FileMessageFactory will - never be removed. If the attribute is not provided, a default of 300 - seconds (5 minutes) is used. -
- -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-interceptor.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-interceptor.html deleted file mode 100644 index 6fbb7bb95e773aa7548f512949891a83fa6c4a75..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-interceptor.html +++ /dev/null @@ -1,262 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Channel Interceptor object

The Channel Interceptor object

Table of Contents

Introduction

-

- Apache Tribes supports an interceptor architecture to intercept both messages and membership notifications. - This architecture allows decoupling of logic and opens the way for some very kewl feature add ons. -

-

Available Interceptors

-
    -
  • org.apache.catalina.tribes.group.interceptors.TcpFailureDetector
  • -
  • org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor
  • -
  • org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor
  • -
  • org.apache.catalina.tribes.group.interceptors.NonBlockingCoordinator
  • -
  • org.apache.catalina.tribes.group.interceptors.OrderInterceptor
  • -
  • org.apache.catalina.tribes.group.interceptors.SimpleCoordinator
  • -
  • org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor
  • -
  • org.apache.catalina.tribes.group.interceptors.TwoPhaseCommitInterceptor
  • -
  • org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor
  • -
  • org.apache.catalina.tribes.group.interceptors.FragmentationInterceptor
  • -
  • org.apache.catalina.tribes.group.interceptors.GzipInterceptor
  • -
  • org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor
  • -
-

Static Membership

-

- In addition to dynamic discovery, Apache Tribes also supports static membership, with membership verification. - To achieve this add the org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor - after the org.apache.catalina.tribes.group.interceptors.TcpFailureDetector interceptor. - Inside the StaticMembershipInterceptor you can add the static members you wish to have. - The TcpFailureDetector will do a health check on the static members,and also monitor them for crashes - so they will have the same level of notification mechanism as the members that are automatically discovered.

-
     <Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">
-       <LocalMember className="org.apache.catalina.tribes.membership.StaticMember"
-                  domain="staging-cluster"
-                  uniqueId="{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,1}"/>
-       <Member className="org.apache.catalina.tribes.membership.StaticMember"
-                  port="5678"
-                  securePort="-1"
-                  host="tomcat01.mydomain.com"
-                  domain="staging-cluster"
-                  uniqueId="{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}"/>
-     </Interceptor>
-

Attributes

- -

Common Attributes

-
- Attribute - - Description -
className - Required, as there is no default -
optionFlag - If you want the interceptor to trigger on certain message depending on the message's option flag, - you can setup the interceptors flag here. - The default value is 0, meaning this interceptor will trigger on all messages. -
-
- -

org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor Attributes

-
- Attribute - - Description -
domain - The logical cluster domain that this Interceptor accepts. - Two different type of values are possible:
- 1. Regular string values like "staging-domain" or "tomcat-cluster" will be converted into bytes - using ISO-8859-1 encoding.
- 2. byte array in string form, for example {216,123,12,3}
-
logInterval - This value indicates the interval for logging for messages from different domains. - The default is 100, which means that to log per 100 messages. -
-
-

org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor Attributes

-
- Attribute - - Description -
optionFlag - The default and hard coded value is 8 (org.apache.catalina.tribes.Channel.SEND_OPTIONS_ASYNCHRONOUS). - The dispatcher will trigger on this value only, as it is predefined by Tribes. -
alwaysSend - What behavior should be executed when the dispatch queue is full. If true (default), then the message is - is sent synchronously, if false an error is thrown. -
maxQueueSize - Size in bytes of the dispatch queue, the default value is 1024*1024*64 (64MB) sets the maximum queue size for the dispatch queue - if the queue fills up, one can trigger the behavior, if alwaysSend is set to true, the message will be sent synchronously - if the flag is false, an error is thrown -
maxThreads - The maximum number of threads in this pool, default is 10. -
maxSpareThreads - The number of threads to keep in the pool, default is 2. -
keepAliveTime - Maximum number of milliseconds of until Idle thread terminates. Default value is 5000(5 seconds). -
-
-

org.apache.catalina.tribes.group.interceptors.TcpFailureDetector Attributes

-
- Attribute - - Description -
connectTimeout - Specifies the timeout, in milliseconds, to use when attempting a TCP connection - to the suspect node. Default is 1000. -
performSendTest - If true is set, send a test message to the suspect node. Default is true. -
performReadTest - If true is set, read the response of the test message that sent. Default is false. - Note: if performSendTest is false, this attribute will have no effect. -
readTestTimeout - Specifies the timeout, in milliseconds, to use when performing a read test - to the suspicious node. Default is 5000. -
removeSuspectsTimeout - The maximum time(in seconds) for remove from removeSuspects. Member of - removeSuspects will be automatically removed after removeSuspectsTimeout. - If a negative value specified, the removeSuspects members never be - removed until disappeared really. If the attribute is not provided, - a default of 300 seconds (5 minutes) is used. -
-
-

org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor Attributes

-
- Attribute - - Description -
interval - If useThread == true, defines the interval of sending a ping message. - default is 1000 ms. -
useThread - Flag of whether to start a thread for sending a ping message. - If set to true, this interceptor will start a local thread for sending a ping message. - if set to false, channel heartbeat will send a ping message. - default is false. -
-
-

org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor Attributes

-
- Attribute - - Description -
interval - Defines the interval in number of messages when we are to report the throughput statistics. - The report is logged to the org.apache.juli.logging.LogFactory.getLog(ThroughputInterceptor.class) - logger under the INFO level. - Default value is to report every 10000 messages. -
-
-

Nested Components

- -

StaticMember Attributes

-

LocalMember:
- Static member that is the local member of the static cluster group. -

-
- Attribute - - Description -
className - Only one implementation available:org.apache.catalina.tribes.membership.StaticMember -
port - There is no need to set. - The value of this attribute inherits from the cluster receiver setting. -
securePort - There is no need to set. - The value of this attribute inherits from the cluster receiver setting. -
host - There is no need to set. - The value of this attribute inherits from the cluster receiver setting. -
domain - The logical cluster domain for that this static member listens for cluster messages. - Two different type of values are possible:
- 1. Regular string values like "staging-domain" or "tomcat-cluster" will be converted into bytes - using ISO-8859-1 encoding. - 2. byte array in string form, for example {216,123,12,3}
-
uniqueId - A universally uniqueId for this static member. - The values must be 16 bytes in the following form:
- 1. byte array in string form, for example {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}
-
- -

Member:
- Static member that add to the static cluster group. -

-
- Attribute - - Description -
className - Only one implementation available:org.apache.catalina.tribes.membership.StaticMember -
port - The port that this static member listens to for cluster messages -
securePort - The secure port this static member listens to for encrypted cluster messages - default value is -1, this value means the member is not listening on a secure port -
host - The host (or network interface) that this static member listens for cluster messages. - Three different type of values are possible:
- 1. IP address in the form of "216.123.1.23"
- 2. Hostnames like "tomcat01.mydomain.com" or "tomcat01" as long as they resolve correctly
- 3. byte array in string form, for example {216,123,12,3}
-
domain - The logical cluster domain for that this static member listens for cluster messages. - Two different type of values are possible:
- 1. Regular string values like "staging-domain" or "tomcat-cluster" will be converted into bytes - using ISO-8859-1 encoding.
- 2. byte array in string form, for example {216,123,12,3}
-
uniqueId - A universally uniqueId for this static member. - The values must be 16 bytes in the following form:
- 1. byte array in string form, for example {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}
-
-
- - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-listener.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-listener.html deleted file mode 100644 index 411fe2b5479e514b216bf7dfc9e34acfb1ad10d3..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-listener.html +++ /dev/null @@ -1,77 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The ClusterListener object

The ClusterListener object

Table of Contents

Introduction

-

- The org.apache.catalina.ha.ClusterListener base class - lets you listen in on messages that are received by the Cluster component. -

- -

org.apache.catalina.ha.session.ClusterSessionListener

-

- When using the DeltaManager, the messages are received by the Cluster object and are propagated to the - to the manager through this listener. -

-

Attributes

- -

Common Attributes

- -
- Attribute - - Description -
className - -
- - -
- - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-manager.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-manager.html deleted file mode 100644 index 3a5d9cd998244661911c0c02dd5b55223fe1d3c1..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-manager.html +++ /dev/null @@ -1,283 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The ClusterManager object

The ClusterManager object

Table of Contents

Introduction

-

A cluster manager is an extension to Tomcat's session manager interface, - org.apache.catalina.Manager. - A cluster manager must implement the - org.apache.catalina.ha.ClusterManager and is solely responsible - for how the session is replicated.
- There are currently two different managers, the - org.apache.catalina.ha.session.DeltaManager replicates deltas of - session data to all members in the cluster. This implementation is proven and - works very well, but has a limitation as it requires the cluster members to be - homogeneous, all nodes must deploy the same applications and be exact - replicas. The org.apache.catalina.ha.session.BackupManager also - replicates deltas but only to one backup node. The location of the backup node - is known to all nodes in the cluster. It also supports heterogeneous - deployments, so the manager knows at what locations the web application is - deployed.

-

The <Manager>

-

The <Manager> element defined inside the - <Cluster> element is the template defined for all web - applications that are marked <distributable/> in their - web.xml file. However, you can still override the manager - implementation on a per web application basis, by putting the - <Manager> inside the <Context> element - either in the context.xml file or the - server.xml file.

-

Attributes

-

Common Attributes

-
- Attribute - - Description -
className -
name - The name of this cluster manager, the name is used to identify a - session manager on a node. The name might get modified by the - Cluster element to make it unique in the container. -
notifyListenersOnReplication - Set to true if you wish to have session listeners notified - when session attributes are being replicated or removed across Tomcat - nodes in the cluster. -
processExpiresFrequency -

Frequency of the session expiration, and related manager operations. - Manager operations will be done once for the specified amount of - backgroundProcess calls (i.e., the lower the amount, the more often the - checks will occur). The minimum value is 1, and the default value is 6. -

-
secureRandomClass -

Name of the Java class that extends - java.security.SecureRandom to use to generate session IDs. - If not specified, the default value is - java.security.SecureRandom.

-
secureRandomProvider -

Name of the provider to use to create the - java.security.SecureRandom instances that generate session - IDs. If an invalid algorithm and/or provider is specified, the Manager - will use the platform default provider and the default algorithm. If not - specified, the platform default provider will be used.

-
secureRandomAlgorithm -

Name of the algorithm to use to create the - java.security.SecureRandom instances that generate session - IDs. If an invalid algorithm and/or provider is specified, the Manager - will use the platform default provider and the default algorithm. If not - specified, the default algorithm of SHA1PRNG will be used. If the - default algorithm is not supported, the platform default will be used. - To specify that the platform default should be used, do not set the - secureRandomProvider attribute and set this attribute to the empty - string.

-
recordAllActions -

Flag whether send all actions for session across Tomcat cluster - nodes. If set to false, if already done something to the same attribute, - make sure don't send multiple actions across Tomcat cluster nodes. - In that case, sends only the actions that have been added at last. - Default is false.

-
-
-

org.apache.catalina.ha.session.DeltaManager Attributes

-
- Attribute - - Description -
expireSessionsOnShutdown - When a web application is being shutdown, Tomcat issues an expire call - to each session to notify all the listeners. If you wish for all - sessions to expire on all nodes when a shutdown occurs on one node, set - this value to true. - Default value is false. -
maxActiveSessions - The maximum number of active sessions that will be created by this - Manager, or -1 (the default) for no limit. For this manager, all - sessions are counted as active sessions irrespective if whether or not - the current node is the primary node for the session. -
notifySessionListenersOnReplication - Set to true if you wish to have session listeners notified - when sessions are created and expired across Tomcat nodes in the - cluster. -
notifyContainerListenersOnReplication - Set to true if you wish to have container listeners notified - across Tomcat nodes in the cluster. -
stateTransferTimeout - The time in seconds to wait for a session state transfer to complete - from another node when a node is starting up. - Default value is 60 seconds. -
sendAllSessions - Flag whether send sessions as split blocks. - If set to true, send all sessions as one big block. - If set to false, send sessions as split blocks. - Default value is true. -
sendAllSessionsSize - The number of sessions in a session block message. This value is - effective only when sendAllSessions is false. - Default is 1000. -
sendAllSessionsWaitTime - Wait time between sending of session block messages. This value is - effective only when sendAllSessions is false. - Default is 2000 milliseconds. -
sessionAttributeNameFilter -

A regular expression used to filter which session attributes will be - replicated. An attribute will only be replicated if its name matches - this pattern. If the pattern is zero length or null, all - attributes are eligible for replication. The pattern is anchored so the - session attribute name must fully match the pattern. As an example, the - value (userName|sessionHistory) will only replicate the - two session attributes named userName and - sessionHistory. If not specified, the default value of - null will be used.

-
sessionAttributeValueClassNameFilter -

A regular expression used to filter which session attributes will be - replicated. An attribute will only be replicated if the implementation - class name of the value matches this pattern. If the pattern is zero - length or null, all attributes are eligible for - replication. The pattern is anchored so the fully qualified class name - must fully match the pattern. If not specified, the default value of - null will be used unless a SecurityManager is - enabled in which case the default will be - java\\.lang\\.(?:Boolean|Integer|Long|Number|String).

-
stateTimestampDrop - When this node sends a GET_ALL_SESSIONS message to other - node, all session messages that are received as a response are queued. - If this attribute is set to true, the received session - messages (except any GET_ALL_SESSIONS sent by other nodes) - are filtered by their timestamp. A message is dropped if it is not a - GET_ALL_SESSIONS message and its timestamp is earlier than - the timestamp of our GET_ALL_SESSIONS message. - If set to false, all queued session messages are handled. - Default is true. -
warnOnSessionAttributeFilterFailure -

If sessionAttributeNameFilter or - sessionAttributeValueClassNameFilter blocks an - attribute, should this be logged at WARN level? If - WARN level logging is disabled then it will be logged at - DEBUG. The default value of this attribute is - false unless a SecurityManager is enabled in - which case the default will be true.

-
-
-

org.apache.catalina.ha.session.BackupManager Attributes

-
- Attribute - - Description -
mapSendOptions - The backup manager uses a replicated map, this map is sending and - receiving messages. You can setup the flag for how this map is sending - messages, the default value is 6(synchronous).
- Note that if you use asynchronous messaging it is possible for update - messages for a session to be processed by the receiving node in a - different order to the order in which they were sent. -
maxActiveSessions - The maximum number of active sessions that will be created by this - Manager, or -1 (the default) for no limit. For this manager, only - sessions where the current node is the primary node for the session are - considered active sessions. -
rpcTimeout - Timeout for RPC message used for broadcast and transfer state from - another map. - Default value is 15000 milliseconds. -
sessionAttributeNameFilter -

A regular expression used to filter which session attributes will be - replicated. An attribute will only be replicated if its name matches - this pattern. If the pattern is zero length or null, all - attributes are eligible for replication. The pattern is anchored so the - session attribute name must fully match the pattern. As an example, the - value (userName|sessionHistory) will only replicate the - two session attributes named userName and - sessionHistory. If not specified, the default value of - null will be used.

-
sessionAttributeValueClassNameFilter -

A regular expression used to filter which session attributes will be - replicated. An attribute will only be replicated if the implementation - class name of the value matches this pattern. If the pattern is zero - length or null, all attributes are eligible for - replication. The pattern is anchored so the fully qualified class name - must fully match the pattern. If not specified, the default value of - null will be used unless a SecurityManager is - enabled in which case the default will be - java\\.lang\\.(?:Boolean|Integer|Long|Number|String).

-
terminateOnStartFailure - Set to true if you wish to terminate replication map when replication - map fails to start. If replication map is terminated, associated context - will fail to start. If you set this attribute to false, replication map - does not end. It will try to join the map membership in the heartbeat. - Default value is false . -
warnOnSessionAttributeFilterFailure -

If sessionAttributeNameFilter or - sessionAttributeValueClassNameFilter blocks an - attribute, should this be logged at WARN level? If - WARN level logging is disabled then it will be logged at - DEBUG. The default value of this attribute is - false unless a SecurityManager is enabled in - which case the default will be true.

-
accessTimeout - The timeout for a ping message. If a remote map does not respond within - this timeout period, its regarded as disappeared. - Default value is 5000 milliseconds. -
-
-

Nested Components

-

All Manager Implementations

-

All Manager implementations allow nesting of a - <SessionIdGenerator> element. It defines - the behavior of session id generation. All implementations - of the SessionIdGenerator allow the - following attributes: -

-
- Attribute - - Description -
sessionIdLength -

The length of the session ID may be changed with the - sessionIdLength attribute. -

-
-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-membership.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-membership.html deleted file mode 100644 index 8547768ddedd05ad2fd05c7ec842ef8207116aa5..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-membership.html +++ /dev/null @@ -1,163 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Cluster Membership object

The Cluster Membership object

Table of Contents

Introduction

-

- The membership component in the Apache Tribes Channel is responsible - for dynamic discovery of other members(nodes) in the cluster. -

-

Default Implementation

-

- The default implementation of the cluster group notification is built on top of multicast heartbeats - sent using UDP packets to a multicast IP address. - Cluster members are grouped together by using the same multicast address/port combination. - Each member sends out a heartbeat with a given interval (frequency), and this - heartbeat is used for dynamic discovery. - In a similar fashion, if a heartbeat has not been received in a timeframe specified by dropTime - ms. a member is considered suspect and the channel and any membership listener will be notified. -

-

Attributes

- -

Multicast Attributes

- -
- Attribute - - Description -
className -

- The default value is org.apache.catalina.tribes.membership.McastService - and is currently the only implementation. - This implementation uses multicast heartbeats for member discovery. -

-
address -

- The multicast address that the membership will broadcast its presence and listen - for other heartbeats on. The default value is 228.0.0.4 - Make sure your network is enabled for multicast traffic.
- The multicast address, in conjunction with the port is what - creates a cluster group. To divide up your farm into several different group, or to - split up QA from production, change the port or the address -
Previously known as mcastAddr. -

-
port -

- The multicast port, the default value is 45564
- The multicast port, in conjunction with the address is what - creates a cluster group. To divide up your farm into several different group, or to - split up QA from production, change the port or the address -

-
frequency -

- The frequency in milliseconds in which heartbeats are sent out. The default value is 500 ms.
- In most cases the default value is sufficient. Changing this value, simply changes the interval in between heartbeats. -

-
dropTime -

- The membership component will time out members and notify the Channel if a member fails to send a heartbeat within - a give time. The default value is 3000 ms. This means, that if a heartbeat is not received from a - member in that timeframe, the membership component will notify the cluster of this.
- On a high latency network you may wish to increase this value, to protect against false positives.
- Apache Tribes also provides a TcpFailureDetector that will - verify a timeout using a TCP connection when a heartbeat timeout has occurred. This protects against false positives. -

-
bind -

- Use this attribute if you wish to bind your multicast traffic to a specific network interface. - By default, or when this attribute is unset, it tries to bind to 0.0.0.0 and sometimes on multihomed hosts - this becomes a problem. -

-
ttl -

- The time-to-live setting for the multicast heartbeats. - This setting should be a value between 0 and 255. The default value is VM implementation specific. -

-
domain -

- Apache Tribes has the ability to logically group members into domains, by using this domain attribute. - The org.apache.catalina.tribes.Member.getDomain() method returns the value specified here. -

-
soTimeout -

- The sending and receiving of heartbeats is done on a single thread, hence to avoid blocking this thread forever, - you can control the SO_TIMEOUT value on this socket.
- If a value smaller or equal to 0 is presented, the code will default this value to frequency -

-
recoveryEnabled -

- In case of a network failure, Java multicast socket don't transparently fail over, instead the socket will continuously - throw IOException upon each receive request. When recoveryEnabled is set to true, this will close the multicast socket - and open a new socket with the same properties as defined above.
- The default is true.
-

-
recoveryCounter -

- When recoveryEnabled==true this value indicates how many - times an error has to occur before recovery is attempted. The default is - 10.
-

-
recoverySleepTime -

- When recoveryEnabled==true this value indicates how long time (in milliseconds) - the system will sleep in between recovery attempts, until it recovers successfully. - The default is 5000 (5 seconds).
-

-
localLoopbackDisabled -

- Membership uses multicast, it will call java.net.MulticastSocket.setLoopbackMode(localLoopbackDisabled). - When localLoopbackDisabled==true multicast messages will not reach other nodes on the same local machine. - The default is false.
-

-
- - -
- - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-receiver.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-receiver.html deleted file mode 100644 index c355543005d2c0ca9265f809142b53c6c381b43a..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-receiver.html +++ /dev/null @@ -1,159 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Cluster Receiver object

The Cluster Receiver object

Table of Contents

Introduction

-

- The receiver component is responsible for receiving cluster messages. - As you might notice through the configuration, is that the receiving of messages - and sending of messages are two different components, this is different from many other - frameworks, but there is a good reason for it, to decouple the logic for how messages are sent from - how messages are received.
- The receiver is very much like the Tomcat Connector, its the base of the thread pool - for incoming cluster messages. The receiver is straight forward, but all the socket settings - for incoming traffic are managed here. -

-

Blocking vs Non-Blocking Receiver

-

- The receiver supports both a non blocking, org.apache.catalina.tribes.transport.nio.NioReceiver, and a - blocking, org.apache.catalina.tribes.transport.bio.BioReceiver. It is preferred to use the non blocking receiver - to be able to grow your cluster without running into thread starvation.
- Using the non blocking receiver allows you to with a very limited thread count to serve a large number of messages. - Usually the rule is to use 1 thread per node in the cluster for small clusters, and then depending on your message frequency - and your hardware, you'll find an optimal number of threads peak out at a certain number. -

-

Attributes

-

Common Attributes

-
- Attribute - - Description -
className - The implementation of the receiver component. Two implementations available, - org.apache.catalina.tribes.transport.nio.NioReceiver and - org.apache.catalina.tribes.transport.bio.BioReceiver.
- The org.apache.catalina.tribes.transport.nio.NioReceiver is the - preferred implementation -
address - The address (network interface) to listen for incoming traffic. - Same as the bind address. The default value is auto and translates to - java.net.InetAddress.getLocalHost().getHostAddress(). -
direct - Possible values are true or false. - Set to true if you want the receiver to use direct bytebuffers when reading data - from the sockets. -
port - The listen port for incoming data. The default value is 4000. - To avoid port conflicts the receiver will automatically bind to a free port within the range of - port <= bindPort < port+autoBind - So for example, if port is 4000, and autoBind is set to 10, then the receiver will open up - a server socket on the first available port in the range 4000-4009. -
autoBind - Default value is 100. - Use this value if you wish to automatically avoid port conflicts the cluster receiver will try to open a - server socket on the port attribute port, and then work up autoBind number of times. -
securePort - The secure listen port. This port is SSL enabled. If this attribute is omitted no SSL port is opened up. - There default value is unset, meaning there is no SSL socket available. -
udpPort - The UDP listen port. If this attribute is omitted no UDP port is opened up. - There default value is unset, meaning there is no UDP listener available. -
selectorTimeout - The value in milliseconds for the polling timeout in the NioReceiver. On older versions of the JDK - there have been bugs, that should all now be cleared out where the selector never woke up. - The default value is a very high 5000 milliseconds. -
maxThreads - The maximum number of threads in the receiver thread pool. The default value is 6 - Adjust this value relative to the number of nodes in the cluster, the number of messages being exchanged and - the hardware you are running on. A higher value doesn't mean more efficiency, tune this value according to your - own test results. -
minThreads - Minimum number of threads to be created when the receiver is started up. Default value is 6 -
maxIdleTime - Maximum number of milliseconds of until Idle thread terminates. Default value is 60000 milliseconds. -
ooBInline - Boolean value for the socket OOBINLINE option. Possible values are true or false. -
rxBufSize - The receiver buffer size on the receiving sockets. Value is in bytes, the default value is 43800 bytes. -
txBufSize - The sending buffer size on the receiving sockets. Value is in bytes, the default value is 25188 bytes. -
udpRxBufSize - The receive buffer size on the datagram socket. - Default value is 25188 bytes. -
udpTxBufSize - The send buffer size on the datagram socket. - Default value is 43800 bytes. -
soKeepAlive - Boolean value for the socket SO_KEEPALIVE option. Possible values are true or false. -
soLingerOn - Boolean value to determine whether to use the SO_LINGER socket option. - Possible values are true or false. Default value is true. -
soLingerTime - Sets the SO_LINGER socket option time value. The value is in seconds. - The default value is 3 seconds. -
soReuseAddress - Boolean value for the socket SO_REUSEADDR option. Possible values are true or false. -
tcpNoDelay - Boolean value for the socket TCP_NODELAY option. Possible values are true or false. - The default value is true -
timeout - Sets the SO_TIMEOUT option on the socket. The value is in milliseconds and the default value is 3000 - milliseconds. -
useBufferPool - Boolean value whether to use a shared buffer pool of cached org.apache.catalina.tribes.io.XByteBuffer - objects. If set to true, the XByteBuffer that is used to pass a message up the channel, will be recycled at the end - of the requests. This means that interceptors in the channel must not maintain a reference to the object - after the org.apache.catalina.tribes.ChannelInterceptor#messageReceived method has exited. -
-
-

NioReceiver

-
-

BioReceiver

-
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-sender.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-sender.html deleted file mode 100644 index 2a620f229bf149009b970b95a1da610883655361..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-sender.html +++ /dev/null @@ -1,175 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Cluster Sender object

The Cluster Sender object

Table of Contents

Introduction

-

- The channel sender component is responsible for delivering outgoing cluster messages over the network. - In the default implementation, org.apache.catalina.tribes.transport.ReplicationTransmitter, - the sender is a fairly empty shell with not much logic around a fairly complex <Transport> - component the implements the actual delivery mechanism. -

-

Concurrent Parallel Delivery

-

- In the default transport implementation, org.apache.catalina.tribes.transport.nio.PooledParallelSender, - Apache Tribes implements what we like to call "Concurrent Parallel Delivery". - This means that we can send a message to more than one destination at the same time(parallel), and - deliver two messages to the same destination at the same time(concurrent). Combine these two and we have - "Concurrent Parallel Delivery". -

-

- When is this useful? The simplest example we can think of is when part of your code is sending a 10MB message, - like a war file being deployed, and you need to push through a small 10KB message, say a session being replicated, - you don't have to wait for the 10MB message to finish, as a separate thread will push in the small message - transmission at the same time. Currently there is no interrupt, pause or priority mechanism available, but check back soon. -

-

Nested Elements

-

- The nested element <Transport> is not required, but encouraged, as this is where - you would set all the socket options for the outgoing messages. Please see its attributes below. - There are two implementations, in a similar manner to the receiver, one is non-blocking - based and the other is built using blocking IO.
- org.apache.catalina.tribes.transport.bio.PooledMultiSender is the blocking implementation and - org.apache.catalina.tribes.transport.nio.PooledParallelSender. - Parallel delivery is not available for the blocking implementation due to the fact that it is blocking a thread on sending data. -

-

Attributes

-

Common Sender Attributes

-
- Attribute - - Description -
className - Required, only available implementation is org.apache.catalina.tribes.transport.ReplicationTransmitter -
-
-

Common Transport Attributes

-
- Attribute - - Description -
className - Required, an implementation of the org.apache.catalina.tribes.transport.MultiPointSender.
- Non-blocking implementation is org.apache.catalina.tribes.transport.nio.PooledParallelSender
- Blocking implementation is org.apache.catalina.tribes.transport.bio.PooledMultiSender -
rxBufSize - The receive buffer size on the socket. - Default value is 25188 bytes. -
txBufSize - The send buffer size on the socket. - Default value is 43800 bytes. -
udpRxBufSize - The receive buffer size on the datagram socket. - Default value is 25188 bytes. -
udpTxBufSize - The send buffer size on the datagram socket. - Default value is 43800 bytes. -
directBuffer - Possible values are true or false. - Set to true if you want the receiver to use direct bytebuffers when writing data - to the sockets. Default value is false -
keepAliveCount - The number of requests that can go through the socket before the socket is closed, and reopened - for the next request. The default value is -1, which is unlimited. -
keepAliveTime - The number of milliseconds a connection is kept open after its been opened. - The default value is -1, which is unlimited. -
timeout - Sets the SO_TIMEOUT option on the socket. The value is in milliseconds and the default value is 3000 - milliseconds.(3 seconds) This timeout starts when a message send attempt is starting, until the transfer has been completed. - For the NIO sockets, this will mean, that the caller can guarantee that we will not attempt sending the message - longer than this timeout value. For the blocking IO implementation, this translated directly to the soTimeout.
- A timeout will not spawn a retry attempt, in order to guarantee the return of the application thread. -
maxRetryAttempts - How many times do we retry a failed message, that received a IOException at the socket level. - The default value is 1, meaning we will retry a message that has failed once. - In other words, we will attempt a message send no more than twice. One is the original send, and one is the - maxRetryAttempts. -
ooBInline - Boolean value for the socket OOBINLINE option. Possible values are true or false. -
soKeepAlive - Boolean value for the socket SO_KEEPALIVE option. Possible values are true or false. -
soLingerOn - Boolean value to determine whether to use the SO_LINGER socket option. - Possible values are true or false. Default value is true. -
soLingerTime - Sets the SO_LINGER socket option time value. The value is in seconds. - The default value is 3 seconds. -
soReuseAddress - Boolean value for the socket SO_REUSEADDR option. Possible values are true or false. -
soTrafficClass - Sets the traffic class level for the socket, the value is between 0 and 255. - Default value is int soTrafficClass = 0x04 | 0x08 | 0x010; - Different values are defined in - java.net.Socket#setTrafficClass(int). -
tcpNoDelay - Boolean value for the socket TCP_NODELAY option. Possible values are true or false. - The default value is true -
throwOnFailedAck - Boolean value, default value is true. - If set to true, the sender will throw a org.apache.catalina.tribes.RemoteProcessException - when we receive a negative ack from the remote member. - Set to false, and Tribes will treat a positive ack the same way as a negative ack, that the message was received. -
-
-

Common PooledSender Attributes

-
- Attribute - - Description -
poolSize - The maximum number of concurrent connections from A to B. - The value is based on a per-destination count. - The default value is 25 -
maxWait - The maximum number of milliseconds that the senderPool will wait when - there are no available senders. The default value is 3000 - milliseconds.(3 seconds). -
-
-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-valve.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-valve.html deleted file mode 100644 index e581465243aac6ec67577c1a803f6114851c6820..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster-valve.html +++ /dev/null @@ -1,168 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Cluster Valve object

The Cluster Valve object

Table of Contents

Introduction

-

- A cluster valve is no different from any other Tomcat Valve. - The cluster valves are interceptors in the invocation chain for HTTP requests, and the clustering implementation - uses these valves to make intelligent decision around data and when data should be replicated. -

-

- A cluster valve must implement the org.apache.catalina.ha.ClusterValve interface. - This is a simple interface that extends the org.apache.catalina.Valve interface. -

-

org.apache.catalina.ha.tcp.ReplicationValve

- The ReplicationValve will notify the cluster at the end of a HTTP request - so that the cluster can make a decision whether there is data to be replicated or not. -

Attributes

-
- Attribute - - Description -
className - Set value to org.apache.catalina.ha.tcp.ReplicationValve -
filter - For known file extensions or urls, you can use this Valve to notify the - cluster that the session has not been modified during this request and - the cluster doesn't have to probe the session managers for changes. If - the request matches this filter pattern, the cluster assumes there has - been no session change. An example filter would look like - filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt" - . The filter is a regular expression using - java.util.regex. -
primaryIndicator - Boolean value, so to true, and the replication valve will insert a request attribute with the name - defined by the primaryIndicatorName attribute. - The value inserted into the request attribute is either Boolean.TRUE or - Boolean.FALSE -
primaryIndicatorName - Default value is org.apache.catalina.ha.tcp.isPrimarySession - The value defined here is the name of the request attribute that contains the boolean value - if the session is primary on this server or not. -
statistics - Boolean value. Set to true if you want the valve to collect request statistics. - Default value is false -
-
-

org.apache.catalina.ha.session.JvmRouteBinderValve

- In case of a mod_jk failover, the JvmRouteBinderValve will replace the - jvmWorker attribute in the session Id, to make future requests stick to this - node. If you want fallback capability, don't enable this valve, but if you want your failover to stick, - and for mod_jk not to have to keep probing the node that went down, you use this valve. -

Attributes

-
- Attribute - - Description -
className - org.apache.catalina.ha.session.JvmRouteBinderValve -
enabled - Default value is true - Runtime attribute to turn on and off turn over of the session's jvmRoute value. -
sessionIdAttribute - Old sessionid before failover is registered in request attributes with this attribute. - Default attribute name is org.apache.catalina.ha.session.JvmRouteOrignalSessionID. -
-
-

org.apache.catalina.ha.authenticator.ClusterSingleSignOn

- The ClusterSingleSignOn supports feature of single sign on in cluster. - By using ClusterSingleSignOn, the security identity authenticated - by one web application is recognized by other web applications on the same virtual host, - and it is propagated to other nodes in the cluster. - -

See the Single Sign On special - feature on the Host element for more information.

- -

Note: ClusterSingleSignOn can be configured at host level cluster only. -

- -

Attributes

-
- Attribute - - Description -
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.ha.authenticator.ClusterSingleSignOn.

-
cookieDomain -

Sets the host domain to be used for sso cookies.

-
mapSendOptions -

The Valve uses a replicated map. You can setup the flag for how this - map sends messages. The default value is 6 (synchronous). - Note that if you use asynchronous messaging it is possible for update - messages to be processed by the receiving node in a different order to - the order in which they were sent.

-
requireReauthentication -

Default false. Flag to determine whether each request needs to be - reauthenticated to the security Realm. If "true", this - Valve uses cached security credentials (username and password) to - reauthenticate to the Realm each request associated - with an SSO session. If "false", the Valve can itself authenticate - requests based on the presence of a valid SSO cookie, without - rechecking with the Realm.

-
rpcTimeout -

The Valve uses a replicated map. This is the timeout for messages - that transfer state to/from the other nodes in the cluster. If not - specified, a default value of 15000 milliseconds is used. -

-
terminateOnStartFailure -

Set to true if you wish this Valve to fail if the - underlying replication fails to start. If the Valve fails, then the - associated container will fail to start. If you set this attribute to - false, and the underlying replications fails to start, the Valve will - start and it will attempt to join the cluster and start replication as - part of the heartbeat process. If not specified, the default value of - false is used.

-
accessTimeout - The timeout for a ping message. If a remote map does not respond within - this timeout period, its regarded as disappeared. - Default value is 5000 milliseconds. -
-
-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster.html deleted file mode 100644 index c2e362efa7715910f7ba99af6b9b298441a2445f..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cluster.html +++ /dev/null @@ -1,176 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Cluster object

The Cluster object

Table of Contents

Introduction

-

- The tomcat cluster implementation provides session replication, context attribute replication and - cluster wide WAR file deployment. - While the Cluster configuration is fairly complex, the default configuration will work - for most people out of the box.

- The Tomcat Cluster implementation is very extensible, and hence we have exposed a myriad of options, - making the configuration seem like a lot, but don't lose faith, instead you have a tremendous control - over what is going on.

-

Security

- -

The cluster implementation is written on the basis that a secure, trusted -network is used for all of the cluster related network traffic. It is not safe -to run a cluster on a insecure, untrusted network.

- -

There are many options for providing a secure, trusted network for use by a -Tomcat cluster. These include:

-
    -
  • private LAN
  • -
  • a Virtual Private Network (VPN)
  • -
  • IPSEC
  • -
- -

Engine vs Host placement

-

- You can place the <Cluster> element inside either the <Engine> - container or the <Host> container.
- Placing it in the engine, means that you will support clustering in all virtual hosts of Tomcat, - and share the messaging component. When you place the <Cluster> inside the <Engine> - element, the cluster will append the host name of each session manager to the managers name so that two contexts with - the same name but sitting inside two different hosts will be distinguishable. -

-

Context Attribute Replication

-

To configure context attribute replication, simply do this by swapping out the context implementation - used for your application context.

-
<Context className="org.apache.catalina.ha.context.ReplicatedContext"/>
-

- This context extends the Tomcat StandardContext - so all the options from the base implementation are valid. -

-

Nested Components

-

Manager:
- The session manager element identifies what kind of session manager is used in this cluster implementation. - This manager configuration is identical to the one you would use in a regular <Context> configuration. -
The default value is the org.apache.catalina.ha.session.DeltaManager that is closely coupled with - the SimpleTcpCluster implementation. Other managers like the org.apache.catalina.ha.session.BackupManager - are/could be loosely coupled and don't rely on the SimpleTcpCluster for its data replication. -

-

Channel:
- The Channel and its sub components are all part of the IO layer - for the cluster group, and is a module in it's own that we have nick named "Tribes" -
- Any configuring and tuning of the network layer, the messaging and the membership logic - will be done in the channel and its nested components. - You can always find out more about Apache Tribes -

-

Valve:
- The Tomcat Cluster implementation uses Tomcat Valves to - track when requests enter and exit the servlet container. It uses these valves to be able to make - intelligent decisions on when to replicate data, which is always at the end of a request. -

-

Deployer:
- The Deployer component is the Tomcat Farm Deployer. It allows you to deploy and undeploy applications - cluster wide. -

-

ClusterListener:
- ClusterListener's are used to track messages sent and received using the SimpleTcpCluster. - If you wish to track messages, you can add a listener here, or you can add a valve to the channel object. -

-

Deprecated configuration options

-

- Deprecated settings: In the previous version of Tomcat you were able to control session - manager settings using manager.<property>=value. - This has been discontinued, as the way it was written interferes with - the ability to support multiple different manager classes under one cluster implementation, - as the same properties might have the different effect on different managers. -

-

Attributes

-

SimpleTcpCluster Attributes

-
- Attribute - - Description -
className -

The main cluster class, currently only one is available, - org.apache.catalina.ha.tcp.SimpleTcpCluster -

-
channelSendOptions -

The Tribes channel send options, default is 8.
- This option is used to set the flag that all messages sent through the - SimpleTcpCluster uses. The flag decides how the messages are sent, and is a simple logical OR.

- -
int options = Channel.SEND_OPTIONS_ASYNCHRONOUS |
-              Channel.SEND_OPTIONS_SYNCHRONIZED_ACK |
-              Channel.SEND_OPTIONS_USE_ACK;
-

Some of the values are:
- Channel.SEND_OPTIONS_SYNCHRONIZED_ACK = 0x0004
- Channel.SEND_OPTIONS_ASYNCHRONOUS = 0x0008
- Channel.SEND_OPTIONS_USE_ACK = 0x0002
- So to use ACK and ASYNC messaging, the flag would be 10 (8+2) -
- Note that if you use ASYNC messaging it is possible for update messages - for a session to be processed by the receiving nodes in a different order - to the order in which they were sent.

-
channelStartOptions -

Sets the start and stop flags for the <Channel> object used by the cluster. - The default is Channel.DEFAULT which starts all the channel services, such as - sender, receiver, multicast sender and multicast receiver. - The following flags are available today:

-
Channel.DEFAULT = Channel.SND_RX_SEQ (1) |
-                  Channel.SND_TX_SEQ (2) |
-                  Channel.MBR_RX_SEQ (4) |
-                  Channel.MBR_TX_SEQ (8);
-

To start a channel without multicasting, you would want to use the value Channel.SND_RX_SEQ | Channel.SND_TX_SEQ - that equals to 3. -

-
heartbeatBackgroundEnabled -

Flag whether invoke channel heartbeat at container background thread. Default value is false. - Enable this flag don't forget to disable the channel heartbeat thread. -

-
notifyLifecycleListenerOnFailure -

Flag whether notify LifecycleListeners if all ClusterListener couldn't accept channel message. - Default value is false. -

-
-
-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/context.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/context.html deleted file mode 100644 index abc46dda2c3a35ecf37f81265ef06338e6c707ed..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/context.html +++ /dev/null @@ -1,1223 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Context Container

The Context Container

Table of Contents

Introduction

- -

- The description below uses the variable name $CATALINA_BASE to refer the - base directory against which most relative paths are resolved. If you have - not configured Tomcat for multiple instances by setting a CATALINA_BASE - directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME, - the directory into which you have installed Tomcat. -

- -

The Context element represents a web - application, which is run within a particular virtual host. - Each web application is based on a Web Application Archive - (WAR) file, or a corresponding directory containing the corresponding - unpacked contents, as described in the Servlet Specification (version - 2.2 or later). For more information about web application archives, - you can download the - Servlet - Specification, and review the Tomcat - Application Developer's Guide.

- -

The web application used to process each HTTP request is selected - by Catalina based on matching the longest possible prefix of the - Request URI against the context path of each defined Context. - Once selected, that Context will select an appropriate servlet to - process the incoming request, according to the servlet mappings defined - by the web application deployment.

- -

You may define as many Context elements as you - wish. Each such Context MUST have a unique context name within a virtual - host. The context path does not need to be unique (see parallel - deployment below). In addition, a Context must be present with a - context path equal to - a zero-length string. This Context becomes the default - web application for this virtual host, and is used to process all - requests that do not match any other Context's context path.

- -

Parallel deployment

-

You may deploy multiple versions of a web application with the same - context path at the same time. The rules used to match requests to a - context version are as follows: -

-
    -
  • If no session information is present in the request, use the latest - version.
  • -
  • If session information is present in the request, check the session - manager of each version for a matching session and if one is found, use that - version.
  • -
  • If session information is present in the request but no matching session - can be found, use the latest version.
  • -
-

The Host may be configured (via the - undeployOldVersions) to remove old versions deployed in this way - once they are no longer in use.

-
- -

Naming

-

When autoDeploy or deployOnStartup operations - are performed by a Host, the name and context path of the web application are - derived from the name(s) of the file(s) that define(s) the web application. - Consequently, the context path may not be defined in a - META-INF/context.xml embedded in the application and there is a - close relationship between the context name, context path, - context version and the base file name (the name minus any - .war or .xml extension) of the file.

- -

If no version is specified then the context name is always the - same as the context path. If the context path is the empty - string then the base name will be ROOT (always in upper case) - otherwise the base name will be the context path with the - leading '/' removed and any remaining '/' characters replaced with '#'.

- -

If a version is specified then the context path remains unchanged - and both the context name and the base name have the string - '##' appended to them followed by the version identifier.

- -

Some examples of these naming conventions are given below.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Context PathContext VersionContext NameBase File NameExample File Names (.xml, .war & directory)
/fooNone/foofoofoo.xml, foo.war, foo
/foo/barNone/foo/barfoo#barfoo#bar.xml, foo#bar.war, foo#bar
Empty StringNoneEmpty StringROOTROOT.xml, ROOT.war, ROOT
/foo42/foo##42foo##42foo##42.xml, foo##42.war, foo##42
/foo/bar42/foo/bar##42foo#bar##42foo#bar##42.xml, foo#bar##42.war, foo#bar##42
Empty String42##42ROOT##42ROOT##42.xml, ROOT##42.war, ROOT##42
- -

The version component is treated as a String both for - performance reasons and to allow flexibility in versioning schemes. String - comparisons are used to determine version order. If version is not specified, - it is treated as the empty string. - Therefore, - foo.war will be treated as an earlier version than - foo##11.war and - foo##11.war will be treated as an earlier version than - foo##2.war. If using a purely numerical versioning scheme it is - recommended that zero padding is used so that foo##002.war is - treated as an earlier version than foo##011.war. -

- -

If you want to deploy a WAR file or a directory using a context path that - is not related to the base file name then one of the following options must - be used to prevent double-deployment: -

-
    -
  • Disable autoDeploy and deployOnStartup and define all - Contexts in server.xml
  • -
  • Locate the WAR and/or directory outside of the Host's appBase and use - a context.xml file with a docBase attribute to define it.
  • -
-
- -

Defining a context

-

It is NOT recommended to place <Context> elements directly in the - server.xml file. This is because it makes modifying the - Context configuration more invasive since the main - conf/server.xml file cannot be reloaded without restarting - Tomcat.

- -

Individual Context elements may be explicitly defined: -

-
    -
  • In an individual file at /META-INF/context.xml inside the - application files. Optionally (based on the Host's copyXML attribute) - this may be copied to - $CATALINA_BASE/conf/[enginename]/[hostname]/ and renamed to - application's base file name plus a ".xml" extension.
  • -
  • In individual files (with a ".xml" extension) in the - $CATALINA_BASE/conf/[enginename]/[hostname]/ directory. - The context path and version will be derived from the base name of the file - (the file name less the .xml extension). This file will always take precedence - over any context.xml file packaged in the web application's META-INF - directory.
  • -
  • Inside a Host element in the main - conf/server.xml.
  • -
- -

Default Context elements may be defined that apply to - multiple web applications. Configuration for an individual web application - will override anything configured in one of these defaults. Any nested - elements, e.g. <Resource> elements, that are defined in a default - Context will be created once for each - Context to which the default applies. They will not be - shared between Context elements. -

-
    -
  • In the $CATALINA_BASE/conf/context.xml file: - the Context element information will be loaded by all web applications.
  • -
  • In the - $CATALINA_BASE/conf/[enginename]/[hostname]/context.xml.default - file: the Context element information will be loaded by all web applications - of that host.
  • -
- -

With the exception of server.xml, files that define Context - elements may only define a single Context element. -

- -

In addition to explicitly specified Context elements, there are - several techniques by which Context elements can be created automatically - for you. See - Automatic Application Deployment and - User Web Applications - for more information.

- -

To define multiple contexts that use a single WAR file or directory, - use one of the options described in the Naming - section above for creating a Context that has a path - that is not related to the base file name.

-
-

Attributes

- -

Common Attributes

- -

All implementations of Context - support the following attributes:

- -
- Attribute - - Description -
allowCasualMultipartParsing -

Set to true if Tomcat should automatically parse - multipart/form-data request bodies when HttpServletRequest.getPart* - or HttpServletRequest.getParameter* is called, even when the - target servlet isn't marked with the @MultipartConfig annotation - (See Servlet Specification 3.0, Section 3.2 for details). - Note that any setting other than false causes Tomcat - to behave in a way that is not technically spec-compliant. - The default is false

-
altDDName -

The absolute path to the alternative deployment descriptor for this - context. This overrides the default deployment descriptor located at - /WEB-INF/web.xml.

-
backgroundProcessorDelay -

This value represents the delay in seconds between the - invocation of the backgroundProcess method on this context and - its child containers, including all wrappers. - Child containers will not be invoked if their delay value is not - negative (which would mean they are using their own processing - thread). Setting this to a positive value will cause - a thread to be spawn. After waiting the specified amount of time, - the thread will invoke the backgroundProcess method on this host - and all its child containers. A context will use background - processing to perform session expiration and class monitoring for - reloading. If not specified, the default value for this attribute is - -1, which means the context will rely on the background processing - thread of its parent host.

-
className -

Java class name of the implementation to use. This class must - implement the org.apache.catalina.Context interface. - If not specified, the standard value (defined below) will be used.

-
containerSciFilter -

The regular expression that specifies which container provided SCIs - should be filtered out and not used for this context. Matching uses - java.util.regex.Matcher.find() so the regular expression - only has to match a sub-string of the fully qualified class name of the - container provided SCI for it to be filtered out. If not specified, - no filtering will be applied.

-
cookies -

Set to true if you want cookies to be used for - session identifier communication if supported by the client (this - is the default). Set to false if you want to disable - the use of cookies for session identifier communication, and rely - only on URL rewriting by the application.

-
crossContext -

Set to true if you want calls within this application - to ServletContext.getContext() to successfully return a - request dispatcher for other web applications running on this virtual - host. Set to false (the default) in security - conscious environments, to make getContext() always - return null.

-
docBase -

The Document Base (also known as the Context - Root) directory for this web application, or the pathname - to the web application archive file (if this web application is - being executed directly from the WAR file). You may specify - an absolute pathname for this directory or WAR file, or a pathname - that is relative to the appBase directory of the - owning Host.

-

The value of this field must not be set unless the Context element is - defined in server.xml or the docBase is not located under - the Host's appBase.

-

If a symbolic link is used for docBase then changes to the - symbolic link will only be effective after a Tomcat restart or - by undeploying and redeploying the context. A context reload is not - sufficient.

-
dispatchersUseEncodedPaths -

Controls whether paths used in calls to obtain a request dispatcher - ares expected to be encoded. This affects both how Tomcat handles calls - to obtain a request dispatcher as well as how Tomcat generates paths - used to obtain request dispatchers internally. If not specified, the - default value of true is used.

-
failCtxIfServletStartFails -

Set to true to have the context fail its startup if any - servlet that has load-on-startup >=0 fails its own startup.

-

If not specified, the attribute of the same name in the parent Host - configuration is used if specified. Otherwise the default value of - false is used.

-
fireRequestListenersOnForwards -

Set to true to fire any configured - ServletRequestListeners when Tomcat forwards a request. This is - primarily of use to users of CDI frameworks that use - ServletRequestListeners to configure the necessary environment for a - request. If not specified, the default value of false is - used.

-
logEffectiveWebXml -

Set to true if you want the effective web.xml used for a - web application to be logged (at INFO level) when the application - starts. The effective web.xml is the result of combining the - application's web.xml with any defaults configured by Tomcat and any - web-fragment.xml files and annotations discovered. If not specified, the - default value of false is used.

-
mapperContextRootRedirectEnabled -

If enabled, requests for a web application context root will be - redirected (adding a trailing slash) if necessary by the Mapper rather - than the default Servlet. This is more efficient but has the side effect - of confirming that the context path exists. If not specified, the - default value of true is used.

-
mapperDirectoryRedirectEnabled -

If enabled, requests for a web application directory will be - redirected (adding a trailing slash) if necessary by the Mapper rather - than the default Servlet. This is more efficient but has the side effect - of confirming that the directory is exists. If not specified, the - default value of false is used.

-
override -

Set to true to ignore any settings in both the global - or Host default contexts. By default, settings - from a default context will be used but may be overridden by a setting - the same attribute explicitly for the Context.

-
path -

The context path of this web application, which is - matched against the beginning of each request URI to select the - appropriate web application for processing. All of the context paths - within a particular Host must be unique. - If you specify a context path of an empty string (""), you are - defining the default web application for this Host, which - will process all requests not assigned to other Contexts.

-

This attribute must only be used when statically defining a Context - in server.xml. In all other circumstances, the path will be inferred - from the filenames used for either the .xml context file or the docBase. -

-

Even when statically defining a Context in server.xml, this attribute - must not be set unless either the docBase is not located under the - Host's appBase or both - deployOnStartup and autoDeploy are false. If - this rule is not followed, double deployment is likely to result.

-
preemptiveAuthentication -

When set to true and the user presents credentials for a - resource that is not protected by a security constraint, if the - authenticator supports preemptive authentication (the standard - authenticators provided with Tomcat do) then the user' credentials - will be processed. If not specified, the default of falseis - used. -

-
privileged -

Set to true to allow this context to use container - servlets, like the manager servlet. Use of the privileged - attribute will change the context's parent class loader to be the - Server class loader rather than the Shared class - loader. Note that in a default installation, the Common class - loader is used for both the Server and the Shared - class loaders.

-
reloadable -

Set to true if you want Catalina to monitor classes in - /WEB-INF/classes/ and /WEB-INF/lib for - changes, and automatically reload the web application if a change - is detected. This feature is very useful during application - development, but it requires significant runtime overhead and is - not recommended for use on deployed production applications. That's - why the default setting for this attribute is false. You - can use the Manager web - application, however, to trigger reloads of deployed applications - on demand.

-
resourceOnlyServlets -

Comma separated list of Servlet names (as used in - /WEB-INF/web.xml) that expect a resource to be present. - Ensures that welcome files associated with Servlets that expect a - resource to be present (such as the JSP Servlet) are not used when there - is no resource present. This prevents issues caused by the clarification - of welcome file mapping in section 10.10 of the Servlet 3.0 - specification. If the - org.apache.catalina.STRICT_SERVLET_COMPLIANCE - system property is set to - true, the default value of this attribute will be the empty - string, else the default value will be jsp.

-
sendRedirectBody -

If true, redirect responses will include a short - response body that includes details of the redirect as recommended by - RFC 2616. This is disabled by default since including a response body - may cause problems for some application component such as compression - filters.

-
sessionCookieDomain -

The domain to be used for all session cookies created for this - context. If set, this overrides any domain set by the web application. - If not set, the value specified by the web application, if any, will be - used.

-
sessionCookieName -

The name to be used for all session cookies created for this - context. If set, this overrides any name set by the web application. - If not set, the value specified by the web application, if any, will be - used, or the name JSESSIONID if the web application does - not explicitly set one.

-
sessionCookiePath -

The path to be used for all session cookies created for this - context. If set, this overrides any path set by the web application. - If not set, the value specified by the web application will be used, or - the context path used if the web application does not explicitly set - one. To configure all web application to use an empty path (this can be - useful for portlet specification implementations) set this attribute to - / in the global CATALINA_BASE/conf/context.xml - file.

-

Note: Once one web application using - sessionCookiePath="/" obtains a session, all - subsequent sessions for any other web application in the same host also - configured with sessionCookiePath="/" will always - use the same session ID. This holds even if the session is invalidated - and a new one created. This makes session fixation protection more - difficult and requires custom, Tomcat specific code to change the - session ID shared by the multiple applications.

-
sessionCookiePathUsesTrailingSlash -

Some browsers, such as Internet Explorer, Safari and Edge, will send - a session cookie for a context with a path of /foo with a - request to /foobar in violation of RFC6265. This could - expose a session ID from an application deployed at /foo to - an application deployed at /foobar. If the application - deployed at /foobar is untrusted, this could create a - security risk. However, it should be noted that RFC 6265, section 8.5 - makes clear that path alone should not be view as sufficient to prevent - untrusted applications accessing cookies from other applications. To - mitigate this risk, this attribute may be set to true and - Tomcat will add a trailing slash to the path associated with the session - cookie so, in the above example, the cookie path becomes /foo/. However, - with a cookie path of /foo/, browsers will no longer send the cookie - with a request to /foo. This should not be a problem unless there is a - servlet mapped to /*. In this case this attribute will need to be set to - false to disable this feature. The default value for this - attribute is false.

-
swallowAbortedUploads -

Set to false if Tomcat should not read any additional request - body data for aborted uploads and instead abort the client connection. - This setting is used in the following situations: -

-
    -
  • the size of the request body is larger than the - maxPostSize configured in the connector
  • -
  • the size limit of a MultiPart upload is reached
  • -
  • the servlet sets the response status to 413 (Request Entity Too - Large)
  • -
-

- Not reading the additional data will free the request processing thread - more quickly. Unfortunately most HTTP clients will not read the response - if they cannot write the full request.

-

The default is true, so additional data will be - read.

-

Note if an error occurs during the request processing that triggers - a 5xx response, any unread request data will always be ignored and the - client connection will be closed once the error response has been - written.

-
swallowOutput -

If the value of this flag is true, the bytes output to - System.out and System.err by the web application will be redirected to - the web application logger. If not specified, the default value - of the flag is false.

-
tldValidation -

If the value of this flag is true, the TLD files - will be XML validated on context startup. If the - org.apache.catalina.STRICT_SERVLET_COMPLIANCE - system property is set to - true, the default value of this attribute will be - true, else the default value will be false. - Setting this attribute to true will incur a performance - penalty.

-
useHttpOnly -

Should the HttpOnly flag be set on session cookies to prevent client - side script from accessing the session ID? Defaults to - true.

-
useRelativeRedirects -

Controls whether HTTP 1.1 and later location headers generated by a - call to - javax.servlet.http.HttpServletResponse#sendRedirect(String) - will use relative or absolute redirects. Relative redirects are more - efficient but may not work with reverse proxies that change the context - path. It should be noted that it is not recommended to use a reverse - proxy to change the context path because of the multiple issues it - creates. Absolute redirects should work with reverse proxies that change - the context path but may cause issues with the - org.apache.catalina.filters.RemoteIpFilter if the filter is - changing the scheme and/or port. If the - org.apache.catalina.STRICT_SERVLET_COMPLIANCE - system property is set to - true, the default value of this attribute will be - false, else the default value will be true. -

-
validateClientProvidedNewSessionId -

When a client provides the ID for a new session, this attribute - controls whether that ID is validated. The only use case for using a - client provided session ID is to have a common session ID across - multiple web applications. Therefore, any client provided session ID - should already exist in another web application. If this check is - enabled, the client provided session ID will only be used if the session - ID exists in at least one other web application for the current host. - Note that the following additional tests are always applied, - irrespective of this setting:

-
    -
  • The session ID is provided by a cookie
  • -
  • The session cookie has a path of {@code /}
  • -
-

If not specified, the default value of true will be - used.

-
wrapperClass -

Java class name of the org.apache.catalina.Wrapper - implementation class that will be used for servlets managed by this - Context. If not specified, a standard default value will be used.

-
xmlBlockExternal -

If the value of this flag is true, the parsing of - web.xml, web-fragment.xml, *.tld, - *.jspx, *.tagx and tagPlugins.xml - files for this web application will not permit external entities to be - loaded. If not specified, the default value of true will - be used.

-
xmlNamespaceAware -

If the value of this flag is true, the parsing of - web.xml and web-fragment.xml files for this - web application will be namespace-aware. Note that *.tld, - *.jspx and *.tagx files are always parsed - using a namespace-aware parser and that the tagPlugins.xml - file (if any) is never parsed using a namespace-aware parser. Note also - that if you turn this flag on, you should probably also turn - xmlValidation on. If the - org.apache.catalina.STRICT_SERVLET_COMPLIANCE - system property is set to - true, the default value of this attribute will be - true, else the default value will be false. - Setting this attribute to true will incur a performance - penalty.

-
xmlValidation -

If the value of this flag is true, the parsing of - web.xml and web-fragment.xml files for this - web application will use a validating parser. If the - org.apache.catalina.STRICT_SERVLET_COMPLIANCE - system property is set to - true, the default value of this attribute will be - true, else the default value will be false. - Setting this attribute to true will incur a performance - penalty.

-
- -
- - -

Standard Implementation

- -

The standard implementation of Context is - org.apache.catalina.core.StandardContext. - It supports the following additional attributes (in addition to the - common attributes listed above):

- -
- Attribute - - Description -
addWebinfClassesResources -

This attribute controls if, in addition to static resources being - served from META-INF/resources inside web application JAR - files, static resources are also served from - WEB-INF/classes/META-INF/resources. This only applies to - web applications with a major version of 3 or higher. Since this is a - proprietary extension to the Servlet 3 specification, it is disabled by - default. To enable this feature, set the attribute to true. -

-
antiResourceLocking -

If true, Tomcat will prevent any file locking. - This will significantly impact startup time of applications, - but allows full webapp hot deploy and undeploy on platforms - or configurations where file locking can occur. - If not specified, the default value is false.

- -

Please note that setting this to true has some side - effects, including the disabling of JSP reloading in a running server: - see - Bugzilla 37668.

- -

Please note that setting this flag to true in applications that are - outside the appBase for the Host (the webapps directory - by default) will cause the application to be deleted on - Tomcat shutdown. You probably don't want to do this, so think twice - before setting antiResourceLocking=true on a webapp that's outside the - appBase for its Host.

-
clearReferencesHttpClientKeepAliveThread -

If true and an sun.net.www.http.HttpClient - keep-alive timer thread has been started by this web application and is - still running, Tomcat will change the context class loader for that - thread from the web application class loader to the parent of the web - application class loader to prevent a memory leak. Note that the - keep-alive timer thread will stop on its own once the keep-alives all - expire however, on a busy system that might not happen for some time. If - not specified, the default value of true will be used.

-
clearReferencesRmiTargets -

If true, Tomcat looks for memory leaks associated with - RMI Targets and clears any it finds. This feature uses reflection to - identify the leaks and therefore requires that the command line option - -XaddExports:java.rmi/sun.rmi.transport=ALL-UNNAMED is set - when running on Java 9 and above. Applications without memory leaks - should operate correctly with this attribute set to false. - If not specified, the default value of true will be used.

-
clearReferencesStopThreads -

If true, Tomcat attempts to terminate threads that have - been started by the web application. Stopping threads is performed via - the deprecated (for good reason) Thread.stop() method and - is likely to result in instability. As such, enabling this should be - viewed as an option of last resort in a development environment and is - not recommended in a production environment. If not specified, the - default value of false will be used. If this feature is - enabled, web applications may take up to two seconds longer to stop as - executor threads are given up to two seconds to stop gracefully before - Thread.stop() is called on any remaining threads.

-
clearReferencesStopTimerThreads -

If true, Tomcat attempts to terminate - java.util.Timer threads that have been started by the web - application. Unlike standard threads, timer threads can be stopped - safely although there may still be side-effects for the application. If - not specified, the default value of false will be used.

-
copyXML -

Set to true if you want a context XML descriptor - embedded inside the application (located at - /META-INF/context.xml) to be copied to the owning - Host's xmlBase when the application - is deployed. On subsequent starts, the copied context XML descriptor - will be used in preference to any context XML descriptor embedded inside - the application even if the descriptor embedded inside the application - is more recent. The flag's value defaults to false. Note if - the deployXML attribute of the owning - Host is false or if the - copyXML attribute of the owning - Host is true, this attribute will - have no effect.

-
jndiExceptionOnFailedWrite -

If true, any attempt by an application to modify the - provided JNDI context with a call to bind(), unbind(), - createSubContext(), destroySubContext() or close() will trigger a - javax.naming.OperationNotSupportedException as required by - section EE.5.3.4 of the Java EE specification. This exception can be - disabled by setting this attribute to false in which case any calls to - modify the JNDI context will return without making any changes - and methods that return values will return null. If not - specified, the specification compliant default of true will - be used.

-
renewThreadsWhenStoppingContext -

If true, when this context is stopped, Tomcat renews all - the threads from the thread pool that was used to serve this context. - This also requires that the - ThreadLocalLeakPreventionListener be configured in - server.xml and that the threadRenewalDelay - property of the Executor be >=0. If not specified, the - default value of true will be used.

-
unloadDelay -

Number of ms that the container will wait for servlets to unload. - If not specified, the default value is 2000 ms.

-
unpackWAR -

If false, the unpackWARs attribute of - the owning Host will be overridden and the WAR - file will not be unpacked. If true, the value of the owning - Host's unpackWARs - attribute will determine if the WAR is unpacked. If not specified, the - default value is true.

-
useNaming -

Set to true (the default) to have Catalina enable a - JNDI InitialContext for this web application that is - compatible with Java2 Enterprise Edition (J2EE) platform - conventions.

-
workDir -

Pathname to a scratch directory to be provided by this Context - for temporary read-write use by servlets within the associated web - application. This directory will be made visible to servlets in the - web application by a servlet context attribute (of type - java.io.File) named - javax.servlet.context.tempdir as described in the - Servlet Specification. If not specified, a suitable directory - underneath $CATALINA_BASE/work will be provided.

-
- -
- - -

Nested Components

- -

You can nest at most one instance of the following utility components - by nesting a corresponding element inside your Context - element:

-
    -
  • Cookie Processor - - Configure parsing and generation of HTTP cookie headers.
  • -
  • Loader - - Configure the web application class loader that will be used to load - servlet and bean classes for this web application. Normally, the - default configuration of the class loader will be sufficient.
  • -
  • Manager - - Configure the session manager that will be used to create, destroy, - and persist HTTP sessions for this web application. Normally, the - default configuration of the session manager will be sufficient.
  • -
  • Realm - - Configure a realm that will allow its - database of users, and their associated roles, to be utilized solely - for this particular web application. If not specified, this web - application will utilize the Realm associated with the owning - Host or Engine.
  • -
  • Resources - - Configure the resource manager that will be used to access the static - resources associated with this web application. Normally, the - default configuration of the resource manager will be sufficient.
  • -
  • WatchedResource - The auto deployer will monitor the - specified static resource of the web application for updates, and will - reload the web application if it is updated. The content of this element - must be a string.
  • -
  • JarScanner - - Configure the Jar Scanner that will be used to scan the web application - for JAR files and directories of class files. It is typically used during - web application start to identify configuration files such as TLDs o - web-fragment.xml files that must be processed as part of the web - application initialisation. Normally, the default Jar Scanner - configuration will be sufficient.
  • -
- -

Special Features

- - -

Logging

- -

A context is associated with the - org.apache.catalina.core.ContainerBase.[enginename].[hostname].[path] - log category. Note that the brackets are actually part of the name, don't omit them.

- -
- - -

Access Logs

- -

When you run a web server, one of the output files normally generated - is an access log, which generates one line of information for - each request processed by the server, in a standard format. Catalina - includes an optional Valve implementation that - can create access logs in the same standard format created by web servers, - or in any number of custom formats.

- -

You can ask Catalina to create an access log for all requests - processed by an Engine, - Host, or Context - by nesting a Valve element like this:

- -
<Context>
-  ...
-  <Valve className="org.apache.catalina.valves.AccessLogValve"
-         prefix="localhost_access_log" suffix=".txt"
-         pattern="common"/>
-  ...
-</Context>
- -

See Access Logging Valves - for more information on the configuration attributes that are - supported.

- -
- - -

Automatic Context Configuration

- -

If you use the standard Context implementation, - the following configuration steps occur automatically when Catalina - is started, or whenever this web application is reloaded. No special - configuration is required to enable this feature.

- -
    -
  • If you have not declared your own Loader - element, a standard web application class loader will be configured. -
  • -
  • If you have not declared your own Manager - element, a standard session manager will be configured.
  • -
  • If you have not declared your own Resources - element, a standard resources manager will be configured.
  • -
  • The web application properties listed in conf/web.xml - will be processed as defaults for this web application. This is used - to establish default mappings (such as mapping the *.jsp - extension to the corresponding JSP servlet), and other standard - features that apply to all web applications.
  • -
  • The web application properties listed in the - /WEB-INF/web.xml resource for this web application - will be processed (if this resource exists).
  • -
  • If your web application has specified security constraints that might - require user authentication, an appropriate Authenticator that - implements the login method you have selected will be configured.
  • -
- -
- - -

Context Parameters

- -

You can configure named values that will be made visible to the - web application as servlet context initialization parameters by nesting - <Parameter> elements inside this element. For - example, you can create an initialization parameter like this:

-
<Context>
-  ...
-  <Parameter name="companyName" value="My Company, Incorporated"
-         override="false"/>
-  ...
-</Context>
- -

This is equivalent to the inclusion of the following element in the - web application deployment descriptor (/WEB-INF/web.xml): -

-
<context-param>
-  <param-name>companyName</param-name>
-  <param-value>My Company, Incorporated</param-value>
-</context-param>
-

but does not require modification of the deployment descriptor - to customize this value.

- -

The valid attributes for a <Parameter> element - are as follows:

- -
- Attribute - - Description -
description -

Optional, human-readable description of this context - initialization parameter.

-
name -

The name of the context initialization parameter to be created.

-
override -

Set this to false if you do not want - a <context-param> for the same parameter name, - found in the web application deployment descriptor, to override the - value specified here. By default, overrides are allowed.

-
value -

The parameter value that will be presented to the application - when requested by calling - ServletContext.getInitParameter().

-
- -
- - -

Environment Entries

- -

You can configure named values that will be made visible to the - web application as environment entry resources, by nesting - <Environment> entries inside this element. For - example, you can create an environment entry like this:

-
<Context>
-  ...
-  <Environment name="maxExemptions" value="10"
-         type="java.lang.Integer" override="false"/>
-  ...
-</Context>
- -

This is equivalent to the inclusion of the following element in the - web application deployment descriptor (/WEB-INF/web.xml): -

-
<env-entry>
-  <env-entry-name>maxExemptions</env-entry-name>
-  <env-entry-value>10</env-entry-value>
-  <env-entry-type>java.lang.Integer</env-entry-type>
-</env-entry>
-

but does not require modification of the deployment descriptor - to customize this value.

- -

The valid attributes for an <Environment> element - are as follows:

- -
- Attribute - - Description -
description -

Optional, human-readable description of this environment entry.

-
name -

The name of the environment entry to be created, relative to the - java:comp/env context.

-
override -

Set this to false if you do not want - an <env-entry> for the same environment entry name, - found in the web application deployment descriptor, to override the - value specified here. By default, overrides are allowed.

-
type -

The fully qualified Java class name expected by the web application - for this environment entry. Must be a legal value for - <env-entry-type> in the web application deployment - descriptor.

-
value -

The parameter value that will be presented to the application - when requested from the JNDI context. This value must be convertable - to the Java type defined by the type attribute.

-
- -
- - -

Lifecycle Listeners

- -

If you have implemented a Java object that needs to know when this - Context is started or stopped, you can declare it by - nesting a Listener element inside this element. The - class name you specify must implement the - org.apache.catalina.LifecycleListener interface, and - the class must be packaged in a jar and placed in the - $CATALINA_HOME/lib directory. - It will be notified about the occurrence of the corresponding - lifecycle events. Configuration of such a listener looks like this:

- -
<Context>
-  ...
-  <Listener className="com.mycompany.mypackage.MyListener" ... >
-  ...
-</Context>
- -

Note that a Listener can have any number of additional properties - that may be configured from this element. Attribute names are matched - to corresponding JavaBean property names using the standard property - method naming patterns.

- -
- - -

Request Filters

- -

You can ask Catalina to check the IP address, or host name, on every - incoming request directed to the surrounding - Engine, Host, or - Context element. The remote address or name - will be checked against configured "accept" and/or "deny" - filters, which are defined using java.util.regex Regular - Expression syntax. Requests that come from locations that are - not accepted will be rejected with an HTTP "Forbidden" error. - Example filter declarations:

- -
<Context>
-  ...
-  <Valve className="org.apache.catalina.valves.RemoteHostValve"
-         allow=".*\.mycompany\.com|www\.yourcompany\.com"/>
-  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
-         deny="192\.168\.1\.\d+"/>
-  ...
-</Context>
- -

See Remote Address Filter - and Remote Host Filter for - more information about the configuration options that are supported.

- -
- - -

Resource Definitions

- -

You can declare the characteristics of the resource - to be returned for JNDI lookups of <resource-ref> and - <resource-env-ref> elements in the web application - deployment descriptor. You MUST also define - the needed resource parameters as attributes of the Resource - element, to configure the object factory to be used (if not known to Tomcat - already), and the properties used to configure that object factory.

- -

For example, you can create a resource definition like this:

-
<Context>
-  ...
-  <Resource name="jdbc/EmployeeDB" auth="Container"
-            type="javax.sql.DataSource"
-     description="Employees Database for HR Applications"/>
-  ...
-</Context>
- -

This is equivalent to the inclusion of the following element in the - web application deployment descriptor (/WEB-INF/web.xml):

-
<resource-ref>
-  <description>Employees Database for HR Applications</description>
-  <res-ref-name>jdbc/EmployeeDB</res-ref-name>
-  <res-ref-type>javax.sql.DataSource</res-ref-type>
-  <res-auth>Container</res-auth>
-</resource-ref>
- -

but does not require modification of the deployment - descriptor to customize this value.

- -

The valid attributes for a <Resource> element - are as follows:

- -
- Attribute - - Description -
auth -

Specify whether the web Application code signs on to the - corresponding resource manager programmatically, or whether the - Container will sign on to the resource manager on behalf of the - application. The value of this attribute must be - Application or Container. This - attribute is required if the web application - will use a <resource-ref> element in the web - application deployment descriptor, but is optional if the - application uses a <resource-env-ref> instead.

-
closeMethod -

Name of the zero-argument method to call on a singleton resource when - it is no longer required. This is intended to speed up clean-up of - resources that would otherwise happen as part of garbage collection. - This attribute is ignored if the singleton attribute is - false. If not specified, no default is defined and no close method will - be called.

-

For Apache Commons DBCP and Apache Tomcat JDBC connection pools - you can use closeMethod="close".

-
description -

Optional, human-readable description of this resource.

-
name -

The name of the resource to be created, relative to the - java:comp/env context.

-
scope -

Specify whether connections obtained through this resource - manager can be shared. The value of this attribute must be - Shareable or Unshareable. By default, - connections are assumed to be shareable.

-
singleton -

Specify whether this resource definition is for a singleton resource, - i.e. one where there is only a single instance of the resource. If this - attribute is true, multiple JNDI lookups for this resource - will return the same object. If this attribute is false, - multiple JNDI lookups for this resource will return different objects. - This attribute must be true for - javax.sql.DataSource resources to enable JMX registration - of the DataSource. The value of this attribute must be true - or false. By default, this attribute is true. -

-
type -

The fully qualified Java class name expected by the web - application when it performs a lookup for this resource.

-
- - -
- - -
- -

This element is used to create a link to a global JNDI resource. Doing - a JNDI lookup on the link name will then return the linked global - resource.

- -

For example, you can create a resource link like this:

-
<Context>
-  ...
-  <ResourceLink name="linkToGlobalResource"
-            global="simpleValue"
-            type="java.lang.Integer"
-  ...
-</Context>
- -

The valid attributes for a <ResourceLink> element - are as follows:

- -
- Attribute - - Description -
global -

The name of the linked global resource in the - global JNDI context.

-
name -

The name of the resource link to be created, relative to the - java:comp/env context.

-
type -

The fully qualified Java class name expected by the web - application when it performs a lookup for this resource link.

-
factory -

The fully qualified Java class name for the class creating these objects. - This class should implement the javax.naming.spi.ObjectFactory interface.

-
- -

When the attribute factory="org.apache.naming.factory.DataSourceLinkFactory" the resource link can be used with - two additional attributes to allow a shared data source to be used with different credentials. - When these two additional attributes are used in combination with the javax.sql.DataSource - type, different contexts can share a global data source with different credentials. - Under the hood, what happens is that a call to getConnection() - is simply translated to a call - getConnection(username, password) on the global data source. This is an easy way to get code to be transparent to what schemas are being used, - yet be able to control connections (or pools) in the global configuration. -

-
- Attribute - - Description -
username -

username value for the getConnection(username, password) - call on the linked global DataSource. -

-
password -

password value for the getConnection(username, password) - call on the linked global DataSource. -

-
-

Shared Data Source Example:

-

Warning: This feature works only if the global DataSource -supports getConnection(username, password) method. -Apache Commons DBCP pool that -Tomcat uses by default does not support it. See its Javadoc for -BasicDataSource class. -Apache Tomcat JDBC pool does support it, -but by default this support is disabled and can be enabled by -alternateUsernameAllowed attribute. See its documentation -for details.

-
<GlobalNamingResources>
-  ...
-  <Resource name="sharedDataSource"
-            global="sharedDataSource"
-            type="javax.sql.DataSource"
-            factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
-            alternateUsernameAllowed="true"
-            username="bar"
-            password="barpass"
-            ...
-  ...
-</GlobalNamingResources>
-
-<Context path="/foo"...>
-  ...
-  <ResourceLink
-            name="appDataSource"
-            global="sharedDataSource"
-            type="javax.sql.DataSource"
-            factory="org.apache.naming.factory.DataSourceLinkFactory"
-            username="foo"
-            password="foopass"
-  ...
-</Context>
-<Context path="/bar"...>
-  ...
-  <ResourceLink
-            name="appDataSource"
-            global="sharedDataSource"
-            type="javax.sql.DataSource"
-  ...
-</Context>
-

When a request for getConnection() is made in the - /foo context, the request is translated into - getConnection("foo","foopass"), - while a request in the /bar gets passed straight through.

-
- -

Transaction

- -

You can declare the characteristics of the UserTransaction - to be returned for JNDI lookup for java:comp/UserTransaction. - You MUST define an object factory class to instantiate - this object as well as the needed resource parameters as attributes of the - Transaction - element, and the properties used to configure that object factory.

- -

The valid attributes for the <Transaction> element - are as follows:

- -
- Attribute - - Description -
factory -

The class name for the JNDI object factory.

-
- -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cookie-processor.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cookie-processor.html deleted file mode 100644 index 7344edece0c94dd1e29544bcc8c6818ce173a912..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/cookie-processor.html +++ /dev/null @@ -1,174 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Cookie Processor Component

The Cookie Processor Component

Table of Contents

Introduction

- -

The CookieProcessor element represents the component that - parses received cookie headers into javax.servlet.http.Cookie - objects accessible through HttpServletRequest.getCookies() and - converts javax.servlet.http.Cookie objects added to the response - through HttpServletResponse.addCookie() to the HTTP headers - returned to the client.

- -

A CookieProcessor element MAY be nested inside a - Context component. If it is not included, a default - implementation will be created automatically.

- -

Attributes

- -

Common Attributes

- -

All implementations of CookieProcessor support the - following attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This class must - implement the org.apache.tomcat.util.http.CookieProcessor - interface. If not specified, the standard value (defined below) will be - used.

-
- -
- - -

Standard Implementation

- -

The standard implementation of CookieProcessor is - org.apache.tomcat.util.http.Rfc6265CookieProcessor.

- -

This cookie processor is based on RFC6265 with the following changes to - support better interoperability:

- -
    -
  • Values 0x80 to 0xFF are permitted in cookie-octet to support the use - of UTF-8 in cookie values as used by HTML 5.
  • -
  • For cookies without a value, the '=' is not required after the name as - some browsers do not sent it.
  • -
- -

The RFC 6265 cookie processor is generally more lenient than the legacy - cookie parser. In particular:

- -
    -
  • The '=' and '/' characters are always - permitted in a cookie value.
  • -
  • Name only cookies are always permitted.
  • -
  • The cookie header is always preserved.
  • -
- -

No additional attributes are supported by the RFC 6265 Cookie - Processor.

- -
- -
- -

This is the legacy cookie parser based on RFC6265, RFC2109 and RFC2616. - It implements a strict interpretation of the cookie specifications. Due to - various interoperability issues with browsers not all strict behaviours - are enabled by default and additional options are available to further - relax the behaviour of this cookie processor if required.

- -
- Attribute - - Description -
allowEqualsInValue -

If this is true Tomcat will allow '=' - characters when parsing unquoted cookie values. If false, - cookie values containing '=' will be terminated when the - '=' is encountered and the remainder of the cookie value - will be dropped.

-

If not set the specification compliant default value of - false will be used.

-
allowHttpSepsInV0 -

If this is true Tomcat will allow HTTP separators in - cookie names and values.

-

If not specified, the default specification compliant value of - false will be used.

-
allowNameOnly -

If this is true Tomcat will allow name only cookies - (with or without trailing '=') when parsing cookie headers. - If false, name only cookies will be dropped.

-

If not set the specification compliant default value of - false will be used.

-
alwaysAddExpires -

If this is true Tomcat will always add an expires - parameter to a SetCookie header even for cookies with version greater - than zero. This is to work around a known IE6 and IE7 bug that causes I - to ignore the Max-Age parameter in a SetCookie header.

-

If org.apache.catalina.STRICT_SERVLET_COMPLIANCE is set - to true, the default of this setting will be - false, else the default value will be true. -

-
forwardSlashIsSeparator -

If this is true Tomcat will treat the forward slash - character ('/') as an HTTP separator when processing cookie - headers. If org.apache.catalina.STRICT_SERVLET_COMPLIANCE - is set to true, the default of this setting will be - true, else the default value will be false. -

-
- -
- -

Nested Components

- -

No element may be nested inside a CookieProcessor.

- -

Special Features

- -

No special features are associated with a CookieProcessor - element.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/credentialhandler.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/credentialhandler.html deleted file mode 100644 index 4f3ba097b0dfd23855ac532c6f883128dfdd3f7e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/credentialhandler.html +++ /dev/null @@ -1,209 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The CredentialHandler Component

The CredentialHandler Component

Table of Contents

Introduction

- -

The CredentialHandler element represents the component - used by a Realm to compare a provided credential such - as a password with the version of the credential stored by the - Realm. The CredentialHandler can - also be used to generate a new stored version of a given credential that would - be required, for example, when adding a new user to a - Realm or when changing a user's password.

- -

A CredentialHandler element MUST be nested inside a - Realm component. If it is not included, - a default CredentialHandler will be created using the - MessageDigestCredentialHandler.

- -

Attributes

- -

Common Attributes

- -

All implementations of CredentialHandler support the - following attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This class must - implement the org.apache.catalina.CredentialHandler - interface.

-
- -

Unlike most Catalina components, there are several standard - CredentialHandler implementations available. As a result, - if a CredentialHandler element is present then the - className attribute MUST be used to select the implementation - you wish to use.

- -
- - -

MessageDigestCredentialHandler

- -

The MessageDigestCredentialHandler is used when stored - passwords are protected by a message digest. This credential handler - supports the following forms of stored passwords:

-
    -
  • plainText - the plain text credentials if no - algorithm is specified
  • -
  • encodedCredential - a hex encoded digest of the - password digested using the configured digest
  • -
  • {MD5}encodedCredential - a Base64 encoded MD5 - digest of the password
  • -
  • {SHA}encodedCredential - a Base64 encoded SHA1 digest - of the password
  • -
  • {SSHA}encodedCredential - 20 character salt followed - by the salted SHA1 digest Base64 encoded
  • -
  • salt$iterationCount$encodedCredential - a hex encoded - salt, iteration code and a hex encoded credential, each separated by - $
  • -
- -

If the stored password form does not include an iteration count then an - iteration count of 1 is used.

- -

If the stored password form does not include salt then no salt is - used.

- -
- Attribute - - Description -
algorithm -

The name of the java.security.MessageDigest algorithm - used to encode user passwords stored in the database. If not specified, - user passwords are assumed to be stored in clear-text.

-
encoding -

Digesting the password requires that it is converted to bytes. This - attribute determines the character encoding to use for conversions - between characters and bytes. If not specified, UTF-8 will be used.

-
iterations -

The number of iterations to use when creating a new stored credential - from a clear text credential.

-
saltLength -

The length of the randomly generated salt to use when creating a - new stored credential from a clear text credential.

-
- -
- -

NestedCredentialHandler

- -

The NestedCredentialHandler is an implementation of - CredentialHandler that delegates to one or more - sub-CredentialHandlers.

- -

Using the NestedCredentialHandler gives the developer - the ability to combine multiple CredentialHandlers of the - same or different types.

- -

Sub-CredentialHandlers are defined by nesting CredentialHandler elements - inside the CredentialHandler element that defines the - NestedCredentialHandler. Credentials will be matched against each - CredentialHandler in the order they are listed. A match against - any CredentialHandler will be sufficient for the credentials to be - considered matched.

- -
- -

SecretKeyCredentialHandler

- -

The SecretKeyCredentialHandler is used when stored - passwords are built using javax.crypto.SecretKeyFactory. This - credential handler supports the following forms of stored passwords:

-
    -
  • salt$iterationCount$encodedCredential - a hex encoded - salt, iteration code and a hex encoded credential, each separated by - $
  • -
- -

If the stored password form does not include an iteration count then an - iteration count of 1 is used.

- -

If the stored password form does not include salt then no salt is - used.

- -
- Attribute - - Description -
algorithm -

The name of the secret key algorithm used to encode user passwords - stored in the database. If not specified, a default of - PBKDF2WithHmacSHA1 is used.

-
keyLength -

The length of key to generate for the stored credential. If not - specified, a default of 160 is used.

-
iterations -

The number of iterations to use when creating a new stored credential - from a clear text credential.

-
saltLength -

The length of the randomly generated salt to use when creating a - new stored credential from a clear text credential.

-
- -
- -

Nested Components

- -

If you are using the NestedCredentialHandler Implementation or a - CredentialHandler that extends the NestedCredentialHandler one or more - <CredentialHandler> elements may be nested inside it. -

- -

Special Features

- -

No special features are associated with a - CredentialHandler element.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/engine.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/engine.html deleted file mode 100644 index 1632d5eb1c4bfe442eb4d5fb2aa63cac83963e15..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/engine.html +++ /dev/null @@ -1,259 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Engine Container

The Engine Container

Table of Contents

Introduction

- -

The Engine element represents the entire request - processing machinery associated with a particular Catalina - Service. It receives and processes - all requests from one or more Connectors, - and returns the completed response to the Connector for ultimate - transmission back to the client.

- -

Exactly one Engine element MUST be nested inside - a Service element, following all of the - corresponding Connector elements associated with this Service.

- -

Attributes

- -

Common Attributes

- -

All implementations of Engine - support the following attributes:

- -
- Attribute - - Description -
backgroundProcessorDelay -

This value represents the delay in seconds between the - invocation of the backgroundProcess method on this engine and - its child containers, including all hosts and contexts. - Child containers will not be invoked if their delay value is not - negative (which would mean they are using their own processing - thread). Setting this to a positive value will cause - a thread to be spawn. After waiting the specified amount of time, - the thread will invoke the backgroundProcess method on this engine - and all its child containers. If not specified, the default value for - this attribute is 10, which represent a 10 seconds delay.

-
className -

Java class name of the implementation to use. This class must - implement the org.apache.catalina.Engine interface. - If not specified, the standard value (defined below) will be used.

-
defaultHost -

The default host name, which identifies the - Host that will process requests directed - to host names on this server, but which are not configured in - this configuration file. This name MUST match the name - attributes of one of the Host elements - nested immediately inside.

-
jvmRoute -

Identifier which must be used in load balancing scenarios to enable - session affinity. The identifier, which must be unique across all - Tomcat servers which participate in the cluster, will be appended to - the generated session identifier, therefore allowing the front end - proxy to always forward a particular session to the same Tomcat - instance.

-

- Note that the jvmRoute can also be set using the - jvmRoute system property. The jvmRoute - set in an <Engine> attribute will override - any jvmRoute system property. -

-
name -

Logical name of this Engine, used in log and error messages. When - using multiple Service elements in the same - Server, each Engine MUST be assigned a unique - name.

-
startStopThreads -

The number of threads this Engine will use to start - child Host elements in parallel. The special - value of 0 will result in the value of - Runtime.getRuntime().availableProcessors() being used. - Negative values will result in - Runtime.getRuntime().availableProcessors() + value being - used unless this is less than 1 in which case 1 thread will be used. If - not specified, the default value of 1 will be used.

-
- -
- - -

Standard Implementation

- -

The standard implementation of Engine is - org.apache.catalina.core.StandardEngine. - It supports the following additional attributes (in addition to the - common attributes listed above):

- -
- Attribute - - Description -
- -
- - -

Nested Components

- -

You can nest one or more Host elements inside - this Engine element, each representing a different virtual - host associated with this server. At least one Host - is required, and one of the nested Hosts MUST - have a name that matches the name specified for the - defaultHost attribute, listed above.

- -

You can nest at most one instance of the following utility components - by nesting a corresponding element inside your Engine - element:

-
    -
  • Realm - - Configure a realm that will allow its - database of users, and their associated roles, to be shared across all - Hosts and Contexts - nested inside this Engine, unless overridden by a - Realm configuration at a lower level.
  • -
- -

Special Features

- - -

Logging

- -

An engine is associated with the - org.apache.catalina.core.ContainerBase.[enginename] - log category. Note that the brackets are actually part of the name, - don't omit them.

- -
- - -

Access Logs

- -

When you run a web server, one of the output files normally generated - is an access log, which generates one line of information for - each request processed by the server, in a standard format. Catalina - includes an optional Valve implementation that - can create access logs in the same standard format created by web servers, - or in any number of custom formats.

- -

You can ask Catalina to create an access log for all requests - processed by an Engine, - Host, or Context - by nesting a Valve element like this:

- -
<Engine name="Standalone" ...>
-  ...
-  <Valve className="org.apache.catalina.valves.AccessLogValve"
-         prefix="catalina_access_log" suffix=".txt"
-         pattern="common"/>
-  ...
-</Engine>
- -

See Access Logging Valves - for more information on the configuration attributes that are - supported.

- -
- - -

Lifecycle Listeners

- -

If you have implemented a Java object that needs to know when this - Engine is started or stopped, you can declare it by - nesting a Listener element inside this element. The - class name you specify must implement the - org.apache.catalina.LifecycleListener interface, and - it will be notified about the occurrence of the corresponding - lifecycle events. Configuration of such a listener looks like this:

- -
<Engine name="Standalone" ...>
-  ...
-  <Listener className="com.mycompany.mypackage.MyListener" ... >
-  ...
-</Engine>
- -

Note that a Listener can have any number of additional properties - that may be configured from this element. Attribute names are matched - to corresponding JavaBean property names using the standard property - method naming patterns.

- -
- - -

Request Filters

- -

You can ask Catalina to check the IP address, or host name, on every - incoming request directed to the surrounding - Engine, Host, or - Context element. The remote address or name - will be checked against configured "accept" and/or "deny" - filters, which are defined using java.util.regex Regular - Expression syntax. Requests that come from locations that are - not accepted will be rejected with an HTTP "Forbidden" error. - Example filter declarations:

- -
<Engine name="Standalone" ...>
-  ...
-  <Valve className="org.apache.catalina.valves.RemoteHostValve"
-         allow=".*\.mycompany\.com|www\.yourcompany\.com"/>
-  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
-         deny="192\.168\.1\.\d+"/>
-  ...
-</Engine>
- -

See Remote Address Filter - and Remote Host Filter for - more information about the configuration options that are supported.

- -
- - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/executor.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/executor.html deleted file mode 100644 index bbb9476a5cfdca96721eaef2c5fd795622b0372a..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/executor.html +++ /dev/null @@ -1,127 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Executor (thread pool)

The Executor (thread pool)

Table of Contents

Introduction

- -

The Executor represents a thread pool that can be shared - between components in Tomcat. Historically there has been a thread pool per - connector created but this allows you to share a thread pool, between (primarily) connector - but also other components when those get configured to support executors

- - -

The executor has to implement the org.apache.catalina.Executor interface.

- -

The executor is a nested element to the Service element. - And in order for it to be picked up by the connectors, the Executor element has to appear - prior to the Connector element in server.xml

-

Attributes

- -

Common Attributes

- -

All implementations of Executor - support the following attributes:

- -
- Attribute - - Description -
className -

The class of the implementation. The implementation has to implement the - org.apache.catalina.Executor interface. - This interface ensures that the object can be referenced through its name attribute - and that implements Lifecycle, so that it can be started and stopped with the container. - The default value for the className is org.apache.catalina.core.StandardThreadExecutor

-
name -

The name used to reference this pool in other places in server.xml. - The name is required and must be unique.

-
- -
- -

Standard Implementation

- -

- The default implementation supports the following attributes:

- -
- Attribute - - Description -
threadPriority -

(int) The thread priority for threads in the executor, the default is - 5 (the value of the Thread.NORM_PRIORITY constant)

-
daemon -

(boolean) Whether the threads should be daemon threads or not, the default is true

-
namePrefix -

(String) The name prefix for each thread created by the executor. - The thread name for an individual thread will be namePrefix+threadNumber

-
maxThreads -

(int) The max number of active threads in this pool, default is 200

-
minSpareThreads -

(int) The minimum number of threads always kept alive, default is 25

-
maxIdleTime -

(int) The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less - or equal to minSpareThreads. Default value is 60000(1 minute)

-
maxQueueSize -

(int) The maximum number of runnable tasks that can queue up awaiting - execution before we reject them. Default value is Integer.MAX_VALUE

-
prestartminSpareThreads -

(boolean) Whether minSpareThreads should be started when starting the Executor or not, - the default is false

-
threadRenewalDelay -

(long) If a ThreadLocalLeakPreventionListener is configured, - it will notify this executor about stopped contexts. - After a context is stopped, threads in the pool are renewed. To avoid renewing all threads at the same time, - this option sets a delay between renewal of any 2 threads. The value is in ms, - default value is 1000 ms. If value is negative, threads are not renewed.

-
- - -
-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/filter.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/filter.html deleted file mode 100644 index c63ac75217f55479e86c7f630fd5d90ccff861e3..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/filter.html +++ /dev/null @@ -1,1633 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - Container Provided Filters

Container Provided Filters

Table of Contents

- -

Introduction

- -

Tomcat provides a number of Filters which may be - configured for use with all web applications using - $CATALINA_BASE/conf/web.xml or may be configured for individual - web applications by configuring them in the application's - WEB-INF/web.xml. Each filter is described below.

- -

This description uses the variable name $CATALINA_BASE to refer the - base directory against which most relative paths are resolved. If you have - not configured Tomcat for multiple instances by setting a CATALINA_BASE - directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME, - the directory into which you have installed Tomcat.

- -

Add Default Character Set Filter

- -

Introduction

- -

The HTTP specification is clear that if no character set is specified for - media sub-types of the "text" media type, the ISO-8859-1 character set must - be used. However, browsers may attempt to auto-detect the character set. - This may be exploited by an attacker to perform an XSS attack. Internet - Explorer and other browsers have an option to - enable this behavior.

- -

This filter prevents the attack by explicitly setting a character set. - Unless the provided character set is explicitly overridden by the user the - browser will adhere to the explicitly set character set, thus preventing the - XSS attack.

- -
- -

Filter Class Name

- -

The filter class name for the Add Default Character Set Filter is - org.apache.catalina.filters.AddDefaultCharsetFilter - .

- -
- -

Initialisation parameters

- -

The Add Default Character Set Filter supports the following initialization - parameters:

- -
- Attribute - - Description -
encoding -

Name of the character set which should be set, if no other character set - was set explicitly by a Servlet. This parameter has two special values - default and system. A value of system - uses the JVM wide default character set, which is usually set by locale. - A value of default will use ISO-8859-1.

-
- -
- -

CORS Filter

-

Introduction

-

This filter is an implementation of W3C's CORS (Cross-Origin Resource - Sharing) specification, which is a - mechanism that enables cross-origin requests.

-

The filter works by adding required Access-Control-* headers - to HttpServletResponse object. The filter also protects against HTTP - response splitting. If request is invalid, or is not permitted, then request - is rejected with HTTP status code 403 (Forbidden). A - flowchart that - demonstrates request processing by this filter is available.

-

The minimal configuration required to use this filter is:

-
<filter>
-  <filter-name>CorsFilter</filter-name>
-  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
-</filter>
-<filter-mapping>
-  <filter-name>CorsFilter</filter-name>
-  <url-pattern>/*</url-pattern>
-</filter-mapping>
-
-

Filter Class Name

-

The filter class name for the CORS Filter is - org.apache.catalina.filters.CorsFilter.

-
-

Initialisation parameters

-

The CORS Filter supports following initialisation parameters:

-
- Attribute - - Description -
cors.allowed.origins -

A list of origins - that are allowed to access the resource. A * can be - specified to enable access to resource from any origin. Otherwise, a - whitelist of comma separated origins can be provided. Eg: - http://www.w3.org, https://www.apache.org. - Defaults: * (Any origin is allowed to - access the resource).

-
cors.allowed.methods -

A comma separated list of HTTP methods that can be used to access the - resource, using cross-origin requests. These are the methods which will - also be included as part of Access-Control-Allow-Methods - header in pre-flight response. Eg: GET, POST. - Defaults: GET, POST, HEAD, OPTIONS

-
cors.allowed.headers -

A comma separated list of request headers that can be used when - making an actual request. These headers will also be returned as part - of Access-Control-Allow-Headers header in a pre-flight - response. Eg: Origin,Accept. Defaults: - Origin, Accept, X-Requested-With, Content-Type, - Access-Control-Request-Method, Access-Control-Request-Headers

-
cors.exposed.headers -

A comma separated list of headers other than simple response headers - that browsers are allowed to access. These are the headers which will - also be included as part of Access-Control-Expose-Headers - header in the pre-flight response. Eg: - X-CUSTOM-HEADER-PING,X-CUSTOM-HEADER-PONG. - Default: None. Non-simple headers are not exposed by - default.

-
cors.preflight.maxage -

The amount of seconds, browser is allowed to cache the result of the - pre-flight request. This will be included as part of - Access-Control-Max-Age header in the pre-flight response. - A negative value will prevent CORS Filter from adding this response - header to pre-flight response. Defaults: - 1800

-
cors.support.credentials -

A flag that indicates whether the resource supports user credentials. - This flag is exposed as part of - Access-Control-Allow-Credentials header in a pre-flight - response. It helps browser determine whether or not an actual request - can be made using credentials. Defaults: - true

-
cors.request.decorate -

A flag to control if CORS specific attributes should be added to - HttpServletRequest object or not. Defaults: - true

-
-

Here's an example of a more advanced configuration, that overrides - defaults:

-
<filter>
-  <filter-name>CorsFilter</filter-name>
-  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
-  <init-param>
-    <param-name>cors.allowed.origins</param-name>
-    <param-value>*</param-value>
-  </init-param>
-  <init-param>
-    <param-name>cors.allowed.methods</param-name>
-    <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
-  </init-param>
-  <init-param>
-    <param-name>cors.allowed.headers</param-name>
-    <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
-  </init-param>
-  <init-param>
-    <param-name>cors.exposed.headers</param-name>
-    <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
-  </init-param>
-  <init-param>
-    <param-name>cors.support.credentials</param-name>
-    <param-value>true</param-value>
-  </init-param>
-  <init-param>
-    <param-name>cors.preflight.maxage</param-name>
-    <param-value>10</param-value>
-  </init-param>
-</filter>
-<filter-mapping>
-  <filter-name>CorsFilter</filter-name>
-  <url-pattern>/*</url-pattern>
-</filter-mapping>
-
-

CORS Filter and HttpServletRequest attributes

-

CORS Filter adds information about the request, in HttpServletRequest - object, for consumption downstream. Following attributes are set, if - cors.request.decorate initialisation parameter is - true:

-
    -
  • cors.isCorsRequest: Flag to determine if request is - a CORS request.
  • -
  • cors.request.origin: The Origin URL, i.e. the URL of - the page from where the request originated.
  • -
  • cors.request.type: Type of CORS request. Possible - values: -
      -
    • SIMPLE: A request which is not preceded by a - pre-flight request.
    • -
    • ACTUAL: A request which is preceded by a pre-flight - request.
    • -
    • PRE_FLIGHT: A pre-flight request.
    • -
    • NOT_CORS: A normal same-origin request.
    • -
    • INVALID_CORS: A cross-origin request, which is - invalid.
    • -
    -
  • -
  • cors.request.headers: Request headers sent as - Access-Control-Request-Headers header, for a pre-flight - request. -
  • -
-
-

CSRF Prevention Filter

- -

Introduction

- -

This filter provides basic CSRF protection for a web application. The - filter assumes that it is mapped to /* and that all URLs - returned to the client are encoded via a call to - HttpServletResponse#encodeRedirectURL(String) or - HttpServletResponse#encodeURL(String).

- -

This filter prevents CSRF by generating a nonce and storing it in the - session. URLs are also encoded with the same nonce. When the next request is - received the nonce in the request is compared to the nonce in the session - and only if they are the same is the request allowed to continue.

- -
- -

Filter Class Name

- -

The filter class name for the CSRF Prevention Filter is - org.apache.catalina.filters.CsrfPreventionFilter - .

- -
- -

Initialisation parameters

- -

The CSRF Prevention Filter supports the following initialisation - parameters:

- -
- Attribute - - Description -
denyStatus -

HTTP response status code that is used when rejecting denied - request. The default value is 403.

-
entryPoints -

A comma separated list of URLs that will not be tested for the - presence of a valid nonce. They are used to provide a way to navigate - back to a protected application after having navigated away from it. - Entry points will be limited to HTTP GET requests and should not trigger - any security sensitive actions.

-
nonceCacheSize -

The number of previously issued nonces that will be cached on a LRU - basis to support parallel requests, limited use of the refresh and back - in the browser and similar behaviors that may result in the submission - of a previous nonce rather than the current one. If not set, the default - value of 5 will be used.

-
randomClass -

The name of the class to use to generate nonces. The class must be an - instance of java.util.Random. If not set, the default value - of java.security.SecureRandom will be used.

-
- -
- -

CSRF Prevention Filter for REST APIs

- -

Introduction

- -

This filter provides basic CSRF protection for REST APIs. The CSRF - protection is applied only for modifying HTTP requests (different from GET, - HEAD, OPTIONS) to protected resources. It is based on a custom header - X-CSRF-Token that provides a valid nonce.

- -

CSRF protection mechanism for REST APIs consists of the following steps: -

    -
  • Client asks for a valid nonce. This is performed with a - non-modifying "Fetch" request to protected resource.
  • -
  • Server responds with a valid nonce mapped to the current user - session.
  • -
  • Client provides this nonce in the subsequent modifying requests in - the frame of the same user session.
  • -
  • Server rejects all modifying requests to protected resources that - do not contain a valid nonce.
  • -
-

- -
- -

Basic configuration sample

- -

On the server side

- -
    -
  • All CSRF protected REST APIs should be protected with an authentication - mechanism.
  • -
  • Protect modifying REST APIs with this filter.
  • -
  • Provide at least one non-modifying operation.
  • -
-
<filter>
-  <filter-name>RestCSRF</filter-name>
-  <filter-class>org.apache.catalina.filters.RestCsrfPreventionFilter</filter-class>
-</filter>
-<filter-mapping>
-  <filter-name>RestCSRF</filter-name>
-  <!-- Modifying operations -->
-  <url-pattern>/resources/removeResource</url-pattern>
-  <url-pattern>/resources/addResource</url-pattern>
-  <!-- Non-modifying operations -->
-  <url-pattern>/resources/listResources</url-pattern>
-</filter-mapping>
- -

On the client side

- -
    -
  • Make a non-modifying "Fetch" request in order to obtain a valid nonce. - This can be done with sending additional header - X-CSRF-Token: Fetch
  • -
  • Cache the returned session id and nonce in order to provide them in - the subsequent modifying requests to protected resources.
  • -
  • Modifying requests can be denied and header - X-CSRF-Token: Required will be returned in case of - invalid or missing nonce, expired session or in case the session - id is changed by the server.
  • -
-
Client Request:
-GET /rest/resources/listResources HTTP/1.1
-X-CSRF-Token: Fetch
-Authorization: Basic ...
-Host: localhost:8080
-...
-
-Server Response:
-HTTP/1.1 200 OK
-Set-Cookie: JSESSIONID=...; Path=/rest; HttpOnly
-X-CSRF-Token: ...
-...
-
-Client Request:
-POST /rest/resources/addResource HTTP/1.1
-Cookie: JSESSIONID=...
-X-CSRF-Token: ...
-Authorization: Basic ...
-Host: localhost:8080
-...
-
-Server Response:
-HTTP/1.1 200 OK
-...
- -
- -

RestCsrfPreventionFilter and HttpServletRequest parameters

- -

When the client is not able to insert custom headers in its calls to - REST APIs there is additional capability to configure URLs for which a - valid nonce will be accepted as a request parameter.

- -

Note: If there is a X-CSRF-Token header, it will be taken - with preference over any parameter with the same name in the request. - Request parameters cannot be used to fetch new nonce, only header can be - used to request a new nonce.

- -
<filter>
-  <filter-name>RestCSRF</filter-name>
-  <filter-class>org.apache.catalina.filters.RestCsrfPreventionFilter</filter-class>
-  <init-param>
-    <param-name>pathsAcceptingParams</param-name>
-    <param-value>/resources/removeResource,/resources/addResource</param-value>
-  </init-param>
-</filter>
-<filter-mapping>
-  <filter-name>RestCSRF</filter-name>
-  <url-pattern>/resources/*</url-pattern>
-</filter-mapping>
- -
- -

Filter Class Name

- -

The filter class name for the CSRF Prevention Filter for REST APIs is - org.apache.catalina.filters.RestCsrfPreventionFilter - .

- -
- -

Initialisation parameters

- -

The CSRF Prevention Filter for REST APIs supports the following - initialisation parameters:

- -
- Attribute - - Description -
denyStatus -

HTTP response status code that is used when rejecting denied - request. The default value is 403.

-
pathsAcceptingParams -

A comma separated list of URLs that can accept nonces via request - parameter X-CSRF-Token. For use cases when a nonce information cannot - be provided via header, one can provide it via request parameters. If - there is a X-CSRF-Token header, it will be taken with preference over - any parameter with the same name in the request. Request parameters - cannot be used to fetch new nonce, only header can be used to request a - new nonce.

-
randomClass -

The name of the class to use to generate nonces. The class must be an - instance of java.util.Random. If not set, the default value - of java.security.SecureRandom will be used.

-
- -
- -

Expires Filter

- -

Introduction

- -

- ExpiresFilter is a Java Servlet API port of Apache - mod_expires. - This filter controls the setting of the Expires HTTP header and the - max-age directive of the Cache-Control HTTP header in - server responses. The expiration date can set to be relative to either the - time the source file was last modified, or to the time of the client access. -

- -

- These HTTP headers are an instruction to the client about the document's - validity and persistence. If cached, the document may be fetched from the - cache rather than from the source until this time has passed. After that, the - cache copy is considered "expired" and invalid, and a new copy must - be obtained from the source. -

-

- To modify Cache-Control directives other than max-age (see - RFC - 2616 section 14.9), you can use other servlet filters or Apache Httpd - mod_headers module. -

- -
- -

Basic configuration sample

-

- Basic configuration to add 'Expires' and 'Cache-Control: max-age=' - headers to images, css and javascript. -

- -
<filter>
- <filter-name>ExpiresFilter</filter-name>
- <filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class>
- <init-param>
-    <param-name>ExpiresByType image</param-name>
-    <param-value>access plus 10 minutes</param-value>
- </init-param>
- <init-param>
-    <param-name>ExpiresByType text/css</param-name>
-    <param-value>access plus 10 minutes</param-value>
- </init-param>
- <init-param>
-    <param-name>ExpiresByType application/javascript</param-name>
-    <param-value>access plus 10 minutes</param-value>
- </init-param>
-</filter>
-...
-<filter-mapping>
- <filter-name>ExpiresFilter</filter-name>
- <url-pattern>/*</url-pattern>
- <dispatcher>REQUEST</dispatcher>
-</filter-mapping>
- -
- -

Alternate Syntax

-

- The ExpiresDefault and ExpiresByType directives can also be - defined in a more readable syntax of the form: -

- -
<init-param>
- <param-name>ExpiresDefault</param-name>
- <param-value><base> [plus] {<num> <type>}*</param-value>
-</init-param>
-
-<init-param>
- <param-name>ExpiresByType type</param-name>
- <param-value><base> [plus] {<num> <type>}*</param-value>
-</init-param>
-
-<init-param>
- <param-name>ExpiresByType type;encoding</param-name>
- <param-value><base> [plus] {<num> <type>}*</param-value>
-</init-param>
-

- where <base> is one of: -

-
    -
  • access
  • -
  • now (equivalent to 'access')
  • -
  • modification
  • -
- -

- The plus keyword is optional. <num> should be an - integer value (acceptable to Integer.parseInt()), and - <type> is one of: -

-
    -
  • year, years
  • -
  • month, months
  • -
  • week, weeks
  • -
  • day, days
  • -
  • hour, hours
  • -
  • minute, minutes
  • -
  • second, seconds
  • -
-

- For example, any of the following directives can be used to make documents - expire 1 month after being accessed, by default: -

- -
<init-param>
- <param-name>ExpiresDefault</param-name>
- <param-value>access plus 1 month</param-value>
-</init-param>
-
-<init-param>
- <param-name>ExpiresDefault</param-name>
- <param-value>access plus 4 weeks</param-value>
-</init-param>
-
-<init-param>
- <param-name>ExpiresDefault</param-name>
- <param-value>access plus 30 days</param-value>
-</init-param>
-

-The expiry time can be fine-tuned by adding several -'<num> <type>' clauses: -

- -
<init-param>
- <param-name>ExpiresByType text/html</param-name>
- <param-value>access plus 1 month 15 days 2 hours</param-value>
-</init-param>
-
-<init-param>
- <param-name>ExpiresByType image/gif</param-name>
- <param-value>modification plus 5 hours 3 minutes</param-value>
-</init-param>
-

- Note that if you use a modification date based setting, the Expires - header will not be added to content that does not come from - a file on disk. This is due to the fact that there is no modification time - for such content. -

-
- -

Expiration headers generation eligibility

-

- A response is eligible to be enriched by ExpiresFilter if : -

-
    -
  1. no expiration header is defined (Expires header or the - max-age directive of the Cache-Control header),
  2. -
  3. the response status code is not excluded by the directive - ExpiresExcludedResponseStatusCodes,
  4. -
  5. the Content-Type of the response matches one of the types - defined the in ExpiresByType directives or the - ExpiresDefault directive is defined.
  6. -
- -

- Note : If Cache-Control header contains other directives than - max-age, they are concatenated with the max-age directive - that is added by the ExpiresFilter. -

- -
- -

Expiration configuration selection

-

- The expiration configuration if elected according to the following algorithm: -

-
    -
  1. ExpiresByType matching the exact content-type returned by - HttpServletResponse.getContentType() possibly including the charset - (e.g. 'text/xml;charset=UTF-8'),
  2. -
  3. ExpiresByType matching the content-type without the charset if - HttpServletResponse.getContentType() contains a charset (e.g. - 'text/xml;charset=UTF-8' -> 'text/xml'),
  4. -
  5. ExpiresByType matching the major type (e.g. substring before - '/') of HttpServletResponse.getContentType() - (e.g. 'text/xml;charset=UTF-8' -> 'text'),
  6. -
  7. ExpiresDefault
  8. -
- -
- -

Filter Class Name

- -

The filter class name for the Expires Filter is - org.apache.catalina.filters.ExpiresFilter - .

- -
- -

Initialisation parameters

- -

The Expires Filter supports the following - initialisation parameters:

- -
- Attribute - - Description -
ExpiresExcludedResponseStatusCodes -

- This directive defines the http response status codes for which the - ExpiresFilter will not generate expiration headers. By default, the - 304 status code ("Not modified") is skipped. The - value is a comma separated list of http status codes. -

-

- This directive is useful to ease usage of ExpiresDefault directive. - Indeed, the behavior of 304 Not modified (which does specify a - Content-Type header) combined with Expires and - Cache-Control:max-age= headers can be unnecessarily tricky to - understand. -

-

See sample below the table

-
ExpiresByType <content-type> -

- This directive defines the value of the Expires header and the - max-age directive of the Cache-Control header generated for - documents of the specified type (e.g., text/html). The second - argument sets the number of seconds that will be added to a base time to - construct the expiration date. The Cache-Control: max-age is - calculated by subtracting the request time from the expiration date and - expressing the result in seconds. -

-

- The base time is either the last modification time of the file, or the time - of the client's access to the document. Which should be used is - specified by the <code> field; M means that the - file's last modification time should be used as the base time, and - A means the client's access time should be used. The duration - is expressed in seconds. A2592000 stands for - access plus 30 days in alternate syntax. -

-

- The difference in effect is subtle. If M (modification in - alternate syntax) is used, all current copies of the document in all caches - will expire at the same time, which can be good for something like a weekly - notice that's always found at the same URL. If A ( - access or now in alternate syntax) is used, the date of - expiration is different for each client; this can be good for image files - that don't change very often, particularly for a set of related - documents that all refer to the same images (i.e., the images will be - accessed repeatedly within a relatively short timespan). -

-

- Note: When the content type includes a charset (e.g. - 'ExpiresByType text/xml;charset=utf-8'), Tomcat removes blank chars - between the ';' and the 'charset' keyword. Due to this, - configuration of an expiration with a charset must not include - such a space character. -

-

See sample below the table

-

- It overrides, for the specified MIME type only, any - expiration date set by the ExpiresDefault directive. -

-

- You can also specify the expiration time calculation using an alternate - syntax, described earlier in this document. -

-
ExpiresDefault -

- This directive sets the default algorithm for calculating the - expiration time for all documents in the affected realm. It can be - overridden on a type-by-type basis by the ExpiresByType directive. See the - description of that directive for details about the syntax of the - argument, and the "alternate syntax" - description as well. -

-
- -

Sample: exclude response status codes 302, 500 and 503

- -
<init-param>
- <param-name>ExpiresExcludedResponseStatusCodes</param-name>
- <param-value>302, 500, 503</param-value>
-</init-param>
- -

Sample for ExpiresByType initialization parameter

- -
<init-param>
-   <param-name>ExpiresByType text/html</param-name>
-   <param-value>access plus 1 month 15   days 2 hours</param-value>
-</init-param>
-
-<init-param>
-   <!-- 2592000 seconds = 30 days -->
-   <param-name>ExpiresByType image/gif</param-name>
-   <param-value>A2592000</param-value>
-</init-param>
- -
- -

Troubleshooting

-

- To troubleshoot, enable logging on the - org.apache.catalina.filters.ExpiresFilter. -

-

- Extract of logging.properties -

- -
org.apache.catalina.filters.ExpiresFilter.level = FINE    
-

- Sample of initialization log message: -

- -
Mar 26, 2010 2:01:41 PM org.apache.catalina.filters.ExpiresFilter init
-FINE: Filter initialized with configuration ExpiresFilter[
- excludedResponseStatusCode=[304],
- default=null,
- byType={
-    image=ExpiresConfiguration[startingPoint=ACCESS_TIME, duration=[10 MINUTE]],
-    text/css=ExpiresConfiguration[startingPoint=ACCESS_TIME, duration=[10 MINUTE]],
-    text/javascript=ExpiresConfiguration[startingPoint=ACCESS_TIME, duration=[10 MINUTE]]}]
-

- Sample of per-request log message where ExpiresFilter adds an - expiration date is below. The message is on one line and is wrapped here - for better readability. -

- -
Mar 26, 2010 2:09:47 PM org.apache.catalina.filters.ExpiresFilter onBeforeWriteResponseBody
-FINE: Request "/tomcat.gif" with response status "200"
- content-type "image/gif", set expiration date 3/26/10 2:19 PM
-

- Sample of per-request log message where ExpiresFilter does not add - an expiration date: -

- -
Mar 26, 2010 2:10:27 PM org.apache.catalina.filters.ExpiresFilter onBeforeWriteResponseBody
-FINE: Request "/docs/config/manager.html" with response status "200"
- content-type "text/html", no expiration configured
-
- -

Failed Request Filter

- -

Introduction

- -

This filter triggers parameters parsing in a request and rejects the - request if some parameters were skipped during parameter parsing because - of parsing errors or request size limitations (such as - maxParameterCount attribute in a - Connector). - This filter can be used to ensure that none parameter values submitted by - client are lost.

- -

Note that parameter parsing may consume the body of an HTTP request, so - caution is needed if the servlet protected by this filter uses - request.getInputStream() or request.getReader() - calls. In general the risk of breaking a web application by adding this - filter is not so high, because parameter parsing does check content type - of the request before consuming the request body.

- -

Note, that for the POST requests to be parsed correctly, a - SetCharacterEncodingFilter filter must be configured above - this one. See CharacterEncoding page in the FAQ for details.

- -

The request is rejected with HTTP status code 400 (Bad Request).

- -
- -

Filter Class Name

- -

The filter class name for the Failed Request Filter is - org.apache.catalina.filters.FailedRequestFilter - .

- -
- -

Initialisation parameters

- -

The Failed Request Filter does not support any initialization parameters.

- -
- -

HTTP Header Security Filter

- -

Introduction

- -

There are a number of HTTP headers that can be added to the response to - improve the security of the connection. This filter provides a mechanism for - adding those headers. Note that security related headers with more complex - requirements, like CORS, are implemented as separate Filters.

- -
- -

Filter Class Name

- -

The filter class name for the HTTP Header Security Filter is - org.apache.catalina.filters.HttpHeaderSecurityFilter - .

- -
- -

Initialisation parameters

- -

The HTTP Header Security Filter supports the following initialization - parameters:

- -
- Attribute - - Description -
hstsEnabled -

Will an HTTP Strict Transport Security (HSTS) header - (Strict-Transport-Security) be set on the response for - secure requests. Any HSTS header already present will be replaced. See - RFC 6797 for further - details of HSTS. If not specified, the default value of - true will be used.

-
hstsMaxAgeSeconds -

The max age value that should be used in the HSTS header. Negative - values will be treated as zero. If not specified, the default value of - 0 will be used.

-
hstsIncludeSubDomains -

Should the includeSubDomains parameter be included in the HSTS - header. If not specified, the default value of false will - be used.

-
hstsPreload -

Should the preload parameter be included in the HSTS header. If not - specified, the default value of false will be used. See - https://hstspreload.org for - important information about this parameter.

-
antiClickJackingEnabled -

Should the anti click-jacking header (X-Frame-Options) - be set on the response. Any anti click-jacking header already present - will be replaced. If not specified, the default value of - true will be used.

-
antiClickJackingOption -

What value should be used for the anticlick-jacking header? Must be - one of DENY, SAMEORIGIN, - ALLOW-FROM (case-insensitive). If not specified, the - default value of DENY will be used.

-
antiClickJackingUri -

If ALLOW-FROM is used for antiClickJackingOption, - what URI should be allowed? If not specified, the default value of an - empty string will be used.

-
blockContentTypeSniffingEnabled -

Should the header that blocks content type sniffing - (X-Content-Type-Options) be set on every response. If - already present, the header will be replaced. If not specified, the - default value of true will be used.

-
xssProtectionEnabled -

Should the header that enables the browser's cross-site scripting - filter protection (X-XSS-Protection: 1; mode=block) - be set on every response. If already present, the header - will be replaced. If not specified, the default value of - true will be used.

-
- -
- -

Remote Address Filter

- -

Introduction

- -

The Remote Address Filter allows you to compare the - IP address of the client that submitted this request against one or more - regular expressions, and either allow the request to continue - or refuse to process the request from this client.

- -

The syntax for regular expressions is different than that for - 'standard' wildcard matching. Tomcat uses the java.util.regex - package. Please consult the Java documentation for details of the - expressions supported.

- -

Note: There is a caveat when using this filter with - IPv6 addresses. Format of the IP address that this valve is processing - depends on the API that was used to obtain it. If the address was obtained - from Java socket using Inet6Address class, its format will be - x:x:x:x:x:x:x:x. That is, the IP address for localhost - will be 0:0:0:0:0:0:0:1 instead of the more widely used - ::1. Consult your access logs for the actual value.

- -

See also: Remote Host Filter.

-
- -

Filter Class Name

- -

The filter class name for the Remote Address Filter is - org.apache.catalina.filters.RemoteAddrFilter - .

- -
- -

Initialisation parameters

- -

The Remote Address Filter supports the following - initialisation parameters:

- -
- Attribute - - Description -
allow -

A regular expression (using java.util.regex) that the - remote client's IP address is compared to. If this attribute - is specified, the remote address MUST match for this request to be - accepted. If this attribute is not specified, all requests will be - accepted UNLESS the remote address matches a deny - pattern.

-
deny -

A regular expression (using java.util.regex) that the - remote client's IP address is compared to. If this attribute - is specified, the remote address MUST NOT match for this request to be - accepted. If this attribute is not specified, request acceptance is - governed solely by the accept attribute.

-
denyStatus -

HTTP response status code that is used when rejecting denied - request. The default value is 403. For example, - it can be set to the value 404.

-
- -
- -

Example

-

To allow access only for the clients connecting from localhost:

-
    <filter>
-      <filter-name>Remote Address Filter</filter-name>
-      <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
-      <init-param>
-        <param-name>allow</param-name>
-        <param-value>127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1</param-value>
-      </init-param>
-    </filter>
-    <filter-mapping>
-      <filter-name>Remote Address Filter</filter-name>
-      <url-pattern>/*</url-pattern>
-    </filter-mapping>
-
- -

Remote Host Filter

- -

Introduction

- -

The Remote Host Filter allows you to compare the - hostname of the client that submitted this request against one or more - regular expressions, and either allow the request to continue - or refuse to process the request from this client.

- -

The syntax for regular expressions is different than that for - 'standard' wildcard matching. Tomcat uses the java.util.regex - package. Please consult the Java documentation for details of the - expressions supported.

- -

Note: This filter processes the value returned by - method ServletRequest.getRemoteHost(). To allow the method - to return proper host names, you have to enable "DNS lookups" feature on - a Connector.

- -

See also: Remote Address Filter, - HTTP Connector configuration.

-
- -

Filter Class Name

- -

The filter class name for the Remote Address Filter is - org.apache.catalina.filters.RemoteHostFilter - .

- -
- -

Initialisation parameters

- -

The Remote Host Filter supports the following - initialisation parameters:

- -
- Attribute - - Description -
allow -

A regular expression (using java.util.regex) that the - remote client's hostname is compared to. If this attribute - is specified, the remote hostname MUST match for this request to be - accepted. If this attribute is not specified, all requests will be - accepted UNLESS the remote hostname matches a deny - pattern.

-
deny -

A regular expression (using java.util.regex) that the - remote client's hostname is compared to. If this attribute - is specified, the remote hostname MUST NOT match for this request to be - accepted. If this attribute is not specified, request acceptance is - governed solely by the accept attribute.

-
denyStatus -

HTTP response status code that is used when rejecting denied - request. The default value is 403. For example, - it can be set to the value 404.

-
- -
- -

Remote IP Filter

- -

Introduction

- -

Tomcat port of - mod_remoteip, - this filter replaces the apparent client remote IP address and hostname for - the request with the IP address list presented by a proxy or a load balancer - via a request headers (e.g. "X-Forwarded-For").

- -

Another feature of this filter is to replace the apparent scheme - (http/https), server port and request.secure with the scheme presented - by a proxy or a load balancer via a request header - (e.g. "X-Forwarded-Proto").

- -

If used in conjunction with Remote Address/Host filters then this filter - should be defined first to ensure that the correct client IP address is - presented to the Remote Address/Host filters.

- -

Note: By default this filter has no effect on the - values that are written into access log. The original values are restored - when request processing leaves the filter and that always happens earlier - than access logging. To pass the remote address, remote host, server port - and protocol values set by this filter to the access log, - they are put into request attributes. Publishing these values here - is enabled by default, but AccessLogValve should be explicitly - configured to use them. See documentation for - requestAttributesEnabled attribute of - AccessLogValve.

- -

The names of request attributes that are set by this filter - and can be used by access logging are the following:

- -
    -
  • org.apache.catalina.AccessLog.RemoteAddr
  • -
  • org.apache.catalina.AccessLog.RemoteHost
  • -
  • org.apache.catalina.AccessLog.Protocol
  • -
  • org.apache.catalina.AccessLog.ServerPort
  • -
  • org.apache.tomcat.remoteAddr
  • -
- -
- -

Filter Class Name

- -

The filter class name for the Remote IP Filter is - org.apache.catalina.filters.RemoteIpFilter - .

- -
- -

Basic configuration to handle 'x-forwarded-for'

-

- The filter will process the x-forwarded-for http header. -

-
      <filter>
-        <filter-name>RemoteIpFilter</filter-name>
-        <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
-      </filter>
-
-      <filter-mapping>
-        <filter-name>RemoteIpFilter</filter-name>
-        <url-pattern>/*</url-pattern>
-        <dispatcher>REQUEST</dispatcher>
-      </filter-mapping>
-
- -

Basic configuration to handle 'x-forwarded-for' and 'x-forwarded-proto'

- -

- The filter will process x-forwarded-for and - x-forwarded-proto http headers. Expected value for the - x-forwarded-proto header in case of SSL connections is - https (case insensitive).

-
      <filter>
-        <filter-name>RemoteIpFilter</filter-name>
-        <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
-        <init-param>
-          <param-name>protocolHeader</param-name>
-          <param-value>x-forwarded-proto</param-value>
-        </init-param>
-      </filter>
-
-      <filter-mapping>
-        <filter-name>RemoteIpFilter</filter-name>
-        <url-pattern>/*</url-pattern>
-        <dispatcher>REQUEST</dispatcher>
-      </filter-mapping>
-
- -

Advanced configuration with internal proxies

-

RemoteIpFilter configuration:

-
     <filter>
-       <filter-name>RemoteIpFilter</filter-name>
-       <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
-       <init-param>
-         <param-name>allowedInternalProxies</param-name>
-         <param-value>192\.168\.0\.10|192\.168\.0\.11</param-value>
-       </init-param>
-       <init-param>
-         <param-name>remoteIpHeader</param-name>
-         <param-value>x-forwarded-for</param-value>
-       </init-param>
-       <init-param>
-         <param-name>remoteIpProxiesHeader</param-name>
-         <param-value>x-forwarded-by</param-value>
-       </init-param>
-       <init-param>
-         <param-name>protocolHeader</param-name>
-         <param-value>x-forwarded-proto</param-value>
-       </init-param>
-     </filter>
-

Request values:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyValue Before RemoteIpFilterValue After RemoteIpFilter
request.remoteAddr 192.168.0.10 140.211.11.130
request.header['x-forwarded-for'] 140.211.11.130, 192.168.0.10 null
request.header['x-forwarded-by'] null null
request.header['x-forwarded-proto'] https https
request.scheme http https
request.secure false true
request.serverPort 80 443
- -

- Note : x-forwarded-by header is null because only - internal proxies has been traversed by the request. - x-forwarded-for is null because all the proxies are - trusted or internal. -

-
- - -

Advanced configuration with trusted proxies

-

RemoteIpFilter configuration:

-
     <filter>
-       <filter-name>RemoteIpFilter</filter-name>
-       <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
-       <init-param>
-         <param-name>allowedInternalProxies</param-name>
-         <param-value>192\.168\.0\.10|192\.168\.0\.11</param-value>
-       </init-param>
-       <init-param>
-         <param-name>remoteIpHeader</param-name>
-         <param-value>x-forwarded-for</param-value>
-       </init-param>
-       <init-param>
-         <param-name>remoteIpProxiesHeader</param-name>
-         <param-value>x-forwarded-by</param-value>
-       </init-param>
-       <init-param>
-         <param-name>trustedProxies</param-name>
-         <param-value>proxy1|proxy2</param-value>
-       </init-param>
-     </filter>
-

Request values:

- - - - - - - - - - - - - - - - - - - - - -
PropertyValue Before RemoteIpFilterValue After RemoteIpFilter
request.remoteAddr 192.168.0.10 140.211.11.130
request.header['x-forwarded-for'] 140.211.11.130, proxy1, proxy2 null
request.header['x-forwarded-by'] null proxy1, proxy2
- -

- Note : proxy1 and proxy2 are both trusted proxies that - come in x-forwarded-for header, they both are migrated in - x-forwarded-by header. x-forwarded-for is null - because all the proxies are trusted or internal. -

-
- -

Advanced configuration with internal and trusted proxies

-

RemoteIpFilter configuration:

-
     <filter>
-       <filter-name>RemoteIpFilter</filter-name>
-       <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
-       <init-param>
-         <param-name>allowedInternalProxies</param-name>
-         <param-value>192\.168\.0\.10|192\.168\.0\.11</param-value>
-       </init-param>
-       <init-param>
-         <param-name>remoteIpHeader</param-name>
-         <param-value>x-forwarded-for</param-value>
-       </init-param>
-       <init-param>
-         <param-name>remoteIpProxiesHeader</param-name>
-         <param-value>x-forwarded-by</param-value>
-       </init-param>
-       <init-param>
-         <param-name>trustedProxies</param-name>
-         <param-value>proxy1|proxy2</param-value>
-       </init-param>
-     </filter>
-

Request values:

- - - - - - - - - - - - - - - - - - - - - -
PropertyValue Before RemoteIpFilterValue After RemoteIpFilter
request.remoteAddr 192.168.0.10 140.211.11.130
request.header['x-forwarded-for'] 140.211.11.130, proxy1, proxy2, 192.168.0.10 null
request.header['x-forwarded-by'] null proxy1, proxy2
- -

- Note : proxy1 and proxy2 are both trusted proxies that - come in x-forwarded-for header, they both are migrated in - x-forwarded-by header. As 192.168.0.10 is an internal - proxy, it does not appear in x-forwarded-by. - x-forwarded-for is null because all the proxies are - trusted or internal. -

-
- -

Advanced configuration with an untrusted proxy

- -

RemoteIpFilter configuration:

-
     <filter>
-       <filter-name>RemoteIpFilter</filter-name>
-       <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
-       <init-param>
-         <param-name>allowedInternalProxies</param-name>
-         <param-value>192\.168\.0\.10|192\.168\.0\.11</param-value>
-       </init-param>
-       <init-param>
-         <param-name>remoteIpHeader</param-name>
-         <param-value>x-forwarded-for</param-value>
-       </init-param>
-       <init-param>
-         <param-name>remoteIpProxiesHeader</param-name>
-         <param-value>x-forwarded-by</param-value>
-       </init-param>
-       <init-param>
-         <param-name>trustedProxies</param-name>
-         <param-value>proxy1|proxy2</param-value>
-       </init-param>
-     </filter>
-

Request values:

- - - - - - - - - - - - - - - - - - - - - -
PropertyValue Before RemoteIpFilterValue After RemoteIpFilter
request.remoteAddr 192.168.0.10 untrusted-proxy
request.header['x-forwarded-for'] 140.211.11.130, untrusted-proxy, proxy1 140.211.11.130
request.header['x-forwarded-by'] null proxy1
- -

- Note : x-forwarded-by holds the trusted proxy proxy1. - x-forwarded-by holds 140.211.11.130 because - untrusted-proxy is not trusted and thus, we cannot trust that - untrusted-proxy is the actual remote ip. - request.remoteAddr is untrusted-proxy that is an IP - verified by proxy1. -

-
- -

Initialisation parameters

- -

The Remote IP Filter supports the - following initialisation parameters:

- -
- Attribute - - Description -
remoteIpHeader -

Name of the HTTP Header read by this valve that holds the list of - traversed IP addresses starting from the requesting client. If not - specified, the default of x-forwarded-for is used.

-
internalProxies -

Regular expression (using java.util.regex) that a - proxy's IP address must match to be considered an internal proxy. - Internal proxies that appear in the remoteIpHeader will - be trusted and will not appear in the proxiesHeader - value. If not specified the default value of - 10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|169\.254\.\d{1,3}\.\d{1,3}|127\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.1[6-9]{1}\.\d{1,3}\.\d{1,3}|172\.2[0-9]{1}\.\d{1,3}\.\d{1,3}|172\.3[0-1]{1}\.\d{1,3}\.\d{1,3} - will be used.

-
proxiesHeader -

Name of the HTTP header created by this valve to hold the list of - proxies that have been processed in the incoming - remoteIpHeader. If not specified, the default of - x-forwarded-by is used.

-
requestAttributesEnabled -

Set to true to set the request attributes used by - AccessLog implementations to override the values returned by the - request for remote address, remote host, server port and protocol. - Request attributes are also used to enable the forwarded remote address - to be displayed on the status page of the Manager web application. - If not set, the default value of true will be used.

-
trustedProxies -

Regular expression (using java.util.regex) that a - proxy's IP address must match to be considered an trusted proxy. - Trusted proxies that appear in the remoteIpHeader will - be trusted and will appear in the proxiesHeader value. - If not specified, no proxies will be trusted.

-
protocolHeader -

Name of the HTTP Header read by this valve that holds the protocol - used by the client to connect to the proxy. If not specified, the - default of null is used.

-
portHeader -

Name of the HTTP Header read by this valve that holds the port - used by the client to connect to the proxy. If not specified, the - default of null is used.

-
protocolHeaderHttpsValue -

Value of the protocolHeader to indicate that it is - an HTTPS request. If not specified, the default of https is - used.

-
httpServerPort -

Value returned by ServletRequest.getServerPort() - when the protocolHeader indicates http - protocol and no portHeader is present. If not - specified, the default of 80 is used.

-
httpsServerPort -

Value returned by ServletRequest.getServerPort() - when the protocolHeader indicates https - protocol and no portHeader is present. If not - specified, the default of 443 is used.

-
changeLocalPort -

If true, the value returned by - ServletRequest.getLocalPort() and - ServletRequest.getServerPort() is modified by the this - filter. If not specified, the default of false is used.

-
- - -
- -

Request Dumper Filter

- -

Introduction

- -

The Request Dumper Filter logs information from the request and response - objects and is intended to be used for debugging purposes. When using this - Filter, it is recommended that the - org.apache.catalina.filter.RequestDumperFilter logger is - directed to a dedicated file and that the - org.apache.juli.VerbatimFormatter is used.

- -

WARNING: Using this filter has side-effects. The - output from this filter includes any parameters included with the request. - The parameters will be decoded using the default platform encoding. Any - subsequent calls to request.setCharacterEncoding() within - the web application will have no effect.

- -
- -

Filter Class Name

- -

The filter class name for the Request Dumper Filter is - org.apache.catalina.filters.RequestDumperFilter - .

- -
- -

Initialisation parameters

- -

The Request Dumper Filter does not support any initialization - parameters.

- -
- -

Sample Configuration

- -

The following entries in a web application's web.xml would enable the - Request Dumper filter for all requests for that web application. If the - entries were added to CATALINA_BASE/conf/web.xml, the Request - Dumper Filter would be enabled for all web applications.

-
<filter>
-    <filter-name>requestdumper</filter-name>
-    <filter-class>
-        org.apache.catalina.filters.RequestDumperFilter
-    </filter-class>
-</filter>
-<filter-mapping>
-    <filter-name>requestdumper</filter-name>
-    <url-pattern>*</url-pattern>
-</filter-mapping>
- -

The following entries in CATALINA_BASE/conf/logging.properties would - create a separate log file for the Request Dumper Filter output.

-
# To this configuration below, 1request-dumper.org.apache.juli.FileHandler
-# also needs to be added to the handlers property near the top of the file
-1request-dumper.org.apache.juli.FileHandler.level = INFO
-1request-dumper.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
-1request-dumper.org.apache.juli.FileHandler.prefix = request-dumper.
-1request-dumper.org.apache.juli.FileHandler.formatter = org.apache.juli.VerbatimFormatter
-org.apache.catalina.filters.RequestDumperFilter.level = INFO
-org.apache.catalina.filters.RequestDumperFilter.handlers = \
-  1request-dumper.org.apache.juli.FileHandler
-
-

Session Initializer Filter

- -

Introduction

-

The Session Initializer Filter initializes the javax.servlet.http.HttpSession - before the Request is processed. This is required for JSR-356 compliant WebSocket implementations, - if the HttpSession is needed during the HandShake phase.

- -

The Java API for WebSocket does not mandate that an HttpSession would - be initialized upon request, and thus javax.servlet.http.HttpServletRequest's - getSession() returns null if the HttpSession was not - initialized in advance.

- -

This filter solves that problem by initializing the HttpSession for any HttpServletRequest - that matches its url-pattern.

-
- -

Filter Class Name

-

The filter class name for the Session Initializer Filter is - org.apache.catalina.filters.SessionInitializerFilter.

-
- -

Initialisation parameters

-

The Session Initializer Filter does not support any initialization parameters.

-
- -

Sample Configuration

-

The following entries in the Web Application Deployment Descriptor, web.xml, - would enable the Session Initializer Filter for requests that match the given URL pattern - (in this example, "/ws/*").

- -
<filter>
-    <filter-name>SessionInitializer</filter-name>
-    <filter-class>org.apache.catalina.filters.SessionInitializerFilter</filter-class>
-</filter>
-<filter-mapping>
-    <filter-name>SessionInitializer</filter-name>
-    <url-pattern>/ws/*</url-pattern>
-</filter-mapping>
-
-

Set Character Encoding Filter

- -

Introduction

- -

User agents don't always include character encoding information in - requests. Depending on the how the request is processed, usually the - default encoding of ISO-8859-1 is used. This is not always - desirable. This filter provides options for setting that encoding or - forcing it to a particular value. Essentially this filter calls - ServletRequest.setCharacterEncoding() method.

- -

Effectively the value set by this filter is used when parsing parameters - in a POST request, if parameter parsing occurs later than this filter. Thus - the order of filter mappings is important. Note that the encoding for GET - requests is not set here, but on a Connector. See - CharacterEncoding page in the FAQ for details.

- -
- -

Filter Class Name

- -

The filter class name for the Set Character Encoding Filter is - org.apache.catalina.filters.SetCharacterEncodingFilter - .

- -
- -

Initialisation parameters

- -

The Set Character Encoding Filter supports the following initialization - parameters:

- -
- Attribute - - Description -
encoding -

Name of the character encoding which should be set.

-
ignore -

Determines if any character encoding specified by the user agent is - ignored. If this attribute is true, any value provided by - the user agent is ignored. If false, the encoding is only - set if the user agent did not specify an encoding. The default value - is false.

-
- -
- -

WebDAV Fix Filter

- -

Introduction

- -

Microsoft operating systems have two WebDAV clients. One is used with - port 80, the other is used for all other ports. The implementation used with - port 80 does not adhere to the WebDAV specification and fails when trying to - communicate with the Tomcat WebDAV Servlet. This Filter provides a fix for - this by forcing the use of the WebDAV implementation that works, even when - connecting via port 80.

- -
- -

Filter Class Name

- -

The filter class name for the WebDAV Fix Filter is - org.apache.catalina.filters.WebdavFixFilter - .

- -
- -

Initialisation parameters

- -

The WebDAV Fix Filter does not support any initialization parameters.

- -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/globalresources.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/globalresources.html deleted file mode 100644 index c5020670974e11bf649facc93a05e56fa67fcb97..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/globalresources.html +++ /dev/null @@ -1,258 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The GlobalNamingResources Component

The GlobalNamingResources Component

Table of Contents

Introduction

- -

The GlobalNamingResources element defines the global - JNDI resources for the Server.

- -

These resources are listed in the server's global JNDI resource context. - This context is distinct from the per-web-application JNDI contexts - described in - the JNDI Resources HOW-TO. - The resources defined in this element are not visible in - the per-web-application contexts unless you explicitly link them with - <ResourceLink> elements. -

- -

Attributes

- -

Nested Components

- -

Special Features

- - -

Environment Entries

- -

You can configure named values that will be made visible to all - web applications as environment entry resources by nesting - <Environment> entries inside this element. For - example, you can create an environment entry like this:

-
<GlobalNamingResources ...>
-  ...
-  <Environment name="maxExemptions" value="10"
-         type="java.lang.Integer" override="false"/>
-  ...
-</GlobalNamingResources>
- -

This is equivalent to the inclusion of the following element in the - web application deployment descriptor (/WEB-INF/web.xml): -

-
<env-entry>
-  <env-entry-name>maxExemptions</env-entry-name>
-  <env-entry-value>10</env-entry-value>
-  <env-entry-type>java.lang.Integer</env-entry-type>
-</env-entry>
-

but does not require modification of the deployment descriptor - to customize this value.

- -

The valid attributes for an <Environment> element - are as follows:

- -
- Attribute - - Description -
description -

Optional, human-readable description of this environment entry.

-
name -

The name of the environment entry to be created, relative to the - java:comp/env context.

-
override -

Set this to false if you do not want - an <env-entry> for the same environment entry name, - found in the web application deployment descriptor, to override the - value specified here. By default, overrides are allowed.

-
type -

The fully qualified Java class name expected by the web application - for this environment entry. Must be a legal value for - <env-entry-type> in the web application deployment - descriptor.

-
value -

The parameter value that will be presented to the application - when requested from the JNDI context. This value must be convertable - to the Java type defined by the type attribute.

-
- -
- - -

Resource Definitions

- -

You can declare the characteristics of resources - to be returned for JNDI lookups of <resource-ref> and - <resource-env-ref> elements in the web application - deployment descriptor by defining them in this element and then linking - them with <ResourceLink> - elements - in the <Context> element. - - You MUST also define any other needed parameters using - attributes on the Resource element, to configure - the object factory to be used (if not known to Tomcat already), and - the properties used to configure that object factory.

- -

For example, you can create a resource definition like this:

-
<GlobalNamingResources ...>
-  ...
-  <Resource name="jdbc/EmployeeDB" auth="Container"
-            type="javax.sql.DataSource"
-     description="Employees Database for HR Applications"/>
-  ...
-</GlobalNamingResources>
- -

This is equivalent to the inclusion of the following element in the - web application deployment descriptor (/WEB-INF/web.xml):

-
<resource-ref>
-  <description>Employees Database for HR Applications</description>
-  <res-ref-name>jdbc/EmployeeDB</res-ref-name>
-  <res-ref-type>javax.sql.DataSource</res-ref-type>
-  <res-auth>Container</res-auth>
-</resource-ref>
- -

but does not require modification of the deployment - descriptor to customize this value.

- -

The valid attributes for a <Resource> element - are as follows:

- -
- Attribute - - Description -
auth -

Specify whether the web Application code signs on to the - corresponding resource manager programmatically, or whether the - Container will sign on to the resource manager on behalf of the - application. The value of this attribute must be - Application or Container. This - attribute is required if the web application - will use a <resource-ref> element in the web - application deployment descriptor, but is optional if the - application uses a <resource-env-ref> instead.

-
closeMethod -

Name of the zero-argument method to call on a singleton resource when - it is no longer required. This is intended to speed up clean-up of - resources that would otherwise happen as part of garbage collection. - This attribute is ignored if the singleton attribute is - false. If not specified, no default is defined and no close method will - be called.

-

For Apache Commons DBCP and Apache Tomcat JDBC connection pools - you can use closeMethod="close".

-
description -

Optional, human-readable description of this resource.

-
name -

The name of the resource to be created, relative to the - java:comp/env context.

-
scope -

Specify whether connections obtained through this resource - manager can be shared. The value of this attribute must be - Shareable or Unshareable. By default, - connections are assumed to be shareable.

-
singleton -

Specify whether this resource definition is for a singleton resource, - i.e. one where there is only a single instance of the resource. If this - attribute is true, multiple JNDI lookups for this resource - will return the same object. If this attribute is false, - multiple JNDI lookups for this resource will return different objects. - This attribute must be true for - javax.sql.DataSource resources to enable JMX registration - of the DataSource. The value of this attribute must be true - or false. By default, this attribute is true. -

-
type -

The fully qualified Java class name expected by the web - application when it performs a lookup for this resource.

-
- - -
- -
-

Use <ResourceLink> - elements to link resources from the global context into - per-web-application contexts. Here is an example of making a custom - factory available to an application, based on the example definition in the - - JNDI Resource HOW-TO: -

- -
<Context>
-  <ResourceLink
-    name="bean/MyBeanFactory"
-    global="bean/MyBeanFactory"
-    type="com.mycompany.MyBean"
-  />
-</Context>
- -
- -

Transaction

- -

You can declare the characteristics of the UserTransaction - to be returned for JNDI lookup for java:comp/UserTransaction. - You MUST define an object factory class to instantiate - this object as well as the needed resource parameters as attributes of the - Transaction - element, and the properties used to configure that object factory.

- -

The valid attributes for the <Transaction> element - are as follows:

- -
- Attribute - - Description -
factory -

The class name for the JNDI object factory.

-
- -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/host.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/host.html deleted file mode 100644 index 0a9eb4c4a1eb23746f9562723edf5dff0bd948c3..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/host.html +++ /dev/null @@ -1,628 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Host Container

The Host Container

Table of Contents

Introduction

- -

The Host element represents a virtual host, - which is an association of a network name for a server (such as - "www.mycompany.com") with the particular server on which Tomcat is running. - For clients to be able to connect to a Tomcat server using its network name, - this name must be registered in the Domain Name Service (DNS) server - that manages the Internet domain you belong to - contact your Network - Administrator for more information.

- -

In many cases, System Administrators wish to associate more than - one network name (such as www.mycompany.com and - company.com) with the same virtual host and applications. - This can be accomplished using the Host - Name Aliases feature discussed below.

- -

One or more Host elements are nested inside an - Engine element. Inside the Host element, you - can nest Context elements for the web - applications associated with this virtual host. Exactly one of the Hosts - associated with each Engine MUST have a name matching the - defaultHost attribute of that Engine.

- -

Clients normally use host names to identify the server they wish to connect - to. This host name is also included in the HTTP request headers. Tomcat - extracts the host name from the HTTP headers and looks for a - Host with a matching name. If no match is found, the request - is routed to the default host. The name of the default host does not have to - match a DNS name (although it can) since any request where the DNS name does - not match the name of a Host element will be routed to the - default host.

- -

The description below uses the variable name $CATALINA_BASE to refer the - base directory against which most relative paths are resolved. If you have - not configured Tomcat for multiple instances by setting a CATALINA_BASE - directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME, - the directory into which you have installed Tomcat.

- -

Attributes

- -

Common Attributes

- -

All implementations of Host - support the following attributes:

- -
- Attribute - - Description -
appBase -

The Application Base directory for this virtual host. - This is the pathname of a directory that may contain web applications - to be deployed on this virtual host. You may specify an - absolute pathname, or a pathname that is relative to the - $CATALINA_BASE directory. See - Automatic Application - Deployment for more information on automatic recognition and - deployment of web applications. If not specified, the default of - webapps will be used.

-
xmlBase -

The XML Base directory for this virtual host. - This is the pathname of a directory that may contain context XML - descriptors to be deployed on this virtual host. You may specify an - absolute pathname for this directory, or a pathname that is relative - to the $CATALINA_BASE directory. See - Automatic Application - Deployment for more information on automatic recognition and - deployment of web applications. If not specified the default of - conf/<engine_name>/<host_name> will be used.

-
createDirs -

If set to true, Tomcat will attempt to create the directories defined - by the attributes appBase and xmlBase during - the startup phase. The default value is true. If set to - true, and directory creation fails, an error message will be printed out - but will not halt the startup sequence.

-
autoDeploy -

This flag value indicates if Tomcat should check periodically for new - or updated web applications while Tomcat is running. If true, Tomcat - periodically checks the appBase and xmlBase - directories and deploys any new web applications or context XML - descriptors found. Updated web applications or context XML descriptors - will trigger a reload of the web application. The flag's value defaults - to true. See - Automatic Application - Deployment for more information.

-
backgroundProcessorDelay -

This value represents the delay in seconds between the - invocation of the backgroundProcess method on this host and - its child containers, including all contexts. - Child containers will not be invoked if their delay value is not - negative (which would mean they are using their own processing - thread). Setting this to a positive value will cause - a thread to be spawn. After waiting the specified amount of time, - the thread will invoke the backgroundProcess method on this host - and all its child containers. A host will use background processing to - perform live web application deployment related tasks. If not - specified, the default value for this attribute is -1, which means - the host will rely on the background processing thread of its parent - engine.

-
className -

Java class name of the implementation to use. This class must - implement the org.apache.catalina.Host interface. - If not specified, the standard value (defined below) will be used.

-
deployIgnore -

A regular expression defining paths to ignore when - autoDeploy and deployOnStartup are set. This - allows you to keep your configuration in a version control system, for - example, and not deploy a .svn or CVS folder that happens to be in the - appBase.

-

This regular expression is relative to appBase. It is - also anchored, meaning the match is performed against the - entire file/directory name. So, foo matches only a file or - directory named foo but not foo.war, - foobar, or myfooapp. To match anything with - "foo", you could use .*foo.*.

-

See Automatic Application - Deployment for more information.

-
deployOnStartup -

This flag value indicates if web applications from this host should - be automatically deployed when Tomcat starts. The flag's value defaults - to true. See - Automatic Application - Deployment for more information.

-
failCtxIfServletStartFails -

Set to true to have each child contexts fail its startup - if any of its servlet that has load-on-startup >=0 fails its own - startup.

-

Each child context may override this attribute.

-

If not specified, the default value of false is - used.

-
name -

Usually the network name of this virtual host, as registered in your - Domain Name Service server. Regardless of the case used to - specify the host name, Tomcat will convert it to lower case internally. - One of the Hosts nested within an Engine MUST - have a name that matches the defaultHost setting for that - Engine. See Host Name Aliases for - information on how to assign more than one network name to the same - virtual host. If the name takes the form of *.domainname - (e.g. *.apache.org) then it will be treated as a match for - any host in that domain unless a host that has an exactly matching name - is found.

-
startStopThreads -

The number of threads this Host will use to start - child Context elements in parallel. The same - thread pool will be used to deploy new - Contexts if automatic deployment is being - used. The special value of 0 will result in the value of - Runtime.getRuntime().availableProcessors() being used. - Negative values will result in - Runtime.getRuntime().availableProcessors() + value being - used unless this is less than 1 in which case 1 thread will be used. If - not specified, the default value of 1 will be used.

-
undeployOldVersions -

This flag determines if Tomcat, as part of the auto deployment - process, will check for old, unused versions of web applications - deployed using parallel deployment and, if any are found, remove them. - This flag only applies if autoDeploy is true. If not - specified the default value of false will be used.

-
- -
- - -

Standard Implementation

- -

The standard implementation of Host is - org.apache.catalina.core.StandardHost. - It supports the following additional attributes (in addition to the - common attributes listed above):

- -
- Attribute - - Description -
copyXML -

Set to true if you want a context XML descriptor - embedded inside the application (located at - /META-INF/context.xml) to be copied to xmlBase - when the application is deployed. On subsequent starts, the copied - context XML descriptor will be used in preference to any context XML - descriptor embedded inside the application even if the descriptor - embedded inside the application is more recent. The flag's value - defaults to false. Note if deployXML - is false, this attribute will have no effect.

-
deployXML -

Set to false if you want to disable parsing the context - XML descriptor embedded inside the application (located at - /META-INF/context.xml). Security conscious environments - should set this to false to prevent applications from - interacting with the container's configuration. The administrator will - then be responsible for providing an external context configuration - file, and putting it in the location defined by the - xmlBase attribute. If this flag is false, - a descriptor is located at /META-INF/context.xml and no - descriptor is present in xmlBase then the context will - fail to start in case the descriptor contains necessary configuration - for secure deployment (such as a RemoteAddrValve) which should not be - ignored. The flag's value defaults to true unless a - security manager is enabled when the default is false. - When running under a security manager this may be enabled on a per web - application basis by granting the - org.apache.catalina.security.DeployXmlPermission to the web - application. The Manager and Host Manager applications are granted this - permission by default so that they continue to work when running under a - security manager.

-
errorReportValveClass -

Java class name of the error reporting valve which will be used - by this Host. The responsibility of this valve is to output error - reports. Setting this property allows to customize the look of the - error pages which will be generated by Tomcat. This class must - implement the - org.apache.catalina.Valve interface. If none is specified, - the value org.apache.catalina.valves.ErrorReportValve - will be used by default.

-
unpackWARs -

Set to true if you want web applications that are - placed in the appBase directory as web application - archive (WAR) files to be unpacked into a corresponding disk directory - structure, false to run such web applications directly - from a WAR file. See - Automatic Application - Deployment for more information.

-

Note: If Tomcat expands the WAR file then it will add a file - (/META-INF/war-tracking) to the unpacked directory - structure which it uses to detect changes in the WAR file while Tomcat - is not running. Any such change will trigger the deletion of the - expanded directory and the deployment of the updated WAR file when - Tomcat next starts.

-

Note: Running with this option set to false will incur - a performance penalty. To avoid a significant performance penalty, the - web application should be configured such that class scanning for - Servlet 3.0+ pluggability features is not required. Users may also wish - to consider the ExtractingRoot - Resources implementation.

-
workDir -

Pathname to a scratch directory to be used by applications for - this Host. Each application will have its own sub directory with - temporary read-write use. Configuring a Context workDir will override - use of the Host workDir configuration. This directory will be made - visible to servlets in the web application by a servlet context - attribute (of type java.io.File) named - javax.servlet.context.tempdir as described in the - Servlet Specification. If not specified, a suitable directory - underneath $CATALINA_BASE/work will be provided.

-
- -
- - -

Nested Components

- -

You can nest one or more Context elements - inside this Host element, each representing a different web - application associated with this virtual host.

- -

You can nest at most one instance of the following utility components - by nesting a corresponding element inside your Host - element:

-
    -
  • Realm - - Configure a realm that will allow its - database of users, and their associated roles, to be shared across all - Contexts nested inside this Host (unless - overridden by a Realm configuration - at a lower level).
  • -
- -

Special Features

- - -

Logging

- -

A host is associated with the - org.apache.catalina.core.ContainerBase.[engine_name].[host_name] - log category. Note that the brackets are part of the name, - don't omit them.

- -
- - -

Access Logs

- -

When you run a web server, one of the output files normally generated - is an access log, which generates one line of information for - each request processed by the server, in a standard format. Catalina - includes an optional Valve implementation that - can create access logs in the same standard format created by web servers, - or in any number of custom formats.

- -

You can ask Catalina to create an access log for all requests - processed by an Engine, - Host, or Context - by nesting a Valve element like this:

- -
<Host name="localhost" ...>
-  ...
-  <Valve className="org.apache.catalina.valves.AccessLogValve"
-         prefix="localhost_access_log" suffix=".txt"
-         pattern="common"/>
-  ...
-</Host>
- -

See Access Logging Valves - for more information on the configuration attributes that are - supported.

- -
- - -

Automatic Application Deployment

- -

If you are using the standard Host implementation with - default settings then applications in the appBase or with context - files in the configBase are automatically deployed when Tomcat - starts (the deployOnStartup property defaults to - true) and reloaded or redeployed (as appropriate) when a change - is detected while Tomcat is running (the autoDeploy attribute - also defaults to true).

- -

deployOnStartup and autoDeploy trigger - execution of exactly the same code so the behaviour is very similar. - However, there is one key difference. When Tomcat starts it has no knowledge - of which files are the same, which have been changed and which are new. It - therefore treats all files as new. While Tomcat is running, it can - differentiate between unchanged, modified and new files. This leads to some - differences in behaviour between files being modified while Tomcat is - running and files being modified while Tomcat is stopped.

- -

When you use automatic deployment, related files (a web application may - have a context.xml file, a WAR and a directory) that exist in the - Host's appBase and/or configBase - must conform to the expected naming - convention. In short, this means files for the same web application must - share the same base name.

- -

The automatic deployment process identifies new and/or modified web - applications using the following search order:

- -
    -
  1. Web applications with a context.xml file located in the Host's - configBase.
  2. -
  3. Web applications with a WAR file located in the Host's - appBase that have not already been identified during the scan for - context.xml files.
  4. -
  5. Web applications with a directory located in the Host's - appBase that have not already been identified during the scans - for context.xml and/or WAR files.
  6. -
- -

When autoDeploy is true, the automatic - deployment process will monitor the deployed web applications for changes. - Depending on exactly what changes, the web application will either be - re-deployed or reloaded. Re-deployment involves the creation of a new web - application and, if using the standard session manager, user sessions will - not be retained. Reloading uses the existing web application but re-parses - the web.xml and reloads any classes. If using the standard session manager, - user sessions will be persisted.

- -

Users may add to the files that the automatic deployment process monitors - for reloading (i.e. any change to one of these files triggers a reload of - the web application) by adding a WatchedResources element to the - context.xml file. See the - Context documentation for - further details.

- -

When using automatic deployment, the docBase defined by - an XML Context file should be outside of the - appBase directory. If this is not the case, difficulties - may be experienced deploying the web application or the application may - be deployed twice. The deployIgnore attribute can be used - to avoid this situation.

- -

Note that if you are defining contexts explicitly in server.xml, you - should probably turn off automatic application deployment or specify - deployIgnore carefully. Otherwise, the web applications - will each be deployed twice, and that may cause problems for the - applications.

- -

There are many possible combinations of settings, new files, changed - files and deleted files. A separate page describes the - expected behaviour of the automatic - deployment process in many of these scenarios.

- -
- - -

Host Name Aliases

- -

In many server environments, Network Administrators have configured - more than one network name (in the Domain Name Service (DNS) - server), that resolve to the IP address of the same server. Normally, - each such network name would be configured as a separate - Host element in conf/server.xml, each - with its own set of web applications.

- -

However, in some circumstances, it is desirable that two or more - network names should resolve to the same virtual host, - running the same set of applications. A common use case for this - scenario is a corporate web site, where it is desirable that users - be able to utilize either www.mycompany.com or - company.com to access exactly the same content and - applications.

- -

This is accomplished by utilizing one or more Alias - elements nested inside your Host element. For - example:

-
<Host name="www.mycompany.com" ...>
-  ...
-  <Alias>mycompany.com</Alias>
-  ...
-</Host>
- -

In order for this strategy to be effective, all of the network names - involved must be registered in your DNS server to resolve to the - same computer that is running this instance of Catalina.

- -

Aliases may also use the wildcard form (*.domainname) - permitted for the name attribute of a - Host.

- -
- - -

Lifecycle Listeners

- -

If you have implemented a Java object that needs to know when this - Host is started or stopped, you can declare it by - nesting a Listener element inside this element. The - class name you specify must implement the - org.apache.catalina.LifecycleListener interface, and - it will be notified about the occurrence of the corresponding - lifecycle events. Configuration of such a listener looks like this:

- -
<Host name="localhost" ...>
-  ...
-  <Listener className="com.mycompany.mypackage.MyListener" ... >
-  ...
-</Host>
- -

Note that a Listener can have any number of additional properties - that may be configured from this element. Attribute names are matched - to corresponding JavaBean property names using the standard property - method naming patterns.

- -
- - -

Request Filters

- -

You can ask Catalina to check the IP address, or host name, on every - incoming request directed to the surrounding - Engine, Host, or - Context element. The remote address or name - will be checked against configured "accept" and/or "deny" - filters, which are defined using java.util.regex Regular - Expression syntax. Requests that come from locations that are - not accepted will be rejected with an HTTP "Forbidden" error. - Example filter declarations:

- -
<Host name="localhost" ...>
-  ...
-  <Valve className="org.apache.catalina.valves.RemoteHostValve"
-         allow=".*\.mycompany\.com|www\.yourcompany\.com"/>
-  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
-         deny="192\.168\.1\.\d+"/>
-  ...
-</Host>
- -

See Remote Address Filter - and Remote Host Filter for - more information about the configuration options that are supported.

- -
- - -

Single Sign On

- -

In many environments, but particularly in portal environments, it - is desirable to have a user challenged to authenticate themselves only - once over a set of web applications deployed on a particular virtual - host. This can be accomplished by nesting an element like this inside - the Host element for this virtual host:

- -
<Host name="localhost" ...>
-  ...
-  <Valve className="org.apache.catalina.authenticator.SingleSignOn"/>
-  ...
-</Host>
- -

The Single Sign On facility operates according to the following rules: -

-
    -
  • All web applications configured for this virtual host must share the - same Realm. In practice, that means you can - nest the Realm element inside this Host element (or the surrounding - Engine element), but not inside a - Context element for one of the involved - web applications.
  • -
  • As long as the user accesses only unprotected resources in any of the - web applications on this virtual host, they will not be challenged - to authenticate themselves.
  • -
  • As soon as the user accesses a protected resource in - any web application associated with this virtual - host, the user will be challenged to authenticate himself or herself, - using the login method defined for the web application currently - being accessed.
  • -
  • Once authenticated, the roles associated with this user will be - utilized for access control decisions across all - of the associated web applications, without challenging the user - to authenticate themselves to each application individually.
  • -
  • As soon as the user logs out of one web application (for example, - by invalidating the corresponding session if form - based login is used), the user's sessions in all - web applications will be invalidated. Any subsequent attempt to - access a protected resource in any application will require the - user to authenticate himself or herself again.
  • -
  • The Single Sign On feature utilizes HTTP cookies to transmit a token - that associates each request with the saved user identity, so it can - only be utilized in client environments that support cookies.
  • -
- -
- - -

User Web Applications

- -

Many web servers can automatically map a request URI starting with - a tilde character ("~") and a username to a directory (commonly named - public_html) in that user's home directory on the server. - You can accomplish the same thing in Catalina by using a special - Listener element like this (on a Unix system that - uses the /etc/passwd file to identify valid users):

- -
<Host name="localhost" ...>
-  ...
-  <Listener className="org.apache.catalina.startup.UserConfig"
-            directoryName="public_html"
-            userClass="org.apache.catalina.startup.PasswdUserDatabase"/>
-  ...
-</Host>
- -

On a server where /etc/passwd is not in use, you can - request Catalina to consider all directories found in a specified base - directory (such as c:\Homes in this example) to be - considered "user home" directories for the purposes of this directive:

- -
<Host name="localhost" ...>
-  ...
-  <Listener className="org.apache.catalina.startup.UserConfig"
-            directoryName="public_html"
-            homeBase="c:\Homes"
-            userClass="org.apache.catalina.startup.HomesUserDatabase"/>
-  ...
-</Host>
- -

If a user home directory has been set up for a user named - craigmcc, then its contents will be visible from a - client browser by making a request to a URL like:

- -
http://www.mycompany.com:8080/~craigmcc
- -

Successful use of this feature requires recognition of the following - considerations:

-
    -
  • Each user web application will be deployed with characteristics - established by the global and host level default context settings.
  • -
  • It is legal to include more than one instance of this Listener - element. This would only be useful, however, in circumstances - where you wanted to configure more than one "homeBase" directory.
  • -
  • The operating system username under which Catalina is executed - MUST have read access to each user's web application directory, - and all of its contents.
  • -
- -
- - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/http.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/http.html deleted file mode 100644 index bdd99bde9c6576f63ee43ef88e580433e6694977..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/http.html +++ /dev/null @@ -1,1563 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The HTTP Connector

The HTTP Connector

Table of Contents

Introduction

- -

The HTTP Connector element represents a - Connector component that supports the HTTP/1.1 protocol. - It enables Catalina to function as a stand-alone web server, in addition - to its ability to execute servlets and JSP pages. A particular instance - of this component listens for connections on a specific TCP port number - on the server. One or more such Connectors can be - configured as part of a single Service, each - forwarding to the associated Engine to perform - request processing and create the response.

- -

If you wish to configure the Connector that is used - for connections to web servers using the AJP protocol (such as the - mod_jk 1.2.x connector for Apache 1.3), please refer to the - AJP Connector documentation.

- -

Each incoming request requires - a thread for the duration of that request. If more simultaneous requests - are received than can be handled by the currently available request - processing threads, additional threads will be created up to the - configured maximum (the value of the maxThreads attribute). - If still more simultaneous requests are received, they are stacked up - inside the server socket created by the Connector, up to - the configured maximum (the value of the acceptCount - attribute). Any further simultaneous requests will receive "connection - refused" errors, until resources are available to process them.

- -

Attributes

- -

Common Attributes

- -

All implementations of Connector - support the following attributes:

- -
- Attribute - - Description -
allowTrace -

A boolean value which can be used to enable or disable the TRACE - HTTP method. If not specified, this attribute is set to false.

-
asyncTimeout -

The default timeout for asynchronous requests in milliseconds. If not - specified, this attribute is set to the Servlet specification default of - 30000 (30 seconds).

-
defaultSSLHostConfigName -

The name of the default SSLHostConfig that will be - used for secure connections (if this connector is configured for secure - connections) if the client connection does not provide SNI or if the SNI - is provided but does not match any configured - SSLHostConfig. If not specified the default value of - _default_ will be used.

-
enableLookups -

Set to true if you want calls to - request.getRemoteHost() to perform DNS lookups in - order to return the actual host name of the remote client. Set - to false to skip the DNS lookup and return the IP - address in String form instead (thereby improving performance). - By default, DNS lookups are disabled.

-
maxHeaderCount -

The maximum number of headers in a request that are allowed by the - container. A request that contains more headers than the specified limit - will be rejected. A value of less than 0 means no limit. - If not specified, a default of 100 is used.

-
maxParameterCount -

The maximum number of parameter and value pairs (GET plus POST) which - will be automatically parsed by the container. Parameter and value pairs - beyond this limit will be ignored. A value of less than 0 means no limit. - If not specified, a default of 10000 is used. Note that - FailedRequestFilter filter can be - used to reject requests that hit the limit.

-
maxPostSize -

The maximum size in bytes of the POST which will be handled by - the container FORM URL parameter parsing. The limit can be disabled by - setting this attribute to a value less than zero. If not specified, this - attribute is set to 2097152 (2 megabytes). Note that the - FailedRequestFilter - can be used to reject requests that exceed this limit.

-
maxSavePostSize -

The maximum size in bytes of the POST which will be saved/buffered by - the container during FORM or CLIENT-CERT authentication. For both types - of authentication, the POST will be saved/buffered before the user is - authenticated. For CLIENT-CERT authentication, the POST is buffered for - the duration of the SSL handshake and the buffer emptied when the request - is processed. For FORM authentication the POST is saved whilst the user - is re-directed to the login form and is retained until the user - successfully authenticates or the session associated with the - authentication request expires. The limit can be disabled by setting this - attribute to -1. Setting the attribute to zero will disable the saving of - POST data during authentication. If not specified, this attribute is set - to 4096 (4 kilobytes).

-
parseBodyMethods -

A comma-separated list of HTTP methods for which request - bodies will be parsed for request parameters identically - to POST. This is useful in RESTful applications that want to - support POST-style semantics for PUT requests. - Note that any setting other than POST causes Tomcat - to behave in a way that goes against the intent of the servlet - specification. - The HTTP method TRACE is specifically forbidden here in accordance - with the HTTP specification. - The default is POST

-
port -

The TCP port number on which this Connector - will create a server socket and await incoming connections. Your - operating system will allow only one server application to listen - to a particular port number on a particular IP address. If the special - value of 0 (zero) is used, then Tomcat will select a free port at random - to use for this connector. This is typically only useful in embedded and - testing applications.

-
protocol -

Sets the protocol to handle incoming traffic. The default value is - HTTP/1.1 which uses an auto-switching mechanism to select - either a Java NIO based connector or an APR/native based connector. - If the PATH (Windows) or LD_LIBRARY_PATH (on - most unix systems) environment variables contain the Tomcat native - library, and the AprLifecycleListener that is used to - initialize APR has its useAprConnector attribute set to - true, the APR/native connector will be used. If the native library - cannot be found or the attribute is not configured, the Java NIO based - connector will be used. Note that the APR/native connector has different - settings for HTTPS than the Java connectors.
- To use an explicit protocol rather than rely on the auto-switching - mechanism described above, the following values may be used:
- org.apache.coyote.http11.Http11NioProtocol - - non blocking Java NIO connector
- org.apache.coyote.http11.Http11Nio2Protocol - - non blocking Java NIO2 connector
- org.apache.coyote.http11.Http11AprProtocol - - the APR/native connector.
- Custom implementations may also be used.
- Take a look at our Connector - Comparison chart. The configuration for both Java connectors is - identical, for http and https.
- For more information on the APR connector and APR specific SSL settings - please visit the APR documentation -

-
proxyName -

If this Connector is being used in a proxy - configuration, configure this attribute to specify the server name - to be returned for calls to request.getServerName(). - See Proxy Support for more - information.

-
proxyPort -

If this Connector is being used in a proxy - configuration, configure this attribute to specify the server port - to be returned for calls to request.getServerPort(). - See Proxy Support for more - information.

-
redirectPort -

If this Connector is supporting non-SSL - requests, and a request is received for which a matching - <security-constraint> requires SSL transport, - Catalina will automatically redirect the request to the port - number specified here.

-
scheme -

Set this attribute to the name of the protocol you wish to have - returned by calls to request.getScheme(). For - example, you would set this attribute to "https" - for an SSL Connector. The default value is "http". -

-
secure -

Set this attribute to true if you wish to have - calls to request.isSecure() to return true - for requests received by this Connector. You would want this on an - SSL Connector or a non SSL connector that is receiving data from a - SSL accelerator, like a crypto card, a SSL appliance or even a webserver. - The default value is false.

-
sendReasonPhrase -

Set this attribute to true if you wish to have - a reason phrase in the response. - The default value is false.

-

Note: This option is deprecated and will be removed - in Tomcat 9. The reason phrase will not be sent.

-
URIEncoding -

This specifies the character encoding used to decode the URI bytes, - after %xx decoding the URL. If not specified, UTF-8 will be used unless - the org.apache.catalina.STRICT_SERVLET_COMPLIANCE - system property is set to true - in which case ISO-8859-1 will be used.

-
useBodyEncodingForURI -

This specifies if the encoding specified in contentType should be used - for URI query parameters, instead of using the URIEncoding. This - setting is present for compatibility with Tomcat 4.1.x, where the - encoding specified in the contentType, or explicitly set using - Request.setCharacterEncoding method was also used for the parameters from - the URL. The default value is false. -

-

Notes: 1) This setting is applied only to the - query string of a request. Unlike URIEncoding it does not - affect the path portion of a request URI. 2) If request character - encoding is not known (is not provided by a browser and is not set by - SetCharacterEncodingFilter or a similar filter using - Request.setCharacterEncoding method), the default encoding is always - "ISO-8859-1". The URIEncoding setting has no effect on - this default. -

-
useIPVHosts -

Set this attribute to true to cause Tomcat to use - the IP address that the request was received on to determine the Host - to send the request to. The default value is false.

-
xpoweredBy -

Set this attribute to true to cause Tomcat to advertise - support for the Servlet specification using the header recommended in the - specification. The default value is false.

-
- -
- -

Standard Implementation

- -

The standard HTTP connectors (NIO, NIO2 and APR/native) all support the - following attributes in addition to the common Connector attributes listed - above.

- -
- Attribute - - Description -
acceptCount -

The maximum queue length for incoming connection requests when - all possible request processing threads are in use. Any requests - received when the queue is full will be refused. The default - value is 100.

-
acceptorThreadCount -

The number of threads to be used to accept connections. Increase this - value on a multi CPU machine, although you would never really need more - than 2. Also, with a lot of non keep alive connections, you - might want to increase this value as well. Default value is - 1.

-
acceptorThreadPriority -

The priority of the acceptor threads. The threads used to accept - new connections. The default value is 5 (the value of the - java.lang.Thread.NORM_PRIORITY constant). See the JavaDoc - for the java.lang.Thread class for more details on what - this priority means.

-
address -

For servers with more than one IP address, this attribute specifies - which address will be used for listening on the specified port. By - default, the connector will listen all local addresses. Unless the JVM is - configured otherwise using system properties, the Java based connectors - (NIO, NIO2) will listen on both IPv4 and IPv6 addresses when configured - with either 0.0.0.0 or ::. The APR/native - connector will only listen on IPv4 addresses if configured with - 0.0.0.0 and will listen on IPv6 addresses (and optionally - IPv4 addresses depending on the setting of ipv6onlyv6) if - configured with ::.

-
allowHostHeaderMismatch -

By default Tomcat will reject requests that specify a host in the - request line but specify a different host in the host header. This - chekc can be disabled by setting this attribute to false. If - not specified, the default is false.

-
allowedTrailerHeaders -

By default Tomcat will ignore all trailer headers when processing - chunked input. For a header to be processed, it must be added to this - comma-separated list of header names.

-
bindOnInit -

Controls when the socket used by the connector is bound. By default it - is bound when the connector is initiated and unbound when the connector is - destroyed. If set to false, the socket will be bound when the - connector is started and unbound when it is stopped.

-
clientCertProvider -

When client certificate information is presented in a form other than - instances of java.security.cert.X509Certificate it needs to - be converted before it can be used and this property controls which JSSE - provider is used to perform the conversion. For example it is used with - the AJP connectors, the HTTP APR connector and - with the - org.apache.catalina.valves.SSLValve. If not specified, the default - provider will be used.

-
compressibleMimeType -

The value is a comma separated list of MIME types for which HTTP - compression may be used. - The default value is - - text/html,text/xml,text/plain,text/css,text/javascript,application/javascript - . -

-
compression -

The Connector may use HTTP/1.1 GZIP compression in - an attempt to save server bandwidth. The acceptable values for the - parameter is "off" (disable compression), "on" (allow compression, which - causes text data to be compressed), "force" (forces compression in all - cases), or a numerical integer value (which is equivalent to "on", but - specifies the minimum amount of data before the output is compressed). If - the content-length is not known and compression is set to "on" or more - aggressive, the output will also be compressed. If not specified, this - attribute is set to "off".

-

Note: There is a tradeoff between using compression (saving - your bandwidth) and using the sendfile feature (saving your CPU cycles). - If the connector supports the sendfile feature, e.g. the NIO connector, - using sendfile will take precedence over compression. The symptoms will - be that static files greater that 48 Kb will be sent uncompressed. - You can turn off sendfile by setting useSendfile attribute - of the connector, as documented below, or change the sendfile usage - threshold in the configuration of the - DefaultServlet in the default - conf/web.xml or in the web.xml of your web - application. -

-
compressionMinSize -

If compression is set to "on" then this attribute - may be used to specify the minimum amount of data before the output is - compressed. If not specified, this attribute is defaults to "2048".

-
connectionLinger -

The number of seconds during which the sockets used by this - Connector will linger when they are closed. The default - value is -1 which disables socket linger.

-
connectionTimeout -

The number of milliseconds this Connector will wait, - after accepting a connection, for the request URI line to be - presented. Use a value of -1 to indicate no (i.e. infinite) timeout. - The default value is 60000 (i.e. 60 seconds) but note that the standard - server.xml that ships with Tomcat sets this to 20000 (i.e. 20 seconds). - Unless disableUploadTimeout is set to false, - this timeout will also be used when reading the request body (if any).

-
connectionUploadTimeout -

Specifies the timeout, in milliseconds, to use while a data upload is - in progress. This only takes effect if - disableUploadTimeout is set to false. -

-
disableUploadTimeout -

This flag allows the servlet container to use a different, usually - longer connection timeout during data upload. If not specified, this - attribute is set to true which disables this longer timeout. -

-
executor -

A reference to the name in an Executor - element. If this attribute is set, and the named executor exists, the - connector will use the executor, and all the other thread attributes will - be ignored. Note that if a shared executor is not specified for a - connector then the connector will use a private, internal executor to - provide the thread pool.

-
executorTerminationTimeoutMillis -

The time that the private internal executor will wait for request - processing threads to terminate before continuing with the process of - stopping the connector. If not set, the default is 5000 (5 - seconds).

-
keepAliveTimeout -

The number of milliseconds this Connector will wait - for another HTTP request before closing the connection. The default value - is to use the value that has been set for the - connectionTimeout attribute. - Use a value of -1 to indicate no (i.e. infinite) timeout.

-
maxConnections -

The maximum number of connections that the server will accept and - process at any given time. When this number has been reached, the server - will accept, but not process, one further connection. This additional - connection be blocked until the number of connections being processed - falls below maxConnections at which point the server will - start accepting and processing new connections again. Note that once the - limit has been reached, the operating system may still accept connections - based on the acceptCount setting. The default value varies by - connector type. For NIO and NIO2 the default is 10000. - For APR/native, the default is 8192.

-

Note that for APR/native on Windows, the configured value will be - reduced to the highest multiple of 1024 that is less than or equal to - maxConnections. This is done for performance reasons.
- If set to a value of -1, the maxConnections feature is disabled - and connections are not counted.

-
maxCookieCount -

The maximum number of cookies that are permitted for a request. A value - of less than zero means no limit. If not specified, a default value of 200 - will be used.

-
maxExtensionSize -

Limits the total length of chunk extensions in chunked HTTP requests. - If the value is -1, no limit will be imposed. If not - specified, the default value of 8192 will be used.

-
maxHttpHeaderSize -

The maximum size of the request and response HTTP header, specified - in bytes. If not specified, this attribute is set to 8192 (8 KB).

-
maxKeepAliveRequests -

The maximum number of HTTP requests which can be pipelined until - the connection is closed by the server. Setting this attribute to 1 will - disable HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and - pipelining. Setting this to -1 will allow an unlimited amount of - pipelined or keep-alive HTTP requests. - If not specified, this attribute is set to 100.

-
maxSwallowSize -

The maximum number of request body bytes (excluding transfer encoding - overhead) that will be swallowed by Tomcat for an aborted upload. An - aborted upload is when Tomcat knows that the request body is going to be - ignored but the client still sends it. If Tomcat does not swallow the body - the client is unlikely to see the response. If not specified the default - of 2097152 (2 megabytes) will be used. A value of less than zero indicates - that no limit should be enforced.

-
maxThreads -

The maximum number of request processing threads to be created - by this Connector, which therefore determines the - maximum number of simultaneous requests that can be handled. If - not specified, this attribute is set to 200. If an executor is associated - with this connector, this attribute is ignored as the connector will - execute tasks using the executor rather than an internal thread pool. Note - that if an executor is configured any value set for this attribute will be - recorded correctly but it will be reported (e.g. via JMX) as - -1 to make clear that it is not used.

-
maxTrailerSize -

Limits the total length of trailing headers in the last chunk of - a chunked HTTP request. If the value is -1, no limit will be - imposed. If not specified, the default value of 8192 will be - used.

-
minSpareThreads -

The minimum number of threads always kept running. If not specified, - the default of 10 is used. If an executor is associated - with this connector, this attribute is ignored as the connector will - execute tasks using the executor rather than an internal thread pool. Note - that if an executor is configured any value set for this attribute will be - recorded correctly but it will be reported (e.g. via JMX) as - -1 to make clear that it is not used.

-
noCompressionUserAgents -

The value is a regular expression (using java.util.regex) - matching the user-agent header of HTTP clients for which - compression should not be used, - because these clients, although they do advertise support for the - feature, have a broken implementation. - The default value is an empty String (regexp matching disabled).

-
processorCache -

The protocol handler caches Processor objects to speed up performance. - This setting dictates how many of these objects get cached. - -1 means unlimited, default is 200. If not using - Servlet 3.0 asynchronous processing, a good default is to use the same as - the maxThreads setting. If using Servlet 3.0 asynchronous processing, a - good default is to use the larger of maxThreads and the maximum number of - expected concurrent requests (synchronous and asynchronous).

-
rejectIllegalHeaderName -

If an HTTP request is received that contains an illegal header name - (i.e. the header name is not a token) this setting determines if the - request will be rejected with a 400 response (true) or if the - illegal header be ignored (false). The default value is - false which will cause the request to be processed but the - illegal header will be ignored.

-
restrictedUserAgents -

The value is a regular expression (using java.util.regex) - matching the user-agent header of HTTP clients for which - HTTP/1.1 or HTTP/1.0 keep alive should not be used, even if the clients - advertise support for these features. - The default value is an empty String (regexp matching disabled).

-
server -

Overrides the Server header for the http response. If set, the value - for this attribute overrides any Server header set by a web application. - If not set, any value specified by the application is used. If the - application does not specify a value then no Server header is set.

-
serverRemoveAppProvidedValues -

If true, any Server header set by a web - application will be removed. Note that if server is set, - this attribute is effectively ignored. If not set, the default value of - false will be used.

-
SSLEnabled -

Use this attribute to enable SSL traffic on a connector. - To turn on SSL handshake/encryption/decryption on a connector - set this value to true. - The default value is false. - When turning this value true you will want to set the - scheme and the secure attributes as well - to pass the correct request.getScheme() and - request.isSecure() values to the servlets - See SSL Support for more information. -

-
tcpNoDelay -

If set to true, the TCP_NO_DELAY option will be - set on the server socket, which improves performance under most - circumstances. This is set to true by default.

-
threadPriority -

The priority of the request processing threads within the JVM. - The default value is 5 (the value of the - java.lang.Thread.NORM_PRIORITY constant). See the JavaDoc - for the java.lang.Thread class for more details on what - this priority means. If an executor is associated - with this connector, this attribute is ignored as the connector will - execute tasks using the executor rather than an internal thread pool. Note - that if an executor is configured any value set for this attribute will be - recorded correctly but it will be reported (e.g. via JMX) as - -1 to make clear that it is not used.

-
- -
- -

Java TCP socket attributes

- -

The NIO and NIO2 implementation support the following Java TCP - socket attributes in addition to the common Connector and HTTP attributes - listed above.

- -
- Attribute - - Description -
socket.rxBufSize -

(int)The socket receive buffer (SO_RCVBUF) size in bytes. JVM default - used if not set.

-
socket.txBufSize -

(int)The socket send buffer (SO_SNDBUF) size in bytes. JVM default - used if not set.

-
socket.tcpNoDelay -

(bool)This is equivalent to standard attribute - tcpNoDelay.

-
socket.soKeepAlive -

(bool)Boolean value for the socket's keep alive setting - (SO_KEEPALIVE). JVM default used if not set.

-
socket.ooBInline -

(bool)Boolean value for the socket OOBINLINE setting. JVM default - used if not set.

-
socket.soReuseAddress -

(bool)Boolean value for the sockets reuse address option - (SO_REUSEADDR). JVM default used if not set.

-
socket.soLingerOn -

(bool)Boolean value for the sockets so linger option (SO_LINGER). - A value for the standard attribute connectionLinger - that is >=0 is equivalent to setting this to true. - A value for the standard attribute connectionLinger - that is <0 is equivalent to setting this to false. - Both this attribute and soLingerTime must be set else the - JVM defaults will be used for both.

-
socket.soLingerTime -

(int)Value in seconds for the sockets so linger option (SO_LINGER). - This is equivalent to standard attribute - connectionLinger. - Both this attribute and soLingerOn must be set else the - JVM defaults will be used for both.

-
socket.soTimeout -

This is equivalent to standard attribute - connectionTimeout.

-
socket.performanceConnectionTime -

(int)The first value for the performance settings. See - Socket Performance Options. - All three performance attributes must be set else the JVM defaults will - be used for all three.

-
socket.performanceLatency -

(int)The second value for the performance settings. See - Socket Performance Options. - All three performance attributes must be set else the JVM defaults will - be used for all three.

-
socket.performanceBandwidth -

(int)The third value for the performance settings. See - Socket Performance Options. - All three performance attributes must be set else the JVM defaults will - be used for all three.

-
socket.unlockTimeout -

(int) The timeout for a socket unlock. When a connector is stopped, it will try to release the acceptor thread by opening a connector to itself. - The default value is 250 and the value is in milliseconds

-
-
- -

NIO specific configuration

- -

The following attributes are specific to the NIO connector.

- -
- Attribute - - Description -
pollerThreadCount -

(int)The number of threads to be used to run for the polling events. - Default value is 1 per processor but not more than 2.
- When accepting a socket, the operating system holds a global lock. So the benefit of - going above 2 threads diminishes rapidly. Having more than one thread is for - system that need to accept connections very rapidly. However usually just - increasing acceptCount will solve that problem. - Increasing this value may also be beneficial when a large amount of send file - operations are going on. -

-
pollerThreadPriority -

(int)The priority of the poller threads. - The default value is 5 (the value of the - java.lang.Thread.NORM_PRIORITY constant). See the JavaDoc - for the java.lang.Thread class for more details on what - this priority means.

-
selectorTimeout -

(int)The time in milliseconds to timeout on a select() for the - poller. This value is important, since connection clean up is done on - the same thread, so do not set this value to an extremely high one. The - default value is 1000 milliseconds.

-
useSendfile -

(bool)Use this attribute to enable or disable sendfile capability. - The default value is true. Note that the use of sendfile - will disable any compression that Tomcat may otherwise have performed on - the response.

-
socket.directBuffer -

(bool)Boolean value, whether to use direct ByteBuffers or java mapped - ByteBuffers. If true then - java.nio.ByteBuffer.allocateDirect() is used to allocate - the buffers, if false then - java.nio.ByteBuffer.allocate() is used. The default value - is false.
- When you are using direct buffers, make sure you allocate the - appropriate amount of memory for the direct memory space. On Sun's JDK - that would be something like -XX:MaxDirectMemorySize=256m. -

-
socket.directSslBuffer -

(bool)Boolean value, whether to use direct ByteBuffers or java mapped - ByteBuffers for the SSL buffers. If true then - java.nio.ByteBuffer.allocateDirect() is used to allocate - the buffers, if false then - java.nio.ByteBuffer.allocate() is used. The default value - is false.
- When you are using direct buffers, make sure you allocate the - appropriate amount of memory for the direct memory space. On Oracle's JDK - that would be something like -XX:MaxDirectMemorySize=256m. -

-
socket.appReadBufSize -

(int)Each connection that is opened up in Tomcat get associated with - a read ByteBuffer. This attribute controls the size of this buffer. By - default this read buffer is sized at 8192 bytes. For lower - concurrency, you can increase this to buffer more data. For an extreme - amount of keep alive connections, decrease this number or increase your - heap size.

-
socket.appWriteBufSize -

(int)Each connection that is opened up in Tomcat get associated with - a write ByteBuffer. This attribute controls the size of this buffer. By - default this write buffer is sized at 8192 bytes. For low - concurrency you can increase this to buffer more response data. For an - extreme amount of keep alive connections, decrease this number or - increase your heap size.
- The default value here is pretty low, you should up it if you are not - dealing with tens of thousands concurrent connections.

-
socket.bufferPool -

(int)The NIO connector uses a class called NioChannel that holds - elements linked to a socket. To reduce garbage collection, the NIO - connector caches these channel objects. This value specifies the size of - this cache. The default value is 500, and represents that - the cache will hold 500 NioChannel objects. Other values are - -1 for unlimited cache and 0 for no cache.

-
socket.bufferPoolSize -

(int)The NioChannel pool can also be size based, not used object - based. The size is calculated as follows:
- NioChannel - buffer size = read buffer size + write buffer size
- SecureNioChannel buffer size = application read buffer size + - application write buffer size + network read buffer size + - network write buffer size
- The value is in bytes, the default value is 1024*1024*100 - (100MB).

-
socket.processorCache -

(int)Tomcat will cache SocketProcessor objects to reduce garbage - collection. The integer value specifies how many objects to keep in the - cache at most. The default is 500. Other values are - -1 for unlimited cache and 0 for no cache.

-
socket.keyCache -

(int)Tomcat will cache KeyAttachment objects to reduce garbage - collection. The integer value specifies how many objects to keep in the - cache at most. The default is 500. Other values are - -1 for unlimited cache and 0 for no cache.

-
socket.eventCache -

(int)Tomcat will cache PollerEvent objects to reduce garbage - collection. The integer value specifies how many objects to keep in the - cache at most. The default is 500. Other values are - -1 for unlimited cache and 0 for no cache.

-
selectorPool.maxSelectors -

(int)The max selectors to be used in the pool, to reduce selector - contention. Use this option when the command line - org.apache.tomcat.util.net.NioSelectorShared value is set - to false. Default value is 200.

-
selectorPool.maxSpareSelectors -

(int)The max spare selectors to be used in the pool, to reduce - selector contention. When a selector is returned to the pool, the system - can decide to keep it or let it be GC'd. Use this option when the - command line org.apache.tomcat.util.net.NioSelectorShared - value is set to false. Default value is -1 (unlimited).

-
command-line-options -

The following command line options are available for the NIO - connector:
- -Dorg.apache.tomcat.util.net.NioSelectorShared=true|false - - default is true. Set this value to false if you wish to - use a selector for each thread. When you set it to false, you can - control the size of the pool of selectors by using the - selectorPool.maxSelectors attribute.

-
-
- -

NIO2 specific configuration

- -

The following attributes are specific to the NIO2 connector.

- -
- Attribute - - Description -
useSendfile -

(bool)Use this attribute to enable or disable sendfile capability. - The default value is true. Note that the use of sendfile - will disable any compression that Tomcat may otherwise have performed on - the response.

-
socket.directBuffer -

(bool)Boolean value, whether to use direct ByteBuffers or java mapped - ByteBuffers. If true then - java.nio.ByteBuffer.allocateDirect() is used to allocate - the buffers, if false then - java.nio.ByteBuffer.allocate() is used. The default value - is false.
- When you are using direct buffers, make sure you allocate the - appropriate amount of memory for the direct memory space. On Sun's JDK - that would be something like -XX:MaxDirectMemorySize=256m. -

-
socket.directSslBuffer -

(bool)Boolean value, whether to use direct ByteBuffers or java mapped - ByteBuffers for the SSL buffers. If true then - java.nio.ByteBuffer.allocateDirect() is used to allocate - the buffers, if false then - java.nio.ByteBuffer.allocate() is used. The default value - is false.
- When you are using direct buffers, make sure you allocate the - appropriate amount of memory for the direct memory space. On Oracle's JDK - that would be something like -XX:MaxDirectMemorySize=256m. -

-
socket.appReadBufSize -

(int)Each connection that is opened up in Tomcat get associated with - a read ByteBuffer. This attribute controls the size of this buffer. By - default this read buffer is sized at 8192 bytes. For lower - concurrency, you can increase this to buffer more data. For an extreme - amount of keep alive connections, decrease this number or increase your - heap size.

-
socket.appWriteBufSize -

(int)Each connection that is opened up in Tomcat get associated with - a write ByteBuffer. This attribute controls the size of this buffer. By - default this write buffer is sized at 8192 bytes. For low - concurrency you can increase this to buffer more response data. For an - extreme amount of keep alive connections, decrease this number or - increase your heap size.
- The default value here is pretty low, you should up it if you are not - dealing with tens of thousands concurrent connections.

-
socket.bufferPool -

(int)The NIO2 connector uses a class called Nio2Channel that holds - elements linked to a socket. To reduce garbage collection, the NIO2 - connector caches these channel objects. This value specifies the size of - this cache. The default value is 500, and represents that - the cache will hold 500 Nio2Channel objects. Other values are - -1 for unlimited cache and 0 for no cache.

-
socket.processorCache -

(int)Tomcat will cache SocketProcessor objects to reduce garbage - collection. The integer value specifies how many objects to keep in the - cache at most. The default is 500. Other values are - -1 for unlimited cache and 0 for no cache.

-
-
- -

APR/native specific configuration

- -

The following attributes are specific to the APR/native connector.

- -
- Attribute - - Description -
deferAccept -

Sets the TCP_DEFER_ACCEPT flag on the listening socket - for this connector. The default value is true where - TCP_DEFER_ACCEPT is supported by the operating system, - otherwise it is false.

-
ipv6v6only -

If listening on an IPv6 address on a dual stack system, should the - connector only listen on the IPv6 address? If not specified the default - is false and the connector will listen on the IPv6 address - and the equivalent IPv4 address if present.

-
pollerThreadCount -

Number of threads used to poll kept alive connections. On Windows the - default is chosen so that the sockets managed by each thread is - less than 1024. For Linux the default is 1. Changing the default on - Windows is likely to have a negative performance impact.

-
pollTime -

Duration of a poll call in microseconds. Lowering this value will - slightly decrease latency of connections being kept alive in some cases, - but will use more CPU as more poll calls are being made. The default - value is 2000 (2ms).

-
sendfileSize -

Amount of sockets that the poller responsible for sending static - files asynchronously can hold at a given time. Extra connections will be - closed right away without any data being sent (resulting in a zero - length file on the client side). Note that in most cases, sendfile is a - call that will return right away (being taken care of "synchronously" by - the kernel), and the sendfile poller will not be used, so the amount of - static files which can be sent concurrently is much larger than the - specified amount. The default value is 1024.

-
threadPriority -

(int)The priority of the acceptor and poller threads. - The default value is 5 (the value of the - java.lang.Thread.NORM_PRIORITY constant). See the JavaDoc - for the java.lang.Thread class for more details on what - this priority means.

-
useSendfile -

(bool)Use this attribute to enable or disable sendfile capability. - The default value is true. Note that the use of sendfile - will disable any compression that Tomcat may otherwise have performed on - the response.

-
- -
- -

Nested Components

- -

First implemented in Tomcat 9 and back-ported to 8.5, Tomcat now supports - Server Name Indication (SNI). This allows multiple SSL configurations to be - associated with a single secure connector with the configuration used for any - given connection determined by the host name requested by the client. To - facilitate this, the SSLHostConfig element was added which - can be used to define one of these configurations. Any number of - SSLHostConfig may be nested in a Connector. - At the same time, support was added for multiple certificates to be associated - with a single SSLHostConfig. Each SSL certificate is - therefore configured in a Certificate element with in an - SSLHostConfig. For further information, see the SSL Support - section below.

- -

Special Features

- - -

HTTP/1.1 and HTTP/1.0 Support

- -

This Connector supports all of the required features - of the HTTP/1.1 protocol, as described in RFCs 7230-7235, including persistent - connections, pipelining, expectations and chunked encoding. If the client - supports only HTTP/1.0 or HTTP/0.9, the - Connector will gracefully fall back to supporting this - protocol as well. No special configuration is required to enable this - support. The Connector also supports HTTP/1.0 - keep-alive.

- -

RFC 7230 requires that HTTP servers always begin their responses with - the highest HTTP version that they claim to support. Therefore, this - Connector will always return HTTP/1.1 at - the beginning of its responses.

- -
- -

HTTP/2 Support

- -

HTTP/2 is support is provided for TLS (h2), non-TLS via HTTP upgrade (h2c) - and direct HTTP/2 (h2c) connections. To enable HTTP/2 support for an HTTP - connector the following UpgradeProtocol element must be - nested within the Connector with a - className attribute of - org.apache.coyote.http2.Http2Protocol.

- -
<Connector ... >
-  <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
-</Connector>
- -

Because Java 8's TLS implementation does not support ALPN (which is - required for HTTP/2 over TLS), you must be using an OpenSSL based TLS - implementation to enable HTTP/2 support. See the - sslImplementationName attribute of the - Connector.

- -

Additional configuration attributes are available. See the - HTTP/2 Upgrade Protocol documentation for details.

- -
- -

Proxy Support

- -

The proxyName and proxyPort attributes can - be used when Tomcat is run behind a proxy server. These attributes - modify the values returned to web applications that call the - request.getServerName() and request.getServerPort() - methods, which are often used to construct absolute URLs for redirects. - Without configuring these attributes, the values returned would reflect - the server name and port on which the connection from the proxy server - was received, rather than the server name and port to whom the client - directed the original request.

- -

For more information, see the - Proxy Support HOW-TO.

- -
- - -

SSL Support

- -

You can enable SSL support for a particular instance of this - Connector by setting the SSLEnabled attribute to - true.

- -

You will also need to set the scheme and secure - attributes to the values https and true - respectively, to pass correct information to the servlets.

- -

The NIO and NIO2 connectors use either the JSSE Java SSL implementation or - an OpenSSL implementation, whereas the APR/native connector uses OpenSSL only. - Prior to Tomcat 8.5, different configuration attributes were used for JSSE and - OpenSSL. From Tomcat 8.5 onwards, and as far as possible, common configuration - attributes are used for both JSSE and OpenSSL. Also if using the JSSE OpenSSL - implementation, configuration can be set using either the JSSE or APR - attributes (note: but not both types within the same configuration). This is - to aid simpler switching between connector implementations for SSL - connectors.

- -

Each secure connector must define at least one - SSLHostConfig. The names of the - SSLHostConfig elements must be unique and one of them must - match the defaultSSLHostConfigName attribute of the - Connector.

- -

Each SSLHostConfig must in turn define at least one - Certificate. The types of the Certificates - must be unique.

- -

As of Tomcat 8.5, the majority of the SSL configuration attributes in the - Connector are deprecated. If specified, they will be used to - configure a SSLHostConfig and Certificate - for the defaultSSLHostConfigName. Note that if an explicit - SSLHostConfig element also exists for the - defaultSSLHostConfigName then that will be treated as a configuration - error. It is expected that Tomcat 10 will drop support for the SSL - configuration attributes in the Connector.

- -

For more information, see the - SSL Configuration HOW-TO.

- -
- -

SSL Support - SSLHostConfig

- -

- -
- Attribute - - Description -
certificateRevocationFile -

Name of the file that contains the concatenated certificate revocation - lists for the certificate authorities. The format is PEM-encoded. If not - defined, client certificates will not be checked against a certificate - revocation list (unless an OpenSSL based connector is used and - certificateRevocationPath is defined). Relative paths - will be resolved against $CATALINA_BASE. JSSE based - connectors may also specify a URL for this attribute.

-
certificateRevocationPath -

OpenSSL only.

-

Name of the directory that contains the certificate revocation lists - for the certificate authorities. The format is PEM-encoded. Relative paths - will be resolved against $CATALINA_BASE.

-
certificateVerification -

Set to required if you want the SSL stack to require a - valid certificate chain from the client before accepting a connection. - Set to optional if you want the SSL stack to request a client - Certificate, but not fail if one isn't presented. Set to - optionalNoCA if you want client certificates to be optional - and you don't want Tomcat to check them against the list of trusted CAs. - If the TLS provider doesn't support this option (OpenSSL does, JSSE does - not) it is treated as if optional was specified. A - none value (which is the default) will not require a - certificate chain unless the client requests a resource protected by a - security constraint that uses CLIENT-CERT authentication.

-
certificateVerificationDepth -

The maximum number of intermediate certificates that will be allowed - when validating client certificates. If not specified, the default value - of 10 will be used.

-
caCertificateFile -

OpenSSL only.

-

Name of the file that contains the concatenated certificates for the - trusted certificate authorities. The format is PEM-encoded.

-
caCertificatePath -

OpenSSL only.

-

Name of the directory that contains the certificates for the trusted - certificate authorities. The format is PEM-encoded.

-
ciphers -

The ciphers to enable using the OpenSSL syntax. (See the OpenSSL - documentation for the list of ciphers supported and the syntax). - Alternatively, a comma separated list of ciphers using the standard - OpenSSL cipher names or the standard JSSE cipher names may be used.

-

When converting from OpenSSL syntax to JSSE ciphers for JSSE based - connectors, the behaviour of the OpenSSL syntax parsing is kept aligned - with the behaviour of the OpenSSL 1.1.0 development branch.

-

Only the ciphers that are supported by the SSL implementation will be - used.

-

If not specified, a default (using the OpenSSL notation) of - HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!kRSA will be - used.

-

Note that, by default, the order in which ciphers are defined is - treated as an order of preference. See honorCipherOrder.

-
disableCompression -

OpenSSL only.

-

Configures if compression is disabled. The default is - true. If the OpenSSL version used does not support disabling - compression then the default for that OpenSSL version will be used.

-
disableSessionTickets -

OpenSSL only.

-

Disables use of TLS session tickets (RFC 5077) if set to - true. Default is false. Note that when TLS - session tickets are in use, the full peer certificate chain will only be - available on the first connection. Subsequent connections (that use a - ticket to estrablish the TLS session) will only have the peer certificate, - not the full chain.

-
honorCipherOrder -

Set to true to enforce the server's cipher order - (from the ciphers setting) instead of allowing - the client to choose the cipher. The default is false. - Use of this feature requires Java 8 or later.

-
hostName -

The name of the SSL Host. This should either be the fully qualified - domain name (e.g. tomcat.apache.org) or a wild card domain - name (e.g. *.apache.org). If not specified, the default value - of _default_ will be used.

-
insecureRenegotiation -

OpenSSL only.

-

Configures if insecure renegotiation is allowed. The default is - false. If the OpenSSL version used does not support - configuring if insecure renegotiation is allowed then the default for that - OpenSSL version will be used.

-
keyManagerAlgorithm -

JSSE only.

-

The KeyManager algorithm to be used. This defaults to - KeyManagerFactory.getDefaultAlgorithm() which returns - SunX509 for Sun JVMs. IBM JVMs return - IbmX509. For other vendors, consult the JVM - documentation for the default value.

-
protocols -

The names of the protocols to support when communicating with clients. - This should be a list of any combination of the following: -

-
  • SSLv2Hello
  • SSLv3
  • TLSv1
  • TLSv1.1
  • -
  • TLSv1.2
  • all
-

Each token in the list can be prefixed with a plus sign ("+") - or a minus sign ("-"). A plus sign adds the protocol, a minus sign - removes it form the current list. The list is built starting from - an empty list.

-

The token all is an alias for - SSLv2Hello,TLSv1,TLSv1.1,TLSv1.2.

-

Note that SSLv2Hello will be ignored for OpenSSL based - secure connectors. If more than one protocol is specified for an OpenSSL - based secure connector it will always support SSLv2Hello. If a - single protocol is specified it will not support - SSLv2Hello.

-

Note that SSLv2 and SSLv3 are inherently - unsafe.

-

If not specified, the default value of all will be - used.

-
revocationEnabled -

JSSE only.

-

Should the JSSE provider enable certificate revocation checks? If - certificateRevocationListFile is set then this attribute - is ignored and revocation checks are always enabled. This attribute is - intended to enable revocation checks that have been configured for the - current JSSE provider via other means. If not specified, a default of - false is used.

-
sessionCacheSize -

JSSE only.

-

The number of SSL sessions to maintain in the session cache. Use 0 to - specify an unlimited cache size. If not specified, a default of 0 is - used.

-
sessionTimeout -

JSSE only.

-

The time, in seconds, after the creation of an SSL session that it will - timeout. Use 0 to specify an unlimited timeout. If not specified, a - default of 86400 (24 hours) is used.

-
sslProtocol -

JSSE only.

-

The SSL protocol(s) to use (a single value may enable multiple - protocols - see the JVM documentation for details). If not specified, the - default is TLS. The permitted values may be obtained from the - JVM documentation for the allowed values for algorithm when creating an - SSLContext instance e.g. - - Oracle Java 7. Note: There is overlap between this attribute and - protocols.

-
trustManagerClassName -

JSSE only.

-

The name of a custom trust manager class to use to validate client - certificates. The class must have a zero argument constructor and must - also implement javax.net.ssl.X509TrustManager. If this - attribute is set, the trust store attributes may be ignored.

-
truststoreAlgorithm -

JSSE only.

-

The algorithm to use for truststore. If not specified, the default - value returned by - javax.net.ssl.TrustManagerFactory.getDefaultAlgorithm() is - used.

-
truststoreFile -

JSSE only.

-

The trust store file to use to validate client certificates. The - default is the value of the javax.net.ssl.trustStore system - property. If neither this attribute nor the default system property is - set, no trust store will be configured. Relative paths - will be resolved against $CATALINA_BASE. A URL may also be - used for this attribute.

-
truststorePassword -

JSSE only.

-

The password to access the trust store. The default is the value of the - javax.net.ssl.trustStorePassword system property. If that - property is null, no trust store password will be configured. If an - invalid trust store password is specified, a warning will be logged and an - attempt will be made to access the trust store without a password which - will skip validation of the trust store contents.

-
truststoreProvider -

JSSE only.

-

The name of the truststore provider to be used for the server - certificate. The default is the value of the - javax.net.ssl.trustStoreProvider system property. If - that property is null, the value of keystoreProvider is used - as the default. If neither this attribute, the default system property nor - keystoreProvideris set, the list of registered providers is - traversed in preference order and the first provider that supports the - truststoreType is used. -

-
truststoreType -

JSSE only.

-

The type of key store used for the trust store. The default is the - value of the javax.net.ssl.trustStoreType system property. If - that property is null, a single certificate has been configured for this - TLS virtual host and that certificate has a keystoreType that - is not PKCS12 then the default will be the - keystoreType of the single certificate. If none of these - identify a default, the default will be JKS.

-
- -
- -

SSL Support - Certificate

- -

- -
- Attribute - - Description -
certificateFile -

Name of the file that contains the server certificate. The format is - PEM-encoded. Relative paths will be resolved against - $CATALINA_BASE.

-

In addition to the certificate, the file can also contain as optional - elements DH parameters and/or an EC curve name for ephemeral keys, as - generated by openssl dhparam and openssl ecparam, - respectively. The output of the respective OpenSSL command can simply - be concatenated to the certificate file.

-
certificateChainFile -

Name of the file that contains the certificate chain associated with - the server certificate used. The format is - PEM-encoded. Relative paths will be resolved against - $CATALINA_BASE.

-

The certificate chain used for Tomcat should not include the server - certificate as its first element.

-

Note that when using more than one certificate for different types, - they all must use the same certificate chain.

-
certificateKeyAlias -

JSSE only.

-

The alias used for the server key and certificate in the keystore. If - not specified, the first key read from the keystore will be used. The - order in which keys are read from the keystore is implementation - dependent. It may not be the case that keys are read from the keystore in - the same order as they were added. If more than one key is present in the - keystore it is strongly recommended that a keyAlias is configured to - ensure that the correct key is used.

-
certificateKeyFile -

Name of the file that contains the server private key. The format is - PEM-encoded. The default value is the value of - certificateFile and in this case both certificate and - private key have to be in this file (NOT RECOMMENDED). Relative paths will - be resolved against $CATALINA_BASE.

-
certificateKeyPassword -

The password used to access the private key associated with the server - certificate from the specified file.

-

If not specified, the default behaviour for JSSE is to use the - certificateKeystorePassword. For OpenSSL the default - behaviour is not to use a password.

-
certificateKeystoreFile -

JSSE only.

-

The pathname of the keystore file where you have stored the server - certificate and key to be loaded. By default, the pathname is the file - .keystore in the operating system home directory of the user - that is running Tomcat. If your keystoreType doesn't need a - file use "" (empty string) or NONE for this - parameter. Relative paths will be resolved against - $CATALINA_BASE. A URL may also be used for this attribute. -

-
certificateKeystorePassword -

JSSE only.

-

The password to use to access the keystore containing the server's - private key and certificate. If not specified, a default of - changeit will be used.

-
certificateKeystoreProvider -

JSSE only.

-

The name of the keystore provider to be used for the server - certificate. If not specified, the value of the system property - javax.net.ssl.keyStoreProvider is used. If neither this - attribute nor the system property are set, the list of registered - providers is traversed in preference order and the first provider that - supports the keystoreType is used. -

-
certificateKeystoreType -

JSSE only.

-

The type of keystore file to be used for the server certificate. - If not specified, the value of the system property - javax.net.ssl.keyStoreType is used. If neither this attribute - nor the system property are set, a default value of "JKS". is - used.

-
type -

The type of certificate. This is used to identify the ciphers that are - compatible with the certificate. It must be one of UNDEFINED, - RSA, DSS or EC. If only one - Certificate is nested within a SSLHostConfig - then this attribute is not required and will default to - UNDEFINED. If multiple Certificates are - nested within a SSLHostConfig then this attribute is required - and each Certificate must have a unique type.

-
- -
- -

SSL Support - Connector - NIO and NIO2

- -

When APR/native is enabled, the connectors will default to using OpenSSL through JSSE, - which may be more optimized than the JSSE Java implementation depending on the processor being used, - and can be complemented with many commercial accelerator components.

- -

The following NIO and NIO2 SSL configuration attributes are not specific to - a virtual host and, therefore, must be configured on the connector.

- -
- Attribute - - Description -
sniParseLimit -

In order to implement SNI support, Tomcat has to parse the first TLS - message received on a new TLS connection (the client hello) to extract the - requested server name. The message needs to be buffered so it can then be - passed to the JSSE implementation for normal TLS processing. In theory, - this first message could be very large although in practice it is - typically a few hundred bytes. This attribute sets the maximum message - size that Tomcat will buffer. If a message exceeds this size, the - connection will be configured as if no server name was indicated by the - client. If not specified a default of 65536 (64k) will be - used.

-
sslImplementationName -

The class name of the SSL implementation to use. If not specified and - the tomcat-native library is not installed, the - default of org.apache.tomcat.util.net.jsse.JSSEImplementation - will be used which wraps JVM's default JSSE provider. Note that the - JVM can be configured to use a different JSSE provider as the default. - Tomcat also bundles a special SSL implementation for JSSE that is backed - by OpenSSL. To enable it, the native library should be enabled as if - intending to use the APR connector, and Tomcat will automatically enable it - and the default value of this attribute becomes - org.apache.tomcat.util.net.openssl.OpenSSLImplementation. - In that case, the attributes from either JSSE and OpenSSL - configuration styles can be used, as long as the two types are not mixed - (for example, it is not allowed to define use of a Java keystore and - specify a separate pem private key using the OpenSSL attribute).

-
- -
- -

SSL Support - Connector - NIO and NIO2 (deprecated)

- -

The following NIO and NIO2 SSL configuration attributes have been - deprecated in favor of the default - SSLHostConfig element. -

- -
- Attribute - - Description -
algorithm -

This is an alias for the keyManagerAlgorithm attribute of - the default SSLHostConfig - element.

-
ciphers -

This is an alias for the ciphers attribute of the default - SSLHostConfig element.

-
clientAuth -

This is an alias for the certificateVerification attribute - of the default SSLHostConfig - element.

-
crlFile -

This is an alias for the certificateRevocationFile - attribute of the default - SSLHostConfig element.

-
keyAlias -

This is an alias for the certificateKeyAlias attribute of - the first Certificate element - nested in the default - SSLHostConfig element.

-
keyPass -

This is an alias for the certificateKeyPassword attribute - of the first Certificate element - nested in the default - SSLHostConfig element.

-
keystoreFile -

This is an alias for the certificateKeystoreFile attribute - of the first Certificate element - nested in the default - SSLHostConfig element.

-
keystorePass -

This is an alias for the certificateKeystorePassword - attribute of the first - Certificate element nested in the - default SSLHostConfig - element.

-
keystoreProvider -

This is an alias for the certificateKeystoreProvider - attribute of the first - Certificate element nested in the - default SSLHostConfig - element.

-
keystoreType -

This is an alias for the certificateKeystoreType attribute - of the first Certificate element - nested in the default - SSLHostConfig element.

-
sessionCacheSize -

This is an alias for the sessionCacheSize attribute of the - default SSLHostConfig - element.

-
sessionTimeout -

This is an alias for the sessionTimeout attribute of the - default SSLHostConfig - element.

-
sslEnabledProtocols -

This is an alias for the protocols attribute of the - default SSLHostConfig - element.

-
sslProtocol -

This is an alias for the sslProtocol attribute of the - default SSLHostConfig - element.

-
trustManagerClassName -

This is an alias for the trustManagerClassName attribute - of the default SSLHostConfig - element.

-
trustMaxCertLength -

This is an alias for the certificateVerificationDepth - attribute of the default - SSLHostConfig element.

-
truststoreAlgorithm -

This is an alias for the truststoreAlgorithm attribute of - the default SSLHostConfig - element.

-
truststoreFile -

This is an alias for the truststoreFile attribute of - the default SSLHostConfig - element.

-
truststorePass -

This is an alias for the truststorePassword attribute of - the default SSLHostConfig - element.

-
truststoreProvider -

This is an alias for the truststoreProvider attribute of - the default SSLHostConfig - element.

-
truststoreType -

This is an alias for the truststoreType attribute of - the default SSLHostConfig - element.

-
useServerCipherSuitesOrder -

This is an alias for the honorCipherOrder attribute of the - default SSLHostConfig - element.

-
- -
- -

SSL Support - Connector - APR/Native (deprecated)

- -

When APR/native is enabled, the HTTPS connector will use a socket poller - for keep-alive, increasing scalability of the server. It also uses OpenSSL, - which may be more optimized than JSSE depending on the processor being used, - and can be complemented with many commercial accelerator components. Unlike - the HTTP connector, the HTTPS connector cannot use sendfile to optimize static - file processing.

- -

The HTTPS APR/native connector has the same attributes than the HTTP - APR/native connector, but adds OpenSSL specific ones. For the full details on - using OpenSSL, please refer to OpenSSL documentations and the many books - available for it (see the Official OpenSSL - website). The SSL specific attributes for the APR/native connector are: -

- -
- Attribute - - Description -
SSLCACertificateFile -

This is an alias for the caCertificateFile - attribute of the default - SSLHostConfig element.

-
SSLCACertificatePath -

This is an alias for the caCertificatePath - attribute of the default - SSLHostConfig element.

-
SSLCARevocationFile -

This is an alias for the certificateRevocationFile - attribute of the default - SSLHostConfig element.

-
SSLCARevocationPath -

This is an alias for the certificateRevocationPath - attribute of the default - SSLHostConfig element.

-
SSLCertificateFile -

This is an alias for the certificateFile attribute of the - first Certificate element nested - in the default SSLHostConfig - element.

-
SSLCertificateKeyFile -

This is an alias for the certificateKeyFile attribute of the - first Certificate element nested - in the default SSLHostConfig - element.

-
SSLCipherSuite -

This is an alias for the ciphers attribute of the default - SSLHostConfig element.

-
SSLDisableCompression -

This is an alias for the disableCompression attribute of - the default SSLHostConfig - element.

-
SSLHonorCipherOrder -

This is an alias for the honorCipherOrder attribute of the - default SSLHostConfig - element.

-
SSLPassword -

This is an alias for the certificateKeyPassword attribute - of the first Certificate element - nested in the default - SSLHostConfig element.

-
SSLProtocol -

This is an alias for the protocols attribute of the - default SSLHostConfig - element.

-
SSLVerifyClient -

This is an alias for the certificateVerification attribute - of the default SSLHostConfig - element.

-
SSLVerifyDepth -

This is an alias for the certificateVerificationDepth - attribute of the default - SSLHostConfig element.

-
SSLDisableSessionTickets -

This is an alias for the disableSessionTickets attribute - of the default SSLHostConfig - element.

-
- -
- -

Connector Comparison

- -

Below is a small chart that shows how the connectors differ.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Java Nio Connector
NIO
Java Nio2 Connector
NIO2
APR/native Connector
APR
ClassnameHttp11NioProtocolHttp11Nio2ProtocolHttp11AprProtocol
Tomcat Version6.x onwards8.x onwards5.5.x onwards
Support PollingYESYESYES
Polling SizemaxConnectionsmaxConnectionsmaxConnections
Read Request HeadersNon BlockingNon BlockingNon Blocking
Read Request BodyBlockingBlockingBlocking
Write Response Headers and BodyBlockingBlockingBlocking
Wait for next RequestNon BlockingNon BlockingNon Blocking
SSL SupportJava SSL or OpenSSLJava SSL or OpenSSLOpenSSL
SSL HandshakeNon blockingNon blockingBlocking
Max ConnectionsmaxConnectionsmaxConnectionsmaxConnections
- -
-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/http2.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/http2.html deleted file mode 100644 index 22f682a847d62390478106f2aa4d74ab1e2a5f3b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/http2.html +++ /dev/null @@ -1,211 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The HTTP2 Upgrade Protocol

The HTTP2 Upgrade Protocol

Table of Contents

Introduction

- -

The HTTP Upgrade Protocol element represents an - Upgrade Protocol component that supports the HTTP/2 protocol. - An instance of this component must be associated with an existing - HTTP/1.1 Connector.

- -

HTTP/2 connectors use non-blocking I/O, only utilising a container thread - from the thread pool when there is data to read and write. However, because - the Servlet API is fundamentally blocking, each HTTP/2 stream requires a - dedicated container thread for the duration of that stream.

- -

Attributes

- -

Common Attributes

- -

All implementations of Upgrade Protocol support the - following attributes:

- -
- Attribute - - Description -
className -

This must be org.apache.coyote.http2.Http2Protocol.

-
- -
- -

Standard Implementation

- -

The HTTP/2 Upgrade Protocol implementation supports the - following attributes in addition to the common attributes listed above.

- -
- Attribute - - Description -
allowedTrailerHeaders -

By default Tomcat will ignore all trailer headers when processing - HTTP/2 connections. For a header to be processed, it must be added to this - comma-separated list of header names.

-
compressibleMimeType -

The value is a comma separated list of MIME types for which HTTP - compression may be used. - The default value is - - text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml - . -

-
compression -

The HTTP/2 protocol may use compression in an attempt to save server - bandwidth. The acceptable values for the parameter is "off" (disable - compression), "on" (allow compression, which causes text data to be - compressed), "force" (forces compression in all cases), or a numerical - integer value (which is equivalent to "on", but specifies the minimum - amount of data before the output is compressed). If the content-length is - not known and compression is set to "on" or more aggressive, the output - will also be compressed. If not specified, this attribute is set to - "off".

-

Note: There is a tradeoff between using compression (saving - your bandwidth) and using the sendfile feature (saving your CPU cycles). - If the connector supports the sendfile feature, e.g. the NIO2 connector, - using sendfile will take precedence over compression. The symptoms will - be that static files greater that 48 Kb will be sent uncompressed. - You can turn off sendfile by setting useSendfile attribute - of the protocol, as documented below, or change the sendfile usage - threshold in the configuration of the - DefaultServlet in the default - conf/web.xml or in the web.xml of your web - application. -

-
compressionMinSize -

If compression is set to "on" then this attribute - may be used to specify the minimum amount of data before the output is - compressed. If not specified, this attribute is defaults to "2048".

-
initialWindowSize -

Controls the initial size of the flow control window for streams that - Tomcat advertises to clients. If not specified, the default value of - 65535 is used.

-
keepAliveTimeout -

The time, in milliseconds, that Tomcat will wait between HTTP/2 frames - before closing the connection. Negative values will be treated as an - infinite timeout. If not specified, a default value of -1 - will be used.

-
maxConcurrentStreamExecution -

The controls the maximum number of streams for any one connection that - can be allocated threads from the container thread pool. If more streams - are active than threads are available, those streams will have to wait - for a stream to become available. If not specified, the default value of - 200 will be used.

-
maxConcurrentStreams -

The controls the maximum number of active streams permitted for any one - connection. If a client attempts to open more active streams than this - limit, the stream will be reset with a STREAM_REFUSED error. - If not specified, the default value of 200 will be used.

-
maxHeaderCount -

The maximum number of headers in a request that is allowed by the - container. A request that contains more headers than the specified limit - will be rejected. A value of less than 0 means no limit. - If not specified, a default of 100 is used.

-
maxHeaderSize -

The maximum total size for all headers in a request that is allowed by - the container. Total size for a header is calculated as the uncompressed - size of the header name in bytes, plus the uncompressed size of the header - value in bytes plus an HTTP/2 overhead of 3 bytes per header. A request - that contains a set of headers that requires more than the specified limit - will be rejected. A value of less than 0 means no limit. If not specified, - a default of 8192 is used.

-
maxTrailerCount -

The maximum number of trailer headers in a request that is allowed by - the container. A request that contains more trailer headers than the - specified limit will be rejected. A value of less than 0 means no limit. - If not specified, a default of 100 is used.

-
maxTrailerSize -

The maximum total size for all trailer headers in a request that is - allowed by the container. Total size for a header is calculated as the - uncompressed size of the header name in bytes, plus the uncompressed size - of the header value in bytes plus an HTTP/2 overhead of 3 bytes per - header. A request that contains a set of trailer headers that requires - more than the specified limit will be rejected. A value of less than 0 - means no limit. If not specified, a default of 8192 is used.

-
noCompressionUserAgents -

The value is a regular expression (using java.util.regex) - matching the user-agent header of HTTP clients for which - compression should not be used, - because these clients, although they do advertise support for the - feature, have a broken implementation. - The default value is an empty String (regexp matching disabled).

-
readTimeout -

The time, in milliseconds, that Tomcat will wait for additional data - when a partial HTTP/2 frame has been received. Negative values will be - treated as an infinite timeout. If not specified, a default value of - 10000 will be used.

-
writeTimeout -

The time, in milliseconds, that Tomcat will wait to write additional - data when an HTTP/2 frame has been partially written. Negative values will - be treated as an infinite timeout. If not specified, a default value of - 10000 will be used.

-
- -

The HTTP/2 upgrade protocol will also inherit the following limits from the - HTTP Connector it is nested with:

- -
    -
  • maxCookieCount
  • -
  • maxParameterCount
  • -
  • maxPostSize
  • -
  • maxSavePostSize
  • -
- -
- -

Nested Components

- -

This component does not support any nested components.

- -

Special Features

- -

This component does not support any special features.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/index.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/index.html deleted file mode 100644 index 70bce6185607bc00461dadc6e9da3958c793c083..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/index.html +++ /dev/null @@ -1,107 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - Overview

Overview

Overview

- -

This manual contains reference information about all of the configuration -directives that can be included in a conf/server.xml file to -configure the behavior of the Tomcat Servlet/JSP container. It does not -attempt to describe which configuration directives should be used to perform -specific tasks - for that, see the various HOW-TO documents on the -main index page.

- -

Tomcat configuration files are formatted as schemaless XML; elements and -attributes are case-sensitive. Apache Ant-style variable substitution -is supported; a system property with the name propname may be -used in a configuration file using the syntax ${propname}. All -system properties are available including those set using the -D -syntax, those automatically made available by the JVM and those configured in -the $CATALINA_BASE/conf/catalina.properties file. -

- -

The configuration element descriptions are organized into the following -major categories:

-
    -
  • Top Level Elements - <Server> is the - root element of the entire configuration file, while - <Service> represents a group of Connectors that is - associated with an Engine.
  • -
  • Connectors - Represent the interface between external - clients sending requests to (and receiving responses from) a particular - Service.
  • -
  • Containers - Represent components whose function is to - process incoming requests, and create the corresponding responses. - An Engine handles all requests for a Service, a Host handles all requests - for a particular virtual host, and a Context handles all requests for a - specific web application.
  • -
  • Nested Components - Represent elements that can be - nested inside the element for a Container. Some elements can be nested - inside any Container, while others can only be nested inside a - Context.
  • -
- -

For each element, the corresponding documentation follows this general -outline:

-
    -
  • Introduction - Overall description of this particular - component. There will be a corresponding Java interface (in - the org.apache.catalina package) that is implemented by one - or more standard implementations.
  • -
  • Attributes - The set of attributes that are legal for - this element. Generally, this will be subdivided into Common - attributes that are supported by all implementations of the corresponding - Java interface, and Standard Implementation attributes that are - specific to a particular Java class that implements this interface. - The names of required attributes are bolded.
  • -
  • Nested Components - Enumerates which of the Nested - Components can be legally nested within this element.
  • -
  • Special Features - Describes the configuration of a large - variety of special features (specific to each element type) that are - supported by the standard implementation of this interface.
  • -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/jar-scan-filter.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/jar-scan-filter.html deleted file mode 100644 index 335a2a4dede3daeef40751bfa0b452b23c75c9e9..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/jar-scan-filter.html +++ /dev/null @@ -1,183 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Jar Scan Filter Component

The Jar Scan Filter Component

Table of Contents

Introduction

- -

The Jar Scan Filter element represents the component that - filters results from the Jar Scanner before - they are passed back to the application. It is typically used to skip the - scanning of JARs that are known not to be relevant to some or all types of - scan.

- -

A Jar Scan Filter element MAY be nested inside a - Jar Scanner component.

- -

For example you can specify additional jar files when scanning for pluggable - features:

-
<Context>
-  ...
-  <JarScanner>
-    <JarScanFilter
-        pluggabilityScan="${tomcat.util.scan.StandardJarScanFilter.jarsToScan},
-                       my_pluggable_feature.jar"/>
-  </JarScanner>
-  ...
-</Context>
- -

If a Jar Scan Filter element is not included, a default Jar Scan Filter - configuration will be created automatically, which is sufficient for most - requirements.

- -

Attributes

- -

Common Attributes

- -

All implementations of Jar Scan Filter - support the following attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This class must - implement the org.apache.tomcat.JarScanFilter interface. - If not specified, the standard value (defined below) will be used.

-
- -
- - -

Standard Implementation

- -

The standard implementation of Jar Scan Filter is - org.apache.tomcat.util.scan.StandardJarScanFilter. - Additional attributes that it supports (in addition to the common attributes - listed above) are listed in the table.

- -

The values for pluggabilitySkip, - pluggabilityScan, tldSkip, - tldScan attributes are lists of file name pattern. The - patterns are separated by comma (','). The leading and trailing whitespace - characters in a pattern are ignored. The patterns are matched - case-sensitively. The following two special characters are supported:

- -
    -
  • '*' - means zero or more characters,
  • -
  • '?' - means one and only one character.
  • -
- -

Note that excluding a JAR from the pluggability scan will prevent a - ServletContainerInitializer from being loaded from a web application JAR - (i.e. one located in /WEB-INF/lib) but it will not prevent - a ServletContainerInitializer from being loaded from the container (Tomcat). - To prevent a ServletContainerInitializer provided by container from being - loaded, use the containerSciFilter property of the - Context.

- -
- Attribute - - Description -
pluggabilitySkip -

The comma separated list of JAR file name patterns - to skip when scanning for pluggable features introduced by Servlet 3.0 - specification. If not specified, the default is obtained from the - tomcat.util.scan.StandardJarScanFilter.jarsToSkip system - property.

-
pluggabilityScan -

The comma separated list of JAR file name patterns - to scan when scanning for pluggable features introduced by Servlet 3.0 - specification. If not specified, the default is obtained from the - tomcat.util.scan.StandardJarScanFilter.jarsToScan system - property.

-
defaultPluggabilityScan -

Controls if JARs are scanned or skipped by default when scanning - for the pluggable features. - If true, a JAR is scanned when its name either matches - none of pluggabilitySkip patterns or - any of pluggabilityScan patterns. - If false, a JAR is scanned when its name matches - any of pluggabilityScan patterns and - none of pluggabilitySkip patterns. - If not specified, the default value is true.

-
tldSkip -

The comma separated list of JAR file name patterns - to skip when scanning for tag libraries (TLDs). - If not specified, the default is obtained - from the tomcat.util.scan.StandardJarScanFilter.jarsToSkip - system property.

-
tldScan -

The comma separated list of JAR file name patterns - to scan when scanning for tag libraries (TLDs). - If not specified, the default is obtained - from the tomcat.util.scan.StandardJarScanFilter.jarsToScan - system property.

-
defaultTldScan -

Controls if JARs are scanned or skipped by default when scanning - for TLDs. - If true, a JAR is scanned when its name either matches - none of tldSkip patterns or - any of tldScan patterns. - If false, a JAR is scanned when its name matches - any of tldScan patterns and - none of tldSkip patterns. - If not specified, the default value is true.

-
- -
- - -

Nested Components

-

No components may be nested inside a Jar Scan Filter element. -

-

Special Features

-

No special features are associated with a Jar Scan Filter - element.

-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/jar-scanner.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/jar-scanner.html deleted file mode 100644 index 5d9f54b4a86624313c386c9cec90f7f5405f536a..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/jar-scanner.html +++ /dev/null @@ -1,141 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Jar Scanner Component

The Jar Scanner Component

Table of Contents

Introduction

- -

The Jar Scanner element represents the component that is - used to scan the web application for JAR files and directories of class files. - It is typically used during web application start to identify configuration - files such as TLDs or web-fragment.xml files that must be processed as part of - the web application initialisation.

- -

A Jar Scanner element MAY be nested inside a - Context component.

- -

For example you can include the bootstrap classpath when scanning for jar - files:

-
<Context>
-  ...
-  <JarScanner scanBootstrapClassPath="true"/>
-  ...
-</Context>
- -

If a Jar Scanner element is not included, a default Jar Scanner configuration - will be created automatically, which is sufficient for most requirements.

- -

Attributes

- -

Common Attributes

- -

All implementations of Jar Scanner - support the following attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This class must - implement the org.apache.tomcat.JarScanner interface. - If not specified, the standard value (defined below) will be used.

-
- -
- - -

Standard Implementation

- -

The standard implementation of Jar Scanner is - org.apache.tomcat.util.scan.StandardJarScanner. - It supports the following additional attributes (in addition to the - common attributes listed above):

- -
- Attribute - - Description -
scanAllDirectories -

If true, any directories found on the classpath will be - checked to see if they are expanded JAR files. - The default is false.

-

Tomcat determines if a directory is an expanded JAR file by looking - for a META-INF sub-directory. Only if the META-INF sub-directory exists, - the directory is assumed to be an expanded JAR file. Note that for scans - for matches to @HandlesTypes annotations, all directories - will be scanned irrespective of the presence or not of a META-INF - sub-directory.

-
scanAllFiles -

If true, any files found on the classpath will be checked - to see if they are Jar files rather than relying on the file extension - being .jar. The default is false.

-
scanClassPath -

If true, the full web application classpath, including - the shared and common classloaders and the system classpath (but not the - bootstrap classpath) will be scanned for Jar files in addition to the web - application. The default is true.

-
scanBootstrapClassPath -

If scanClassPath is true and this is - true the bootstrap classpath will also be scanned for Jar - files. The default is false.

-
scanManifest -

If true, the Manifest files of any JARs found will be - scanned for additional class path entries and those entries will be added - to the URLs to scan. The default is true.

-
- -
- - -

Nested Components

-

Only a Jar Scan Filter may be nested - inside a Jar Scanner element.

-

Special Features

-

No special features are associated with a Jar Scanner - element.

-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/jaspic.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/jaspic.html deleted file mode 100644 index be886ebb026e92834025b486c0ae55c6a527acb5..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/jaspic.html +++ /dev/null @@ -1,191 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - JASPIC

JASPIC

Table of Contents

Introduction

- -

Tomcat implements JASPIC 1.1 Maintenance Release B - (JSR 196). The - implementation is primarily intended to enable the integration of 3rd party - JASPIC authentication implementations with Tomcat.

- -

JASPIC may be configured dynamically by an application or statically via - the $CATALINA_BASE/conf/jaspic-providers.xml configuration file. - If present, a JASPIC configuration will over-ride any - <login-config> present in web.xml.

- -

Static configuration

- -

AuthConfigProvider

- -

If the 3rd party implementation includes an - AuthConfigProvider then a web application can be configured to - use it by nesting the following inside the - <jaspic-providers> element in - $CATALINA_BASE/conf/jaspic-providers.xml.

-
<provider name="any"
-          className="fully.qualified.implementation.class.Name"
-          layer="HttpServlet"
-          appContext="Catalina/localhost /contextPath"
-          description="any">
-  <property name="see-provider-documentation"
-            value="see-provider-documentation" />
-</provider>
- -

The name and description attributes are not - used by Tomcat.

- -

The className attribute must be the fully qualified class - name of the AuthConfigProvider. The implementation may be - packaged with the web application or in Tomcat's - $CATALINA_BASE/lib directory.

- -

The layer attribute must be HttpServlet.

- -

The appContext attribute must be exactly the concatenation - of:

-
    -
  • The engine name
  • -
  • The forward slash character
  • -
  • The host name
  • -
  • A single space
  • -
  • The context path
  • -
- -

If the AuthConfigProvider supports configuration via - properties these may be specified via <property> elements - nesting inside the <provide> element.

- -
- -

ServerAuthModule

- -

If the 3rd party implementation only provides an - ServerAuthModule then it will be necessary to provide a number - of supporting classes. These may be a custom implementation or, - alternatively, Tomcat provides a simple wrapper implementation for - ServerAuthModules. -

- -

Tomcat's wrapper for ServerAuthModule can be configured - by nesting the following inside the - <jaspic-providers> element in - $CATALINA_BASE/conf/jaspic-providers.xml.

-
<provider name="any"
-          className="org.apache.catalina.authenticator.jaspic.SimpleAuthConfigProvider"
-          layer="HttpServlet"
-          appContext="Catalina/localhost /contextPath"
-          description="any">
-  <property name="org.apache.catalina.authenticator.jaspic.ServerAuthModule.1"
-            value="fully.qualified.implementation.class.Name" />
-  <property name="see-provider-documentation"
-            value="see-provider-documentation" />
-</provider>
- -

The configuration is similar to the AuthConfigProvider in - the previous section but with some key differences.

- -

The className attribute must be - org.apache.catalina.authenticator.jaspic.SimpleAuthConfigProvider.

- -

The ServerAuthModule(s) are specified via properties. The - property name must be - org.apache.catalina.authenticator.jaspic.ServerAuthModule.n - where n is the index of the module. The index must start at 1 - an increment in steps of 1 until all modules are defined. The value of the - property must be the fully qualified class name of the module.

-
- -

Dynamic configuration

- -

JASPIC modules and configuration can be packaged within a WAR file with the - web application. The web application can then register the required JASPIC - configuration when it starts using the standard JASPIC APIs.

- -

If parallel deployment is being used then dynamic configuration should not - be used. The JASPIC API assumes that a context path is unique for any given - host which is not the case when using parallel deployment. When using parallel - deployment, static JASPIC configuration should be used. This will require that - all versions of the application use the same JASPIC configuration.

- -

3rd party modules

- -

This is not an exhaustive list. The Tomcat community welcomes contributions - that add to this section.

- -

Philip Green II's module for Google OAuth 2

- -

The source code for this module along with the - documentation - which includes details of the necessary Google API configuration is - available on GitHub.

- -

A sample configuration for using this module with Tomcat would look like - this:

-
<jaspic-providers xmlns="http://tomcat.apache.org/xml"
-                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                  xsi:schemaLocation="http://tomcat.apache.org/xml jaspic-providers.xsd"
-                  version="1.0">
-  <provider name="google-oauth"
-            className="org.apache.catalina.authenticator.jaspic.SimpleAuthConfigProvider"
-            layer="HttpServlet"
-            appContext="Catalina/localhost /contextPath"
-            description="Google OAuth test">
-    <property name="org.apache.catalina.authenticator.jaspic.ServerAuthModule.1"
-              value="com.idmworks.security.google.GoogleOAuthServerAuthModule" />
-    <property name="oauth.clientid"
-              value="obtained-from-Google-console" />
-    <property name="oauth.clientsecret"
-              value="obtained-from-Google-console" />
-    <property name="ignore_missing_login_context"
-              value="true" />
-  </provider>
-</jaspic-providers>
-
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/listeners.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/listeners.html deleted file mode 100644 index b739357e1b4b97f38920a64e511eb83b013b657d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/listeners.html +++ /dev/null @@ -1,575 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The LifeCycle Listener Component

The LifeCycle Listener Component

Table of Contents

Introduction

- -

A Listener element defines a component that performs - actions when specific events occur, usually Tomcat starting or Tomcat - stopping.

- -

Listeners may be nested inside a Server, - Engine, Host or - Context. Some Listeners are only intended to be - nested inside specific elements. These constraints are noted in the - documentation below.

- -

Attributes

- -

Common Attributes

- -

All implementations of Listener - support the following attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This class must - implement the org.apache.catalina.LifecycleListener - interface.

-
- -
- -

Nested Components

- -

No element may be nested inside a Listener.

- -

Standard Implementations

- -

Unlike most Catalina components, there are several standard - Listener implementations available. As a result, - the className attribute MUST be used to select the - implementation you wish to use.

- -

APR Lifecycle Listener - org.apache.catalina.core.AprLifecycleListener

- -

The APR Lifecycle Listener checks for the presence of - the APR/native library and loads the library if it is present. For more - information see the APR/native guide.

- -

This listener must only be nested within Server - elements.

- -

The following additional attributes are supported by the APR - Lifecycle Listener:

- -
- Attribute - - Description -
SSLEngine -

Name of the SSLEngine to use. off: do not use SSL, - on: use SSL but no specific ENGINE.

-

The default value is on. This initializes the - native SSL engine, which must be enabled in the APR/native connector by - the use of the SSLEnabled attribute.

-

See the Official OpenSSL website - for more details on supported SSL hardware engines and manufacturers. -

-
SSLRandomSeed -

Entropy source used to seed the SSLEngine's PRNG. The default value - is builtin. On development systems, you may want to set - this to /dev/urandom to allow quicker start times.

-
FIPSMode -

Set to on to request that OpenSSL be in FIPS mode - (if OpenSSL is already in FIPS mode, it will remain in FIPS mode). - Set to enter to force OpenSSL to enter FIPS mode (an error - will occur if OpenSSL is already in FIPS mode). - Set to require to require that OpenSSL already be - in FIPS mode (an error will occur if OpenSSL is not already in FIPS - mode).

-

FIPS mode requires you to have a FIPS-capable OpenSSL library which - you must build yourself. - If this attribute is set to any of the above values, the SSLEngine - must be enabled as well.

-

The default value is off.

-
useAprConnector -

This attribute controls the auto-selection of the connector - implementation. When the protocol is specified as - HTTP/1.1 or AJP/1.3 then if this attribute is - true the APR/native connector will be used but if this - attribute is false the NIO connector will be used.

-
useOpenSSL -

This attribute controls the auto-selection of the OpenSSL JSSE - implementation. The default is true which will use OpenSSL - if the native library is available and a NIO or NIO2 connector is used.

-
- -
- -

Global Resources Lifecycle Listener - org.apache.catalina.mbeans.GlobalResourcesLifecycleListener

- -

The Global Resources Lifecycle Listener initializes the - Global JNDI resources defined in server.xml as part of the Global Resources element. Without this - listener, none of the Global Resources will be available.

- -

This listener must only be nested within Server - elements.

- -

No additional attributes are supported by the Global Resources - Lifecycle Listener.

- -
- -

JRE Memory Leak Prevention Listener - org.apache.catalina.core.JreMemoryLeakPreventionListener

- -

The JRE Memory Leak Prevention Listener provides - work-arounds for known places where the Java Runtime environment uses - the context class loader to load a singleton as this will cause a memory - leak if a web application class loader happens to be the context class - loader at the time. The work-around is to initialise these singletons when - this listener starts as Tomcat's common class loader is the context class - loader at that time. It also provides work-arounds for known issues that - can result in locked JAR files.

- -

This listener must only be nested within Server - elements.

- -

The following additional attributes are supported by the JRE - Memory Leak Prevention Listener:

- -
- Attribute - - Description -
appContextProtection -

Enables protection so that calls to - sun.awt.AppContext.getAppContext() triggered by a web - application do not result in a memory leak. Note that enabling this - protection will trigger a requirement for a graphical environment unless - Java is started in head-less mode. The default is false. - This protection is disabled if running on Java 8 onwards since the leak - has been fixed for Java 8 onwards. -

-
AWTThreadProtection -

Enables protection so that calls to - java.awt.Toolkit.getDefaultToolkit() triggered by a web - application do not result in a memory leak. - Defaults to false because an AWT thread is launched. This - protection is disabled if running on Java 9 onwards since the leak has - been fixed for Java 9 onwards.

-
classesToInitialize -

List of comma-separated fully qualified class names to load and initialize - during the startup of this Listener. This allows to pre-load classes that are - known to provoke classloader leaks if they are loaded during a request - processing. Non-JRE classes may be referenced, like - oracle.jdbc.driver.OracleTimeoutThreadPerVM. - The default value is empty, but specific JRE classes are loaded by other leak - protection features managed by other attributes of this Listener.

-
driverManagerProtection -

The first use of java.sql.DriverManager will trigger the - loading of JDBC Driver in the current class loader. The web - application level memory leak protection can take care of this in most - cases but triggering the loading here has fewer side-effects. The - default is true.

-
forkJoinCommonPoolProtection -

Enables protection so the threads created for - ForkJoinPool.commonPool() do not result in a memory leak. - The protection is enabled by setting the - java.util.concurrent.ForkJoinPool.common.threadFactory - system property. If this property is set when Tomcat starts, Tomcat will - not over-ride it even if this protection is explicitly enabled. The - default is true. This protection is only used when running - on Java 8 onwards. The common pool does not exist in earlier - versions.

-
gcDaemonProtection -

Enables protection so that calls to - sun.misc.GC.requestLatency(long) triggered by a web - application do not result in a memory leak. Use of RMI is likely to - trigger a call to this method. A side effect of enabling this protection - is the creation of a thread named "GC Daemon". The protection uses - reflection to access internal Sun classes and may generate errors on - startup on non-Sun JVMs. The default is true. This - protection is disabled if running on Java 9 onwards since the leak has - been fixed for Java 9 onwards.

-
ldapPoolProtection -

Enables protection so that the PoolCleaner thread started by - com.sun.jndi.ldap.LdapPoolManager does not result in a - memory leak. The thread is started the first time the - LdapPoolManager class is used if the system property - com.sun.jndi.ldap.connect.pool.timeout is set to a value - greater than 0. Without this protection, if a web application uses this - class the PoolCleaner thread will be configured with the thread's - context class loader set to the web application class loader which in - turn will trigger a memory leak on reload. Defaults to - true. This protection is disabled if running on Java 9 - onwards since the leak has been fixed for Java 9 onwards.

-
securityLoginConfigurationProtection -

Enables protection so that usage of the - javax.security.auth.login.Configuration class by a web - application does not provoke a memory leak. The first access of this - class will trigger the initializer that will retain a static reference - to the context class loader. The protection loads the class with the - system class loader to ensure that the static initializer is not - triggered by a web application. Defaults to true. This - protection is disabled if running on Java 8 onwards since the leak has - been fixed for Java 8 onwards.

-
securityPolicyProtection -

Enables protection so that usage of the deprecated - javax.security.auth.Policy class by a web application does - not result in a memory leak. The first access of this class will trigger - the static initializer that will retain a static reference to the - context class loader. The protection calls the getPolicy() - method of this class to ensure that the static initializer is not - triggered by a web application. Defaults to true.

-

Note: The underlying leak has been fixed in Java 7 update 51 onwards - and Java 8 onwards. This protection is therefor disabled if running on - Java 8 onwards.

-
tokenPollerProtection -

Enables protection so that any token poller thread initialized by - sun.security.pkcs11.SunPKCS11.initToken() does not - result in a memory leak. The thread is started depending on various - conditions as part of the initialization of the Java Cryptography - Architecture. Without the protection this can happen during Webapp - deployment when the MessageDigest for generating session IDs is - initialized. As a result the thread has the Webapp class loader as its - thread context class loader. Enabling the protection initializes JCA - early during Tomcat startup. Defaults to true. This - protection is disabled if running on Java 9 onwards since the leak has - been fixed for Java 9 onwards.

-
urlCacheProtection -

Enables protection so that reading resources from JAR files using - java.net.URLConnections does not result in the JAR file - being locked. Note that enabling this protection disables caching by - default for all resources obtained via - java.net.URLConnections. Caching may be re-enabled on a - case by case basis as required. Defaults to true.

-
xmlParsingProtection -

Enables protection so that parsing XML files within a web application - does not result in a memory leak. Note that memory profilers may not - display the GC root associated with this leak making it particularly - hard to diagnose. Defaults to true. This protection is - disabled if running on Java 9 onwards since the leak has been fixed for - Java 9 onwards.

-
- -

JreMemoryLeakPreventionListener Examples

- -

The following is an example of how to configure the - classesToInitialize attribute of this listener.

- -

If this listener was configured in server.xml as:

- -
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"
-            classesToInitialize="oracle.jdbc.driver.OracleTimeoutThreadPerVM" />
- -

then the OracleTimeoutThreadPerVM class would be loaded - and initialized during listener startup instead of during request - processing.

- -
- -
- -

Security Lifecycle Listener - org.apache.catalina.security.SecurityListener

- -

The Security Lifecycle Listener performs a number of - security checks when Tomcat starts and prevents Tomcat from starting if they - fail. The listener is not enabled by default. To enabled it uncomment the - listener in $CATALINA_BASE/conf/server.xml. If the operating system supports - umask then the line in $CATALINA_HOME/bin/catalina.sh that obtains the umask - also needs to be uncommented.

- -

This listener must only be nested within Server - elements.

- -

The following additional attributes are supported by the Security - Lifecycle Listener:

- -
- Attribute - - Description -
checkedOsUsers -

A comma separated list of OS users that must not be used to start - Tomcat. If not specified, the default value of root is used. To - disable this check, set the attribute to the empty string. Usernames - are checked in a case-insensitive manner.

-
minimumUmask -

The least restrictive umask that must be configured before Tomcat - will start. If not specified, the default value of 0007 is used. - To disable this check, set the attribute to the empty string. The check - is not performed on Windows platforms.

-
- -
- -

StoreConfig Lifecycle Listener - org.apache.catalina.storeconfig.StoreConfigLifecycleListener

- -

The StoreConfig Lifecycle Listener configures a - StoreConfig MBean that may be used to save the current server configuration - in server.xml or the current configuration for a web application in a - context.xml file.

- -

This listener must only be nested within Server - elements.

- -

The following additional attributes are supported by the - StoreConfig Lifecycle Listener:

- -
- Attribute - - Description -
storeConfigClass -

The name of the IStoreConfig implementation to use. If - not specified the default of - org.apache.catalina.storeconfig.StoreConfig will be - used.

-
storeRegistry -

The URL of the configuration file that configures how the - IStoreConfig is to save the configuration. If not specified - the built in resource - /org/apache/catalina/storeconfig/server-registry.xml will - be used.

-
- -
- -

ThreadLocal Leak Prevention Listener - org.apache.catalina.core.ThreadLocalLeakPreventionListener

- -

The ThreadLocal Leak Prevention Listener triggers the - renewal of threads in Executor pools when a - Context is being stopped to avoid thread-local - related memory leaks. Active threads will be renewed one by one when they - come back to the pool after executing their task. The renewal happens - only for contexts that have their renewThreadsWhenStoppingContext - attribute set to true.

- -

This listener must only be nested within Server - elements.

- -

No additional attributes are supported by the ThreadLocal Leak - Prevention Listener.

- -
- -

UserConfig - org.apache.catalina.startup.UserConfig

- -

The UserConfig provides feature of User Web Applications. - User Web Applications map a request URI starting with a tilde character ("~") - and a username to a directory (commonly named public_html) in that user's - home directory on the server.

- -

See the User Web Applications - special feature on the Host element for more information.

- -

The following additional attributes are supported by the - UserConfig:

- -
- Attribute - - Description -
directoryName -

The directory name to be searched for within each user home directory. - The default is public_html.

-
userClass -

The class name of the user database class. - There are currently two user database, the - org.apache.catalina.startup.PasswdUserDatabase is used on a - Unix system that uses the /etc/passwd file to identify valid users. - The org.apache.catalina.startup.HomesUserDatabase is used on - a server where /etc/passwd is not in use. HomesUserDatabase deploy all - directories found in a specified base directory.

-
homeBase -

The base directory containing user home directories. This is effective - only when org.apache.catalina.startup.HomesUserDatabase is - used.

-
allow -

A regular expression defining user who deployment is allowed. If this - attribute is specified, the user to deploy must match for this pattern. - If this attribute is not specified, all users will be deployed unless the - user matches a deny pattern.

-
deny -

A regular expression defining user who deployment is denied. If this - attribute is specified, the user to deploy must not match for this - pattern. If this attribute is not specified, deployment of user will be - governed by a allow attribute.

-
- -
- -

Version Logging Lifecycle Listener - org.apache.catalina.startup.VersionLoggerListener

- -

The Version Logging Lifecycle Listener logs Tomcat, Java - and operating system information when Tomcat starts.

- -

This listener must only be nested within Server - elements and should be the first listener defined.

- -

The following additional attributes are supported by the Version - Logging Lifecycle Listener:

- -
- Attribute - - Description -
logArgs -

If true, the command line arguments passed to Java when - Tomcat started will be logged. If not specified, the default value of - true will be used.

-
logEnv -

If true, the current environment variables when Tomcat - starts will be logged. If not specified, the default value of - false will be used.

-
logProps -

If true, the current Java system properties will be - logged. If not specified, the default value of - false will be used.

-
- -
- -

Additional Implementations

- -

JMX Remote Lifecycle Listener - org.apache.catalina.mbeans.JmxRemoteLifecycleListener

- -

This listener requires catalina-jmx-remote.jar to be placed - in $CATALINA_HOME/lib. This jar may be found in the extras - directory of the binary download area.

- -

The JMX Remote Lifecycle Listener fixes the ports used by - the JMX/RMI Server making things much simpler if you need to connect - jconsole or a similar tool to a remote Tomcat instance that is running - behind a firewall. Only these ports are configured via the listener. The - remainder of the configuration is via the standard system properties for - configuring JMX. For further information on configuring JMX see - - Monitoring and Management Using JMX included with the Java SDK - documentation.

- -

This listener must only be nested within a Server - element.

- -

The following additional attributes are supported by the JMX Remote - Lifecycle Listener:

- -
- Attribute - - Description -
rmiRegistryPortPlatform -

The port to be used by the JMX/RMI registry for the Platform MBeans. - This replaces the use of the - com.sun.management.jmxremote.port system property that - should not be set when using this listener.

-
rmiServerPortPlatform -

The port to be used by the Platform JMX/RMI server.

-
rmiBindAddress -

The address of the interface to be used by JMX/RMI server.

-
useLocalPorts -

Should any clients using these ports be forced to use local ports to - connect to the JMX/RMI server. This is useful when tunnelling - connections over SSH or similar. Defaults to false.

-
- -

Using file-based Authentication and Authorisation

- -

If this listener was configured in server.xml as:

-
  <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
-          rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />
-

with the following system properties set (e.g. in setenv.sh):

-
  -Dcom.sun.management.jmxremote.password.file=$CATALINA_BASE/conf/jmxremote.password
-  -Dcom.sun.management.jmxremote.access.file=$CATALINA_BASE/conf/jmxremote.access
-  -Dcom.sun.management.jmxremote.ssl=false
-

$CATALINA_BASE/conf/jmxremote.password containing:

-
admin letmein
-

$CATALINA_BASE/conf/jmxremote.access containing:

-
admin readwrite
-

then opening ports 10001 (RMI Registry) and 10002 (JMX/RMI Server) in your - firewall would enable jconsole to connect to a Tomcat instance running - behind a firewall using a connection string of the form:

-
service:jmx:rmi://<hostname>:10002/jndi/rmi://<hostname>:10001/jmxrmi
-

- with a user name of admin and a password of - letmein. -

- -

Using JAAS

- -

If we use the following system properties instead:

-
  -Dcom.sun.management.jmxremote.login.config=Tomcat
-  -Djava.security.auth.login.config=$CATALINA_BASE/conf/login.config
-  -Dcom.sun.management.jmxremote.access.file=$CATALINA_BASE/conf/jmxremote.access
-  -Dcom.sun.management.jmxremote.ssl=false
-

$CATALINA_BASE/conf/login.config containing your choice of JAAS LoginModule implementation, for example:

-
  Tomcat { /* should match to the com.sun.management.jmxremote.login.config property */
-
-    /* for illustration purposes only */
-    com.sun.security.auth.module.LdapLoginModule REQUIRED
-      userProvider="ldap://ldap-svr/ou=people,dc=example,dc=com"
-      userFilter="(&(uid={USERNAME})(objectClass=inetOrgPerson))"
-      authzIdentity="admin"
-      debug=true;
-  };
-

$CATALINA_BASE/conf/jmxremote.access containing:

-
admin readwrite
-

- then we would need to provide LDAP credentials instead. -

- -

Note that the examples above do not use SSL. JMX access should - be considered equivalent to administrative access and secured accordingly. -

- -
- -

System property replacement - org.apache.catalina.util.SystemPropertyReplacerListener

- -

This listener performs system property replacement using the property - source configured on the digester. When ${parameter} - denoted parameters are found in the values of system properties, - the property source will be invoked to attempt to replace it.

- -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/loader.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/loader.html deleted file mode 100644 index 10c489a4bb18dc014dd401132781a3a0a1127c27..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/loader.html +++ /dev/null @@ -1,161 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Loader Component

The Loader Component

Table of Contents

Introduction

- -

The Loader element represents the web - application class loader that will be used to load Java - classes and resources for your web application. Such - a class loader must follow the requirements of the Servlet - Specification, and load classes from the following locations:

-
    -
  • From the /WEB-INF/classes directory inside your - web application.
  • -
  • From JAR files in the /WEB-INF/lib directory - inside your web application.
  • -
  • From resources made available by Catalina to all web - applications globally.
  • -
- -

A Loader element MAY be nested inside a Context - component. If it is not included, a default Loader configuration will be - created automatically, which is sufficient for most requirements.

- -

For a more in-depth description of the class loader hierarchy - that is implemented by Catalina, see the ClassLoader HowTo.

- -

The description below uses the variable name $CATALINA_BASE to refer the - base directory against which most relative paths are resolved. If you have - not configured Tomcat for multiple instances by setting a CATALINA_BASE - directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME, - the directory into which you have installed Tomcat.

- -

Attributes

- -

Common Attributes

- -

All implementations of Loader - support the following attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This class must - implement the org.apache.catalina.Loader interface. - If not specified, the standard value (defined below) will be used.

-
delegate -

Set to true if you want the class loader to follow - the standard Java2 delegation model, and attempt to load classes from - parent class loaders before looking inside the web - application. Set to false (the default) to have the - class loader look inside the web application first, before asking - parent class loaders to find requested classes or resources.

-
reloadable -

Set to true if you want Catalina to monitor classes in - /WEB-INF/classes/ and /WEB-INF/lib for - changes, and automatically reload the web application if a change - is detected. This feature is very useful during application - development, but it requires significant runtime overhead and is - not recommended for use on deployed production applications. You - can use the Manager web - application, however, to trigger reloads of deployed applications - on demand.

- -

NOTE - The value for this property will be - inherited from the reloadable attribute you set on - the surrounding Context component, - and any value you explicitly set here will be replaced.

-
- -
- - -

Standard Implementation

- -

The standard implementation of Loader is - org.apache.catalina.loader.WebappLoader. - It supports the following additional attributes (in addition to the - common attributes listed above):

- -
- Attribute - - Description -
loaderClass -

Java class name of the java.lang.ClassLoader - implementation class to use. Custom implementations must extend - org.apache.catalina.loader.WebappClassLoaderBase. -

- -

If not specified, the default value is - org.apache.catalina.loader.ParallelWebappClassLoader. The - default loaderClass is parallel capable, which - means that multiple threads may load difference classes in parallel. - A non-parallel capable loaderClass is available and can - be used by specifying - org.apache.catalina.loader.WebappClassLoader.

-
- -
- -

Nested Components

- -

No components may be nested inside a Loader element.

- -

Special Features

- -

Logging

- -

A loader is associated with the log category based on its classname.

- -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/manager.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/manager.html deleted file mode 100644 index e1ff84e155af05d4bd2683e07236709933df070d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/manager.html +++ /dev/null @@ -1,492 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Manager Component

The Manager Component

Table of Contents

Introduction

- -

The Manager element represents the session - manager that will be used to create and maintain HTTP sessions - as requested by the associated web application.

- -

A Manager element MAY be nested inside a - Context component. If it is not included, - a default Manager configuration will be created automatically, which - is sufficient for most requirements, — see - Standard Manager Implementation below for the details - of this configuration.

- -

Attributes

- -

Common Attributes

- -

All implementations of Manager - support the following attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This class must - implement the org.apache.catalina.Manager interface. - If not specified, the standard value (defined below) will be used.

-
maxActiveSessions -

The maximum number of active sessions that will be created by - this Manager, or -1 (the default) for no limit.

- -

When the limit is reached, any attempt to create a new session - (e.g. with HttpServletRequest.getSession() call) - will fail with an IllegalStateException.

-
- -
- - -

Standard Implementation

- -

Tomcat provides two standard implementations of Manager - for use — the default one stores active sessions, while the optional one - stores active sessions that have been swapped out (in addition to saving - sessions across a restart of Tomcat) in a storage location that is selected - via the use of an appropriate Store nested element.

- -

Standard Manager Implementation

- -

The standard implementation of Manager is - org.apache.catalina.session.StandardManager. - It supports the following additional attributes (in addition to the - common attributes listed above):

- -
- Attribute - - Description -
pathname -

Absolute or relative (to the work directory for this Context) - pathname of the file in which session state will be preserved - across application restarts, if possible. The default is - "SESSIONS.ser".
See - Persistence Across Restarts - for more information. This persistence may be - disabled by setting this attribute to an empty string.

-
processExpiresFrequency -

Frequency of the session expiration, and related manager operations. - Manager operations will be done once for the specified amount of - backgroundProcess calls (i.e., the lower the amount, the more often the - checks will occur). The minimum value is 1, and the default value is 6. -

-
secureRandomClass -

Name of the Java class that extends - java.security.SecureRandom to use to generate session IDs. - If not specified, the default value is - java.security.SecureRandom.

-
secureRandomProvider -

Name of the provider to use to create the - java.security.SecureRandom instances that generate session - IDs. If an invalid algorithm and/or provider is specified, the Manager - will use the platform default provider and the default algorithm. If not - specified, the platform default provider will be used.

-
secureRandomAlgorithm -

Name of the algorithm to use to create the - java.security.SecureRandom instances that generate session - IDs. If an invalid algorithm and/or provider is specified, the Manager - will use the platform default provider and the default algorithm. If not - specified, the default algorithm of SHA1PRNG will be used. If the - default algorithm is not supported, the platform default will be used. - To specify that the platform default should be used, do not set the - secureRandomProvider attribute and set this attribute to the empty - string.

-
sessionAttributeNameFilter -

A regular expression used to filter which session attributes will be - distributed. An attribute will only be distributed if its name matches - this pattern. If the pattern is zero length or null, all - attributes are eligible for distribution. The pattern is anchored so the - session attribute name must fully match the pattern. As an example, the - value (userName|sessionHistory) will only distribute the - two session attributes named userName and - sessionHistory. If not specified, the default value of - null will be used.

-
sessionAttributeValueClassNameFilter -

A regular expression used to filter which session attributes will be - distributed. An attribute will only be distributed if the implementation - class name of the value matches this pattern. If the pattern is zero - length or null, all attributes are eligible for - distribution. The pattern is anchored so the fully qualified class name - must fully match the pattern. If not specified, the default value of - null will be used unless a SecurityManager is - enabled in which case the default will be - java\\.lang\\.(?:Boolean|Integer|Long|Number|String).

-
warnOnSessionAttributeFilterFailure -

If sessionAttributeNameFilter or - sessionAttributeValueClassNameFilter blocks an - attribute, should this be logged at WARN level? If - WARN level logging is disabled then it will be logged at - DEBUG. The default value of this attribute is - false unless a SecurityManager is enabled in - which case the default will be true.

-
- -

Persistent Manager Implementation

- -

NOTE: You must set either the - org.apache.catalina.session.StandardSession.ACTIVITY_CHECK or - org.apache.catalina.STRICT_SERVLET_COMPLIANCE - system properties to true for - the persistent manager to work correctly.

- -

The persistent implementation of Manager is - org.apache.catalina.session.PersistentManager. In - addition to the usual operations of creating and deleting sessions, a - PersistentManager has the capability to swap active (but - idle) sessions out to a persistent storage mechanism, as well as to save - all sessions across a normal restart of Tomcat. The actual persistent - storage mechanism used is selected by your choice of a - Store element nested inside the Manager - element - this is required for use of PersistentManager.

- -

This implementation of Manager supports the following attributes in - addition to the Common Attributes - described earlier.

- -
- Attribute - - Description -
className -

It has the same meaning as described in the - Common Attributes above. - You must specify - org.apache.catalina.session.PersistentManager to use - this manager implementation.

-
maxIdleBackup -

The time interval (in seconds) since the last access to a session - before it is eligible for being persisted to the session store, or - -1 to disable this feature. By default, this feature is - disabled.

-
maxIdleSwap -

The maximum time a session may be idle before it is eligible to be - swapped to disk due to inactivity. Setting this to -1 means - sessions should not be swapped out just because of inactivity. If this - feature is enabled, the time interval specified here should be equal to - or longer than the value specified for maxIdleBackup. By - default, this feature is disabled.

-
minIdleSwap -

The minimum time in seconds a session must be idle before it is - eligible to be swapped to disk to keep the active session count below - maxActiveSessions. Setting to -1 means sessions will not be - swapped out to keep the active session count down. If specified, this - value should be less than that specified by maxIdleSwap. - By default, this value is set to -1.

-
processExpiresFrequency -

It is the same as described above for the - org.apache.catalina.session.StandardManager class. -

-
saveOnRestart -

Should all sessions be persisted and reloaded when Tomcat is shut - down and restarted (or when this application is reloaded)? By default, - this attribute is set to true.

-
secureRandomClass -

It is the same as described above for the - org.apache.catalina.session.StandardManager class. -

-
secureRandomProvider -

It is the same as described above for the - org.apache.catalina.session.StandardManager class. -

-
secureRandomAlgorithm -

It is the same as described above for the - org.apache.catalina.session.StandardManager class. -

-
sessionAttributeNameFilter -

A regular expression used to filter which session attributes will be - distributed. An attribute will only be distributed if its name matches - this pattern. If the pattern is zero length or null, all - attributes are eligible for distribution. The pattern is anchored so the - session attribute name must fully match the pattern. As an example, the - value (userName|sessionHistory) will only distribute the - two session attributes named userName and - sessionHistory. If not specified, the default value of - null will be used.

-
sessionAttributeValueClassNameFilter -

A regular expression used to filter which session attributes will be - distributed. An attribute will only be distributed if the implementation - class name of the value matches this pattern. If the pattern is zero - length or null, all attributes are eligible for - distribution. The pattern is anchored so the fully qualified class name - must fully match the pattern. If not specified, the default value of - null will be used unless a SecurityManager is - enabled in which case the default will be - java\\.lang\\.(?:Boolean|Integer|Long|Number|String).

-
warnOnSessionAttributeFilterFailure -

If sessionAttributeNameFilter or - sessionAttributeValueClassNameFilter blocks an - attribute, should this be logged at WARN level? If - WARN level logging is disabled then it will be logged at - DEBUG. The default value of this attribute is - false unless a SecurityManager is enabled in - which case the default will be true.

-
- -

In order to successfully use a PersistentManager, you must nest inside - it a <Store> element, as described below.

- -
- - -

Nested Components

- -

All Manager Implementations

- -

All Manager implementations allow nesting of a - <SessionIdGenerator> element. It defines - the behavior of session id generation. All implementations - of the SessionIdGenerator allow the - following attributes: -

- -
- Attribute - - Description -
sessionIdLength -

The length of the session ID may be changed with the - sessionIdLength attribute. -

-
- -

Persistent Manager Implementation

- -

If you are using the Persistent Manager Implementation - as described above, you MUST nest a - <Store> element inside, which defines the - characteristics of the persistent data storage. Two implementations - of the <Store> element are currently available, - with different characteristics, as described below.

- -
File Based Store
- -

The File Based Store implementation saves swapped out - sessions in individual files (named based on the session identifier) - in a configurable directory. Therefore, you are likely to encounter - scalability problems as the number of active sessions increases, and - this should primarily be considered a means to easily experiment.

- -

To configure this, add a <Store> nested inside - your <Manager> element with the following attributes: -

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This class must - implement the org.apache.catalina.Store interface. You - must specify - org.apache.catalina.session.FileStore - to use this implementation.

-
directory -

Absolute or relative (to the temporary work directory for this web - application) pathname of the directory into which individual session - files are written. If not specified, the temporary work directory - assigned by the container is utilized.

-
- - -
JDBC Based Store
- -

The JDBC Based Store implementation saves swapped out - sessions in individual rows of a preconfigured table in a database - that is accessed via a JDBC driver. With large numbers of swapped out - sessions, this implementation will exhibit improved performance over - the File Based Store described above.

- -

To configure this, add a <Store> nested inside - your <Manager> element with the following attributes: -

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This class must - implement the org.apache.catalina.Store interface. You - must specify - org.apache.catalina.session.JDBCStore - to use this implementation.

-
connectionName -

The user name that will be handed to the configured JDBC driver to - establish a connection to the database containing the session table.

-
connectionPassword -

The password that will be handed to the configured JDBC driver to - establish a connection to the database containing the session table.

-
connectionURL -

The connection URL that will be handed to the configured JDBC - driver to establish a connection to the database containing our - session table.

-
dataSourceName -

Name of the JNDI resource for a JDBC DataSource-factory. If this option - is given and a valid JDBC resource can be found, it will be used and any - direct configuration of a JDBC connection via connectionURL, - connectionName, connectionPassword and - driverName will be ignored. Since this code uses prepared - statements, you might want to configure pooled prepared statements as - shown in the JNDI resources - HOW-TO.

-
driverName -

Java class name of the JDBC driver to be used.

-
localDataSource -

This allows the Store to use a DataSource defined for the Context - rather than a global DataSource. If not specified, the default is - false: use a global DataSource.

-
sessionAppCol -

Name of the database column, contained in the specified session table, - that contains the Engine, Host, and Web Application Context name in the - format /Engine/Host/Context. If not specified the default - value of app will be used.

-
sessionDataCol -

Name of the database column, contained in the specified session table, - that contains the serialized form of all session attributes for a swapped - out session. The column type must accept a binary object (typically called - a BLOB). If not specified the default value of data will be - used.

-
sessionIdCol -

Name of the database column, contained in the specified session table, - that contains the session identifier of the swapped out session. The - column type must accept character string data of at least as many - characters as are contained in session identifiers created by Tomcat - (typically 32). If not specified the default value of id will - be used.

-
sessionLastAccessedCol -

Name of the database column, contained in the specified session table, - that contains the lastAccessedTime property of this session. - The column type must accept a Java long (64 bits). If not - specified the default value of maxinactive will be used.

-
sessionMaxInactiveCol -

Name of the database column, contained in the specified session table, - that contains the maxInactiveInterval property of this - session. The column type must accept a Java integer (32 - bits). If not specified, the default value of maxinactive - will be used.

-
sessionTable -

Name of the database table to be used for storing swapped out sessions. - This table must contain (at least) the database columns that are - configured by the other attributes of this element. If not specified the - default value of tomcat$sessions will be used.

-
sessionValidCol -

Name of the database column, contained in the specified session table, - that contains a flag indicating whether this swapped out session is still - valid or not. The column type must accept a single character. If not - specified the default value of valid will be used.

-
- -

Before attempting to use the JDBC Based Store for the first time, - you must create the table that will be used to store swapped out sessions. - Detailed SQL commands vary depending on the database you are using, but - a script like this will generally be required:

- -
create table tomcat_sessions (
-  session_id     varchar(100) not null primary key,
-  valid_session  char(1) not null,
-  max_inactive   int not null,
-  last_access    bigint not null,
-  app_name       varchar(255),
-  session_data   mediumblob,
-  KEY kapp_name(app_name)
-);
- -

Note: The SQL command above does not use the default names for either the - table or the columns so the JDBC Store would need to be configured to reflect - this.

- -

In order for the JDBC Based Store to successfully connect to your - database, the JDBC driver you configure must be visible to Tomcat's - internal class loader. Generally, that means you must place the JAR - file containing this driver into the $CATALINA_HOME/lib - directory.

- -

Special Features

- - -

Persistence Across Restarts

- -

Whenever Apache Tomcat is shut down normally and restarted, or when an - application reload is triggered, the standard Manager implementation - will attempt to serialize all currently active sessions to a disk - file located via the pathname attribute. All such saved - sessions will then be deserialized and activated (assuming they have - not expired in the mean time) when the application reload is completed.

- -

In order to successfully restore the state of session attributes, - all such attributes MUST implement the java.io.Serializable - interface. You MAY cause the Manager to enforce this restriction by - including the <distributable> element in your web - application deployment descriptor (/WEB-INF/web.xml).

- -

The persistence across restarts provided by the - StandardManager is a simpler implementation than that - provided by the PersistentManager. If robust, production - quality persistence across restarts is required then the - PersistentManager should be used with an appropriate - configuration.

- -
- -

Disable Session Persistence

- -

As documented above, every web application by default has - standard manager implementation configured, and it performs session - persistence across restarts. To disable this persistence feature, create - a Context configuration file for your web - application and add the following element there:

- -
<Manager pathname="" />
-
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/realm.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/realm.html deleted file mode 100644 index 8ae1fcf31c16506c966d741efe93306640d97cc1..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/realm.html +++ /dev/null @@ -1,1004 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Realm Component

The Realm Component

Table of Contents

Introduction

- -

A Realm element represents a "database" of usernames, - passwords, and roles (similar to Unix groups) assigned - to those users. Different implementations of Realm allow Catalina to be - integrated into environments where such authentication information is already - being created and maintained, and then utilize that information to implement - Container Managed Security as described in the Servlet - Specification.

- -

A Catalina container (Engine, - Host, or Context) may - contain no more than one Realm element (although if supported by the Realm - this one Realm may itself contain multiple nested Realms). In addition, the - Realm associated with an Engine or a Host is automatically inherited by - lower-level containers unless the lower level container explicitly defines its - own Realm. If no Realm is configured for the Engine, an instance of the - Null Realm - will be configured for the Engine automatically.

- -

For more in-depth information about container managed security in web - applications, as well as more information on configuring and using the - standard realm component implementations, please see the - Container-Managed Security Guide. -

- -

The description below uses the variable name $CATALINA_BASE to refer the - base directory against which most relative paths are resolved. If you have - not configured Tomcat for multiple instances by setting a CATALINA_BASE - directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME, - the directory into which you have installed Tomcat.

- -

Attributes

- -

Common Attributes

- -

All implementations of Realm - support the following attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This class must - implement the org.apache.catalina.Realm interface.

-
- -

Unlike most Catalina components, there are several standard - Realm implementations available. As a result, - the className attribute MUST be used to select the - implementation you wish to use.

- -
- - -

JDBC Database Realm - org.apache.catalina.realm.JDBCRealm

- -

The JDBC Database Realm connects Tomcat to - a relational database, accessed through an appropriate JDBC driver, - to perform lookups of usernames, passwords, and their associated - roles. Because the lookup is done each time that it is required, - changes to the database will be immediately reflected in the - information used to authenticate new logins.

- -

A rich set of additional attributes lets you configure the required - connection to the underlying database, as well as the table and - column names used to retrieve the required information:

- -
- Attribute - - Description -
allRolesMode -

This attribute controls how the special role name * is - handled when processing authorization constraints in web.xml. By - default, the specification compliant value of strict is - used which means that the user must be assigned one of the roles defined - in web.xml. The alternative values are authOnly which means - that the user must be authenticated but no check is made for assigned - roles and strictAuthOnly which means that the user must be - authenticated and no check will be made for assigned roles unless roles - are defined in web.xml in which case the user must be assigned at least - one of those roles.

-

When this attribute has the value of authOnly or - strictAuthOnly, the roleNameCol and - userRoleTable attributes become optional. If those two - attributes are omitted, the user's roles will not be loaded by this - Realm.

-
connectionName -

The database username to use when establishing the JDBC - connection.

-
connectionPassword -

The database password to use when establishing the JDBC - connection.

-
connectionURL -

The connection URL to be passed to the JDBC driver when - establishing a database connection.

-
driverName -

Fully qualified Java class name of the JDBC driver to be - used to connect to the authentication database.

-
roleNameCol -

Name of the column, in the "user roles" table, which contains - a role name assigned to the corresponding user.

-

This attribute is required in majority of - configurations. See allRolesMode attribute for - a rare case when it can be omitted.

-
stripRealmForGss -

When processing users authenticated via the GSS-API, this attribute - controls if any "@..." is removed from the end of the user - name. If not specified, the default is true.

-
transportGuaranteeRedirectStatus -

The HTTP status code to use when the container needs to issue an HTTP - redirect to meet the requirements of a configured transport - guarantee. The provided status code is not validated. If not - specified, the default value of 302 is used.

-
userCredCol -

Name of the column, in the "users" table, which contains - the user's credentials (i.e. password). If a - CredentialHandler is specified, this component - will assume that the passwords have been encoded with the - specified algorithm. Otherwise, they will be assumed to be - in clear text.

-
userNameCol -

Name of the column, in the "users" and "user roles" table, - that contains the user's username.

-
userRoleTable -

Name of the "user roles" table, which must contain columns - named by the userNameCol and roleNameCol - attributes.

-

This attribute is required in majority of - configurations. See allRolesMode attribute for - a rare case when it can be omitted.

-
userTable -

Name of the "users" table, which must contain columns named - by the userNameCol and userCredCol - attributes.

-
X509UsernameRetrieverClassName -

When using X509 client certificates, this specifies the class name - that will be used to retrieve the user name from the certificate. - The class must implement the - org.apache.catalina.realm.X509UsernameRetriever - interface. The default is to use the certificate's SubjectDN - as the username.

-
- -

See the Container-Managed Security Guide for more - information on setting up container managed security using the - JDBC Database Realm component.

- -
- - -

DataSource Database Realm - org.apache.catalina.realm.DataSourceRealm

- -

The DataSource Database Realm connects Tomcat to - a relational database, accessed through a JNDI named JDBC DataSource - to perform lookups of usernames, passwords, and their associated - roles. Because the lookup is done each time that it is required, - changes to the database will be immediately reflected in the - information used to authenticate new logins.

- -

The JDBC Realm uses a single db connection. This requires that - realm based authentication be synchronized, i.e. only one authentication - can be done at a time. This could be a bottleneck for applications - with high volumes of realm based authentications.

- -

The DataSource Database Realm supports simultaneous realm based - authentications and allows the underlying JDBC DataSource to - handle optimizations like database connection pooling.

- -

A rich set of additional attributes lets you configure the name - of the JNDI JDBC DataSource, as well as the table and - column names used to retrieve the required information:

- -
- Attribute - - Description -
allRolesMode -

This attribute controls how the special role name * is - handled when processing authorization constraints in web.xml. By - default, the specification compliant value of strict is - used which means that the user must be assigned one of the roles defined - in web.xml. The alternative values are authOnly which means - that the user must be authenticated but no check is made for assigned - roles and strictAuthOnly which means that the user must be - authenticated and no check will be made for assigned roles unless roles - are defined in web.xml in which case the user must be assigned at least - one of those roles.

-

When this attribute has the value of authOnly or - strictAuthOnly, the roleNameCol and - userRoleTable attributes become optional. If those two - attributes are omitted, the user's roles will not be loaded by this - Realm.

-
dataSourceName -

The name of the JNDI JDBC DataSource for this Realm.

-
localDataSource -

When the realm is nested inside a Context element, this allows the - realm to use a DataSource defined for the Context rather than a global - DataSource. If not specified, the default is false: use a - global DataSource.

-
roleNameCol -

Name of the column, in the "user roles" table, which contains - a role name assigned to the corresponding user.

-

This attribute is required in majority of - configurations. See allRolesMode attribute for - a rare case when it can be omitted.

-
transportGuaranteeRedirectStatus -

The HTTP status code to use when the container needs to issue an HTTP - redirect to meet the requirements of a configured transport - guarantee. The provided status code is not validated. If not - specified, the default value of 302 is used.

-
stripRealmForGss -

When processing users authenticated via the GSS-API, this attribute - controls if any "@..." is removed from the end of the user - name. If not specified, the default is true.

-
userCredCol -

Name of the column, in the "users" table, which contains - the user's credentials (i.e. password). If a - CredentialHandler is specified, this component - will assume that the passwords have been encoded with the - specified algorithm. Otherwise, they will be assumed to be - in clear text.

-
userNameCol -

Name of the column, in the "users" and "user roles" table, - that contains the user's username.

-
userRoleTable -

Name of the "user roles" table, which must contain columns - named by the userNameCol and roleNameCol - attributes.

-

This attribute is required in majority of - configurations. See allRolesMode attribute for - a rare case when it can be omitted.

-
userTable -

Name of the "users" table, which must contain columns named - by the userNameCol and userCredCol - attributes.

-
X509UsernameRetrieverClassName -

When using X509 client certificates, this specifies the class name - that will be used to retrieve the user name from the certificate. - The class must implement the - org.apache.catalina.realm.X509UsernameRetriever - interface. The default is to use the certificate's SubjectDN - as the username.

-
- -

See the - DataSource Realm HOW-TO for more information on setting up container - managed security using the DataSource Database Realm component.

- -
- - -

JNDI Directory Realm - org.apache.catalina.realm.JNDIRealm

- -

The JNDI Directory Realm connects Tomcat to - an LDAP Directory, accessed through an appropriate JNDI driver, - that stores usernames, passwords, and their associated - roles. Changes to the directory are immediately reflected in the - information used to authenticate new logins.

- - -

The directory realm supports a variety of approaches to using - LDAP for authentication:

- -
    -
  • The realm can either use a pattern to determine the - distinguished name (DN) of the user's directory entry, or search - the directory to locate that entry. -
  • - -
  • The realm can authenticate the user either by binding to the - directory with the DN of the user's entry and the password - presented by the user, or by retrieving the password from the - user's entry and performing a comparison locally. -
  • - -
  • Roles may be represented in the directory as explicit entries - found by a directory search (e.g. group entries of which the user - is a member), as the values of an attribute in the user's entry, - or both. -
  • -
- -

A rich set of additional attributes lets you configure the - required behaviour as well as the connection to the underlying - directory and the element and attribute names used to retrieve - information from the directory:

- -
- Attribute - - Description -
adCompat -

Microsoft Active Directory often returns referrals. - When iterating over NamingEnumerations these lead to - PartialResultExceptions. If you want us to ignore those exceptions, - set this attribute to "true". Unfortunately there's no stable way - to detect, if the Exceptions really come from an AD referral. - The default value is "false".

-
allRolesMode -

This attribute controls how the special role name * is - handled when processing authorization constraints in web.xml. By - default, the specification compliant value of strict is - used which means that the user must be assigned one of the roles defined - in web.xml. The alternative values are authOnly which means - that the user must be authenticated but no check is made for assigned - roles and strictAuthOnly which means that the user must be - authenticated and no check will be made for assigned roles unless roles - are defined in web.xml in which case the user must be assigned at least - one of those roles.

-
alternateURL -

If a socket connection cannot be made to the provider at - the connectionURL an attempt will be made to use the - alternateURL.

-
authentication -

A string specifying the type of authentication to use. - "none", "simple", "strong" or a provider specific definition - can be used. If no value is given the providers default is used.

-
cipherSuites -

Specify which cipher suites are allowed when trying to open - a secured connection using StartTLS. The allowed cipher suites - are specified by a comma separated list. The default is to use the - cipher suites of the JVM.

-
commonRole -

A role name assigned to each successfully authenticated user in - addition to the roles retrieved from LDAP. If not specified, only - the roles retrieved via LDAP are used.

-
connectionName -

The directory username to use when establishing a - connection to the directory for LDAP search operations. If not - specified an anonymous connection is made, which is often - sufficient unless you specify the userPassword - property.

-
connectionPassword -

The directory password to use when establishing a - connection to the directory for LDAP search operations. If not - specified an anonymous connection is made, which is often - sufficient unless you specify the userPassword - property.

-
connectionTimeout -

The timeout in milliseconds to use when establishing the connection - to the LDAP directory. If not specified, a value of 5000 (5 seconds) is - used.

-
connectionURL -

The connection URL to be passed to the JNDI driver when - establishing a connection to the directory.

-
contextFactory -

Fully qualified Java class name of the factory class used - to acquire our JNDI InitialContext. By default, - assumes that the standard JNDI LDAP provider will be utilized.

-
derefAliases -

A string specifying how aliases are to be dereferenced during - search operations. The allowed values are "always", "never", - "finding" and "searching". If not specified, "always" is used.

-
hostnameVerifierClassName -

The name of the class to use for hostname verification when - using StartTLS for securing the connection to the ldap server. - The default constructor will be used to construct an instance of - the verifier class. The default is to accept only those hostnames, - that are valid according to the peer certificate of the ldap - server.

-
protocol -

A string specifying the security protocol to use. If not given - the providers default is used.

-
readTimeout -

The timeout, in milliseconds, to use when trying to read from a - connection to the directory. If not specified, the default of 5000 - (5 seconds) is used.

-
referrals -

How do we handle JNDI referrals? Allowed values are - "ignore", "follow", or "throw" (see javax.naming.Context.REFERRAL - for more information). - Microsoft Active Directory often returns referrals. - If you need to follow them set referrals to "follow". - Caution: if your DNS is not part of AD, the LDAP client lib might try - to resolve your domain name in DNS to find another LDAP server.

-
roleBase -

The base directory entry for performing role searches. If not - specified the top-level element in the directory context will be used. - If specified it may optionally include pattern replacements - "{0}".."{n}" corresponding to the name parts of the - user's distinguished name (as returned by - javax.naming.Name.get()).

-
roleName -

The name of the attribute that contains role names in the - directory entries found by a role search. In addition you can - use the userRoleName property to specify the name - of an attribute, in the user's entry, containing additional - role names.

-

If roleName is not specified a role - search does not take place, and roles are taken only from the - user's entry.

-
roleNested -

Set to true if you want to nest roles into roles. - When a role search is performed and the value of this property is - true, the search will be repeated recursively to find - all the roles that belong to the user either directly or indirectly. - If not specified, the default value of false is used.

-
roleSearch -

The LDAP filter expression used for performing role - searches.

- -

Use {0} to substitute the distinguished name (DN) - of the user, and/or {1} to substitute the username, - and/or {2} for the value of an attribute from the - user's directory entry, of the authenticated user. - The name of the attribute that provides the value for {2} - is configured by the userRoleAttribute property.

- -

When roleNested property is true, - this filter expression will be also used to recursively search for - other roles, which indirectly belong to this user. To find the - roles that match the newly found role, the following values - are used: - {0} is substituted by the distinguished name of the newly - found role, and both {1} and {2} are - substituted by the name of the role (see the roleName - property). The userRoleAttribute property is not - applicable to this search.

- -

If this property is not specified, a role search does not take - place and roles are taken only from the attribute in the user's entry - specified by the userRoleName property.

-
roleSearchAsUser -

When searching for user roles, should the search be performed as the - user currently being authenticated? If false, - connectionName and connectionPassword will be - used if specified, else an anonymous. If not specified, the default - value of false is used. Note that when accessing the - directory using delegated credentials, this attribute is always ignored - and the search is performed using the delegated credentials.

-
roleSubtree -

Set to true if you want to search the entire - subtree of the element specified by the roleBase - property for role entries associated with the user. The - default value of false causes only the top level - to be searched.

-
sizeLimit -

Specifies the maximum number of records to return when using the - userSearch attribute. If not specified, the default of - 0 is used which indicates no limit.

-
spnegoDelegationQop -

When the JNDI Realm is used with the SPNEGO authenticator and - useDelegatedCredential is true this attribute - controls the QOP (Quality of Protection) that should be used for - the connection to the LDAP - server after authentication. This value is used to set the - javax.security.sasl.qop environment property for the LDAP - connection. This attribute should be a comma-separated list of values - selected from auth-conf, auth-int and - auth. See Java documentation for more details.

-

The default value is auth-conf.

-
sslProtocol -

Specifies which ssl protocol should be used, when connecting with - StartTLS. The default is to let the jre decide. If you need even more - control, you can specify the SSLSocketFactory to use.

-
sslSocketFactory -

Specifies which SSLSocketFactory to use when connecting - to the ldap server using StartTLS. An instance of the class will be - constructed using the default constructor. If none class name is given - the default jre SSLSocketFactory will be used.

-
stripRealmForGss -

When processing users authenticated via the GSS-API, this attribute - controls if any "@..." is removed from the end of the user - name. If not specified, the default is true.

-
timeLimit -

Specifies the time (in milliseconds) to wait for records to be - returned when using the userSearch attribute. If not - specified, the default of 0 is used which indicates no - limit.

-
transportGuaranteeRedirectStatus -

The HTTP status code to use when the container needs to issue an HTTP - redirect to meet the requirements of a configured transport - guarantee. The provided status code is not validated. If not - specified, the default value of 302 is used.

-
useDelegatedCredential -

When the JNDIRealm is used with the SPNEGO authenticator, delegated - credentials for the user may be available. If such credentials are - present, this attribute controls whether or not they are used to - connect to the directory. If not specified, the default value of - true is used.

-
userBase -

The base element for user searches performed using the - userSearch expression. Not used if you are using - the userPattern expression.

-
userPassword -

Name of the attribute in the user's entry containing the - user's password. If you specify this value, JNDIRealm will - bind to the directory using the values specified by - connectionName and - connectionPassword properties, and retrieve the - corresponding attribute for comparison to the value specified - by the user being authenticated. If you do - not specify this value, JNDIRealm will - attempt a simple bind to the directory using the DN of the - user's entry and the password presented by the user, with a - successful bind being interpreted as an authenticated - user.

-
userPattern -

Pattern for the distinguished name (DN) of the user's - directory entry, with {0} marking where the - actual username should be inserted. You can use this property - instead of userSearch, userSubtree - and userBase when the distinguished name contains - the username and is otherwise the same for all users. Note that - when accessing the directory using delegated credentials, this - attribute is always ignored and userSearch, - userSubtree and userBase are always - used instead.

-
userRoleName -

The name of an attribute in the user's directory entry - containing zero or more values for the names of roles assigned - to this user. In addition you can use the - roleName property to specify the name of an - attribute to be retrieved from individual role entries found - by searching the directory. If userRoleName is - not specified all the roles for a user derive from the role - search.

-
userRoleAttribute -

The name of an attribute in the user's directory entry - containing the value that you wish to use when you search for - roles. This is especially useful for RFC 2307 where - the role memberUid can be the uid or the - uidNumber of the user. This value will be - marked as {2} in your role search filter expression. - This value will NOT be available for nested role searches.

-
userSearch -

The LDAP filter expression to use when searching for a - user's directory entry, with {0} marking where - the actual username should be inserted. Use this property - (along with the userBase and - userSubtree properties) instead of - userPattern to search the directory for the - user's entry.

-
userSearchAsUser -

When searching for a user's entry, should the search be performed as - the user currently being authenticated? If false, - connectionName and connectionPassword will be - used if specified, else an anonymous. If not specified, the default - value of false is used. Note that when accessing the - directory using delegated credentials, this attribute is always ignored - and the search is performed using the delegated credentials.

-
userSubtree -

Set to true if you want to search the entire - subtree of the element specified by the userBase - property for the user's entry. The default value of - false causes only the top level to be searched. - Not used if you are using the userPattern - expression.

-
useStartTls -

Set to true if you want to use StartTLS for securing - the connection to the ldap server. The default value is false. -

-
X509UsernameRetrieverClassName -

When using X509 client certificates, this specifies the class name - that will be used to retrieve the user name from the certificate. - The class must implement the - org.apache.catalina.realm.X509UsernameRetriever - interface. The default is to use the certificate's SubjectDN - as the username.

-
- -

See the Container-Managed Security Guide for more - information on setting up container managed security using the - JNDI Directory Realm component.

- -
- - -

UserDatabase Realm - org.apache.catalina.realm.UserDatabaseRealm

- -

The UserDatabase Realm is a Realm implementation - that is based on a UserDatabase resource made available through the global - JNDI resources configured for this Tomcat instance.

- -

The UserDatabase Realm implementation supports the following - additional attributes:

- -
- Attribute - - Description -
allRolesMode -

This attribute controls how the special role name * is - handled when processing authorization constraints in web.xml. By - default, the specification compliant value of strict is - used which means that the user must be assigned one of the roles defined - in web.xml. The alternative values are authOnly which means - that the user must be authenticated but no check is made for assigned - roles and strictAuthOnly which means that the user must be - authenticated and no check will be made for assigned roles unless roles - are defined in web.xml in which case the user must be assigned at least - one of those roles.

-
resourceName -

The name of the global UserDatabase resource - that this realm will use for user, password and role information.

-
transportGuaranteeRedirectStatus -

The HTTP status code to use when the container needs to issue an HTTP - redirect to meet the requirements of a configured transport - guarantee. The provided status code is not validated. If not - specified, the default value of 302 is used.

-
X509UsernameRetrieverClassName -

When using X509 client certificates, this specifies the class name - that will be used to retrieve the user name from the certificate. - The class must implement the - org.apache.catalina.realm.X509UsernameRetriever - interface. The default is to use the certificate's SubjectDN - as the username.

-
- -

See the - Container-Managed Security Guide for more - information on setting up container managed security using the UserDatabase - Realm component and the - JNDI resources how-to for more - information on how to configure a UserDatabase resource.

- -
- - -

Memory Based Realm - org.apache.catalina.realm.MemoryRealm

- -

The Memory Based Realm is a simple Realm implementation - that reads user information from an XML format, and represents it as a - collection of Java objects in memory. This implementation is intended - solely to get up and running with container managed security - it is NOT - intended for production use. As such, there are no mechanisms for - updating the in-memory collection of users when the content of the - underlying data file is changed.

- -

The Memory Based Realm implementation supports the following - additional attributes:

- -
- Attribute - - Description -
allRolesMode -

This attribute controls how the special role name * is - handled when processing authorization constraints in web.xml. By - default, the specification compliant value of strict is - used which means that the user must be assigned one of the roles defined - in web.xml. The alternative values are authOnly which means - that the user must be authenticated but no check is made for assigned - roles and strictAuthOnly which means that the user must be - authenticated and no check will be made for assigned roles unless roles - are defined in web.xml in which case the user must be assigned at least - one of those roles.

-
pathname -

URL, absolute path or relative path (to $CATALINA_BASE) for the XML - file containing our user information. See below for details on the - XML element format required. If no pathname is specified, the - default value is conf/tomcat-users.xml.

-
stripRealmForGss -

When processing users authenticated via the GSS-API, this attribute - controls if any "@..." is removed from the end of the user - name. If not specified, the default is true.

-
transportGuaranteeRedirectStatus -

The HTTP status code to use when the container needs to issue an HTTP - redirect to meet the requirements of a configured transport - guarantee. The provided status code is not validated. If not - specified, the default value of 302 is used.

-
X509UsernameRetrieverClassName -

When using X509 client certificates, this specifies the class name - that will be used to retrieve the user name from the certificate. - The class must implement the - org.apache.catalina.realm.X509UsernameRetriever - interface. The default is to use the certificate's SubjectDN - as the username.

-
- -

The XML document referenced by the pathname attribute must - conform to the following requirements:

-
    -
  • The root (outer) element must be <tomcat-users>. -
  • -
  • Each authorized user must be represented by a single XML element - <user>, nested inside the root element.
  • -
  • Each <user> element must have the following - attributes: -
      -
    • username - Username of this user (must be unique - within this file).
      - For compatibility, it is allowed to use name as an - alternative name for this attribute.
    • -
    • password - Password of this user (in - clear text).
    • -
    • roles - Comma-delimited list of the role names - assigned to this user.
    • -
  • -
- -

See the Container-Managed Security Guide for more - information on setting up container managed security using the - Memory Based Realm component.

- -
- - -

JAAS Realm - org.apache.catalina.realm.JAASRealm

- -

JAASRealm is an implementation of the Tomcat - Realm interface that authenticates users through the Java - Authentication & Authorization Service (JAAS) framework which is now - provided as part of the standard J2SE API.

- -

Using JAASRealm gives the developer the ability to combine practically - any conceivable security realm with Tomcat's CMA.

- -

JAASRealm is prototype for Tomcat of the JAAS-based J2EE authentication - framework for J2EE v1.4, based on the JCP Specification Request - 196 to enhance container-managed security and promote 'pluggable' - authentication mechanisms whose implementations would be - container-independent.

- -

Based on the JAAS login module and principal - (see javax.security.auth.spi.LoginModule and - javax.security.Principal), you can develop your own security - mechanism or wrap another third-party mechanism for integration with the CMA - as implemented by Tomcat.

- -

The JAAS Realm implementation supports the following additional - attributes:

- -
- Attribute - - Description -
allRolesMode -

This attribute controls how the special role name * is - handled when processing authorization constraints in web.xml. By - default, the specification compliant value of strict is - used which means that the user must be assigned one of the roles defined - in web.xml. The alternative values are authOnly which means - that the user must be authenticated but no check is made for assigned - roles and strictAuthOnly which means that the user must be - authenticated and no check will be made for assigned roles unless roles - are defined in web.xml in which case the user must be assigned at least - one of those roles.

-
appName -

The name of the application as configured in your login configuration - file - (JAAS LoginConfig).

-
userClassNames -

A comma-separated list of the names of the classes that you have made - for your user Principals.

-
configFile -

The name of a JAAS configuration file to use with this Realm. It will - be searched for using ClassLoader#getResource(String) so it - is possible for the configuration to be bundled within a web - application. If not specified, the default JVM global JAAS configuration - will be used.

-
roleClassNames -

A comma-separated list of the names of the classes that you have made - for your role Principals.

-
stripRealmForGss -

When processing users authenticated via the GSS-API, this attribute - controls if any "@..." is removed from the end of the user - name. If not specified, the default is true.

-
transportGuaranteeRedirectStatus -

The HTTP status code to use when the container needs to issue an HTTP - redirect to meet the requirements of a configured transport - guarantee. The provided status code is not validated. If not - specified, the default value of 302 is used.

-
useContextClassLoader -

Instructs JAASRealm to use the context class loader for loading the - user-specified LoginModule class and associated - Principal classes. The default value is true, - which is backwards-compatible with the way Tomcat 5 works. To load - classes using the container's classloader, specify - false.

-
X509UsernameRetrieverClassName -

When using X509 client certificates, this specifies the class name - that will be used to retrieve the user name from the certificate. - The class must implement the - org.apache.catalina.realm.X509UsernameRetriever - interface. The default is to use the certificate's SubjectDN - as the username.

-
- -

See the Container-Managed Security - Guide for more information on setting up container managed security - using the JAAS Realm component.

- -
- - -

Combined Realm - org.apache.catalina.realm.CombinedRealm

- -

CombinedRealm is an implementation of the Tomcat - Realm interface that authenticates users through one or more - sub-Realms.

- -

Using CombinedRealm gives the developer the ability to combine multiple - Realms of the same or different types. This can be used to authenticate - against different sources, provide fall back in case one Realm fails or for - any other purpose that requires multiple Realms.

- -

Sub-realms are defined by nesting Realm elements inside the - Realm element that defines the CombinedRealm. Authentication - will be attempted against each Realm in the order they are - listed. Authentication against any Realm will be sufficient to authenticate - the user.

- -

See the Container-Managed Security - Guide for more information on setting up container managed security - using the CombinedRealm component.

- -

The CombinedRealm implementation supports the following additional - attributes.

- -
- Attribute - - Description -
allRolesMode -

This attribute controls how the special role name * is - handled when processing authorization constraints in web.xml. By - default, the specification compliant value of strict is - used which means that the user must be assigned one of the roles defined - in web.xml. The alternative values are authOnly which means - that the user must be authenticated but no check is made for assigned - roles and strictAuthOnly which means that the user must be - authenticated and no check will be made for assigned roles unless roles - are defined in web.xml in which case the user must be assigned at least - one of those roles.

-
transportGuaranteeRedirectStatus -

The HTTP status code to use when the container needs to issue an HTTP - redirect to meet the requirements of a configured transport - guarantee. The provided status code is not validated. If not - specified, the default value of 302 is used.

-
-
- - -

LockOut Realm - org.apache.catalina.realm.LockOutRealm

- -

LockOutRealm is an implementation of the Tomcat - Realm interface that extends the CombinedRealm to provide lock - out functionality to provide a user lock out mechanism if there are too many - failed authentication attempts in a given period of time.

- -

To ensure correct operation, there is a reasonable degree of - synchronization in this Realm.

- -

This Realm does not require modification to the underlying Realms or the - associated user storage mechanisms. It achieves this by recording all failed - logins, including those for users that do not exist. To prevent a DOS by - deliberating making requests with invalid users (and hence causing this - cache to grow) the size of the list of users that have failed authentication - is limited.

- -

Sub-realms are defined by nesting Realm elements inside the - Realm element that defines the LockOutRealm. Authentication - will be attempted against each Realm in the order they are - listed. Authentication against any Realm will be sufficient to authenticate - the user.

- -

The LockOutRealm implementation supports the following additional - attributes.

- -
- Attribute - - Description -
allRolesMode -

This attribute controls how the special role name * is - handled when processing authorization constraints in web.xml. By - default, the specification compliant value of strict is - used which means that the user must be assigned one of the roles defined - in web.xml. The alternative values are authOnly which means - that the user must be authenticated but no check is made for assigned - roles and strictAuthOnly which means that the user must be - authenticated and no check will be made for assigned roles unless roles - are defined in web.xml in which case the user must be assigned at least - one of those roles.

-
cacheRemovalWarningTime -

If a failed user is removed from the cache because the cache is too - big before it has been in the cache for at least this period of time (in - seconds) a warning message will be logged. Defaults to 3600 (1 hour).

-
cacheSize -

Number of users that have failed authentication to keep in cache. Over - time the cache will grow to this size and may not shrink. Defaults to - 1000.

-
failureCount -

The number of times in a row a user has to fail authentication to be - locked out. Defaults to 5.

-
lockOutTime -

The time (in seconds) a user is locked out for after too many - authentication failures. Defaults to 300 (5 minutes). Further - authentication failures during the lock out time will cause the lock out - timer to reset to zero, effectively extending the lock out time. Valid - authentication attempts during the lock out period will not succeed but - will also not reset the lock out time.

-
transportGuaranteeRedirectStatus -

The HTTP status code to use when the container needs to issue an HTTP - redirect to meet the requirements of a configured transport - guarantee. The provided status code is not validated. If not - specified, the default value of 302 is used.

-
- -

See the Container-Managed Security - Guide for more information on setting up container managed security - using the LockOutRealm component.

- -
- -

Null Realm - org.apache.catalina.realm.NullRealm

- -

NullRealm is a minimal implementation of the Tomcat - Realm interface that always returns null when an attempt is - made to validate a user name and associated credentials. It is intended to - be used as a default Realm implementation when no other Realm is - specified.

- -

The NullRealm implementation supports the following additional - attributes.

- -
- Attribute - - Description -
transportGuaranteeRedirectStatus -

The HTTP status code to use when the container needs to issue an HTTP - redirect to meet the requirements of a configured transport - guarantee. The provided status code is not validated. If not - specified, the default value of 302 is used.

-
- -
- -

Nested Components

- -

You can nest the following components by nesting the corresponding element - inside your Realm element:

-
    -
  • CombinedRealm Implementation - If you are using the - CombinedRealm Implementation or a Realm - that extends the CombinedRealm, e.g. the LockOutRealm, one or more - <Realm> elements may be nested inside it.
  • -
  • CredentialHandler - - You may nest at most one instance of this element inside a Realm. This - configures the credential handler that will be used to validate provided - credentials with those stored by the Realm. If not specified a default - MessageDigestCredentialHandler will be configured.
  • -
- -

Special Features

- -

See Single Sign On for information about - configuring Single Sign On support for a virtual host.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/resources.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/resources.html deleted file mode 100644 index c46d0d377429cfc119fb7b50888644609d9b68eb..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/resources.html +++ /dev/null @@ -1,320 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Resources Component

The Resources Component

Table of Contents

Introduction

- -

The Resources element represents all the resources - available to the web application. This includes classes, JAR files, HTML, JSPs - and any other files that contribute to the web application. Implementations - are provided to use directories, JAR files and WARs as the source of these - resources and the resources implementation may be extended to provide support - for files stored in other forms such as in a database or a versioned - repository.

- -

Resources are cached by default.

- -

Note: Running a webapp with non-filesystem based - Resources implementations is only possible when the webapp does not - rely on direct filesystem access to its own resources, and uses the methods - in the ServletContext interface to access them.

- -

A Resources element MAY be nested inside a - Context component. If it is not included, - a default filesystem based Resources will be created automatically, - which is sufficient for most requirements.

- -

Attributes

- -

Common Attributes

- -

All implementations of Resources support the following - attributes:

- -
- Attribute - - Description -
allowLinking -

If the value of this flag is true, symlinks will be - allowed inside the web application, pointing to resources inside or - outside the web application base path. If not specified, the default - value of the flag is false.

-

NOTE: This flag MUST NOT be set to true on the Windows platform - (or any other OS which does not have a case sensitive filesystem), - as it will disable case sensitivity checks, allowing JSP source code - disclosure, among other security problems.

-
cacheMaxSize -

The maximum size of the static resource cache in kilobytes. - If not specified, the default value is 10240 - (10 megabytes). This value may be changed while the web application is - running (e.g. via JMX). If the cache is using more memory than the new - limit the cache will attempt to reduce in size over time to meet the - new limit. If necessary, cacheObjectMaxSize will be - reduced to ensure that it is no larger than - cacheMaxSize/20.

-
cacheObjectMaxSize -

Maximum size of the static resource that will be placed in the cache. - If not specified, the default value is 512 - (512 kilobytes). If this value is greater than - cacheMaxSize/20 it will be reduced to - cacheMaxSize/20. This value may be changed while the web - application is running (e.g. via JMX).

-
cacheTtl -

The amount of time in milliseconds between the revalidation of cache - entries. If not specified, the default value is 5000 (5 - seconds). This value may be changed while the web application is running - (e.g. via JMX). When a resource is cached it will inherit the TTL in - force at the time it was cached and retain that TTL until the resource - is evicted from the cache regardless of any subsequent changes that may - be made to this attribute.

-
cachingAllowed -

If the value of this flag is true, the cache for static - resources will be used. If not specified, the default value - of the flag is true. This value may be changed while the - web application is running (e.g. via JMX). When the cache is disabled - any resources currently in the cache are cleared from the cache.

-
className -

Java class name of the implementation to use. This class must - implement the org.apache.catalina.WebResourceRoot - interface. If not specified, the standard value (defined below) will be - used.

-
trackLockedFiles -

Controls whether the track locked files feature is enabled. If - enabled, all calls to methods that return objects that lock a file and - need to be closed to release that lock (e.g. - ServletContext.getResourceAsStream()) will perform a number - of additional tasks.

-
    -
  • The stack trace at the point where the method was called will be - recorded and associated with the returned object.
  • -
  • The returned object will be wrapped so that the point where - close() (or equivalent) is called to release the resources can be - detected. Tracking of the object will cease once the resources have - been released.
  • -
  • All remaining locked resources on web application shutdown will be - logged and then closed.
  • -
-

If not specified, the default value of false will be - used.

-
- -
- - -

Standard Implementation

- -

Standard Root Implementation

- -

The standard implementation of Resources is - org.apache.catalina.webresources.StandardRoot. It does not - support any additional attributes.

- -

Extracting Root Implementation

- -

The extracting implementation of Resources is - org.apache.catalina.webresources.ExtractingRoot. It does not - support any additional attributes.

- -

When deploying web applications as packed WAR files, the extracting root - will extract any JAR files from /WEB-INF/lib to a - application-jars directory located in the web - application's working directory. These extracted JARs will be removed - when the web application stops.

- -

Extracting JAR files from a packed WAR may provide a performance - improvement, particularly at web application start when JAR scanning is - required by the application.

- -
- -

Nested Components

- -

A web application's main resources are defined by the - docBase defined for the Context. - Additional resources may be made available to the web application by defining - one or more nested components.

- -

PreResources

- -

PreResources are searched before the main resources. They will be searched - in the order they are defined. To configure PreResources, nest a - <PreResources> element inside the <Resources> element with the - following attributes:

- -
- Attribute - - Description -
base -

Identifies where the resources to be used are located. This attribute - is required by the org.apache.catalina.WebResourceSet - implementations provided by Tomcat and should specify the absolute path to - the file, directory or JAR where the resources are located. Custom - implementations may not require it.

-
className -

Java class name of the implementation to use. This class must - implement the org.apache.catalina.WebResourceSet interface. - Tomcat provides three standard implementations: - org.apache.catalina.webresources.DirResourceSet, - org.apache.catalina.webresources.FileResourceSet and - org.apache.catalina.webresources.JarResourceSet. Custom - implementations may also be used. -

-
internalPath -

Identifies the path within the base where the - resources are to be found. This is typically only used with JAR files when - the resources are not located at the root of the JAR as is the case with - resource JARs. This attribute is required by the - org.apache.catalina.WebResourceSet implementations provided - by Tomcat and must start with '/'. Custom implementations may not require - it. If not specified, the default value '/' will be used.

-
readOnly -

If true, resources within this resource set may not be - deleted, created or modified. For instance of - org.apache.catalina.webresources.JarResourceSet, this - attribute is hard-coded to true and may not be changed. For - instances of org.apache.catalina.webresources.DirResourceSet - and org.apache.catalina.webresources.FileResourceSet the - default value of this attribute is false.

-
webAppMount -

Identifies the path within the web application that these resources - will be made available. For the - org.apache.catalina.WebResourceSet implementations provided - by Tomcat, this attribute is required and must start with '/'. Custom - implementations may not require it. If not specified, the default value of - '/' will be used.

-
- -

JAR resources

- -

JarResources are searched after the main resources but before the - PostResources. They will be searched in the order they are defined. To - configure JarResources, nest a <JarResources> element inside the - <Resources> element. The configuration attributes are the same as for - PreResources. -

- -

During web application start, the JAR scanning process checks scanned JARs - for content under /META-INF/resources. Where found, this static - content is added to the JarResources. -

- -

Post-resources

- -

PostResources are searched after the resource JARs. They will be searched - in the order they are defined. To configure PostResources, nest a - <PostResources> element inside the <Resources> element. The - configuration attributes are the same as for PreResources. -

- -

Ordering

- -

In addition to the sets of resources described above, the standard - implementation also maintains ClassResources which represent the classes - contained in the JAR files mapped to /WEB-INF/classes. This - allows other components to search for classes with a single call rather than - one call to search /WEB-INF/classes followed by another to search - the JARs in /WEB-INF/lib. The ClassResources are populated - from the JARs mapped to /WEB-INF/lib when the web application - starts.

- -

Therefore, the complete search order is:

-
    -
  • PreResources
  • -
  • MainResources
  • -
  • ClassResources
  • -
  • JarResources
  • -
  • PostResources
  • -
- -

The population of ClassResources and JarResources at web application start - means that care needs to be taken to add JAR based resources correctly to - obtain the desired behaviour. Consider the following example:

- -
<Resources>
-  <PostResources base="D:\Projects\external\classes"
-                 className="org.apache.catalina.webresources.DirResourceSet"
-                 webAppMount="/WEB-INF/classes"/>
-  <PostResources base="D:\Projects\lib\library1.jar"
-                 className="org.apache.catalina.webresources.FileResourceSet"
-                 webAppMount="/WEB-INF/lib/library1.jar"/>
-</Resources>
- -

Since both resources are PostResources, it might be expected that - D:\Projects\external\classes will be searched for classes before - D:\Projects\lib\library1.jar. However, by adding the JAR using a - FileResourceSet, the JAR is mapped to /WEB-INF/lib - and will be processed at application start along with the other JARs in - /WEB-INF/lib. The classes from the JAR file will be added to the - ClassResources which means they will be searched before the classes from - D:\Projects\external\classes. If the desired behaviour is that - D:\Projects\external\classes is searched before - D:\Projects\lib\library1.jar then a slightly different - configuration is required:

- -
<Resources>
-  <PostResources base="D:\Projects\external\classes"
-                 className="org.apache.catalina.webresources.DirResourceSet"
-                 webAppMount="/WEB-INF/classes"/>
-  <PostResources base="D:\Projects\lib\library1.jar"
-                 className="org.apache.catalina.webresources.JarResourceSet"
-                 webAppMount="/WEB-INF/classes"/>
-</Resources>
- -

In short, the JAR file should be added as a JarResourceSet - mapped to /WEB-INF/classes rather than using a - FileResourceSet mapped to /WEB-INF/lib. -

- -

Special Features

- -

No special features are associated with a Resources - element.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/server.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/server.html deleted file mode 100644 index 94c5caa5ec23b8a6b71102fd0dc3e6c34e602311..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/server.html +++ /dev/null @@ -1,123 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Server Component

The Server Component

Table of Contents

Introduction

- -

A Server element represents the entire Catalina - servlet container. Therefore, it must be the single outermost element - in the conf/server.xml configuration file. Its attributes - represent the characteristics of the servlet container as a whole.

- -

Attributes

- -

Common Attributes

- -

All implementations of Server - support the following attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This class must - implement the org.apache.catalina.Server interface. - If no class name is specified, the standard implementation will - be used.

-
address -

The TCP/IP address on which this server waits for a shutdown - command. If no address is specified, localhost is used.

-
port -

The TCP/IP port number on which this server waits for a shutdown - command. Set to -1 to disable the shutdown port.

-

Note: Disabling the shutdown port works well when Tomcat is started - using Apache Commons Daemon - (running as a service on Windows or with jsvc on un*xes). It cannot be - used when running Tomcat with the standard shell scripts though, as it - will prevent shutdown.bat|.sh and catalina.bat|.sh from stopping it - gracefully.

-
shutdown -

The command string that must be received via a TCP/IP connection - to the specified port number, in order to shut down Tomcat.

-
- -
- -

Standard Implementation

- -

The standard implementation of Server is - org.apache.catalina.core.StandardServer. - It supports the following additional attributes (in addition to the - common attributes listed above):

- -
- Attribute - - Description -
- -
- -

Nested Components

- -

The following components may be nested inside a Server - element:

- - -

Special Features

- -

There are no special features associated with a Server. -

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/service.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/service.html deleted file mode 100644 index 127e30bc2628017ea01420e8f2e10bf805b7c192..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/service.html +++ /dev/null @@ -1,110 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Service Component

The Service Component

Table of Contents

Introduction

- -

A Service element represents the combination of one or - more Connector components that share a single - Engine component for processing incoming - requests. One or more Service elements may be nested - inside a Server element.

- -

Attributes

- -

Common Attributes

- -

All implementations of Service - support the following attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This class must - implement the org.apache.catalina.Service interface. - If no class name is specified, the standard implementation will - be used.

-
name -

The display name of this Service, which will - be included in log messages if you utilize standard Catalina - components. The name of each Service that is - associated with a particular Server - must be unique.

-
- -
- -

Standard Implementation

- -

The standard implementation of Service is - org.apache.catalina.core.StandardService. - It supports the following additional attributes (in addition to the - common attributes listed above):

- -
- Attribute - - Description -
- -
- -

Nested Components

- -

The only components that may be nested inside a Service - element are one or more Connector elements, - followed by exactly one Engine element.

- -

Special Features

- -

There are no special features associated with a Service. -

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/sessionidgenerator.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/sessionidgenerator.html deleted file mode 100644 index 5a68b5f9926570affa2a485da6a4bf47cc771269..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/sessionidgenerator.html +++ /dev/null @@ -1,131 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The SessionIdGenerator Component

The SessionIdGenerator Component

Table of Contents

Introduction

- -

The SessionIdGenerator element represents the session - id generator that will be used to create session ids used by - web application HTTP sessions.

- -

A SessionIdGenerator element MAY be nested inside a - Manager component. If it is not included, - a default SessionIdGenerator configuration will be created automatically, which - is sufficient for most requirements, — see - Standard SessionIdGenerator Implementation below for the details - of this configuration.

- -

Attributes

- -

Common Attributes

- -

All implementations of SessionIdGenerator - support the following attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This class must - implement the org.apache.catalina.SessionIdGenerator interface. - If not specified, the standard value (defined below) will be used.

-
jvmRoute -

A routing identifier for this Tomcat instance. It will be added - to the session id to allow for stateless stickyness routing by - load balancers. The details on how the jvmRoute - will be included in the id are implementation dependent. - See Standard Implementation - for the default behavior.

- -

NOTE - The value for this property is inherited - automatically from the jvmRoute attribute of the - Engine element.

-
sessionIdLength -

The length of session ids created by this SessionIdGenerator. - The details on how the sessionIdLength - influences the session id length are implementation dependent. - See Standard Implementation - for the default behavior.

-
- -
- - -

Standard Implementation

- -

Tomcat provides a standard implementations of SessionIdGenerator - for use.

- -

Standard SessionIdGenerator Implementation

- -

The standard implementation of SessionIdGenerator is - org.apache.catalina.util.StandardSessionIdGenerator. - It supports the following attributes:

- -
- Attribute - - Description -
jvmRoute -

A routing identifier for this Tomcat instance. It will be added - to the end of the session id separated by a ".".

-
sessionIdLength -

The length of session ids created by this SessionIdGenerator. - More precisely the session id length is twice the value of - sessionIdLength plus the length of the trailing - jvmRoute if given. The factor 2 is because - the session id is constructed using sessionIdLength - random bytes, each byte being encoded in two hex characters - in the actual id. The default value is 16.

-
- -
- - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/systemprops.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/systemprops.html deleted file mode 100644 index ecb81d4b8e3e9c29b36c3512c2029bce8bc887b1..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/systemprops.html +++ /dev/null @@ -1,558 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - System Properties

System Properties

Table of Contents

Introduction

-

The following sections list the system properties that may be set to modify - the default Tomcat behaviour.

-

Property replacements

-
- Property - - Description -
org.apache.tomcat.util.digester. PROPERTY_SOURCE -

Set this to a fully qualified name of a class that implements - org.apache.tomcat.util.IntrospectionUtils.PropertySource. - Required to have a public constructor with no arguments.

-

Use this to add a property source, that will be invoked when ${parameter} - denoted parameters are found in the XML files that Tomcat parses.

-

Property replacement from the specified property source on the JVM - system properties can also be done using the - REPLACE_SYSTEM_PROPERTIES system property.

-
org.apache.tomcat.util.digester. REPLACE_SYSTEM_PROPERTIES -

Set this boolean system property to true to cause - property replacement from the digester property source on the JVM - system properties.

-
- -

Clustering

-
- Property - - Description -
org.apache.catalina. tribes.dns_lookups -

If true, the clustering module will attempt to use DNS to - resolve any host names provided in the cluster configuration.

-

If not specified, the default value of false will be used.

-
- -

Expression Language

-
- Property - - Description -
org.apache.el.BeanELResolver. CACHE_SIZE -

The number of javax.el.BeanELResolver.BeanProperties objects that will - be cached by the EL Parser.

-

If not specified, the default of 1000 will be used.

-
org.apache.el.ExpressionBuilder. CACHE_SIZE -

The number of parsed EL expressions that will be cached by the EL - Parser.

-

If not specified, the default of 5000 will be used.

-
org.apache.el.parser. COERCE_TO_ZERO -

If true, when coercing nulls to objects of - type Number, Character or Boolean the result will be 0 for - Number and Character types and false for Boolean as required - by the EL 2.2 and earlier specifications. If this property is - false the result of the coercion will be null as - required by the EL 3.0 specification.

-

If not specified, the default value of false will be - used.

-
org.apache.el.parser. SKIP_IDENTIFIER_CHECK -

If true, when parsing expressions, identifiers will not be - checked to ensure that they conform to the Java Language Specification for - Java identifiers.

-

If not specified, the default value of false will be used.

-
-

Jasper

-
- Property - - Description -
org.apache.jasper.compiler. Generator.POOL_TAGS_WITH_EXTENDS -

By default, JSPs that use their own base class via the extends - attribute of the page directive, will have Tag pooling disabled since - Jasper cannot guarantee that the necessary initialisation will have taken - place. This can have a negative impact on performance. Providing the - alternative base class calls _jspInit() from Servlet.init(), setting this - property to true will enable pooling with an alternative base - class. If the alternative base class does not call _jspInit() and this - property is true, NPEs will occur when attempting to use - tags.

-

If not specified, the default value of false will be used. -

-
org.apache.jasper.compiler. Generator.STRICT_GET_PROPERTY -

If true, the requirement to have the object referenced in - jsp:getProperty action to be previously "introduced" - to the JSP processor, as specified in the chapter JSP.5.3 of JSP 2.0 and - later specifications, is enforced.

-

If not specified, the specification compliant default of - true will be used.

-
org.apache.jasper.compiler. Generator.VAR_EXPRESSIONFACTORY -

The name of the variable to use for the expression language expression - factory.

-

If not specified, the default value of _el_expressionfactory - will be used.

-
org.apache.jasper.compiler. Generator.VAR_INSTANCEMANAGER -

The name of the variable to use for the instance manager factory.

-

If not specified, the default value of _jsp_instancemanager - will be used.

-
org.apache.jasper.compiler. Parser.STRICT_WHITESPACE -

If false the requirements for whitespace before an - attribute name will be relaxed so that the lack of whitespace will not - cause an error.

-

If not specified, the specification compliant default of - true will be used.

-
org.apache.jasper.runtime. BodyContentImpl.BUFFER_SIZE -

The size (in characters) to use when creating a tag buffer.

-

If not specified, the default value of - org.apache.jasper.Constants.DEFAULT_TAG_BUFFER_SIZE (512) - will be used.

-
org.apache.jasper.runtime. BodyContentImpl.LIMIT_BUFFER -

If true, any tag buffer that expands beyond - org.apache.jasper.runtime.BodyContentImpl.BUFFER_SIZE will be - destroyed and a new buffer created.

-

If not specified, the default value of false will be used.

-
org.apache.jasper.runtime. JspFactoryImpl.USE_POOL -

If true, a ThreadLocal PageContext pool will - be used.

-

If not specified, the default value of true will be used.

-
org.apache.jasper.runtime. JspFactoryImpl.POOL_SIZE -

The size of the ThreadLocal PageContext.

-

If not specified, the default value of 8 will be used.

-
org.apache.jasper.Constants. JSP_SERVLET_BASE -

The base class of the Servlets generated from the JSPs.

-

If not specified, the default value of - org.apache.jasper.runtime.HttpJspBase will be used.

-
org.apache.jasper.Constants. SERVICE_METHOD_NAME -

The name of the service method called by the base class.

-

If not specified, the default value of _jspService - will be used.

-
org.apache.jasper.Constants. SERVLET_CLASSPATH -

The name of the ServletContext attribute that provides the classpath - for the JSP.

-

If not specified, the default value of - org.apache.catalina.jsp_classpath will be used.

-
org.apache.jasper.Constants. JSP_FILE -

The name of the request attribute for <jsp-file> - element of a servlet definition. If present on a request, this overrides - the value returned by request.getServletPath() to select the - JSP page to be executed.

-

If not specified, the default value of - org.apache.catalina.jsp_file will be used.

-

Deprecated: This will be removed in Tomcat 9.0.x - onwards. It is replaced by the use of the jspFile servlet initialisation - parameter

-
org.apache.jasper.Constants. PRECOMPILE -

The name of the query parameter that causes the JSP engine to just - pregenerate the servlet but not invoke it.

-

If not specified, the default value of jsp_precompile - will be used, as defined by JSP specification (JSP.11.4.2).

-
org.apache.jasper.Constants. JSP_PACKAGE_NAME -

The default package name for compiled jsp pages.

-

If not specified, the default value of org.apache.jsp - will be used.

-
org.apache.jasper.Constants. TAG_FILE_PACKAGE_NAME -

The default package name for tag handlers generated from tag files.

-

If not specified, the default value of org.apache.jsp.tag - will be used.

-
org.apache.jasper.Constants. ALT_DD_ATTR -

The servlet context attribute under which the alternate deployment - descriptor for this web application is stored.

-

If not specified, the default value of - org.apache.catalina.deploy.alt_dd will be used.

-
org.apache.jasper.Constants. TEMP_VARIABLE_NAME_PREFIX -

Prefix to use for generated temporary variable names.

-

If not specified, the default value of _jspx_temp - will be used.

-
org.apache.jasper.Constants. USE_INSTANCE_MANAGER_FOR_TAGS -

If true, the instance manager is used to obtain tag - handler instances.

-

If not specified, the default value of false will be used.

-
- -

Security

- -
- Property - - Description -
org.apache.catalina.connector. RECYCLE_FACADES -

If this is true or if a security manager is in use a new - facade object will be created for each request.

-

If not specified, the default value of false will be used.

-
org.apache.catalina.connector. CoyoteAdapter.ALLOW_BACKSLASH -

If this is true the '\' character will be permitted as a - path delimiter.

-

If not specified, the default value of false will be used.

-
org.apache.tomcat.util.buf. UDecoder.ALLOW_ENCODED_SLASH -

If this is true '%2F' and '%5C' will be permitted as path - delimiters.

-

If not specified, the default value of false will be used.

-
- -

Specifications

- -
- Property - - Description -
org.apache.catalina. STRICT_SERVLET_COMPLIANCE -

The default value of this system property is false.

-

If this is true the default values will be changed for:

-
    -
  • org.apache.catalina.core.
    ApplicationContext.GET_RESOURCE_REQUIRE_SLASH
  • -
  • org.apache.catalina.core.
    ApplicationDispatcher.WRAP_SAME_OBJECT
  • -
  • org.apache.catalina.core.
    StandardHostValve.ACCESS_SESSION
  • -
  • org.apache.catalina.session.
    StandardSession.ACTIVITY_CHECK
  • -
  • org.apache.catalina.session.
    StandardSession.LAST_ACCESS_AT_START
  • -
  • org.apache.tomcat.util.http.
    ServerCookie.STRICT_NAMING
  • -
  • The URIEncoding attribute of any - HTTP connector or - AJP connector element.
  • -
  • The resourceOnlyServlets attribute of any - Context element.
  • -
  • The tldValidation attribute of any - Context element.
  • -
  • The useRelativeRedirects attribute of any - Context element.
  • -
  • The xmlNamespaceAware attribute of any - Context element.
  • -
  • The xmlValidation attribute of any - Context element.
  • -
-
org.apache.catalina.connector. Response.ENFORCE_ENCODING_IN_GET_WRITER -

If this is true then - a call to Response.getWriter() if no character encoding - has been specified will result in subsequent calls to - Response.getCharacterEncoding() returning - ISO-8859-1 and the Content-Type response header - will include a charset=ISO-8859-1 component. (SRV.15.2.22.1)

-

If not specified, the default specification compliant value of - true will be used.

-
org.apache.catalina.core.ApplicationContext .GET_RESOURCE_REQUIRE_SLASH -

If this is true then the path passed to - ServletContext.getResource() or - ServletContext.getResourceAsStream() must start with - "/". If false, code like - getResource("myfolder/myresource.txt") will work as Tomcat - will prepend "/" to the provided path.

-

If org.apache.catalina.STRICT_SERVLET_COMPLIANCE is set to - true, the default of this setting will be true, - else the default value will be false.

-
org.apache.catalina.core. ApplicationDispatcher.WRAP_SAME_OBJECT -

If this is true then any wrapped request or response - object passed to an application dispatcher will be checked to ensure that - it has wrapped the original request or response.

-

If org.apache.catalina.STRICT_SERVLET_COMPLIANCE is set to - true, the default of this setting will be true, - else the default value will be false.

-
org.apache.tomcat.websocket. STRICT_SPEC_COMPLIANCE -

The default value of this system property is false.

-

If this is true the default values will be changed for:

-
    -
  • org.apache.tomcat.websocket.server#isEnforceNoAddAfterHandshake - (default changes from false to true)
  • -
-
org.apache.tomcat.util.http. ServerCookie.STRICT_NAMING -

If this is true then the requirements of the Servlet specification - that Cookie names must adhere to RFC2109 will be enforced. If this is - false the naming rules specified in RFC6265 (allow the leading "$") - will be used.

-

If org.apache.catalina.STRICT_SERVLET_COMPLIANCE is set to - true, the default of this setting will be true, - else the default value will be false.

-
- -

Sessions

- -
- Property - - Description -
org.apache.catalina.authenticator. Constants.SSO_SESSION_COOKIE_NAME -

An alternative name for the single sign on session cookie. Defaults to - JSESSIONIDSSO.

-
org.apache.catalina.core. StandardHostValve.ACCESS_SESSION -

If this is true, every request that is associated with a - session will cause the session's last accessed time to be updated - regardless of whether or not the request explicitly accesses the session.

-

If org.apache.catalina.STRICT_SERVLET_COMPLIANCE is set to - true, the default of this setting will be true, - else the default value will be false.

-
org.apache.catalina.session. StandardSession.ACTIVITY_CHECK -

If this is true, Tomcat will track the number of active - requests for each session. When determining if a session is valid, any - session with at least one active request will always be considered valid.

-

If org.apache.catalina.STRICT_SERVLET_COMPLIANCE is set to - true, the default of this setting will be true, - else the default value will be false.

-
org.apache.catalina.session. StandardSession.LAST_ACCESS_AT_START -

If this is true, the last accessed time for sessions will - be calculated from the beginning of the previous request. If - false, the last accessed time for sessions will be calculated - from the end of the previous request. This also affects how the idle time - is calculated.

-

If org.apache.catalina.STRICT_SERVLET_COMPLIANCE is set to - true, the default of this setting will be true, - else the default value will be false.

-
- -

Logging

- -
- Property - - Description -
org.apache.juli.formatter -

If no logging configuration file is specified and no logging configuration class is specified - using the java.util.logging.config.class and java.util.logging.config.file - properties the default logging framework org.apache.juli will use the default - java.util.logging.SimpleFormatter for all console output. - To simply override the console output formatter, one can use the described property. Example: - -Dorg.apache.juli.formatter=org.apache.juli.OneLineFormatter

-
org.apache.juli. AsyncMaxRecordCount -

The maximum number of log records that the JULI AsyncFileHandler will queue in memory. - New records are added to the queue and get asynchronously removed from the queue - and written to the files by a single writer thread. - When the queue is full and a new record is being logged - the log record will be handled based on the org.apache.juli.AsyncOverflowDropType setting.

-

The default value is 10000 records. - This number represents the global number of records, not on a per handler basis. -

-
org.apache.juli. AsyncOverflowDropType -

When the queue of log records of the JULI AsyncFileHandler is full, - new log records are handled according to the following setting: -

-
    -
  • 1 - the newest record in the queue will be dropped and not logged
  • -
  • 2 - the oldest record in the queue will be dropped and not logged
  • -
  • 3 - suspend the logging thread until older records got written to the log file and the queue is no longer full. - This is the only setting that ensures that no messages get lost.
  • -
  • 4 - drop the current log record
  • -
-

The default value is 1 (drop the newest record in the queue).

-
org.apache.juli. AsyncLoggerPollInterval -

The poll interval in milliseconds for the asynchronous logger thread. - If the log queue is empty, the async thread will issue a poll(poll interval) - in order to not wake up too often.

-

The default value is 1000 milliseconds.

-
org.apache.juli.logging. UserDataHelper.CONFIG -

The type of logging to use for errors generated by invalid input data. - The options are: DEBUG_ALL, INFO_THEN_DEBUG, - INFO_ALL and NONE. When - INFO_THEN_DEBUG is used, the period for which errors are - logged at DEBUG rather than INFO is controlled by the system property - org.apache.juli.logging.UserDataHelper.SUPPRESSION_TIME. -

-

The default value is INFO_THEN_DEBUG.

-

The errors currently logged using this system are:

-
    -
  • invalid cookies;
  • -
  • invalid parameters;
  • -
  • too many headers, too many parameters (hitting - maxHeaderCount or maxParameterCount limits - of a connector).
  • -
-

Other errors triggered by invalid input data may be added to this - system in later versions.

-
org.apache.juli.logging. UserDataHelper.SUPPRESSION_TIME -

When using INFO_THEN_DEBUG for - org.apache.juli.logging.UserDataHelper.CONFIG this system - property controls how long messages are logged at DEBUG after a message - has been logged at INFO. Once this period has elapsed, the next message - will be logged at INFO followed by a new suppression period where - messages are logged at DEBUG and so on. The value is measured - in seconds.

-

A value of 0 is equivalent to using INFO_ALL - for org.apache.juli.logging.UserDataHelper.CONFIG.

-

A negative value means an infinite suppression period.

-

The default value is 86400 (24 hours).

-
- -

JAR Scanning

- -
- Property - - Description -
tomcat.util.scan. StandardJarScanFilter.jarsToSkip -

A list of comma-separated file name patters that is used as the default - value for pluggabilitySkip and tldSkip - attributes of the standard - JarScanFilter implementation.

-

The coded default is empty, however the system property is set in - a default Tomcat installation via the - $CATALINA_BASE/conf/catalina.properties file.

-
tomcat.util.scan. StandardJarScanFilter.jarsToScan -

A list of comma-separated file name patters that is used as the default - value for pluggabilityScan and tldScan - attributes of the standard - JarScanFilter implementation.

-

The coded default is empty, however the system property is set in - a default Tomcat installation via the - $CATALINA_BASE/conf/catalina.properties file.

-
- -

Websockets

- -
- Property - - Description -
org.apache.tomcat. websocket.ALLOW_UNSUPPORTED_EXTENSIONS -

If true, allow unknown extensions to be declared by - the user.

-

The default value is false.

-
org.apache.tomcat. websocket.DEFAULT_ORIGIN_HEADER_VALUE -

Default value of the origin header that will be sent by the client - during the upgrade handshake.

-

The default is null so that no origin header is sent.

-
org.apache.tomcat. websocket.DEFAULT_PROCESS_PERIOD -

The number of periodic ticks between periodic processing which - involves in particular session expiration checks.

-

The default value is 10 which corresponds to 10 - seconds.

-
org.apache.tomcat. websocket.DISABLE_BUILTIN_EXTENSIONS -

If true, disable all built-in extensions provided by the - server, such as message compression.

-

The default value is false.

-
org.apache.tomcat. websocket.STREAMS_DROP_EMPTY_MESSAGES -

If true, streams provided to the user (writer and output - stream) will not send an empty message when flushing and there is no - data to flush, or when it is closed without having been used (for - example if an error occurs).

-

The default value is false.

-
- -

Other

- -
- Property - - Description -
org.apache.coyote. USE_CUSTOM_STATUS_MSG_IN_HEADER

If this is - true, custom HTTP status messages will be used within HTTP - headers. If a custom message is specified that is not valid for use in an - HTTP header (as defined by RFC2616) then the custom message will be - ignored and the default message used.

-

If not specified, the default value of false will be used.

-

Note: This option is deprecated and will be removed - in Tomcat 9. The reason phrase will not be sent.

-
catalina.useNaming -

If this is false it will override the - useNaming attribute for all - Context elements.

-
javax.sql.DataSource.Factory -

The class name of the factory to use to create resources of type - javax.sql.DataSource. If not specified the default of - org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory is used - which is a package renamed (to avoid conflicts) copy of - Apache Commons DBCP.

-
javax.mail.Session.Factory -

The class name of the factory to use to create resources of type - javax.mail.Session. If not specified the default of - org.apache.naming.factory.MailSessionFactory is used.

-
jvmRoute -

Provides a default value for the jvmRoute attribute of the - Engine element. It does not override the value - configured on the Engine element.

-
catalina.config -

The URL for the catalina.properties configuration file.

-
tomcat.util.buf.StringCache.byte.enabled -

If true, the String cache is enabled for - ByteChunk.

-

If not specified, the default value of false will be used.

-
tomcat.util.buf.StringCache.char.enabled -

If true, the String cache is enabled for - CharChunk.

-

If not specified, the default value of false will be used.

-
tomcat.util.buf.StringCache.trainThreshold -

The number of times toString() must be called before the - cache is activated.

-

If not specified, the default value of 20000 will be used.

-
tomcat.util.buf.StringCache.cacheSize -

The size of the String cache.

-

If not specified, the default value of 200 will be used.

-
org.apache.tomcat.util.buf.UriUtil. WAR_SEPARATOR -

The character to use to separate the WAR file and WAR content parts of - a WAR URL using the custom WAR scheme provided by Tomcat. This is - equivalent to how ! is used in JAR URLs.

-

If not specified, the default value of * will be used.

-
tomcat.util.buf.StringCache.maxStringSize -

The maximum length of String that will be cached.

-

If not specified, the default value of 128 will be used.

-
org.apache.tomcat.util. http.FastHttpDateFormat.CACHE_SIZE -

The size of the cache to use parsed and formatted date value.

-

If not specified, the default value of 1000 will be used.

-
org.apache.tomcat.util. net.NioSelectorShared -

If true, use a shared selector for servlet write/read.

-

If not specified, the default value of true will be used.

-
org.apache.catalina.startup. EXIT_ON_INIT_FAILURE -

If true, the server will exit if an exception happens - during the server initialization phase.

-

If not specified, the default value of false will be used.

-
org.apache.catalina.startup. RealmRuleSet.MAX_NESTED_REALM_LEVELS -

The CombinedRealm allows nested Realms. This property controls the - maximum permitted number of levels of nesting.

-

If not specified, the default value of 3 will be used.

-
org.apache.catalina.startup. CredentialHandlerRuleSet.MAX_NESTED_LEVELS -

The NestedCredentialHandler allows nested CredentialHandlers. This - property controls the maximum permitted number of levels of nesting.

-

If not specified, the default value of 3 will be used.

-
tomcat.util.http.parser.HttpParser. requestTargetAllow -

A string comprised of characters the server should allow even when they are not encoded. - These characters would normally result in a 400 status.

-

The acceptable characters for this property are: |, { - , and }

-

WARNING: Use of this option will expose the server to CVE-2016-6816. -

-

If not specified, the default value of null will be used.

-
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/valve.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/valve.html deleted file mode 100644 index c8d920e82634cf5f7bf51eea6ca9ac0589662b23..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/config/valve.html +++ /dev/null @@ -1,1619 +0,0 @@ - -Apache Tomcat 8 Configuration Reference (8.5.27) - The Valve Component

The Valve Component

Table of Contents

Introduction

- -

A Valve element represents a component that will be - inserted into the request processing pipeline for the associated - Catalina container (Engine, - Host, or Context). - Individual Valves have distinct processing capabilities, and are - described individually below.

- -

The description below uses the variable name $CATALINA_BASE to refer the - base directory against which most relative paths are resolved. If you have - not configured Tomcat for multiple instances by setting a CATALINA_BASE - directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME, - the directory into which you have installed Tomcat.

- -

Access Logging

- -

Access logging is performed by valves that implement -org.apache.catalina.AccessLog interface.

- -

Access Log Valve

- -

Introduction

- -

The Access Log Valve creates log files in the - same format as those created by standard web servers. These logs - can later be analyzed by standard log analysis tools to track page - hit counts, user session activity, and so on. This Valve - uses self-contained logic to write its log files, which can be - automatically rolled over at midnight each day. (The essential - requirement for access logging is to handle a large continuous - stream of data with low overhead. This Valve does not - use Apache Commons Logging, thus avoiding additional overhead and - potentially complex configuration).

- -

This Valve may be associated with any Catalina container - (Context, Host, or Engine), and - will record ALL requests processed by that container.

- -

Some requests may be handled by Tomcat before they are passed to a - container. These include redirects from /foo to /foo/ and the rejection of - invalid requests. Where Tomcat can identify the Context that - would have handled the request, the request/response will be logged in the - AccessLog(s) associated Context, Host - and Engine. Where Tomcat cannot identify the - Context that would have handled the request, e.g. in cases - where the URL is invalid, Tomcat will look first in the Engine, - then the default Host for the Engine and finally - the ROOT (or default) Context for the default Host - for an AccessLog implementation. Tomcat will use the first - AccessLog implementation found to log those requests that are - rejected before they are passed to a container.

- -

The output file will be placed in the directory given by the - directory attribute. The name of the file is composed - by concatenation of the configured prefix, timestamp and - suffix. The format of the timestamp in the file name can be - set using the fileDateFormat attribute. This timestamp will - be omitted if the file rotation is switched off by setting - rotatable to false.

- -

Warning: If multiple AccessLogValve instances - are used, they should be configured to use different output files.

- -

If sendfile is used, the response bytes will be written asynchronously - in a separate thread and the access log valve will not know how many bytes - were actually written. In this case, the number of bytes that was passed to - the sendfile thread for writing will be recorded in the access log valve. -

-
- -

Attributes

- -

The Access Log Valve supports the following - configuration attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.valves.AccessLogValve to use the - default access log valve.

-
directory -

Absolute or relative pathname of a directory in which log files - created by this valve will be placed. If a relative path is - specified, it is interpreted as relative to $CATALINA_BASE. If - no directory attribute is specified, the default value is "logs" - (relative to $CATALINA_BASE).

-
prefix -

The prefix added to the start of each log file's name. If not - specified, the default value is "access_log".

-
suffix -

The suffix added to the end of each log file's name. If not - specified, the default value is "" (a zero-length string), - meaning that no suffix will be added.

-
fileDateFormat -

Allows a customized timestamp in the access log file name. - The file is rotated whenever the formatted timestamp changes. - The default value is .yyyy-MM-dd. - If you wish to rotate every hour, then set this value - to .yyyy-MM-dd.HH. - The date format will always be localized - using the locale en_US. -

-
rotatable -

Flag to determine if log rotation should occur. - If set to false, then this file is never rotated and - fileDateFormat is ignored. - Default value: true -

-
renameOnRotate -

By default for a rotatable log the active access log file name - will contain the current timestamp in fileDateFormat. - During rotation the file is closed and a new file with the next - timestamp in the name is created and used. When setting - renameOnRotate to true, the timestamp - is no longer part of the active log file name. Only during rotation - the file is closed and then renamed to include the timestamp. - This is similar to the behavior of most log frameworks when - doing time based rotation. - Default value: false -

-
pattern -

A formatting layout identifying the various information fields - from the request and response to be logged, or the word - common or combined to select a - standard format. See below for more information on configuring - this attribute.

-
encoding -

Character set used to write the log file. An empty string means - to use the system default character set. Default value: use the - system default character set. -

-
locale -

The locale used to format timestamps in the access log - lines. Any timestamps configured using an - explicit SimpleDateFormat pattern (%{xxx}t) - are formatted in this locale. By default the - default locale of the Java process is used. Switching the - locale after the AccessLogValve is initialized is not supported. - Any timestamps using the common log format - (CLF) are always formatted in the locale - en_US. -

-
requestAttributesEnabled -

Set to true to check for the existence of request - attributes (typically set by the RemoteIpValve and similar) that should - be used to override the values returned by the request for remote - address, remote host, server port and protocol. If the attributes are - not set, or this attribute is set to false then the values - from the request will be used. If not set, the default value of - false will be used.

-
conditionIf -

Turns on conditional logging. If set, requests will be - logged only if ServletRequest.getAttribute() is - not null. For example, if this value is set to - important, then a particular request will only be logged - if ServletRequest.getAttribute("important") != null. - The use of Filters is an easy way to set/unset the attribute - in the ServletRequest on many different requests. -

-
conditionUnless -

Turns on conditional logging. If set, requests will be - logged only if ServletRequest.getAttribute() is - null. For example, if this value is set to - junk, then a particular request will only be logged - if ServletRequest.getAttribute("junk") == null. - The use of Filters is an easy way to set/unset the attribute - in the ServletRequest on many different requests. -

-
condition -

The same as conditionUnless. This attribute is - provided for backwards compatibility. -

-
buffered -

Flag to determine if logging will be buffered. - If set to false, then access logging will be written after each - request. Default value: true -

-
maxLogMessageBufferSize -

Log message buffers are usually recycled and re-used. To prevent - excessive memory usage, if a buffer grows beyond this size it will be - discarded. The default is 256 characters. This should be - set to larger than the typical access log message size.

-
resolveHosts -

This attribute is no longer supported. Use the connector - attribute enableLookups instead.

-

If you have enableLookups on the connector set to - true and want to ignore it, use %a instead of - %h in the value of pattern.

-
- -

Values for the pattern attribute are made up of literal - text strings, combined with pattern identifiers prefixed by the "%" - character to cause replacement by the corresponding variable value from - the current request and response. The following pattern codes are - supported:

-
    -
  • %a - Remote IP address
  • -
  • %A - Local IP address
  • -
  • %b - Bytes sent, excluding HTTP headers, or '-' if zero
  • -
  • %B - Bytes sent, excluding HTTP headers
  • -
  • %h - Remote host name (or IP address if - enableLookups for the connector is false)
  • -
  • %H - Request protocol
  • -
  • %l - Remote logical username from identd (always returns - '-')
  • -
  • %m - Request method (GET, POST, etc.)
  • -
  • %p - Local port on which this request was received. - See also %{xxx}p below.
  • -
  • %q - Query string (prepended with a '?' if it exists)
  • -
  • %r - First line of the request (method and request URI)
  • -
  • %s - HTTP status code of the response
  • -
  • %S - User session ID
  • -
  • %t - Date and time, in Common Log Format
  • -
  • %u - Remote user that was authenticated (if any), else '-'
  • -
  • %U - Requested URL path
  • -
  • %v - Local server name
  • -
  • %D - Time taken to process the request, in millis
  • -
  • %T - Time taken to process the request, in seconds
  • -
  • %F - Time taken to commit the response, in millis
  • -
  • %I - Current request thread name (can compare later with stacktraces)
  • -
  • %X - Connection status when response is completed: -
      -
    • X = Connection aborted before the response completed.
    • -
    • + = Connection may be kept alive after the response is sent.
    • -
    • - = Connection will be closed after the response is sent.
    • -
    -
  • -
- -

- There is also support to write information incoming or outgoing - headers, cookies, session or request attributes and special - timestamp formats. - It is modeled after the - Apache HTTP Server log configuration - syntax. Each of them can be used multiple times with different xxx keys: -

-
    -
  • %{xxx}i write value of incoming header with name xxx
  • -
  • %{xxx}o write value of outgoing header with name xxx
  • -
  • %{xxx}c write value of cookie with name xxx
  • -
  • %{xxx}r write value of ServletRequest attribute with name xxx
  • -
  • %{xxx}s write value of HttpSession attribute with name xxx
  • -
  • %{xxx}p write local (server) port (xxx==local) or - remote (client) port (xxx=remote)
  • -
  • %{xxx}t write timestamp at the end of the request formatted using the - enhanced SimpleDateFormat pattern xxx
  • -
- -

All formats supported by SimpleDateFormat are allowed in %{xxx}t. - In addition the following extensions have been added:

-
    -
  • sec - number of seconds since the epoch
  • -
  • msec - number of milliseconds since the epoch
  • -
  • msec_frac - millisecond fraction
  • -
-

These formats cannot be mixed with SimpleDateFormat formats in the same format - token.

- -

Furthermore one can define whether to log the timestamp for the request start - time or the response finish time:

-
    -
  • begin or prefix begin: chooses - the request start time
  • -
  • end or prefix end: chooses - the response finish time
  • -
-

By adding multiple %{xxx}t tokens to the pattern, one can - also log both timestamps.

- -

The shorthand pattern pattern="common" - corresponds to the Common Log Format defined by - '%h %l %u %t "%r" %s %b'.

- -

The shorthand pattern pattern="combined" - appends the values of the Referer and User-Agent - headers, each in double quotes, to the common pattern.

- -

When Tomcat is operating behind a reverse proxy, the client information - logged by the Access Log Valve may represent the reverse proxy, the browser - or some combination of the two depending on the configuration of Tomcat and - the reverse proxy. For Tomcat configuration options see - Proxies Support and the - Proxy How-To. For reverse proxies that - use mod_jk, see the generic - proxy documentation. For other reverse proxies, consult their - documentation.

-
- -
- - -

Extended Access Log Valve

- -

Introduction

- -

The Extended Access Log Valve extends the - Access Log Valve class, and so - uses the same self-contained logging logic. This means it - implements many of the same file handling attributes. The main - difference to the standard AccessLogValve is that - ExtendedAccessLogValve creates log files which - conform to the Working Draft for the - Extended Log File Format - defined by the W3C.

- -
- -

Attributes

- -

The Extended Access Log Valve supports all - configuration attributes of the standard - Access Log Valve. Only the - values used for className and pattern differ.

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.valves.ExtendedAccessLogValve to - use the extended access log valve.

-
pattern -

A formatting layout identifying the various information fields - from the request and response to be logged. - See below for more information on configuring this attribute.

-
- -

Values for the pattern attribute are made up of - format tokens. Some of the tokens need an additional prefix. Possible - prefixes are c for "client", s for "server", - cs for "client to server", sc for - "server to client" or x for "application specific". - Furthermore some tokens are completed by an additional selector. - See the W3C specification - for more information about the format.

- -

The following format tokens are supported:

-
    -
  • bytes - Bytes sent, excluding HTTP headers, or '-' if zero
  • -
  • c-dns - Remote host name (or IP address if - enableLookups for the connector is false)
  • -
  • c-ip - Remote IP address
  • -
  • cs-method - Request method (GET, POST, etc.)
  • -
  • cs-uri - Request URI
  • -
  • cs-uri-query - Query string (prepended with a '?' if it exists)
  • -
  • cs-uri-stem - Requested URL path
  • -
  • date - The date in yyyy-mm-dd format for GMT
  • -
  • s-dns - Local host name
  • -
  • s-ip - Local IP address
  • -
  • sc-status - HTTP status code of the response
  • -
  • time - Time the request was served in HH:mm:ss format for GMT
  • -
  • time-taken - Time (in seconds as floating point) taken to serve the request
  • -
  • x-threadname - Current request thread name (can compare later with stacktraces)
  • -
- -

For any of the x-H(XXX) the following method will be called from the - HttpServletRequest object:

-
    -
  • x-H(authType): getAuthType
  • -
  • x-H(characterEncoding): getCharacterEncoding
  • -
  • x-H(contentLength): getContentLength
  • -
  • x-H(locale): getLocale
  • -
  • x-H(protocol): getProtocol
  • -
  • x-H(remoteUser): getRemoteUser
  • -
  • x-H(requestedSessionId): getRequestedSessionId
  • -
  • x-H(requestedSessionIdFromCookie): - isRequestedSessionIdFromCookie
  • -
  • x-H(requestedSessionIdValid): - isRequestedSessionIdValid
  • -
  • x-H(scheme): getScheme
  • -
  • x-H(secure): isSecure
  • -
- -

- There is also support to write information about headers - cookies, context, request or session attributes and request - parameters. -

-
    -
  • cs(XXX) for incoming request headers with name XXX
  • -
  • sc(XXX) for outgoing response headers with name XXX
  • -
  • x-A(XXX) for the servlet context attribute with name XXX
  • -
  • x-C(XXX) for the first cookie with name XXX
  • -
  • x-O(XXX) for a concatenation of all outgoing response headers with name XXX
  • -
  • x-P(XXX) for the URL encoded (using UTF-8) request parameter with name XXX
  • -
  • x-R(XXX) for the request attribute with name XXX
  • -
  • x-S(XXX) for the session attribute with name XXX
  • -
- -
- -
- -

Access Control

- - -

Remote Address Valve

- -

Introduction

- -

The Remote Address Valve allows you to compare the - IP address of the client that submitted this request against one or more - regular expressions, and either allow the request to continue - or refuse to process the request from this client. A Remote Address - Valve can be associated with any Catalina container - (Engine, Host, or - Context), and must accept any request - presented to this container for processing before it will be passed on.

- -

The syntax for regular expressions is different than that for - 'standard' wildcard matching. Tomcat uses the java.util.regex - package. Please consult the Java documentation for details of the - expressions supported.

- -

Optionally one can append the server connector port separated with a - semicolon (";") to allow different expressions for each connector.

- -

The behavior when a request is refused can be changed - to not deny but instead set an invalid authentication - header. This is useful in combination with the context attribute - preemptiveAuthentication="true".

- -

Note: There is a caveat when using this valve with - IPv6 addresses. Format of the IP address that this valve is processing - depends on the API that was used to obtain it. If the address was obtained - from Java socket using Inet6Address class, its format will be - x:x:x:x:x:x:x:x. That is, the IP address for localhost - will be 0:0:0:0:0:0:0:1 instead of the more widely used - ::1. Consult your access logs for the actual value.

- -

See also: Remote Host Valve, - Remote IP Valve.

-
- -

Attributes

- -

The Remote Address Valve supports the following - configuration attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.valves.RemoteAddrValve.

-
allow -

A regular expression (using java.util.regex) that the - remote client's IP address is compared to. If this attribute - is specified, the remote address MUST match for this request to be - accepted. If this attribute is not specified, all requests will be - accepted UNLESS the remote address matches a deny - pattern.

-
deny -

A regular expression (using java.util.regex) that the - remote client's IP address is compared to. If this attribute - is specified, the remote address MUST NOT match for this request to be - accepted. If this attribute is not specified, request acceptance is - governed solely by the allow attribute.

-
denyStatus -

HTTP response status code that is used when rejecting denied - request. The default value is 403. For example, - it can be set to the value 404.

-
addConnectorPort -

Append the server connector port to the client IP address separated - with a semicolon (";"). If this is set to true, the - expressions configured with allow and - deny is compared against ADDRESS;PORT - where ADDRESS is the client IP address and - PORT is the Tomcat connector port which received the - request. The default value is false.

-
invalidAuthenticationWhenDeny -

When a request should be denied, do not deny but instead - set an invalid authentication header. This only works - if the context has the attribute preemptiveAuthentication="true" - set. An already existing authentication header will not be - overwritten. In effect this will trigger authentication instead of deny - even if the application does not have a security constraint configured.

-

This can be combined with addConnectorPort to trigger authentication - depending on the client and the connector that is used to access an application.

-
- -
- -

Example 1

-

To allow access only for the clients connecting from localhost:

-
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
-   allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"/>
-
- -

Example 2

-

To allow unrestricted access for the clients connecting from localhost - but for all other clients only to port 8443:

-
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
-   addConnectorPort="true"
-   allow="127\.\d+\.\d+\.\d+;\d*|::1;\d*|0:0:0:0:0:0:0:1;\d*|.*;8443"/>
-
- -

Example 3

-

To allow unrestricted access to port 8009, but trigger basic - authentication if the application is accessed on another port:

-
<Context>
-  ...
-  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
-         addConnectorPort="true"
-         invalidAuthenticationWhenDeny="true"
-         allow=".*;8009"/>
-  <Valve className="org.apache.catalina.authenticator.BasicAuthenticator" />
-  ...
-</Context>
-
- -
- - -

Remote Host Valve

- -

Introduction

- -

The Remote Host Valve allows you to compare the - hostname of the client that submitted this request against one or more - regular expressions, and either allow the request to continue - or refuse to process the request from this client. A Remote Host - Valve can be associated with any Catalina container - (Engine, Host, or - Context), and must accept any request - presented to this container for processing before it will be passed on.

- -

The syntax for regular expressions is different than that for - 'standard' wildcard matching. Tomcat uses the java.util.regex - package. Please consult the Java documentation for details of the - expressions supported.

- -

Optionally one can append the server connector port separated with a - semicolon (";") to allow different expressions for each connector.

- -

The behavior when a request is refused can be changed - to not deny but instead set an invalid authentication - header. This is useful in combination with the context attribute - preemptiveAuthentication="true".

- -

Note: This filter processes the value returned by - method ServletRequest.getRemoteHost(). To allow the method - to return proper host names, you have to enable "DNS lookups" feature on - a Connector.

- -

See also: Remote Address Valve, - HTTP Connector configuration.

-
- -

Attributes

- -

The Remote Host Valve supports the following - configuration attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.valves.RemoteHostValve.

-
allow -

A regular expression (using java.util.regex) that the - remote client's hostname is compared to. If this attribute - is specified, the remote hostname MUST match for this request to be - accepted. If this attribute is not specified, all requests will be - accepted UNLESS the remote hostname matches a deny - pattern.

-
deny -

A regular expression (using java.util.regex) that the - remote client's hostname is compared to. If this attribute - is specified, the remote hostname MUST NOT match for this request to be - accepted. If this attribute is not specified, request acceptance is - governed solely by the allow attribute.

-
denyStatus -

HTTP response status code that is used when rejecting denied - request. The default value is 403. For example, - it can be set to the value 404.

-
addConnectorPort -

Append the server connector port to the client hostname separated - with a semicolon (";"). If this is set to true, the - expressions configured with allow and - deny is compared against HOSTNAME;PORT - where HOSTNAME is the client hostname and - PORT is the Tomcat connector port which received the - request. The default value is false.

-
invalidAuthenticationWhenDeny -

When a request should be denied, do not deny but instead - set an invalid authentication header. This only works - if the context has the attribute preemptiveAuthentication="true" - set. An already existing authentication header will not be - overwritten. In effect this will trigger authentication instead of deny - even if the application does not have a security constraint configured.

-

This can be combined with addConnectorPort to trigger authentication - depending on the client and the connector that is used to access an application.

-
- -
- -
- - -

Proxies Support

- -

Remote IP Valve

- -

Introduction

- -

Tomcat port of - mod_remoteip, - this valve replaces the apparent client remote IP address and hostname for - the request with the IP address list presented by a proxy or a load balancer - via a request headers (e.g. "X-Forwarded-For").

- -

Another feature of this valve is to replace the apparent scheme - (http/https), server port and request.secure with the scheme presented - by a proxy or a load balancer via a request header - (e.g. "X-Forwarded-Proto").

- -

This Valve may be used at the Engine, Host or - Context level as required. Normally, this Valve would be used - at the Engine level.

- -

If used in conjunction with Remote Address/Host valves then this valve - should be defined first to ensure that the correct client IP address is - presented to the Remote Address/Host valves.

- -

Note: By default this valve has no effect on the - values that are written into access log. The original values are restored - when request processing leaves the valve and that always happens earlier - than access logging. To pass the remote address, remote host, server port - and protocol values set by this valve to the access log, - they are put into request attributes. Publishing these values here - is enabled by default, but AccessLogValve should be explicitly - configured to use them. See documentation for - requestAttributesEnabled attribute of - AccessLogValve.

- -

The names of request attributes that are set by this valve - and can be used by access logging are the following:

- -
    -
  • org.apache.catalina.AccessLog.RemoteAddr
  • -
  • org.apache.catalina.AccessLog.RemoteHost
  • -
  • org.apache.catalina.AccessLog.Protocol
  • -
  • org.apache.catalina.AccessLog.ServerPort
  • -
  • org.apache.tomcat.remoteAddr
  • -
- -
- -

Attributes

- -

The Remote IP Valve supports the - following configuration attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.valves.RemoteIpValve.

-
remoteIpHeader -

Name of the HTTP Header read by this valve that holds the list of - traversed IP addresses starting from the requesting client. If not - specified, the default of x-forwarded-for is used.

-
internalProxies -

Regular expression (using java.util.regex) that a - proxy's IP address must match to be considered an internal proxy. - Internal proxies that appear in the remoteIpHeader will - be trusted and will not appear in the proxiesHeader - value. If not specified the default value of - 10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|169\.254\.\d{1,3}\.\d{1,3}|127\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.1[6-9]{1}\.\d{1,3}\.\d{1,3}|172\.2[0-9]{1}\.\d{1,3}\.\d{1,3}|172\.3[0-1]{1}\.\d{1,3}\.\d{1,3} - will be used.

-
proxiesHeader -

Name of the HTTP header created by this valve to hold the list of - proxies that have been processed in the incoming - remoteIpHeader. If not specified, the default of - x-forwarded-by is used.

-
requestAttributesEnabled -

Set to true to set the request attributes used by - AccessLog implementations to override the values returned by the - request for remote address, remote host, server port and protocol. - Request attributes are also used to enable the forwarded remote address - to be displayed on the status page of the Manager web application. - If not set, the default value of true will be used.

-
trustedProxies -

Regular expression (using java.util.regex) that a - proxy's IP address must match to be considered an trusted proxy. - Trusted proxies that appear in the remoteIpHeader will - be trusted and will appear in the proxiesHeader value. - If not specified, no proxies will be trusted.

-
protocolHeader -

Name of the HTTP Header read by this valve that holds the protocol - used by the client to connect to the proxy. If not specified, the - default of null is used.

-
portHeader -

Name of the HTTP Header read by this valve that holds the port - used by the client to connect to the proxy. If not specified, the - default of null is used.

-
protocolHeaderHttpsValue -

Value of the protocolHeader to indicate that it is - an HTTPS request. If not specified, the default of https is - used.

-
httpServerPort -

Value returned by ServletRequest.getServerPort() - when the protocolHeader indicates http - protocol and no portHeader is present. If not - specified, the default of 80 is used.

-
httpsServerPort -

Value returned by ServletRequest.getServerPort() - when the protocolHeader indicates https - protocol and no portHeader is present. If not - specified, the default of 443 is used.

-
changeLocalPort -

If true, the value returned by - ServletRequest.getLocalPort() and - ServletRequest.getServerPort() is modified by the this - valve. If not specified, the default of false is used.

-
- -
- -
- - -

SSL Valve

- -

Introduction

- -

When using mod_proxy_http, the client SSL information is not included in - the protocol (unlike mod_jk and mod_proxy_ajp). To make the client SSL - information available to Tomcat, some additional configuration is required. - In httpd, mod_headers is used to add the SSL information as HTTP headers. In - Tomcat, this valve is used to read the information from the HTTP headers and - insert it into the request.

- -

Note: Ensure that the headers are always set by httpd for all requests to - prevent a client spoofing SSL information by sending fake headers.

- -

To configure httpd to set the necessary headers, add the following:

-
<IfModule ssl_module>
-  RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s"
-  RequestHeader set SSL_CIPHER "%{SSL_CIPHER}s"
-  RequestHeader set SSL_SESSION_ID "%{SSL_SESSION_ID}s"
-  RequestHeader set SSL_CIPHER_USEKEYSIZE "%{SSL_CIPHER_USEKEYSIZE}s"
-</IfModule>
- -
- -

Attributes

- -

The SSL Valve supports the following configuration - attribute:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.valves.SSLValve. -

-
sslClientCertHeader -

Allows setting a custom name for the ssl_client_cert header. - If not specified, the default of ssl_client_cert is - used.

-
sslCipherHeader -

Allows setting a custom name for the ssl_cipher header. - If not specified, the default of ssl_cipher is - used.

-
sslSessionIdHeader -

Allows setting a custom name for the ssl_session_id header. - If not specified, the default of ssl_session_id is - used.

-
sslCipherUserKeySizeHeader -

Allows setting a custom name for the ssl_cipher_usekeysize header. - If not specified, the default of ssl_cipher_usekeysize is - used.

-
- -
- -
- - -

Single Sign On Valve

- -

Introduction

- -

The Single Sign On Valve is utilized when you wish to give users - the ability to sign on to any one of the web applications associated with - your virtual host, and then have their identity recognized by all other - web applications on the same virtual host.

- -

See the Single Sign On special - feature on the Host element for more information.

- -
- - -

Attributes

- -

The Single Sign On Valve supports the following - configuration attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.authenticator.SingleSignOn.

-
requireReauthentication -

Default false. Flag to determine whether each request needs to be - reauthenticated to the security Realm. If "true", this - Valve uses cached security credentials (username and password) to - reauthenticate to the Realm each request associated - with an SSO session. If "false", the Valve can itself authenticate - requests based on the presence of a valid SSO cookie, without - rechecking with the Realm.

-
cookieDomain -

Sets the host domain to be used for sso cookies.

-
- -
- - -

Authentication

- -

The valves in this section implement -org.apache.catalina.Authenticator interface.

- -

Basic Authenticator Valve

- -

Introduction

- -

The Basic Authenticator Valve is automatically added to - any Context that is configured to use BASIC - authentication.

- -

If any non-default settings are required, the valve may be configured - within Context element with the required - values.

- -
- -

Attributes

- -

The Basic Authenticator Valve supports the following - configuration attributes:

- -
- Attribute - - Description -
alwaysUseSession -

Should a session always be used once a user is authenticated? This - may offer some performance benefits since the session can then be used - to cache the authenticated Principal, hence removing the need to - authenticate the user via the Realm on every request. This may be of - help for combinations such as BASIC authentication used with the - JNDIRealm or DataSourceRealms. However there will also be the - performance cost of creating and GC'ing the session. If not set, the - default value of false will be used.

-
cache -

Should we cache authenticated Principals if the request is part of an - HTTP session? If not specified, the default value of true - will be used.

-
changeSessionIdOnAuthentication -

Controls if the session ID is changed if a session exists at the - point where users are authenticated. This is to prevent session fixation - attacks. If not set, the default value of true will be - used.

-
charset -

Controls if the WWW-Authenticate HTTP header includes a - charset authentication parameter as per RFC 7617. The only - permitted options are null, the empty string and - UTF-8. If UTF-8 is specified then the - charset authentication parameter will be sent with that - value and the provided user name and optional password will be converted - from bytes to characters using UTF-8. Otherwise, no charset - authentication parameter will be sent and the provided user name and - optional password will be converted from bytes to characters using - ISO-8859-1. The default value is null

-
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.authenticator.BasicAuthenticator.

-
disableProxyCaching -

Controls the caching of pages that are protected by security - constraints. Setting this to false may help work around - caching issues in some browsers but will also cause secured pages to be - cached by proxies which will almost certainly be a security issue. - securePagesWithPragma offers an alternative, secure, - workaround for browser caching issues. If not set, the default value of - true will be used.

-
securePagesWithPragma -

Controls the caching of pages that are protected by security - constraints. Setting this to false may help work around - caching issues in some browsers by using - Cache-Control: private rather than the default of - Pragma: No-cache and Cache-control: No-cache. - If not set, the default value of false will be used.

-
secureRandomAlgorithm -

Name of the algorithm to use to create the - java.security.SecureRandom instances that generate session - IDs. If an invalid algorithm and/or provider is specified, the platform - default provider and the default algorithm will be used. If not - specified, the default algorithm of SHA1PRNG will be used. If the - default algorithm is not supported, the platform default will be used. - To specify that the platform default should be used, do not set the - secureRandomProvider attribute and set this attribute to the empty - string.

-
secureRandomClass -

Name of the Java class that extends - java.security.SecureRandom to use to generate SSO session - IDs. If not specified, the default value is - java.security.SecureRandom.

-
secureRandomProvider -

Name of the provider to use to create the - java.security.SecureRandom instances that generate SSO - session IDs. If an invalid algorithm and/or provider is specified, the - platform default provider and the default algorithm will be used. If not - specified, the platform default provider will be used.

-
jaspicCallbackHandlerClass -

Name of the Java class of the - javax.security.auth.callback.CallbackHandler implementation - which should be used by JASPIC. If none is specified the default - org.apache.catalina.authenticator.jaspic.CallbackHandlerImpl - will be used.

-
- -
- -
- - -

Digest Authenticator Valve

- -

Introduction

- -

The Digest Authenticator Valve is automatically added to - any Context that is configured to use DIGEST - authentication.

- -

If any non-default settings are required, the valve may be configured - within Context element with the required - values.

- -
- -

Attributes

- -

The Digest Authenticator Valve supports the following - configuration attributes:

- -
- Attribute - - Description -
alwaysUseSession -

Should a session always be used once a user is authenticated? This - may offer some performance benefits since the session can then be used - to cache the authenticated Principal, hence removing the need to - authenticate the user via the Realm on every request. This may be of - help for combinations such as BASIC authentication used with the - JNDIRealm or DataSourceRealms. However there will also be the - performance cost of creating and GC'ing the session. If not set, the - default value of false will be used.

-
cache -

Should we cache authenticated Principals if the request is part of an - HTTP session? If not specified, the default value of false - will be used.

-
changeSessionIdOnAuthentication -

Controls if the session ID is changed if a session exists at the - point where users are authenticated. This is to prevent session fixation - attacks. If not set, the default value of true will be - used.

-
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.authenticator.DigestAuthenticator.

-
disableProxyCaching -

Controls the caching of pages that are protected by security - constraints. Setting this to false may help work around - caching issues in some browsers but will also cause secured pages to be - cached by proxies which will almost certainly be a security issue. - securePagesWithPragma offers an alternative, secure, - workaround for browser caching issues. If not set, the default value of - true will be used.

-
key -

The secret key used by digest authentication. If not set, a secure - random value is generated. This should normally only be set when it is - necessary to keep key values constant either across server restarts - and/or across a cluster.

-
nonceCacheSize -

To protect against replay attacks, the DIGEST authenticator tracks - server nonce and nonce count values. This attribute controls the size - of that cache. If not specified, the default value of 1000 is used.

-
nonceCountWindowSize -

Client requests may be processed out of order which in turn means - that the nonce count values may be processed out of order. To prevent - authentication failures when nonce counts are presented out of order - the authenticator tracks a window of nonce count values. This attribute - controls how big that window is. If not specified, the default value of - 100 is used.

-
nonceValidity -

The time, in milliseconds, that a server generated nonce will be - considered valid for use in authentication. If not specified, the - default value of 300000 (5 minutes) will be used.

-
opaque -

The opaque server string used by digest authentication. If not set, a - random value is generated. This should normally only be set when it is - necessary to keep opaque values constant either across server restarts - and/or across a cluster.

-
securePagesWithPragma -

Controls the caching of pages that are protected by security - constraints. Setting this to false may help work around - caching issues in some browsers by using - Cache-Control: private rather than the default of - Pragma: No-cache and Cache-control: No-cache. - If not set, the default value of false will be used.

-
secureRandomAlgorithm -

Name of the algorithm to use to create the - java.security.SecureRandom instances that generate session - IDs. If an invalid algorithm and/or provider is specified, the platform - default provider and the default algorithm will be used. If not - specified, the default algorithm of SHA1PRNG will be used. If the - default algorithm is not supported, the platform default will be used. - To specify that the platform default should be used, do not set the - secureRandomProvider attribute and set this attribute to the empty - string.

-
secureRandomClass -

Name of the Java class that extends - java.security.SecureRandom to use to generate SSO session - IDs. If not specified, the default value is - java.security.SecureRandom.

-
secureRandomProvider -

Name of the provider to use to create the - java.security.SecureRandom instances that generate SSO - session IDs. If an invalid algorithm and/or provider is specified, the - platform default provider and the default algorithm will be used. If not - specified, the platform default provider will be used.

-
validateUri -

Should the URI be validated as required by RFC2617? If not specified, - the default value of true will be used. This should - normally only be set when Tomcat is located behind a reverse proxy and - the proxy is modifying the URI passed to Tomcat such that DIGEST - authentication always fails.

-
jaspicCallbackHandlerClass -

Name of the Java class of the - javax.security.auth.callback.CallbackHandler implementation - which should be used by JASPIC. If none is specified the default - org.apache.catalina.authenticator.jaspic.CallbackHandlerImpl - will be used.

-
- -
- -
- - -

Form Authenticator Valve

- -

Introduction

- -

The Form Authenticator Valve is automatically added to - any Context that is configured to use FORM - authentication.

- -

If any non-default settings are required, the valve may be configured - within Context element with the required - values.

- -
- -

Attributes

- -

The Form Authenticator Valve supports the following - configuration attributes:

- -
- Attribute - - Description -
changeSessionIdOnAuthentication -

Controls if the session ID is changed if a session exists at the - point where users are authenticated. This is to prevent session fixation - attacks. If not set, the default value of true will be - used.

-
characterEncoding -

Character encoding to use to read the username and password parameters - from the request. If not set, the encoding of the request body will be - used.

-
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.authenticator.FormAuthenticator.

-
disableProxyCaching -

Controls the caching of pages that are protected by security - constraints. Setting this to false may help work around - caching issues in some browsers but will also cause secured pages to be - cached by proxies which will almost certainly be a security issue. - securePagesWithPragma offers an alternative, secure, - workaround for browser caching issues. If not set, the default value of - true will be used.

-
landingPage -

Controls the behavior of the FORM authentication process if the - process is misused, for example by directly requesting the login page - or delaying logging in for so long that the session expires. If this - attribute is set, rather than returning an error response code, Tomcat - will redirect the user to the specified landing page if the login form - is submitted with valid credentials. For the login to be processed, the - landing page must be a protected resource (i.e. one that requires - authentication). If the landing page does not require authentication - then the user will not be logged in and will be prompted for their - credentials again when they access a protected page.

-
securePagesWithPragma -

Controls the caching of pages that are protected by security - constraints. Setting this to false may help work around - caching issues in some browsers by using - Cache-Control: private rather than the default of - Pragma: No-cache and Cache-control: No-cache. - If not set, the default value of false will be used.

-
secureRandomAlgorithm -

Name of the algorithm to use to create the - java.security.SecureRandom instances that generate session - IDs. If an invalid algorithm and/or provider is specified, the platform - default provider and the default algorithm will be used. If not - specified, the default algorithm of SHA1PRNG will be used. If the - default algorithm is not supported, the platform default will be used. - To specify that the platform default should be used, do not set the - secureRandomProvider attribute and set this attribute to the empty - string.

-
secureRandomClass -

Name of the Java class that extends - java.security.SecureRandom to use to generate SSO session - IDs. If not specified, the default value is - java.security.SecureRandom.

-
secureRandomProvider -

Name of the provider to use to create the - java.security.SecureRandom instances that generate SSO - session IDs. If an invalid algorithm and/or provider is specified, the - platform default provider and the default algorithm will be used. If not - specified, the platform default provider will be used.

-
jaspicCallbackHandlerClass -

Name of the Java class of the - javax.security.auth.callback.CallbackHandler implementation - which should be used by JASPIC. If none is specified the default - org.apache.catalina.authenticator.jaspic.CallbackHandlerImpl - will be used.

-
- -
- -
- - -

SSL Authenticator Valve

- -

Introduction

- -

The SSL Authenticator Valve is automatically added to - any Context that is configured to use SSL - authentication.

- -

If any non-default settings are required, the valve may be configured - within Context element with the required - values.

- -
- -

Attributes

- -

The SSL Authenticator Valve supports the following - configuration attributes:

- -
- Attribute - - Description -
cache -

Should we cache authenticated Principals if the request is part of an - HTTP session? If not specified, the default value of true - will be used.

-
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.authenticator.SSLAuthenticator.

-
changeSessionIdOnAuthentication -

Controls if the session ID is changed if a session exists at the - point where users are authenticated. This is to prevent session fixation - attacks. If not set, the default value of true will be - used.

-
disableProxyCaching -

Controls the caching of pages that are protected by security - constraints. Setting this to false may help work around - caching issues in some browsers but will also cause secured pages to be - cached by proxies which will almost certainly be a security issue. - securePagesWithPragma offers an alternative, secure, - workaround for browser caching issues. If not set, the default value of - true will be used.

-
securePagesWithPragma -

Controls the caching of pages that are protected by security - constraints. Setting this to false may help work around - caching issues in some browsers by using - Cache-Control: private rather than the default of - Pragma: No-cache and Cache-control: No-cache. - If not set, the default value of false will be used.

-
secureRandomAlgorithm -

Name of the algorithm to use to create the - java.security.SecureRandom instances that generate session - IDs. If an invalid algorithm and/or provider is specified, the platform - default provider and the default algorithm will be used. If not - specified, the default algorithm of SHA1PRNG will be used. If the - default algorithm is not supported, the platform default will be used. - To specify that the platform default should be used, do not set the - secureRandomProvider attribute and set this attribute to the empty - string.

-
secureRandomClass -

Name of the Java class that extends - java.security.SecureRandom to use to generate SSO session - IDs. If not specified, the default value is - java.security.SecureRandom.

-
secureRandomProvider -

Name of the provider to use to create the - java.security.SecureRandom instances that generate SSO - session IDs. If an invalid algorithm and/or provider is specified, the - platform default provider and the default algorithm will be used. If not - specified, the platform default provider will be used.

-
jaspicCallbackHandlerClass -

Name of the Java class of the - javax.security.auth.callback.CallbackHandler implementation - which should be used by JASPIC. If none is specified the default - org.apache.catalina.authenticator.jaspic.CallbackHandlerImpl - will be used.

-
- -
- -
- - -

SPNEGO Valve

- -

Introduction

- -

The SPNEGO Authenticator Valve is automatically added to - any Context that is configured to use SPNEGO - authentication.

- -

If any non-default settings are required, the valve may be configured - within Context element with the required - values.

- -
- -

Attributes

- -

The SPNEGO Authenticator Valve supports the following - configuration attributes:

- -
- Attribute - - Description -
applyJava8u40Fix -

A fix introduced in Java 8 update 40 ( - JDK-8048194) - onwards broke SPNEGO authentication for IE with Tomcat running on - Windows 2008 R2 servers. This option enables a work-around that allows - SPNEGO authentication to continue working. The work-around should not - impact other configurations so it is enabled by default. If necessary, - the workaround can be disabled by setting this attribute to - false.

-
alwaysUseSession -

Should a session always be used once a user is authenticated? This - may offer some performance benefits since the session can then be used - to cache the authenticated Principal, hence removing the need to - authenticate the user on every request. This will also help with clients - that assume that the server will cache the authenticated user. However - there will also be the performance cost of creating and GC'ing the - session. For an alternative solution see - noKeepAliveUserAgents. If not set, the default value of - false will be used.

-
cache -

Should we cache authenticated Principals if the request is part of an - HTTP session? If not specified, the default value of true - will be used.

-
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.authenticator.SpnegoAuthenticator. -

-
changeSessionIdOnAuthentication -

Controls if the session ID is changed if a session exists at the - point where users are authenticated. This is to prevent session fixation - attacks. If not set, the default value of true will be - used.

-
disableProxyCaching -

Controls the caching of pages that are protected by security - constraints. Setting this to false may help work around - caching issues in some browsers but will also cause secured pages to be - cached by proxies which will almost certainly be a security issue. - securePagesWithPragma offers an alternative, secure, - workaround for browser caching issues. If not set, the default value of - true will be used.

-
loginConfigName -

The name of the JAAS login configuration to be used to login as the - service. If not specified, the default of - com.sun.security.jgss.krb5.accept is used.

-
noKeepAliveUserAgents -

Some clients (not most browsers) expect the server to cache the - authenticated user information for a connection and do not resend the - credentials with every request. Tomcat will not do this unless an HTTP - session is available. A session will be available if either the - application creates one or if alwaysUseSession is enabled - for this Authenticator.

-

As an alternative to creating a session, this attribute may be used - to define the user agents for which HTTP keep-alive is disabled. This - means that a connection will only used for a single request and hence - there is no ability to cache authenticated user information per - connection. There will be a performance cost in disabling HTTP - keep-alive.

-

The attribute should be a regular expression that matches the entire - user-agent string, e.g. .*Chrome.*. If not specified, no - regular expression will be defined and no user agents will have HTTP - keep-alive disabled.

-
securePagesWithPragma -

Controls the caching of pages that are protected by security - constraints. Setting this to false may help work around - caching issues in some browsers by using - Cache-Control: private rather than the default of - Pragma: No-cache and Cache-control: No-cache. - If not set, the default value of false will be used.

-
secureRandomAlgorithm -

Name of the algorithm to use to create the - java.security.SecureRandom instances that generate session - IDs. If an invalid algorithm and/or provider is specified, the platform - default provider and the default algorithm will be used. If not - specified, the default algorithm of SHA1PRNG will be used. If the - default algorithm is not supported, the platform default will be used. - To specify that the platform default should be used, do not set the - secureRandomProvider attribute and set this attribute to the empty - string.

-
secureRandomClass -

Name of the Java class that extends - java.security.SecureRandom to use to generate SSO session - IDs. If not specified, the default value is - java.security.SecureRandom.

-
secureRandomProvider -

Name of the provider to use to create the - java.security.SecureRandom instances that generate SSO - session IDs. If an invalid algorithm and/or provider is specified, the - platform default provider and the default algorithm will be used. If not - specified, the platform default provider will be used.

-
storeDelegatedCredential -

Controls if the user' delegated credential will be stored in - the user Principal. If available, the delegated credential will be - available to applications (e.g. for onward authentication to external - services) via the org.apache.catalina.realm.GSS_CREDENTIAL - request attribute. If not set, the default value of true - will be used.

-
jaspicCallbackHandlerClass -

Name of the Java class of the - javax.security.auth.callback.CallbackHandler implementation - which should be used by JASPIC. If none is specified the default - org.apache.catalina.authenticator.jaspic.CallbackHandlerImpl - will be used.

-
- -
- -
- - -

Error Report Valve

- -

Introduction

- -

The Error Report Valve is a simple error handler - for HTTP status codes that will generate and return HTML error pages.

- -

NOTE: Disabling both showServerInfo and showReport will - only return the HTTP status code and remove all CSS.

- -
- -

Attributes

- -

The Error Report Valve supports the following - configuration attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.valves.ErrorReportValve to use the - default error report valve.

-
showReport -

Flag to determine if the error report is presented when an error - occurs. If set to false, then the error report is not in - the HTML response. - Default value: true -

-
showServerInfo -

Flag to determine if server information is presented when an error - occurs. If set to false, then the server version is not - returned in the HTML response. - Default value: true -

-
- -
- -

Crawler Session Manager Valve

- -

Introduction

- -

Web crawlers can trigger the creation of many thousands of sessions as - they crawl a site which may result in significant memory consumption. This - Valve ensures that crawlers are associated with a single session - just like - normal users - regardless of whether or not they provide a session token - with their requests.

- -

This Valve may be used at the Engine, Host or - Context level as required. Normally, this Valve would be used - at the Engine level.

- -

If used in conjunction with Remote IP valve then the Remote IP valve - should be defined before this valve to ensure that the correct client IP - address is presented to this valve.

- -
- -

Attributes

- -

The Crawler Session Manager Valve supports the - following configuration attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.valves.CrawlerSessionManagerValve. -

-
crawlerIps -

Regular expression (using java.util.regex) that client - IP is matched against to determine if a request is from a web crawler. - By default such regular expression is not set.

-
crawlerUserAgents -

Regular expression (using java.util.regex) that the user - agent HTTP request header is matched against to determine if a request - is from a web crawler. If not set, the default of - .*[bB]ot.*|.*Yahoo! Slurp.*|.*Feedfetcher-Google.* is used.

-
sessionInactiveInterval -

The minimum time in seconds that the Crawler Session Manager Valve - should keep the mapping of client IP to session ID in memory without any - activity from the client. The client IP / session cache will be - periodically purged of mappings that have been inactive for longer than - this interval. If not specified the default value of 60 - will be used.

-
- -
- -

Stuck Thread Detection Valve

- -

Introduction

- -

This valve allows to detect requests that take a long time to process, - which might indicate that the thread that is processing it is stuck. - Additionally it can optionally interrupt such threads to try and unblock - them.

-

When such a request is detected, the current stack trace of its thread is - written to Tomcat log with a WARN level.

-

The IDs and names of the stuck threads are available through JMX in the - stuckThreadIds and stuckThreadNames attributes. - The IDs can be used with the standard Threading JVM MBean - (java.lang:type=Threading) to retrieve other information - about each stuck thread.

- -
- -

Attributes

- -

The Stuck Thread Detection Valve supports the - following configuration attributes:

- -
- Attribute - - Description -
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.valves.StuckThreadDetectionValve. -

-
threshold -

Minimum duration in seconds after which a thread is considered stuck. - Default is 600 seconds. If set to 0, the detection is disabled.

-

Note: since the detection (and optional interruption) is done in the - background thread of the Container (Engine, Host or Context) declaring - this Valve, the threshold should be higher than the - backgroundProcessorDelay of this Container.

-
interruptThreadThreshold -

Minimum duration in seconds after which a stuck thread should be - interrupted to attempt to "free" it.

-

Note that there's no guarantee that the thread will get unstuck. - This usually works well for threads stuck on I/O or locks, but is - probably useless in case of infinite loops.

-

Default is -1 which disables the feature. To enable it, the value - must be greater or equal to threshold.

-
- -
- -

Semaphore Valve

- -

Introduction

- -

The Semaphore Valve is able to limit the number of - concurrent request processing threads.

-

org.apache.catalina.valves.SemaphoreValve provides - methods which may be overridden by a subclass to customize behavior:

-
    -
  • controlConcurrency may be overridden to add - conditions;
  • -
  • permitDenied may be overridden to add error handling - when a permit isn't granted.
  • -
- -
- -

Attributes

- -

The Semaphore Valve supports the following - configuration attributes:

- -
- Attribute - - Description -
block -

Flag to determine if a thread is blocked until a permit is available. - The default value is true.

-
className -

Java class name of the implementation to use. This MUST be set to - org.apache.catalina.valves.SemaphoreValve.

-
concurrency -

Concurrency level of the semaphore. The default value is - 10.

-
fairness -

Fairness of the semaphore. The default value is - false.

-
interruptible -

Flag to determine if a thread may be interrupted until a permit is - available. The default value is false.

-
- -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/connectors.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/connectors.html deleted file mode 100644 index c6469d1410deb0c5153fc61d37cc2a1105eb78f5..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/connectors.html +++ /dev/null @@ -1,86 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Connectors How To

Connectors How To

Table of Contents

Introduction

- -

Choosing a connector to use with Tomcat can be difficult. This page will -list the connectors which are supported with this Tomcat release, and will -hopefully help you make the right choice according to your needs.

- -

HTTP

- -

The HTTP connector is setup by default with Tomcat, and is ready to use. This -connector features the lowest latency and best overall performance.

- -

For clustering, a HTTP load balancer with support for web sessions stickiness -must be installed to direct the traffic to the Tomcat servers. Tomcat supports mod_proxy -(on Apache HTTP Server 2.x, and included by default in Apache HTTP Server 2.2) as the load balancer. -It should be noted that the performance of HTTP proxying is usually lower than the -performance of AJP, so AJP clustering is often preferable.

- -

AJP

- -

When using a single server, the performance when using a native webserver in -front of the Tomcat instance is most of the time significantly worse than a -standalone Tomcat with its default HTTP connector, even if a large part of the web -application is made of static files. If integration with the native webserver is -needed for any reason, an AJP connector will provide faster performance than -proxied HTTP. AJP clustering is the most efficient from the Tomcat perspective. -It is otherwise functionally equivalent to HTTP clustering.

- -

The native connectors supported with this Tomcat release are:

-
    -
  • JK 1.2.x with any of the supported servers
  • -
  • mod_proxy on Apache HTTP Server 2.x (included by default in Apache HTTP Server 2.2), -with AJP enabled
  • -
- -

Other native connectors supporting AJP may work, but are no longer supported.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/default-servlet.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/default-servlet.html deleted file mode 100644 index 5c9ccaec97fd7a6512467c6ba69419aa054f56a1..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/default-servlet.html +++ /dev/null @@ -1,302 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Default Servlet Reference

Default Servlet Reference

Table of Contents

What is the DefaultServlet

-

-The default servlet is the servlet which serves static resources as well -as serves the directory listings (if directory listings are enabled). -

-

Where is it declared?

-

-It is declared globally in $CATALINA_BASE/conf/web.xml. -By default here is it's declaration: -

-
    <servlet>
-        <servlet-name>default</servlet-name>
-        <servlet-class>
-          org.apache.catalina.servlets.DefaultServlet
-        </servlet-class>
-        <init-param>
-            <param-name>debug</param-name>
-            <param-value>0</param-value>
-        </init-param>
-        <init-param>
-            <param-name>listings</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <load-on-startup>1</load-on-startup>
-    </servlet>
-
-...
-
-    <servlet-mapping>
-        <servlet-name>default</servlet-name>
-        <url-pattern>/</url-pattern>
-    </servlet-mapping>
- -So by default, the default servlet is loaded at webapp startup and -directory listings are disabled and debugging is turned off. -

What can I change?

-

- The DefaultServlet allows the following initParamters: -

- -
- Property - - Description -
debug - Debugging level. It is not very useful unless you are a tomcat - developer. As - of this writing, useful values are 0, 1, 11, 1000. [0] -
listings - If no welcome file is present, can a directory listing be - shown? - value may be true or false [false] -
- Welcome files are part of the servlet api. -
- WARNING: Listings of directories containing many entries are - expensive. Multiple requests for large directory listings can consume - significant proportions of server resources. -
precompressed - If a precompressed version of a file exists (a file with .br - or .gz appended to the file name located alongside the - original file), Tomcat will serve the precompressed file if the user - agent supports the matching content encoding (br or gzip) and this - option is enabled. [false] -
- The precompressed file with the with .br or .gz - extension will be accessible if requested directly so if the original - resource is protected with a security constraint, the precompressed - versions must be similarly protected. -
- It is also possible to configure the list of precompressed formats. - The syntax is comma separated list of - [content-encoding]=[file-extension] pairs. For example: - br=.br,gzip=.gz,bzip2=.bz2. If multiple formats are - specified, the client supports more than one and the client does not - express a preference, the order of the list of formats will be treated - as the server preference order and used to select the format returned. -
readmeFile - If a directory listing is presented, a readme file may also - be presented with the listing. This file is inserted as is - so it may contain HTML. -
globalXsltFile - If you wish to customize your directory listing, you - can use an XSL transformation. This value is a relative file name (to - either $CATALINA_BASE/conf/ or $CATALINA_HOME/conf/) which will be used - for all directory listings. This can be overridden per context and/or - per directory. See contextXsltFile and - localXsltFile below. The format of the xml is shown - below. -
contextXsltFile - You may also customize your directory listing by context by - configuring contextXsltFile. This must be a context - relative path (e.g.: /path/to/context.xslt) to a file with - a .xsl or .xslt extension. This overrides - globalXsltFile. If this value is present but a file does - not exist, then globalXsltFile will be used. If - globalXsltFile does not exist, then the default - directory listing will be shown. -
localXsltFile - You may also customize your directory listing by directory by - configuring localXsltFile. This must be a file in the - directory where the listing will take place to with a - .xsl or .xslt extension. This overrides - globalXsltFile and contextXsltFile. If this - value is present but a file does not exist, then - contextXsltFile will be used. If - contextXsltFile does not exist, then - globalXsltFile will be used. If - globalXsltFile does not exist, then the default - directory listing will be shown. -
input - Input buffer size (in bytes) when reading - resources to be served. [2048] -
output - Output buffer size (in bytes) when writing - resources to be served. [2048] -
readonly - Is this context "read only", so HTTP commands like PUT and - DELETE are rejected? [true] -
fileEncoding - File encoding to be used when reading static resources. - [platform default] -
sendfileSize - If the connector used supports sendfile, this represents the minimal - file size in KB for which sendfile will be used. Use a negative value - to always disable sendfile. [48] -
useAcceptRanges - If true, the Accept-Ranges header will be set when appropriate for the - response. [true] -
showServerInfo - Should server information be presented in the response sent to clients - when directory listing is enabled. [true] -
-

How do I customize directory listings?

-

You can override DefaultServlet with you own implementation and use that -in your web.xml declaration. If you -can understand what was just said, we will assume you can read the code -to DefaultServlet servlet and make the appropriate adjustments. (If not, -then that method isn't for you) -

-

-You can use either localXsltFile or -globalXsltFile and DefaultServlet will create -an xml document and run it through an xsl transformation based -on the values provided in localXsltFile and -globalXsltFile. localXsltFile is first -checked, followed by globalXsltFile, then default -behaviors takes place. -

- -

-Format: -

-
    <listing>
-     <entries>
-      <entry type='file|dir' urlPath='aPath' size='###' date='gmt date'>
-        fileName1
-      </entry>
-      <entry type='file|dir' urlPath='aPath' size='###' date='gmt date'>
-        fileName2
-      </entry>
-      ...
-     </entries>
-     <readme></readme>
-    </listing>
-
    -
  • size will be missing if type='dir'
  • -
  • Readme is a CDATA entry
  • -
- -

- The following is a sample xsl file which mimics the default tomcat behavior: -

-
<?xml version="1.0" encoding="UTF-8"?>
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  version="3.0">
-
-  <xsl:output method="html" html-version="5.0"
-    encoding="UTF-8" indent="no"
-    doctype-system="about:legacy-compat"/>
-
-  <xsl:template match="listing">
-   <html>
-    <head>
-      <title>
-        Sample Directory Listing For
-        <xsl:value-of select="@directory"/>
-      </title>
-      <style>
-        h1 {color : white;background-color : #0086b2;}
-        h3 {color : white;background-color : #0086b2;}
-        body {font-family : sans-serif,Arial,Tahoma;
-             color : black;background-color : white;}
-        b {color : white;background-color : #0086b2;}
-        a {color : black;} HR{color : #0086b2;}
-        table td { padding: 5px; }
-      </style>
-    </head>
-    <body>
-      <h1>Sample Directory Listing For
-            <xsl:value-of select="@directory"/>
-      </h1>
-      <hr style="height: 1px;" />
-      <table style="width: 100%;">
-        <tr>
-          <th style="text-align: left;">Filename</th>
-          <th style="text-align: center;">Size</th>
-          <th style="text-align: right;">Last Modified</th>
-        </tr>
-        <xsl:apply-templates select="entries"/>
-        </table>
-      <xsl:apply-templates select="readme"/>
-      <hr style="height: 1px;" />
-      <h3>Apache Tomcat/<version-major-minor/></h3>
-    </body>
-   </html>
-  </xsl:template>
-
-
-  <xsl:template match="entries">
-    <xsl:apply-templates select="entry"/>
-  </xsl:template>
-
-  <xsl:template match="readme">
-    <hr style="height: 1px;" />
-    <pre><xsl:apply-templates/></pre>
-  </xsl:template>
-
-  <xsl:template match="entry">
-    <tr>
-      <td style="text-align: left;">
-        <xsl:variable name="urlPath" select="@urlPath"/>
-        <a href="{$urlPath}">
-          <pre><xsl:apply-templates/></pre>
-        </a>
-      </td>
-      <td style="text-align: right;">
-        <pre><xsl:value-of select="@size"/></pre>
-      </td>
-      <td style="text-align: right;">
-        <pre><xsl:value-of select="@date"/></pre>
-      </td>
-    </tr>
-  </xsl:template>
-
-</xsl:stylesheet>
- -

How do I secure directory listings?

-Use web.xml in each individual webapp. See the security section of the -Servlet specification. - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/deployer-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/deployer-howto.html deleted file mode 100644 index 4a116414d89b9b7bf39a8b90259930ca02080f61..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/deployer-howto.html +++ /dev/null @@ -1,351 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Tomcat Web Application Deployment

Tomcat Web Application Deployment

Table of Contents

Introduction

-

- Deployment is the term used for the process of installing a web - application (either a 3rd party WAR or your own custom web application) - into the Tomcat server. -

-

- Web application deployment may be accomplished in a number of ways - within the Tomcat server. -

-
    -
  • Statically; the web application is setup before Tomcat is started
  • -
  • - Dynamically; by directly manipulating already deployed web - applications (relying on auto-deployment - feature) or remotely by using the Tomcat Manager web - application -
  • -
-

- The Tomcat Manager is a web - application that can be used interactively (via HTML GUI) or - programmatically (via URL-based API) to deploy and manage web - applications. -

-

- There are a number of ways to perform deployment that rely on - the Manager web application. Apache Tomcat provides tasks - for Apache Ant build tool. - Apache Tomcat Maven Plugin - project provides integration with Apache Maven. - There is also a tool called the Client Deployer, which can be - used from a command line and provides additional functionality - such as compiling and validating web applications as well as - packaging web application into web application resource (WAR) - files. -

-

Installation

-

- There is no installation required for static deployment of web - applications as this is provided out of the box by Tomcat. Nor is any - installation required for deployment functions with the Tomcat Manager, - although some configuration is required as detailed in the - Tomcat Manager manual. - An installation is however required if you wish - to use the Tomcat Client Deployer (TCD). -

-

- The TCD is not packaged with the Tomcat core - distribution, and must therefore be downloaded separately from - the Downloads area. The download is usually labelled - apache-tomcat-8.5.x-deployer. -

-

- TCD has prerequisites of Apache Ant 1.6.2+ and a Java installation. - Your environment should define an ANT_HOME environment value pointing to - the root of your Ant installation, and a JAVA_HOME value pointing to - your Java installation. Additionally, you should ensure Ant's ant - command, and the Java javac compiler command run from the command shell - that your operating system provides. -

-
    -
  1. Download the TCD distribution
  2. -
  3. - The TCD package need not be extracted into any existing Tomcat - installation, it can be extracted to any location. -
  4. -
  5. Read Using the - Tomcat Client Deployer
  6. -
-

A word on Contexts

-

- In talking about deployment of web applications, the concept of a - Context is required to be understood. A Context is what Tomcat - calls a web application. -

-

- In order to configure a Context within Tomcat a Context Descriptor - is required. A Context Descriptor is simply an XML file that contains - Tomcat related configuration for a Context, e.g naming resources or - session manager configuration. In earlier versions of - Tomcat the content of a Context Descriptor configuration was often stored within - Tomcat's primary configuration file server.xml but this is now - discouraged (although it currently still works). -

-

- Context Descriptors not only help Tomcat to know how to configure - Contexts but other tools such as the Tomcat Manager and TCD often use - these Context Descriptors to perform their roles properly. -

-

- The locations for Context Descriptors are: -

-
    -
  1. $CATALINA_BASE/conf/[enginename]/[hostname]/[webappname].xml
  2. -
  3. $CATALINA_BASE/webapps/[webappname]/META-INF/context.xml
  4. -
-

- Files in (1) are named [webappname].xml but files in (2) are named - context.xml. If a Context Descriptor is not provided for a Context, - Tomcat configures the Context using default values. -

-

Deployment on Tomcat startup

-

- If you are not interested in using the Tomcat Manager, or TCD, - then you'll need to deploy your web applications - statically to Tomcat, followed by a Tomcat startup. The location you - deploy web applications to for this type of deployment is called the - appBase which is specified per Host. You either copy a - so-called exploded web application, i.e non-compressed, to this - location, or a compressed web application resource .WAR file. -

-

- The web applications present in the location specified by the Host's - (default Host is "localhost") appBase attribute (default - appBase is "$CATALINA_BASE/webapps") will be deployed on Tomcat startup - only if the Host's deployOnStartup attribute is "true". -

-

- The following deployment sequence will occur on Tomcat startup in that - case: -

-
    -
  1. Any Context Descriptors will be deployed first.
  2. -
  3. - Exploded web applications not referenced by any Context - Descriptor will then be deployed. If they have an associated - .WAR file in the appBase and it is newer than the exploded web application, - the exploded directory will be removed and the webapp will be - redeployed from the .WAR -
  4. -
  5. .WAR files will be deployed
  6. -
-

Deploying on a running Tomcat server

-

- It is possible to deploy web applications to a running Tomcat server. -

-

- If the Host autoDeploy attribute is "true", the Host will - attempt to deploy and update web applications dynamically, as needed, - for example if a new .WAR is dropped into the appBase. - For this to work, the Host needs to have background processing - enabled which is the default configuration. -

- -

- autoDeploy set to "true" and a running Tomcat allows for: -

-
    -
  • Deployment of .WAR files copied into the Host appBase.
  • -
  • - Deployment of exploded web applications which are - copied into the Host appBase. -
  • -
  • - Re-deployment of a web application which has already been deployed from - a .WAR when the new .WAR is provided. In this case the exploded - web application is removed, and the .WAR is expanded again. - Note that the explosion will not occur if the Host is configured - so that .WARs are not exploded with a unpackWARs - attribute set to "false", in which case the web application - will be simply redeployed as a compressed archive. -
  • -
  • - Re-loading of a web application if the /WEB-INF/web.xml file (or - any other resource defined as a WatchedResource) is updated. -
  • -
  • - Re-deployment of a web application if the Context Descriptor - file from which the web application has been deployed is - updated. -
  • -
  • - Re-deployment of dependent web applications if the global or - per-host Context Descriptor file used by the web application is - updated. -
  • -
  • - Re-deployment of a web application if a Context Descriptor file (with a - filename corresponding to the Context path of the previously deployed - web application) is added to the - $CATALINA_BASE/conf/[enginename]/[hostname]/ - directory. -
  • -
  • - Undeployment of a web application if its document base (docBase) - is deleted. Note that on Windows, this assumes that anti-locking - features (see Context configuration) are enabled, otherwise it is not - possible to delete the resources of a running web application. -
  • -
-

- Note that web application reloading can also be configured in the loader, in which - case loaded classes will be tracked for changes. -

-

Deploying using the Tomcat Manager

-

- The Tomcat Manager is covered in its own manual page. -

-

Deploying using the Client Deployer Package

-

- Finally, deployment of web application may be achieved using the - Tomcat Client Deployer. This is a package which can be used to - validate, compile, compress to .WAR, and deploy web applications to - production or development Tomcat servers. It should be noted that this feature - uses the Tomcat Manager and as such the target Tomcat server should be - running. -

- -

- It is assumed the user will be familiar with Apache Ant for using the TCD. - Apache Ant is a scripted build tool. The TCD comes pre-packaged with a - build script to use. Only a modest understanding of Apache Ant is - required (installation as listed earlier in this page, and familiarity - with using the operating system command shell and configuring - environment variables). -

- -

- The TCD includes Ant tasks, the Jasper page compiler for JSP compilation - before deployment, as well as a task which - validates the web application Context Descriptor. The validator task (class - org.apache.catalina.ant.ValidatorTask) allows only one parameter: - the base path of an exploded web application. -

- -

- The TCD uses an exploded web application as input (see the list of the - properties used below). A web application that is programmatically - deployed with the deployer may include a Context Descriptor in - /META-INF/context.xml. -

- -

- The TCD includes a ready-to-use Ant script, with the following targets: -

-
    -
  • - compile (default): Compile and validate the web - application. This can be used standalone, and does not need a running - Tomcat server. The compiled application will only run on the associated - Tomcat X.Y.Z server release, and is not guaranteed to work - on another Tomcat release, as the code generated by Jasper depends on its runtime - component. It should also be noted that this target will also compile - automatically any Java source file located in the - /WEB-INF/classes folder of the web application.
  • -
  • - deploy: Deploy a web application (compiled or not) to - a Tomcat server. -
  • -
  • undeploy: Undeploy a web application
  • -
  • start: Start web application
  • -
  • reload: Reload web application
  • -
  • stop: Stop web application
  • -
- -

- In order for the deployment to be configured, create a file - called deployer.properties in the TCD installation - directory root. In this file, add the following name=value pairs per - line: -

- -

- Additionally, you will need to ensure that a user has been - setup for the target Tomcat Manager (which TCD uses) otherwise the TCD - will not authenticate with the Tomcat Manager and the deployment will - fail. To do this, see the Tomcat Manager page. -

- -
    -
  • - build: The build folder used will be, by default, - ${build}/webapp/${path} (${build}, by - default, points to ${basedir}/build). After the end - of the execution of the compile target, the web - application .WAR will be located at - ${build}/webapp/${path}.war. -
  • -
  • - webapp: The directory containing the exploded web application - which will be compiled and validated. By default, the folder is - myapp. -
  • -
  • - path: Deployed context path of the web application, - by default /myapp. -
  • -
  • - url: Absolute URL to the Tomcat Manager web application of a - running Tomcat server, which will be used to deploy and undeploy the - web application. By default, the deployer will attempt to access - a Tomcat instance running on localhost, at - http://localhost:8080/manager/text. -
  • -
  • - username: Tomcat Manager username (user should have a role of - manager-script) -
  • -
  • password: Tomcat Manager password.
  • -
-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/developers.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/developers.html deleted file mode 100644 index acd3095252ad5fc87d8c3fcae8461fa1357d1918..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/developers.html +++ /dev/null @@ -1,89 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Tomcat Developers

Tomcat Developers

Active Developers

- -

- The list indicates the developers' main areas of interest. Feel free to - add to the list :) The developers email addresses are - [login]@apache.org. Please do not contact - developers directly for any support issues (please post to the - tomcat-users mailing list instead, or one of the other support - resources; some organizations and individual consultants also offer - for pay Tomcat support, as listed on the - support and - training page on the Tomcat Wiki). -

- -
    -
  • Bill Barker (billbarker): Connectors
  • -
  • Costin Manolache (costin): Catalina, Connectors
  • -
  • Filip Hanik (fhanik): Clustering, Release Manager
  • -
  • Jean-Frederic Clere (jfclere): Connectors
  • -
  • Jim Jagielski (jim): Connectors
  • -
  • Konstantin Kolinko (kkolinko): Catalina
  • -
  • Mark Thomas (markt): CGI, SSI, WebDAV, bug fixing
  • -
  • Mladen Turk (mturk): Connectors
  • -
  • Peter Rossbach (pero): Catalina, Clustering, JMX
  • -
  • Rainer Jung (rjung): Catalina, Clustering, Connectors
  • -
  • Remy Maucherat (remm): Catalina, Connectors, Docs
  • -
  • Tim Funk (funkman): Catalina, Docs
  • -
  • Tim Whittington (timw): Connectors
  • -
- -

Retired Developers

- -
    -
  • Amy Roh (amyroh): Catalina
  • -
  • Glenn Nielsen (glenn): Catalina, Connectors
  • -
  • Henri Gomez (hgomez): Connectors
  • -
  • Jan Luehe (luehe): Jasper
  • -
  • Jean-Francois Arcand (jfarcand): Catalina
  • -
  • Kin-Man Chung (kinman): Jasper
  • -
  • Yoav Shapira (yoavs): Docs, JMX, Catalina, balancer
  • -
-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/elapi/index.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/elapi/index.html deleted file mode 100644 index ca5c3bffae6653ed112121a7bd414241413e3ef8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/elapi/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - API docs - - - - -The EL Javadoc is not installed by default. Download and install -the "fulldocs" package to get it. - -You can also access the javadoc online in the Tomcat - -documentation bundle. - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/extras.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/extras.html deleted file mode 100644 index 00e7ef2307f511e6e5962d8979aaa32d15ee8be9..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/extras.html +++ /dev/null @@ -1,128 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Additional Components

Additional Components

Table of Contents

Introduction

-

- A number of additional components may be used with Apache Tomcat. These - components may be built by users should they need them or they can be - downloaded from one of the mirrors. -

- -

Downloading

-

- To download the extras components open the - Tomcat download page - and select "Browse" from the Quick Navigation Links. The extras components - can be found in bin/extras. -

-

Building

- -

- The additional components are built using the extras target - of the standard Tomcat Ant script which is present in the source bundle of - Tomcat. -

- -

The build process is the following:

- -
    -
  • Follow the build instructions to build a - Tomcat binary from the source bundle (note: it will be used by the build - process of the additional components, but does not need to be actually - used later on)
  • -
  • Execute the command ant extras to run the build - script
  • -
  • The additional components JARs will be placed in the - output/extras folder
  • -
  • Refer to the documentation below about the usage of these JARs
  • -
- -

Components list

- -

Full commons-logging implementation

- -

- Tomcat uses a package renamed commons-logging API implementation which is - hardcoded to use the java.util.logging API. The commons-logging additional - component builds a full fledged package renamed commons-logging - implementation which can be used to replace the implementation provided with - Tomcat. See the logging page for usage - instructions. -

- -
- -

Web Services support (JSR 109)

- -

- Tomcat provides factories for JSR 109 which may be used to resolve web - services references. Place the generated catalina-ws.jar as well as - jaxrpc.jar and wsdl4j.jar (or another implementation of JSR 109) in the - Tomcat lib folder. -

- -

- Users should be aware that wsdl4j.jar is licensed under CPL 1.0 and not the - Apache License version 2.0. -

- -
- -

JMX Remote Lifecycle Listener

- -

- The JMX protocol requires the JMX server (Tomcat in this instance) to listen - on two network ports. One of these ports can be fixed via configuration but - the second is selected randomly. This makes it difficult to use JMX through - a firewall. The JMX Remote Lifecycle Listener allows both ports to be fixed, - simplifying the process of connecting to JMX through a firewall. See the listeners page for usage instructions. -

- -
-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-admin-apps.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-admin-apps.html deleted file mode 100644 index 8c6b28281f0c0ee7c1a9b35bab27b05bdb2c2c0c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-admin-apps.html +++ /dev/null @@ -1,299 +0,0 @@ - -Catalina Functional Specifications (8.5.27) - Administrative Apps - Overall Requirements

Administrative Apps - Overall Requirements

Table of Contents

Overview

- - -

Introduction

- -

The purpose of this specification is to define high level requirements - for administrative applications that can be used to manage the operation - of a running Tomcat container. A variety of Access Methods - to the supported administrative functionality shall be supported, to - meet varying requirements:

-
    -
  • As A Scriptable Web Application - The existing - Manager web application provides a simple HTTP-based - interface for managing Tomcat through commands that are expressed - entirely through a request URI. This is useful in environments - where you wish to script administrative commands with tools that - can generate HTTP transactions.
  • -
  • As An HTML-Based Web Application - Use an HTML presentation - to provide a GUI-like user interface for humans to interact with the - administrative capabilities.
  • -
  • As SOAP-Based Web Services - The operational commands to - administer Tomcat are made available as web services that utilize - SOAP message formats.
  • -
  • As Java Management Extensions (JMX) Commands - The operational - commands to administer Tomcat are made available through JMX APIs, - for integration into management consoles that utilize them.
  • -
  • Other Remote Access APIs - Other remote access APIs, such - as JINI, RMI, and CORBA can also be utilized to access administrative - capabilities.
  • -
- -

Underlying all of the access methods described above, it is assumed - that the actual operations are performed either directly on the - corresponding Catalina components (such as calling the - Deployer.deploy() method to deploy a new web application), - or through a "business logic" layer that can be shared across all of the - access methods. This approach minimizes the cost of adding new - administrative capabilities later -- it is only necessary to add the - corresponding business logic function, and then write adapters to it for - all desired access methods.

- -

The current status of this functional specification is - PROPOSED. It has not yet been discussed and - agreed to on the TOMCAT-DEV mailing list.

- -
- - -

External Specifications

- -

The implementation of this functionality depends on the following - external specifications:

- - -
- - -

Implementation Requirements

- -

The implementation of this functionality shall conform to the - following requirements:

-
    -
  • To the maximum extent feasible, all administrative functions, - and the access methods that support them, shall run portably - on all platforms where Tomcat itself runs.
  • -
  • In a default Tomcat distribution, all administrative capabilities - shall be disabled. It shall be necessary for a system - administrator to specifically enable the desired access methods - (such as by adding a username/password with a specific role to - the Tomcat user's database.
  • -
  • Administrative functions shall be realized as direct calls to - corresponding Catalina APIs, or through a business logic layer - that is independent of the access method used to initiate it.
  • -
  • The common business logic components shall be implemented in - package org.apache.catalina.admin.
  • -
  • The common business logic components shall be built as part of the - standard Catalina build process, and made visible in the - Catalina class loader.
  • -
  • The Java components required for each access method shall be - implemented in subpackages of org.apache.catalina.admin. -
  • -
  • The build scripts should treat each access method as optional, - so that it will be built only if the corresponding required - APIs are present at build time.
  • -
  • It shall be possible to save the configured state of the running - Tomcat container such that this state can be reproduced when the - container is shut down and restarted.
  • -
  • Administrative commands to start up and shut down the overall - Tomcat container are out of scope for the - purposes of these applications. It is assumed that other - (usually platform-specific) mechanisms will be used for container - startup and shutdown.
  • -
- -
- - -

Dependencies

- - -

Environmental Dependencies

- -

The following environmental dependencies must be met in order for - administrative applications to operate correctly:

-
    -
  • For access methods that require creation of server sockets, the - appropriate ports must be configured and available.
  • -
- -
- - -

Container Dependencies

- -

Correct operation of administrative applications depends on the - following specific features of the surrounding container:

-
    -
  • To the maximum extent feasible, Catalina components that offer - direct administrative APIs and property setters shall support - "live" changes to their operation, without requiring a container - restart.
  • -
- -
- - -

External Technologies

- -

The availability of the following technologies can be assumed - for the implementation and operation of the various access methods - and the corresponding administrative business logic:
- FIXME - This list below is totally outdated, but nobody - cares about the administrative app anymore. It is removed and unsupported - since Tomcat 6.0.

- - -
- - -

Functionality

- - -

Properties of Administered Objects

- -

Functional requirements for administrative applications are specified - in terms of Administered Objects, whose definitions and detailed - properties are listed here. In general, - Administered Objects correspond to components in the Catalina architecture, - but these objects are defined separately here for the following reasons:

-
    -
  • It is possible that the administrative applications do not expose - every possible configurable facet of the underlying components.
  • -
  • In some cases, an Administered Object (from the perspective of an - administrative operation) is realized by more than one Catalina - component, at a finer-grained level of detail.
  • -
  • It is necessary to represent the configuration information for a - component separately from the component itself (for instance, in - order to store that configuration information for later use).
  • -
  • It is necessary to represent configuration information (such as - a Default Context) when there is no corresponding component instance. -
  • -
  • Administered Objects, when realized as Java classes, will include - methods for administrative operations that have no correspondence - to operations performed by the corresponding actual components.
  • -
- -

It is assumed that the reader is familiar with the overall component - architecture of Catalina. For further information, see the corresponding - Developer Documentation. To distinguish names that are used as both - Administered Objects and Components, different - font presentations are utilized. Default values for many properties - are listed in [square brackets].

- -
- - -

Supported Administrative Operations

- -

The administrative operations that are available are described in terms - of the corresponding Administered Objects (as defined above), in a manner - that is independent of the access method by which these operations are - requested. In general, such operations are relevant only in the context - of a particular Administered Object (and will most likely be realized as - method calls on the corresponding Administered Object classes), so they - are organized based on the currently "focused" administered object. - The available Supported Operations are documented - here.

- -
- - -

Access Method Specific Requirements

- -
Scriptable Web Application
- -

An appropriate subset of the administrative operations described above - shall be implemented as commands that can be performed by the "Manager" - web application. FIXME - Enumerate them.

- -

In addition, this web application shall conform to the following - requirements:

-
    -
  • All request URIs shall be protected by security constraints that - require a security role to be assigned for processing.
  • -
  • The default user database shall not contain any - user that has been assigned a security role.
  • -
- -
HTML-Based Web Application
- -

The entire suite of administrative operations described above shall be - made available through a web application designed for human interaction. - In addition, this web application shall conform to the following - requirements:

-
    -
  • Must be implemented using servlet, JSP, and MVC framework technologies - described under "External Technologies", above.
  • -
  • Prompts and error messages must be internationalizable to multiple - languages.
  • -
  • Rendered HTML must be compatible with Netscape Navigator (version 4.7 - or later) and Internet Explorer (version 5.0 or later).
  • -
- -
- - -

Testable Assertions

- -

FIXME - Complete this section.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-admin-objects.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-admin-objects.html deleted file mode 100644 index 9b62380bef66a08fa9fe74594e836298456afb0e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-admin-objects.html +++ /dev/null @@ -1,450 +0,0 @@ - -Catalina Functional Specifications (8.5.27) - Administrative Apps - Administered Objects

Administrative Apps - Administered Objects

Table of Contents

Administered Objects Overview

- -

This document defines the Administered Objects that represent -the internal architectural components of the Catalina servlet container. -Associated with each is a set of Supported -Operations that can be performed when the administrative application is -"focused" on a particular configurable object.

- -

The following Administered Objects are defined:

- - -

Access Logger

- -

An Access Logger is an optional Valve that can - create request access logs in the same formats as those provided by - web servers. Such access logs are useful input to hit count and user - access tracking analysis programs. An Access Logger can be attached to - an Engine, a Host, a Context, or a Default - Context.

- -

The standard component implementing an Access Logger is - org.apache.catalina.valves.AccessLogValve. It supports the - following configurable properties:

-
    -
  • debug - Debugging detail level. [0]
  • -
  • directory - Absolute or relative (to $CATALINA_BASE) path - of the directory into which access log files are created. - [logs].
  • -
  • pattern - Pattern string defining the fields to be - included in the access log output, or "common" for the standard - access log pattern. See - org.apache.catalina.valves.AccessLogValve for more - information. [common]
  • -
  • prefix - Prefix added to the beginning of each log file - name created by this access logger.
  • -
  • resolveHosts - Should IP addresses be resolved to host - names in the log? [false]
  • -
  • suffix - Suffix added to the end of each log file name - created by this access logger.
  • -
- -

Connector

- -

A Connector is the representation of a communications endpoint - by which requests are received from (and responses returned to) a Tomcat - client. The administrative applications shall support those connectors - that are commonly utilized in Tomcat installations, as described in detail - below.

- -

For standalone use, the standard connector supporting the HTTP/1.1 - protocol is org.apache.catalina.connectors.http.HttpConnector. - It supports the following configurable properties:

-
    -
  • acceptCount - The maximum queue length of incoming - connections that have not yet been accepted. [10]
  • -
  • address - For servers with more than one IP address, the - address upon which this connector should listen. [All Addresses]
  • -
  • bufferSize - Default input buffer size (in bytes) for - requests created by this Connector. [2048]
  • -
  • debug - Debugging detail level. [0]
  • -
  • enableLookups - Should we perform DNS lookups on remote - IP addresses when request.getRemoteHost() is called? - [false]
  • -
  • maxProcessors - The maximum number of processor threads - supported by this connector. [20]
  • -
  • minProcessors - The minimum number of processor threads - to be created at container startup. [5]
  • -
  • port - TCP/IP port number on which this Connector should - listen for incoming requests. [8080]
  • -
  • proxyName - Host name to be returned when an application - calls request.getServerName(). [Value of Host: header]
  • -
  • proxyPort - Port number to be returned when an application - calls request.getServerPort(). [Same as port] -
  • -
- -

Context

- -

A Context is the representation of an individual web application, - which is associated with a corresponding Host. Note that the - administrable properties of a Context do not - include any settings from inside the web application deployment descriptor - for that application.

- -

The standard component implementing a Context is - org.apache.catalina.core.StandardContext. It supports the - following configurable properties:

-
    -
  • cookies - Should be use cookies for session identifier - communication? [true]
  • -
  • crossContext - Should calls to - ServletContext.getServletContext() return the actual - context responsible for the specified path? [false]
  • -
  • debug - Debugging detail level. [0]
  • -
  • docBase - The absolute or relative (to the - appBase of our owning Host) pathname of a - directory containing an unpacked web application, or of a web - application archive (WAR) file.
  • -
  • override - Should settings in this Context - override corresponding settings in the Default Context? - [false]
  • -
  • path - Context path for this web application, or an empty - string for the root application of a Host. [Inferred from - directory or WAR file name]
  • -
  • reloadable - Should Tomcat monitor classes in the - /WEB-INF/classes directory for changes, and reload the - application if they occur? [false]
  • -
  • useNaming - Should Tomcat provide a JNDI naming context, - containing preconfigured entries and resources, corresponding to the - requirements of the Java2 Enterprise Edition specification? [true]
  • -
  • workDir - Absolute pathname of a scratch directory that is - provided to this web application. [Automatically assigned relative to - $CATALINA_BASE/work]
  • -
- -

Each Context is owned by a parent Host, and is - associated with:

-
    -
  • An optional Access Logger that logs all requests processed - by this web application.
  • -
  • Zero or more Environment Entries representing environment - entries for the JNDI naming context associated with a web - application.
  • -
  • Zero or more JDBC Resources representing database connection - pools associated with a web application.
  • -
  • A Loader representing the web application class loader used - by this web application.
  • -
  • A Manager representing the session manager used by this - web application.
  • -
  • An optional Realm used to provide authentication and access - control information for this web application.
  • -
  • Zero or more Request Filters used to limit access to this - web application based on remote host name or IP address.
  • -
- -

Default Context

- -

A Default Context represents a subset of the configurable - properties of a Context, and is used to set defaults for those - properties when web applications are automatically deployed. A Default - Context object can be associated with an Engine or a - Host. The following configurable properties are supported:

-
    -
  • cookies - Should be use cookies for session identifier - communication? [true]
  • -
  • crossContext - Should calls to - ServletContext.getServletContext() return the actual - context responsible for the specified path? [false]
  • -
  • reloadable - Should Tomcat monitor classes in the - /WEB-INF/classes directory for changes, and reload the - application if they occur? [false]
  • -
  • useNaming - Should Tomcat provide a JNDI naming context, - containing preconfigured entries and resources, corresponding to the - requirements of the Java2 Enterprise Edition specification? [true]
  • -
- -

Each Default Context is owned by a parent Engine or - Host, and is associated with:

-
    -
  • Zero or more Environment Entries representing environment - entries for the JNDI naming context associated with a web - application.
  • -
  • Zero or more JDBC Resources representing database connection - pools associated with a web application.
  • -
  • An optional Loader representing default configuration - properties for the Loader component of deployed web applications.
  • -
  • An optional Manager representing default configuration - properties for the Manager component of deployed web applications.
  • -
- -

Default Deployment Descriptor

- -

Default web application characteristics are configured in a special - deployment descriptor named $CATALINA_BASE/conf/web.xml. This - section describes the configurable components that may be stored there.

- -

FIXME - Complete the description of default servlets, - default mappings, default MIME types, and so on.

- -

Engine

- -

An Engine is the representation of the entire Catalina - servlet container, and processes all requests for all of the associated - virtual hosts and web applications.

- -

The standard component implementing an Engine is - org.apache.catalina.core.StandardEngine. It supports the - following configurable properties:

-
    -
  • debug - Debugging detail level. [0]
  • -
  • defaultHost - Name of the Host to which requests - will be directed if the requested host is unknown. [localhost]
  • -
  • name - Logical name of this engine. [Tomcat Stand-Alone] -
  • -
- -

Each Engine is owned by a parent Service, and is - associated with:

-
    -
  • An optional Access Logger that logs all requests processed - by the entire container.
  • -
  • A Default Context, representing default properties of a - Context for automatically deployed applications for all - associated Hosts (unless overridden by a subordinate - component).
  • -
  • One or more Hosts representing individual virtual hosts - supported by this container.
  • -
  • A Realm used to provide authentication and access control - information for all virtual hosts and web applications (unless - overridden by a subordinate component).
  • -
  • Zero or more Request Filters used to limit access to the - entire container based on remote host name or IP address.
  • -
- -

Environment Entry

- -

An Environment Entry is the representation of a - <env-entry> element from a web application deployment - descriptor. It will cause the creation of a corresponding entry in the - JNDI naming context provided to the corresponding Context. The - following configurable properties are supported:

-
    -
  • description - Description of this environment entry.
  • -
  • name - Environment entry name (relative to the - java:comp/env context)
  • -
  • type - Environment entry type (must be one of the fully - qualified Java classes listed in the servlet spec).
  • -
  • value - Environment entry value (must be convertible from - String to the specified type.
  • -
- -

Host

- -

A Host is the representation of an individual virtual host, - which has a unique set of associated web applications.

- -

The standard component implementing a Host is - org.apache.catalina.core.StandardHost. It supports the - following configurable properties:

-
    -
  • aliases - Zero or more DNS names that are also associated - with this host (for example, a particular host might be named - www.mycompany.com with an alias company.com). -
  • -
  • appBase - Absolute or relative (to $CATALINA_BASE) path - to a directory from which web applications will be automatically - deployed.
  • -
  • debug - Debugging detail level. [0]
  • -
  • name - DNS Name of the virtual host represented by this - object.
  • -
  • unpackWARs - Should web application archive files - deployed by this virtual host be unpacked first? [true]
  • -
- -

Each Host is owned by a parent Engine, and is - associated with:

-
    -
  • An optional Access Logger that logs all requests processed - by this virtual host.
  • -
  • One or more Contexts representing the web applications - operating on this Host.
  • -
  • A Default Context representing default Context - properties for web applications that are automatically deployed - by this Host.
  • -
  • A optional Realm used to provide authentication and access - control information for all web applications associated with this - virtual host (unless overridden by a subordinate component).
  • -
- -

FIXME - Should we support configuration of the - User Web Applications functionality?

- -

JDBC Resource

- -

A JDBC Resources represents a database connection pool (i.e. - an implementation of javax.sql.DataSource that will be - configured and made available in the JNDI naming context associated with - a web application.

- -

FIXME - properties of this administered object

- -

Loader

- -

A Loader represents a web application class loader that will - be utilized to provide class loading services for a particular - Context.

- -

The standard component implementing a Loader is - org.apache.catalina.loader.WebappLoader. It supports - the following configurable properties:

-
    -
  • reloadable - Should this class loader check for modified - classes and initiate automatic reloads? [Set automatically from the - reloadable property of the corresponding Context] -
  • -
- -

Each Loader is owned by a parent Context.

- -

Manager

- -

A Manager represents a session manager that will be associated - with a particular web application. FIXME - Add support - for advanced session managers and their associated Stores.

- -

The standard component implementing a Manager is - org.apache.catalina.session.StandardManager. It supports - the following configurable properties:

-
    -
  • maxActiveSessions - The maximum number of active sessions - that are allowed, or -1 for no limit. [-1]
  • -
- -

Each Manager is owned by a parent Context.

- -

Realm

- -

A Realm represents a "database" of information about authorized - users, their passwords, and the security roles assigned to them. This will - be used by the container in the implementation of container-managed security - in accordance with the Servlet Specification. Several alternative - implementations are supported.

- -

org.apache.catalina.realm.MemoryRealm initializes its user - information from a simple XML file at startup time. If changes are made - to the information in this file, the corresponding web applications using - it must be restarted for the changes to take effect. It supports the - following configurable properties:

-
    -
  • debug - Debugging detail level. [0]
  • -
  • pathname - Absolute or relative (to $CATALINA_BASE) path to - the XML file containing our user information. [conf/tomcat-users.xml] -
  • -
- -

org.apache.catalina.realm.JDBCRealm uses a relational - database (accessed via JDBC APIs) to contain the user information. Changes - in the contents of this database take effect immediately; however, the roles - assigned to a particular user are calculated only when the user initially - logs on (and not per request). The following configurable properties - are supported:

-
    -
  • connectionName - Database username to use when establishing - a JDBC connection.
  • -
  • connectionPassword - Database password to use when - establishing a JDBC connection.
  • -
  • connectionURL - Connection URL to use when establishing - a JDBC connection.
  • -
  • driverName - Fully qualified Java class name of the JDBC - driver to be utilized.
  • -
  • roleNameCol - Name of the column, in the User Roles table, - which contains the role name.
  • -
  • userCredCol - Name of the column, in the Users table, - which contains the password (encrypted or unencrypted).
  • -
  • userNameCol - Name of the column, in both the Users and - User Roles tables, that contains the username.
  • -
  • userRoleTable - Name of the User Roles table, which contains - one row per security role assigned to a particular user. This table must - contain the columns specified by the userNameCol and - roleNameCol properties.
  • -
  • userTable - Name of the Users table, which contains one row - per authorized user. This table must contain the columns specified by - the userNameCol and userCredCol properties. -
  • -
- -

FIXME - Should we provide mechanisms to edit the contents - of a "tomcat-users.xml" file through the admin applications?

- -

Each Realm is owned by a parent Engine, Host, - or Context.

- -

Request Filter

- -

FIXME - complete this entry

- -

Server

- -

FIXME - complete this entry

- -

Service

- -

FIXME - complete this entry

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-admin-opers.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-admin-opers.html deleted file mode 100644 index 0aa65de0f1278e2bcb01e33991b69257a1fdcf54..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-admin-opers.html +++ /dev/null @@ -1,309 +0,0 @@ - -Catalina Functional Specifications (8.5.27) - Administrative Apps - Supported Operations

Administrative Apps - Supported Operations

Table of Contents

Supported Operations Overview

- -

This document defines the Supported Operations that may -be performed against the Administered -Objects that are supported by Tomcat administrative applications. -Not all operations are required to be available through every administrative -application that is implemented. However, if a given operation is available, -it should operate consistently with the descriptions found here.

- -

Supported Operations are described for the following Administered -Objects:

- - -

Access Logger

- -

From the perspective of a particular Access Logger, it shall - be possible to perform the following administrative operations:

-
    -
  • Navigate to the owning Engine, Host, or - Context.
  • -
  • Edit the configurable properties of this object.
  • -
- -

Connector

- -

From the perspective of a particular Connector, it shall be - possible to perform the following administrative operations:

-
    -
  • Navigate to the owning Service.
  • -
  • Edit the configurable properties of this object.
  • -
- -

Context

- -

From the perspective of a particular Context, it shall be - possible to perform the following administrative operations:

-
    -
  • Navigate to the owning Host.
  • -
  • Edit the configurable properties of this object.
  • -
  • Create and configure a new Access Logger associated - with this object.
  • -
  • Edit the configurable properties of the associated Access - Logger.
  • -
  • Remove the associated Access Logger.
  • -
  • Create and configure a new Environment Entry associated - with this object.
  • -
  • Select and edit the configurable properties of an associated - Environment Entry.
  • -
  • Remove an associated Environment Entry.
  • -
  • Create and configure a new JDBC Resource associated - with this object.
  • -
  • Select and edit the configurable properties of an associated - JDBC Resource.
  • -
  • Remove an associated JDBC Resource.
  • -
  • Create and configure a new Loader associated with - this object.
  • -
  • Edit the configurable properties of the associated Loader.
  • -
  • Remove the associated Loader.
  • -
  • Create and configure a new Manager associated with - this object.
  • -
  • Edit the configurable properties of the associated Manager.
  • -
  • Remove the associated Manager.
  • -
  • Create and configure a new Realm associated with - this object.
  • -
  • Edit the configurable properties of the associated Realm.
  • -
  • Remove the associated Realm.
  • -
  • Create and configure a new Request Filter associated with - this object.
  • -
  • Select and edit the configurable properties of an - associated Request Filter
  • -
  • Remove an associated Request Filter.
  • -
- -

Default Context

- -

From the perspective of a particular Default Context, it shall - be possible to perform the following administrative operations:

-
    -
  • Navigate to the owning Engine or Host.
  • -
  • Edit the configurable properties of this object.
  • -
  • Create and configure a new Environment Entry associated - with this object.
  • -
  • Select and edit the configurable properties of an associated - Environment Entry.
  • -
  • Remove an associated Environment Entry.
  • -
  • Create and configure a new JDBC Resource associated - with this object.
  • -
  • Select and edit the configurable properties of an associated - JDBC Resource.
  • -
  • Remove an associated JDBC Resource.
  • -
- -

Engine

- -

From the perspective of a particular Engine, it shall be - possible to perform the following administrative operations:

-
    -
  • Navigate to the owning Service.
  • -
  • Edit the configurable properties of this object.
  • -
  • Create and configure a new Access Logger associated - with this object.
  • -
  • Edit the configurable properties of the associated Access - Logger.
  • -
  • Remove the associated Access Logger.
  • -
  • Create and configure a new Default Context associated - with this object.
  • -
  • Edit the configurable properties of the associated Default - Context.
  • -
  • Remove the associated Default Context.
  • -
  • Create and configure a new Host associated with - this object.
  • -
  • Select and edit the configurable properties of an - associated Host.
  • -
  • Remove an associated Host.
  • -
  • Create and configure a new Realm associated with - this object.
  • -
  • Edit the configurable properties of the associated Realm.
  • -
  • Remove the associated Realm.
  • -
  • Create and configure a new Request Filter associated with - this object.
  • -
  • Select and edit the configurable properties of an - associated Request Filter
  • -
  • Remove an associated Request Filter.
  • -
- -

Environment Entry

- -

From the perspective of a particular Environment Entry, it shall - be possible to perform the following administrative operations:

-
    -
  • Navigate to the owning Context or Default Context.
  • -
  • Edit the configurable properties of this object.
  • -
- -

Host

- -

From the perspective of a particular Host, it shall be - possible to perform the following administrative operations:

-
    -
  • Navigate to the owning Engine.
  • -
  • Edit the configurable properties of this object.
  • -
  • Create and configure a new Access Logger associated - with this object.
  • -
  • Edit the configurable properties of the associated Access - Logger.
  • -
  • Remove the associated Access Logger.
  • -
  • Create and configure a new Context associated with - this object.
  • -
  • Select and edit the configurable properties of an associated - Context.
  • -
  • Remove an associated Context.
  • -
  • Create and configure a new Default Context associated - with this object.
  • -
  • Edit the configurable properties of the associated Default - Context.
  • -
  • Remove the associated Default Context.
  • -
  • Create and configure a new Realm associated with - this object.
  • -
  • Edit the configurable properties of the associated Realm.
  • -
  • Remove the associated Realm.
  • -
  • Create and configure a new Request Filter associated with - this object.
  • -
  • Select and edit the configurable properties of an - associated Request Filter
  • -
  • Remove an associated Request Filter.
  • -
- -

JDBC Resource

- -

From the perspective of a particular JDBC Resource, it shall - be possible to perform the following administrative operations:

-
    -
  • Navigate to the owning Context or Default Context.
  • -
  • Edit the configurable properties of this object.
  • -
- -

Loader

- -

From the perspective of a particular Loader, it shall - be possible to perform the following administrative operations:

-
    -
  • Navigate to the owning Context.
  • -
  • Edit the configurable properties of this object.
  • -
- -

Manager

- -

From the perspective of a particular Manager, it shall - be possible to perform the following administrative operations:

-
    -
  • Navigate to the owning Context.
  • -
  • Edit the configurable properties of this object.
  • -
- -

Realm

- -

From the perspective of a particular Realm, it shall - be possible to perform the following administrative operations:

-
    -
  • Navigate to the owning Engine, Host, or - Context.
  • -
  • Edit the configurable properties of this object.
  • -
- -

Request Filter

- -

From the perspective of a particular Request Filter, it shall - be possible to perform the following administrative operations:

-
    -
  • Navigate to the owning Engine, Host, or - Context.
  • -
  • Edit the configurable properties of this object.
  • -
- -

Server

- -

From the perspective of the overall Server, it shall be - possible to perform the following administrative operations:

-
    -
  • Edit the configurable properties of this object.
  • -
  • Create and configure a new Service associated with - this object.
  • -
  • Select and edit the configurable properties of an associated - Service.
  • -
- -

Service

- -

From the perspective of a particular Service, it shall be - possible to perform the following administrative operations:

-
    -
  • Navigate to the owning Server.
  • -
  • Edit the configurable properties of this object.
  • -
  • Create and configure a new Connector associated with - this object.
  • -
  • Select and edit the configurable properties of an associated - Connector.
  • -
  • Remove an associated Connector.
  • -
  • Create and configure a new Engine associated with - this object.
  • -
  • Edit the configurable properties of the associated Engine.
  • -
  • Remove the associated Engine.
  • -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-default.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-default.html deleted file mode 100644 index 4e857af2f85669402bee07dcf9671ef89aea9415..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-default.html +++ /dev/null @@ -1,270 +0,0 @@ - -Catalina Functional Specifications (8.5.27) - Default Servlet

Default Servlet

Table of Contents

Overview

- - -

Introduction

- -

The purpose of the Default Servlet is to serve - static resources of a web application in response to client requests. - As the name implies, it is generally configured as the "default" - servlet for a web application, by being mapped to a URL pattern "/".

- -
- - -

External Specifications

- -

The following external specifications have provisions which - partially define the correct behavior of the default servlet:

- - -
- - -

Implementation Requirements

- -

The implementation of this functionality shall conform to the - following requirements:

-
    -
  • Must be implemented as a servlet.
  • -
  • Must support configurable parameters for debugging detail level, - input buffer size, output buffer size, whether or not to produce - directory listings when no welcome file is present, and whether or not - modifications are supported via DELETE and PUT.
  • -
  • Log debugging and operational messages (suitably internationalized) - via the getServletContext().log() method.
  • -
- -
- - -

Dependencies

- - -

Environmental Dependencies

- -

The following environmental dependencies must be met in order for - the default servlet to operate correctly:

-
    -
  • The default servlet must be registered in the application deployment - descriptor (or the default deployment descriptor in file - $CATALINA_BASE/conf/web.xml) using a "default servlet" - servlet mapping, signified by URL pattern "/".
  • -
- -
- - -

Container Dependencies

- -

Correct operation of the default servlet depends on the following - specific features of the surrounding container:

-
    -
  • The container shall provide a servlet context attribute that - lists the welcome file names that have been defined for this - web application.
  • -
  • The container shall provide a servlet context attribute that - contains a javax.naming.directory.DirContext - implementation representing the static resources of this - web application.
  • -
- -
- - -

Functionality

- - -

Initialization Functionality

- -

The following processing must be performed when the init() - method of the default servlet is called:

-
    -
  • Process and sanity check configuration parameters.
  • -
- -
- - -

Per-Request Functionality

- - -

For all HTTP request methods, the resource path is determined from - the path information provided to this request, either as request attribute - javax.servlet.include.path_info (for a request dispatcher - access to a static resource) or by calling - request.getPathInfo() directly.

- -

On each HTTP DELETE request processed by this servlet, the following - processing shall be performed:

-
    -
  • If modifications to the static resources are not allowed (set by a - configuration parameter), return HTTP status 403 (forbidden).
  • -
  • If an attempt is made to delete a resource from /META-INF - or /WEB-INF, return HTTP status 403 (forbidden).
  • -
  • If the requested resource does not exist, return HTTP status 404 - (not found)
  • -
  • Unbind the resource from the directory context containing the - static resources for this web application. If successful, return - HTTP status 204 (no content). Otherwise, return HTTP status 405 - (method not allowed).
  • -
- - -

On each HTTP GET request processed by this servlet, the following - processing shall be performed:

-
    -
  • If the request is for a resource under /META-INF or - /WEB-INF, return HTTP status 404 (not found).
  • -
  • If the requested resource does not exist, return HTTP status 404 - (not found).
  • -
  • If the requested resource is not a directory, but the resource - path ends in "/" or "\", return HTTP status 404 (not found).
  • -
  • If the requested resource is a directory: -
      -
    • If the request path does not end with "/", redirect to a - corresponding path with "/" appended so that relative references - in welcome files are resolved correctly.
    • -
    • If one of the specified welcome files exists, redirect to the - path for that welcome file so that it will be served explicitly. -
    • -
  • -
  • If the request being processed contains an If-Range - header, perform the processing described in the HTTP/1.1 specification - to determine whether the client's information is up to date.
  • -
  • Determine the content type of the response, by looking up the - corresponding MIME type in our servlet context.
  • -
  • If the requested resource is a directory: -
      -
    • If directory listings are suppressed, return HTTP status 404 - (not found).
    • -
    • Set the content type to text/html.
    • -
  • -
  • Determine the range(s) to be returned, based on the existence of - any If-Range and Range headers.
  • -
  • If the requested resource is a directory, include an ETag - header in the response, with the value calculated based on the content - of the directory.
  • -
  • Include a Last-Modified header in the response documenting - the date/time that the resource was last modified.
  • -
  • Unless we are processing a HEAD request, include the appropriate - content (or content ranges) in the response.
  • -
- -

On each HTTP HEAD request processed by this servlet, the following - processing shall be performed:

-
    -
  • Processed identically to an HTTP GET request, except that the data - content is not transmitted after the headers.
  • -
- -

On each HTTP POST request processed by this servlet, the following - processing shall be performed:

-
    -
  • Processed identically to an HTTP GET request.
  • -
- - -

On each HTTP PUT request processed by this servlet, the following - processing shall be performed:

-
    -
  • If modifications to the static resources are not allowed (set by a - configuration parameter), return HTTP status 403 (forbidden).
  • -
  • If an attempt is made to delete a resource from /META-INF - or /WEB-INF, return HTTP status 403 (forbidden).
  • -
  • Create a new resource from the body of this request.
  • -
  • Bind or rebind the specified path to the new resource (depending on - whether it currently exists or not). Return HTTP status as follows: -
      -
    • If binding was unsuccessful, return HTTP status 409 (conflict). -
    • -
    • If binding was successful and the resource did not previously - exist, return HTTP status 201 (created).
    • -
    • If binding was successful and the resource previously existed, - return HTTP status 204 (no content).
    • -
  • -
- -
- - -

Finalization Functionality

- -

No specific processing is required when the destroy() - method is called:

- -
- - -

Testable Assertions

- -

In addition to the assertions implied by the functionality requirements - listed above, the following additional assertions shall be tested to - validate the behavior of the default servlet:

-
    -
  • Requests for resources that do not exist in the web application must - return HTTP status 404 (not found).
  • -
  • The default servlet must operate identically for web applications that - are run out of a WAR file directly, or from an unpacked directory - structure.
  • -
  • If the web application is running out of an unpacked directory - structure, the default servlet must recognize cases where the resource - has been updated through external means.
  • -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-jdbc-realm.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-jdbc-realm.html deleted file mode 100644 index 41f97d340e5e7ea9c044fbf96bb8effa33068585..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-jdbc-realm.html +++ /dev/null @@ -1,266 +0,0 @@ - -Catalina Functional Specifications (8.5.27) - JDBCRealm

JDBCRealm

Table of Contents

Overview

- - -

Introduction

- -

The purpose of the JDBCRealm implementation is to - provide a mechanism by which Tomcat can acquire information needed - to authenticate web application users, and define their security roles, - from a relational database accessed via JDBC APIs. For integration - with Catalina, the resulting class(es) must implement the - org.apache.catalina.Realm interface.

- -

This specification reflects a combination of functionality that is - already present in the org.apache.catalina.realm.JDBCRealm - class, as well as requirements for enhancements that have been - discussed. Where appropriate, requirements statements are marked - [Current] and [Requested] to distinguish them.

- -

The current status of this functional specification is - PROPOSED. It has not yet been discussed and - agreed to on the TOMCAT-DEV mailing list.

- -
- - -

External Specifications

- -

The implementation of this functionality depends on the following - external specifications:

- - -
- - -

Implementation Requirements

- -

The implementation of this functionality shall conform to the - following requirements:

-
    -
  • Be realized in one or more implementation classes.
  • -
  • Implement the org.apache.catalina.Realm interface. - [Current]
  • -
  • Implement the org.apache.catalina.Lifecycle - interface. [Current]
  • -
  • Subclass the org.apache.catalina.realm.RealmBase - base class.
  • -
  • Live in the org.apache.catalina.realm package. - [Current]
  • -
  • Support a configurable debugging detail level. [Current]
  • -
  • Log debugging and operational messages (suitably internationalized) - via the getContainer().log() method. [Current]
  • -
- -
- - -

Dependencies

- - -

Environmental Dependencies

- -

The following environmental dependencies must be met in order for - JDBCRealm to operate correctly:

-
    -
  • The desire to utilize JDBCRealm must be registered in - $CATALINA_BASE/conf/server.xml, in a - <Realm> element that is nested inside a - corresponding <Engine>, <Host>, - or <Context> element.
  • -
- -
- - -

Container Dependencies

- -

Correct operation of JDBCRealm depends on the following - specific features of the surrounding container:

-
    -
  • Interactions with JDBCRealm will be initiated by - the appropriate Authenticator implementation, based - on the login method that is selected.
  • -
  • JDBCRealm must have the JDBC standard API classes - available to it. For a JDK 1.2 or later container, these APIs - are included in the standard platform.
  • -
  • When connection pooling is implemented, JDBCRealm - must have the JDBC Optional Package (version 2.0 or later) APIs - available to it. This library is available as a separate - download (and will be included in Tomcat binary distributions).
  • -
- -
- - -

Functionality

- - -

Overview of Operation

- -

The main purpose of JDBCRealm is to allow Catalina to - authenticate users, and look up the corresponding security roles, from - the information found in a relational database accessed via JDBC APIs. - For maximum flexibility, the details of how this is done (for example, - the names of the required tables and columns) should be configurable.

- -

Each time that Catalina needs to authenticate a user, it will call - the authenticate() method of this Realm implementation, - passing the username and password that were specified by the user. If - we find the user in the database (and match on the password), we accumulate - all of the security roles that are defined for this user, and create a - new GenericPrincipal object to be returned. If the user - is not authenticated, we return null instead. The - GenericUser object caches the set of security roles that - were owned by this user at the time of authentication, so that calls to - isUserInRole() can be answered without going back to the - database every time.

- -
- - -

Detailed Functional Requirements

- - -

Configurable Properties

- -

The implementation shall support the following properties - that can be configured with JavaBeans property setters:

-
    -
  • Configuration parameters defining the JDBC driver to use, the - database connection URL to be accessed, and the username/password - to use for logging in. [Current]
  • -
  • Configuration parameters describing the connection pool to be - created to support simultaneous authentications. [Requested]
  • -
  • Name of the tables to be searched for users and roles. [Current]
  • -
  • Name of the columns to be used for usernames, passwords, and - role names. [Current]
  • -
- -

Lifecycle Functionality

- -

The following processing must be performed when the start() - method is called:

-
    -
  • Establish a connection to the configured database, using the - configured username and password. [Current]
  • -
  • Configure and establish a connection pool of connections to the - database. [Requested]
  • -
- -

The following processing must be performed when the stop() - method is called:

-
    -
  • Close any opened connections to the database.
  • -
- - -

Method authenticate() Functionality

- -

When authenticate() is called, the following processing - is required:

-
    -
  • Acquire the one and only connection [Current] or acquire a connection - from the connection pool [Requested].
  • -
  • Select the one and only row from the user's table for this user, - and retrieve the corresponding password column. If zero rows (or - more than one row) are found, return null.
  • -
  • Authenticate the user by comparing the (possibly encrypted) password - value that was received against the password presented by the user. - If there is no match, return null.
  • -
  • Acquire a List of the security roles assigned to the - authenticated user by selecting from the roles table.
  • -
  • Construct a new instance of class - org.apache.catalina.realm.GenericPrincipal, passing as - constructor arguments: this realm instance, the authenticated - username, and a List of the security roles associated - with this user.
  • -
  • WARNING - Do not attempt to cache and reuse previous - GenericPrincipal objects for a particular user, because - the information in the directory server might have changed since the - last time this user was authenticated.
  • -
  • Return the newly constructed GenericPrincipal.
  • -
- - -

Method hasRole() Functionality

- -

When hasRole() is called, the following processing - is required:

-
    -
  • The principal that is passed as an argument SHOULD - be one that we returned (instanceof class - org.apache.catalina.realm.GenericPrincipal, with a - realm property that is equal to our instance.
  • -
  • If the passed principal meets these criteria, check - the specified role against the list returned by - getRoles(), and return true if the - specified role is included; otherwise, return false.
  • -
  • If the passed principal does not meet these criteria, - return false.
  • -
- -
- -

Testable Assertions

- -

In addition to the assertions implied by the functionality requirements - listed above, the following additional assertions shall be tested to - validate the behavior of JDBCRealm:

-
    -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-jndi-realm.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-jndi-realm.html deleted file mode 100644 index b078ba42eecf4990f534cefea5a811fdf0bf428e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-jndi-realm.html +++ /dev/null @@ -1,417 +0,0 @@ - -Catalina Functional Specifications (8.5.27) - JNDIRealm

JNDIRealm

Table of Contents

Overview

- - -

Introduction

- -

The purpose of the JNDIRealm implementation is to - provide a mechanism by which Tomcat can acquire information needed - to authenticate web application users, and define their security roles, - from a directory server or other service accessed via JNDI APIs. For - integration with Catalina, this class must implement the - org.apache.catalina.Realm interface.

- -

This specification reflects a combination of functionality that is - already present in the org.apache.catalina.realm.JNDIRealm - class, as well as requirements for enhancements that have been - discussed. Where appropriate, requirements statements are marked - [Current] and [Requested] to distinguish them.

- -

The current status of this functional specification is - PROPOSED. It has not yet been discussed and - agreed to on the TOMCAT-DEV mailing list.

- -

The code in the current version of JNDIRealm, and the - ideas expressed in this functional specification, are the results of - contributions from many individuals, including (alphabetically):

-
    -
  • Holman, John <j.g.holman@qmw.ac.uk>
  • -
  • Lockhart, Ellen <elockhart@home.com>
  • -
  • McClanahan, Craig <craigmcc@apache.org>
  • -
- -
- - -

External Specifications

- -

The implementation of this functionality depends on the following - external specifications:

- - -
- - -

Implementation Requirements

- -

The implementation of this functionality shall conform to the - following requirements:

-
    -
  • Be realized in one or more implementation classes.
  • -
  • Implement the org.apache.catalina.Realm interface. - [Current]
  • -
  • Implement the org.apache.catalina.Lifecycle - interface. [Current]
  • -
  • Subclass the org.apache.catalina.realm.RealmBase - base class.
  • -
  • Live in the org.apache.catalina.realm package. - [Current]
  • -
  • Support a configurable debugging detail level. [Current]
  • -
  • Log debugging and operational messages (suitably internationalized) - via the getContainer().log() method. [Current]
  • -
- -
- - -

Dependencies

- - -

Environmental Dependencies

- -

The following environmental dependencies must be met in order for - JNDIRealm to operate correctly:

-
    -
  • The desire to utilize JNDIRealm must be registered in - $CATALINA_BASE/conf/server.xml, in a - <Realm> element that is nested inside a - corresponding <Engine>, <Host>, - or <Context> element.
  • -
  • If the Administrator Login operational mode is selected, - the configured administrator username and password must be configured - in the corresponding directory server.
  • -
  • If the Username Login operational mode is selected, - the corresponding directory server must be configured to accept - logins with the username and password that will be passed to - JNDIRealm by the appropriate Authenticator. -
  • -
- -
- - -

Container Dependencies

- -

Correct operation of JNDIRealm depends on the following - specific features of the surrounding container:

-
    -
  • Interactions with JNDIRealm will be initiated by - the appropriate Authenticator implementation, based - on the login method that is selected.
  • -
- -
- - -

Functionality

- - -

Operational Modes

- -

The completed JNDIRealm must support two major operational - modes in order to support all of the required use cases. For the purposes - of this document, the modes are called administrator login and - Username Login. They are described further in the following - paragraphs.

- -

For Administrator Login mode, JNDIRealm will be - configured to establish one or more connections (using a connection pool) - to an appropriate directory server, using JNDI APIs, under a "system - administrator" username and password. This is similar to the approach - normally used to configure JDBCRealm to access authentication - and access control information in a database. It is assumed that the - system administrator username and password that are configured provide - sufficient privileges within the directory server to read (but not modify) - the username, password, and assigned roles for each valid user of the - web application associated with this Realm. The password - can be stored in cleartext, or in one of the digested modes supported by - the org.apache.catalina.realm.RealmBase base class.

- -

For Username Login mode, JNDIRealm does not - normally remain connected to the directory server. Instead, whenever a - user is to be authenticated, a connection to the directory server - (using the username and password received from the authenticator) is - attempted. If this connection is successful, the user is assumed to be - successfully authenticated. This connection is then utilized to read - the corresponding security roles associated with this user, and the - connection is then broken.

- -

NOTE - Username Login mode cannot be used - if you have selected login method DIGEST in your web - application deployment descriptor (web.xml) file. This - restriction exists because the cleartext password is never available - to the container, so it is not possible to bind to the directory server - using the user's username and password.

- -

Because these operational modes work so differently, the functionality - for each mode will be described separately. Whether or not both modes - are actually supported by a single class (versus a class per mode) is - an implementation detail left to the designer.

- -

NOTE - The current implementation only implements - part of the Administrator Lookup mode requirements. It does - not support the Username Lookup mode at all, at this point.

- -
- - -

Administrator Login Mode Functionality

- - -

Configurable Properties

- -

The implementation shall support the following properties - that can be configured with JavaBeans property setters:

-
    -
  • connectionURL - URL of the directory server we will - be contacting.
  • -
  • contextFactory - Fully qualified class name of the JNDI - context factory used to retrieve our InitialContext. - [com.sun.jndi.ldap.LdapCtxFactory]
  • -
  • Additional configuration properties required to establish the - appropriate connection. [Requested]
  • -
  • Connection pool configuration properties. [Requested]
  • -
  • Configuration properties defining how a particular user is - authenticated. The following capabilities should be supported: -
      -
    • Substitute the specified username into a string. [Requested]
    • -
    • Retrieve the distinguished name (DN) of an authorized user via an - LDAP search string with a replacement placeholder for the - username, and comparison of the password to a configurable - attribute retrieved from the search result. [Current]
    • -
  • -
  • Configuration properties defining how the roles associated with a - particular authenticated user can be retrieved. The following - approaches should be supported: -
      -
    • Retrieve a specified attribute (possibly multi-valued) - from an LDAP search expression, - with a replacement placeholder for the DN of the user. - [Current]
    • -
    • Retrieve a set of role names that are defined implicitly (by - selecting principals that match a search pattern) rather than - explicitly (by finding a particular attribute value). - [Requested]
    • -
  • -
- -

Lifecycle Functionality

- -

The following processing must be performed when the start() - method is called:

-
    -
  • Establish a connection to the configured directory server, using the - configured system administrator username and password. [Current]
  • -
  • Configure and establish a connection pool of connections to the - directory server. [Requested]
  • -
- -

The following processing must be performed when the stop() - method is called:

-
    -
  • Close any opened connections to the directory server.
  • -
- - -

Method authenticate() Functionality

- -

When authenticate() is called, the following processing - is required:

-
    -
  • Acquire the one and only connection [Current] or acquire a connection - from the connection pool [Requested].
  • -
  • Authenticate the user by retrieving the user's Distinguished Name, - based on the specified username and password.
  • -
  • If the user was not authenticated, release the allocated connection - and return null.
  • -
  • Acquire a List of the security roles assigned to the - authenticated user.
  • -
  • Construct a new instance of class - org.apache.catalina.realm.GenericPrincipal, passing as - constructor arguments: this realm instance, the authenticated - username, and a List of the security roles associated - with this user.
  • -
  • WARNING - Do not attempt to cache and reuse previous - GenericPrincipal objects for a particular user, because - the information in the directory server might have changed since the - last time this user was authenticated.
  • -
  • Return the newly constructed GenericPrincipal.
  • -
- - -

Method hasRole() Functionality

- -

When hasRole() is called, the following processing - is required:

-
    -
  • The principal that is passed as an argument SHOULD - be one that we returned (instanceof class - org.apache.catalina.realm.GenericPrincipal, with a - realm property that is equal to our instance.
  • -
  • If the passed principal meets these criteria, check - the specified role against the list returned by - getRoles(), and return true if the - specified role is included; otherwise, return false.
  • -
  • If the passed principal does not meet these criteria, - return false.
  • -
- -
- - -

Username Login Mode Functionality

- -

Configurable Properties

- -

The implementation shall support the following properties - that can be configured with JavaBeans property setters:

-
    -
  • connectionURL - URL of the directory server we will - be contacting.
  • -
  • contextFactory - Fully qualified class name of the JNDI - context factory used to retrieve our InitialContext. - [com.sun.jndi.ldap.LdapCtxFactory]
  • -
  • Additional configuration properties required to establish the - appropriate connection. [Requested]
  • -
  • Connection pool configuration properties. [Requested]
  • -
  • Configuration properties defining if and how a user might be looked - up before binding to the directory server. The following approaches - should be supported: -
      -
    • No previous lookup is required - username specified by the user - is the same as that used to authenticate to the directory - server.
    • -
    • Substitute the specified username into a string.
    • -
    • Search the directory server based on configured criteria to - retrieve the distinguished name of the user, then attempt to - bind with that distinguished name.
    • -
  • -
  • Configuration properties defining how the roles associated with a - particular authenticated user can be retrieved. The following - approaches should be supported: -
      -
    • Retrieve a specified attribute (possibly multi-valued) - from an LDAP search expression, - with a replacement placeholder for the DN of the user. - [Current]
    • -
  • -
- -

Lifecycle Functionality

- -

The following processing must be performed when the start() - method is called:

-
    -
  • None required.
  • -
- -

The following processing must be performed when the stop() - method is called:

-
    -
  • None required.
  • -
- - -

Method authenticate() Functionality

- -

When authenticate() is called, the following processing - is required:

-
    -
  • Attempt to bind to the directory server, using the username and - password provided by the user.
  • -
  • If the user was not authenticated, release the allocated connection - and return null.
  • -
  • Acquire a List of the security roles assigned to the - authenticated user.
  • -
  • Construct a new instance of class - org.apache.catalina.realm.GenericPrincipal, passing as - constructor arguments: this realm instance, the authenticated - username, and a List of the security roles associated - with this user.
  • -
  • WARNING - Do not attempt to cache and reuse previous - GenericPrincipal objects for a particular user, because - the information in the directory server might have changed since the - last time this user was authenticated.
  • -
  • Return the newly constructed GenericPrincipal.
  • -
- - -

Method hasRole() Functionality

- -

When hasRole() is called, the following processing - is required:

-
    -
  • The principal that is passed as an argument SHOULD - be one that we returned (instanceof class - org.apache.catalina.realm.GenericPrincipal, with a - realm property that is equal to our instance.
  • -
  • If the passed principal meets these criteria, check - the specified role against the list returned by - getRoles(), and return true if the - specified role is included; otherwise, return false.
  • -
  • If the passed principal does not meet these criteria, - return false.
  • -
- -
- -

Testable Assertions

- -

In addition to the assertions implied by the functionality requirements - listed above, the following additional assertions shall be tested to - validate the behavior of JNDIRealm:

-
    -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-memory-realm.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-memory-realm.html deleted file mode 100644 index 74ef5f3c5ac90989c57de675fa759a0e3a5fb605..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/fs-memory-realm.html +++ /dev/null @@ -1,253 +0,0 @@ - -Catalina Functional Specifications (8.5.27) - MemoryRealm

MemoryRealm

Table of Contents

Overview

- - -

Introduction

- -

The purpose of the MemoryRealm implementation is to - provide a mechanism by which Tomcat can acquire information needed - to authenticate web application users, and define their security roles, - from a simple text-based configuration file in XML format. This is - intended to simplify the initial installation and operation of Tomcat, - without the complexity of configuring a database or directory server - based Realm. It is not intended for production use.

- -

This specification reflects a combination of functionality that is - already present in the org.apache.catalina.realm.MemoryRealm - class, as well as requirements for enhancements that have been - discussed. Where appropriate, requirements statements are marked - [Current] and [Requested] to distinguish them.

- -

The current status of this functional specification is - PROPOSED. It has not yet been discussed and - agreed to on the TOMCAT-DEV mailing list.

- -
- - -

External Specifications

- -

The implementation of this functionality depends on the following - external specifications:

-
    -
  • None
  • -
- -
- - -

Implementation Requirements

- -

The implementation of this functionality shall conform to the - following requirements:

-
    -
  • Be realized in one or more implementation classes.
  • -
  • Implement the org.apache.catalina.Realm interface. - [Current]
  • -
  • Implement the org.apache.catalina.Lifecycle - interface. [Current]
  • -
  • Subclass the org.apache.catalina.realm.RealmBase - base class.
  • -
  • Live in the org.apache.catalina.realm package. - [Current]
  • -
  • Support a configurable debugging detail level. [Current]
  • -
  • Log debugging and operational messages (suitably internationalized) - via the getContainer().log() method. [Current]
  • -
- -
- - -

Dependencies

- - -

Environmental Dependencies

- -

The following environmental dependencies must be met in order for - MemoryRealm to operate correctly:

-
    -
  • The desire to utilize MemoryRealm must be registered in - $CATALINA_BASE/conf/server.xml, in a - <Realm> element that is nested inside a - corresponding <Engine>, <Host>, - or <Context> element. (This is already - included in the default server.xml file.)
  • -
- -
- - -

Container Dependencies

- -

Correct operation of MemoryRealm depends on the following - specific features of the surrounding container:

-
    -
  • Interactions with MemoryRealm will be initiated by - the appropriate Authenticator implementation, based - on the login method that is selected.
  • -
  • MemoryRealm must have an XML parser compatible with - the JAXP/1.1 APIs available to it. This is normally accomplished - by placing the corresponding JAR files in directory - $CATALINA_HOME/lib.
  • -
- -
- - -

Functionality

- - -

Overview of Operation

- -

The main purpose of MemoryRealm is to allow Catalina to - authenticate users, and look up the corresponding security roles, from - the information found in an XML-format configuration file. The format - of this file is described below. When a MemoryRealm - instance is started, it will read the contents of this XML file and create - an "in memory database" of all the valid users and their associated - security roles.

- -

Each time that Catalina needs to authenticate a user, it will call - the authenticate() method of this Realm implementation, - passing the username and password that were specified by the user. If - we find the user in the database (and match on the password), we accumulate - all of the security roles that are defined for this user, and create a - new GenericPrincipal object to be returned. If the user - is not authenticated, we return null instead. The - GenericUser object caches the set of security roles that - were owned by this user at the time of authentication, so that calls to - isUserInRole() can be answered without going back to the - database every time.

- -
- - -

Detailed Functional Requirements

- - -

Configurable Properties

- -

The implementation shall support the following properties - that can be configured with JavaBeans property setters:

-
    -
  • Configurable debugging detail level.
  • -
  • Configurable file pathname (absolute or relative to - $CATALINA_BASE of the XML file containing our - defined users. [conf/tomcat-users.xml].
  • -
- -

Lifecycle Functionality

- -

The following processing must be performed when the start() - method is called:

-
    -
  • Open and parse the specified XML file.
  • -
  • Create an in-memory database representation of the XML file - contents.
  • -
  • NOTE - There is no requirement to recognize - subsequent changes to the contents of the XML file.
  • -
- -

The following processing must be performed when the stop() - method is called:

-
    -
  • Release object references to the in-memory database representation.
  • -
- - -

Method authenticate() Functionality

- -

When authenticate() is called, the following processing - is required:

-
    -
  • Select the one and only "user" instance from the in-memory database, - based on matching the specified username. If there is no such - instance, return null.
  • -
  • Authenticate the user by comparing the (possibly encrypted) password - value that was received against the password presented by the user. - If there is no match, return null.
  • -
  • Construct a new instance of class - org.apache.catalina.realm.GenericPrincipal (if not - already using this as the internal database representation) that - contains the authenticated username and a List of the - security roles associated with this user.
  • -
  • Return the newly constructed GenericPrincipal.
  • -
- - -

Method hasRole() Functionality

- -

When hasRole() is called, the following processing - is required:

-
    -
  • The principal that is passed as an argument SHOULD - be one that we returned (instanceof class - org.apache.catalina.realm.GenericPrincipal, with a - realm property that is equal to our instance.
  • -
  • If the passed principal meets these criteria, check - the specified role against the list returned by - getRoles(), and return true if the - specified role is included; otherwise, return false.
  • -
  • If the passed principal does not meet these criteria, - return false.
  • -
- -
- -

Testable Assertions

- -

In addition to the assertions implied by the functionality requirements - listed above, the following additional assertions shall be tested to - validate the behavior of MemoryRealm:

-
    -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/index.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/index.html deleted file mode 100644 index 83fd2134e2ac63345949c6cf208cc80d27719de8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/index.html +++ /dev/null @@ -1,80 +0,0 @@ - -Catalina Functional Specifications (8.5.27) - Table of Contents

Table of Contents

Catalina Functional Specifications

- -

This documentation area includes functional specifications for -many features supported by the Catalina servlet container -portion of Tomcat. In most cases, these features are not documented in the -underlying Servlet or JSP specifications, so a definition of the expected -correct behavior is important both to implementors of those features, and to -test writers trying to decide what to test.

- -

The functional specifications are divided into the following categories -in the menu (to the left):

-
    -
  • Administrative Apps - Overall requirements for supporting an - ability to configure and operate a Tomcat installation through tools, - as well as detailed requirements for the tools themselves.
  • -
  • Internal Servlets - Requirements for Catalina features that are - implemented as internal, container-managed, servlets.
  • -
  • Realm Implementations - Requirements for the implementations of - the org.apache.catalina.Realm interface (providing access to - collections of users, passwords and roles) that are included in the - standard Tomcat distribution.
  • -
- -

NOTE - In some cases, the contents of these functional specs has -been "reverse engineered" from existing implementations. This exercise is -still useful, because it provides an introduction to what -Catalina does, without being as concerned with how this is -accomplished.

- -

TODO - Obviously, this area has a long ways to go before -it is complete. Contributions are welcome!

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/mbean-names.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/mbean-names.html deleted file mode 100644 index 328addbb2b5bd35f801a78a3b65766c7964e23dc..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/funcspecs/mbean-names.html +++ /dev/null @@ -1,701 +0,0 @@ - -Catalina Functional Specifications (8.5.27) - Tomcat MBean Names

Tomcat MBean Names

Table of Contents

Background

- -

We will be using JMX MBeans as the technology for - implementing manageability of Tomcat.

- -

One of the key concepts of JMX is that each management bean has a unique - name in the MBeanServer's registry, and that management applications can - utilize these names to retrieve the MBean of interest to them for a - particular management operation. This document proposes a naming convention - for MBeans that allows easy calculation of the name for a particular MBean. - For background information on JMX MBean names, see the Java Management - Extensions Instrumentation and Agent Specification, version 1.0, - section 6. In particular, we will be discussing the String Representation of - ObjectName instances.

- -

Catalina Object Hierarchy

- -

Tomcat's servlet container implementation, called Catalina, can be -represented as a hierarchy of objects that contain references to each other. -The object hierarchy can be represented as a tree, or (isomorphically) based -on the nesting of configuration elements in the conf/server.xml -file that is traditionally used to configure Tomcat stand-alone.

- -

The valid component nestings for Catalina are depicted in the following -table, with columns that contain the following values:

-
    -
  • Pattern - Nesting pattern of XML elements (in the - conf/server.xml file) used to configure this component.
  • -
  • Cardinality - Minimum and maximum number of occurrences of - this element at this nesting position, which also corresponds to the - minimum and maximum number of Catalina components.
  • -
  • Identifier - Name of the JavaBeans property of this component - that represents the unique identifier (within the nested hierarchy), - if any.
  • -
  • MBean ObjectName - The portion of the MBean object name that - appears after the domain name. For now, it should be - assumed that all of these MBeans appear in the default JMX domain.
  • -
- -

In the MBean ObjectName descriptions, several types of symbolic -expressions are utilized to define variable text that is replaced by -corresponding values:

-
    -
  • ${GROUP} - One of the standard MBean names of the specified - "group" category. For example, the expression ${REALM} - represents the values like JDBCRealm and JAASRealm - that identify the various MBeans for possible Realm components.
  • -
  • ${name} - Replaced by the value of property name - from the current component.
  • -
  • ${parent.name} - Replaced by the value of property - name from a parent of the current component, with the - parent's type identified by parent.
  • -
  • ${###} - An arbitrary numeric identifier that preserves - order but has no other particular meaning. In general, the server will - assign numeric values to existing instances with large gaps into which - new items can be configured if desired.
  • -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PatternCardinalityIdentifierMBean ObjectName
Server1..1(none)type=${SERVER}
Server / Listener0..n(none)type=${LISTENER}, sequence=${###}
Server / Service1..nnametype=${SERVICE}, name=${name}
Server / Service / Connector1..naddress, porttype=${CONNECTOR}, service=${service}, port=${port}, - address=${address}
Server / Service / Connector / Factory0..1(none)(Only defined explicitly for an SSL connector, but can be treated - as part of the connector component)
Server / Service / Connector / Listener0..n(none)type=${LISTENER}, sequence=${###}, service=${service}, - port=${connector.port}, address=${connector.address}
Server / Service / Engine1..1(none)type=${ENGINE}, service=${service.name}
Server / Service / Engine / Host1..nnametype=${HOST}, host=${name}, - service=${service.name}
Server / Service / Engine / Host / Context1..npathtype=${CONTEXT}, context=${name}, host=${host.name}, - service=${service.name}
Server / Service / Engine / Host / Context / Listener0..n(none)type=${LISTENER}, sequence=${###}, context=${context.name}, - host=${host.name}, service=${service.name}
Server / Service / Engine / Host / Context / Loader0..1(none)type=${LOADER}, context=${context.name}, host=${host.name}, - service=${service.name}
Server / Service / Engine / Host / Context / Manager0..1(none)type=${MANAGER}, context=${context.name}, host=${host.name}, - service=${service.name}
Server / Service / Engine / Host / Context / Realm0..1(none)type=${REALM}, context=${context.name}, host=${host.name}, - service=${service.name}
Server / Service / Engine / Host / Context / Resources0..1(none)type=${RESOURCES}, context=${context.name}, host=${host.name}, - service=${service.name}
Server / Service / Engine / Host / Context / Valve0..n(none)type=${VALVE}, sequence=${###}, context=${context.name}, - host=${host.name}, service=${service.name}
Server / Service / Engine / Host / Context / Wrapper0..n(none)j2eeType=Servlet,name=${name}, - WebModule=//${host.name}/${context.name}, - J2EEApplication=${context.J2EEApplication}, - J2EEServer=${context.J2EEServer}
Server / Service / Engine / Host / Context / WrapperLifecycle0..n(none)type=${WRAPPER-LIFECYCLE}, sequence=${###}, - context=${context.name}, host=${host.name}, - service=${service.name}
Server / Service / Engine / Host / Context / WrapperListener0..n(none)type=${WRAPPER-LISTENER}, sequence=${###}, - context=${context.name}, host=${host.name}, - service=${service.name}
Server / Service / Engine / Host / Listener0..n(none)type=${LISTENER}, sequence=${###}, host=${host.name}, - service=${service.name}
Server / Service / Engine / Host / Realm0..1(none)type=${REALM}, host=${host.name}, - service=${service.name}
Server / Service / Engine / Host / Valve0..n(none)type=${VALVE}, sequence=${###}, - host=${host.name}, service=${service.name}
Server / Service / Engine / Listener0..n(none)type=${LISTENER}, sequence=${###} - (FIXME - disambiguate from Server / Service / - Listener)
Server / Service / Engine / Realm0..1(none)type=${REALM}, service=${service.name}
Server / Service / Engine / Valve0..n(none)type=${VALVE}, sequence=${###}, - service=${service.name}
Server / Service / Listener0..n(none)type=${LISTENER}, sequence=${###} - (FIXME - disambiguate from Server / Service / - Engine / Listener)
- -

MBean Groups and Names

- -

The following MBean names shall be defined in the resource file -/org/apache/catalina/mbeans/mbeans-descriptors.xml (and -therefore available for use within the Administration/Configuration -web application for Tomcat):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MBean NameGroup NameCatalina InterfaceImplementation Class
AccessLogValveVALVEorg.apache.catalina.Valveorg.apache.catalina.valves.AccessLogValve
BasicAuthenticatorVALVEorg.apache.catalina.Valveorg.apache.catalina.authenticator.BasicAuthenticator
CertificatesValveVALVEorg.apache.catalina.Valveorg.apache.catalina.valves.CertificatesValve
ContextConfigLISTENERorg.apache.catalina.LifecycleListenerorg.apache.catalina.startup.ContextConfig
ContextEnvironmentRESOURCESorg.apache.catalina.deploy.ContextEnvironmentorg.apache.catalina.deploy.ContextEnvironment
ContextResourceRESOURCESorg.apache.catalina.deploy.ContextResourceorg.apache.catalina.deploy.ContextResource
ContextResourceLinkRESOURCESorg.apache.catalina.deploy.ContextResourceLinkorg.apache.catalina.deploy.ContextResourceLink
CoyoteConnectorCONNECTORorg.apache.catalina.Connectororg.apache.coyote.tomcat4.CoyoteConnector
DigestAuthenticatorVALVEorg.apache.catalina.Valveorg.apache.catalina.authenticator.DigestAuthenticator
EngineConfigLISTENERorg.apache.catalina.LifecycleListenerorg.apache.catalina.startup.EngineConfig
ErrorReportValveVALVEorg.apache.catalina.Valveorg.apache.catalina.valves.ErrorReportValve
ErrorDispatcherValveVALVEorg.apache.catalina.Valveorg.apache.catalina.valves.ErrorDispatcherValve
FormAuthenticatorVALVEorg.apache.catalina.Valveorg.apache.catalina.authenticator.FormAuthenticator
GroupGROUPorg.apache.catalina.Grouporg.apache.catalina.Group
HostConfigLISTENERorg.apache.catalina.LifecycleListenerorg.apache.catalina.startup.HostConfig
HttpConnector10CONNECTORorg.apache.catalina.Connectororg.apache.catalina.connector.http10.HttpConnector
HttpConnector11CONNECTORorg.apache.catalina.Connectororg.apache.catalina.connector.http.HttpConnector
JAASRealmREALMorg.apache.catalina.Realmorg.apache.catalina.realm.JAASRealm
JDBCRealmREALMorg.apache.catalina.Realmorg.apache.catalina.realm.JDBCRealm
JDBCUserDatabaseUSERDATABASEorg.apache.catalina.users.JDBCUserDatabaseorg.apache.catalina.users.JDBCUserDatabase
JNDIRealmREALMorg.apache.catalina.Realmorg.apache.catalina.realm.JNDIRealm
MBeanFactoryorg.apache.catalina.mbeans.MBeanFactory
MemoryRealmREALMorg.apache.catalina.Realmorg.apache.catalina.realm.MemoryRealm
MemoryUserDatabaseUSERDATABASEorg.apache.catalina.users.MemoryUserDatabaseorg.apache.catalina.users.MemoryUserDatabase
NamingContextListenerLISTENERorg.apache.catalina.LifecycleListenerorg.apache.catalina.core.NamingContextListener
NamingResourcesRESOURCESorg.apache.catalina.deploy.NamingResourcesorg.apache.catalina.deploy.NamingResources
NonLoginAuthenticatorVALVEorg.apache.catalina.Valveorg.apache.catalina.authenticator.NonLoginAuthenticator
PersistentManagerMANAGERorg.apache.catalina.Managerorg.apache.catalina.session.PersistentManager
RemoteAddrValveVALVEorg.apache.catalina.Valveorg.apache.catalina.valves.RemoteAddrValve
RemoteHostValveVALVEorg.apache.catalina.Valveorg.apache.catalina.valves.RemoteHostValve
RequestDumperValveVALVEorg.apache.catalina.Valveorg.apache.catalina.valves.RequestDumperValve
RoleROLEorg.apache.catalina.Roleorg.apache.catalina.Role
SingleSignOnVALVEorg.apache.catalina.Valveorg.apache.catalina.valves.SingleSignOn
SSLAuthenticatorVALVEorg.apache.catalina.Valveorg.apache.catalina.authenticator.SSLAuthenticator
StandardContextCONTEXTorg.apache.catalina.Contextorg.apache.catalina.core.StandardContext
StandardContextValveVALVEorg.apache.catalina.Valveorg.apache.catalina.core.StandardContextValve
StandardEngineENGINEorg.apache.catalina.Engineorg.apache.catalina.core.StandardEngine
StandardEngineValveVALVEorg.apache.catalina.Valveorg.apache.catalina.core.StandardEngineValve
StandardHostHOSTorg.apache.catalina.Hostorg.apache.catalina.core.StandardHost
StandardHostValveVALVEorg.apache.catalina.Valveorg.apache.catalina.core.StandardHostValve
StandardManagerMANAGERorg.apache.catalina.Managerorg.apache.catalina.session.StandardManager
StandardServerSERVERorg.apache.catalina.Serverorg.apache.catalina.core.StandardServer
StandardServiceSERVICEorg.apache.catalina.Serviceorg.apache.catalina.core.StandardService
StandardWrapperWRAPPERorg.apache.catalina.Wrapperorg.apache.catalina.core.StandardWrapper
StandardWrapperValveVALVEorg.apache.catalina.Valveorg.apache.catalina.core.StandardWrapperValve
UserUSERorg.apache.catalina.Userorg.apache.catalina.User
UserDatabaseRealmREALMorg.apache.catalina.Realmorg.apache.catalina.realm.UserDatabaseRealm
WebappLoaderLOADERorg.apache.catalina.Loaderorg.apache.catalina.loader.WebappLoader
- -

JSR-88 Cross Reference

- -

The deployment objects in the JSR-88 API object hierarchy correspond -to the specified MBean names or groups as follows:

- - - - - - - - - - - - - - - - - - - - - -
JSR-88 API ObjectMBean Name or GroupComments
DeployableObject${CONTEXT}Context deployment info plus the corresponding WAR file
Target${HOST}
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/html-manager-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/html-manager-howto.html deleted file mode 100644 index 0726093bac81fba8e57aa7b783e2dc0b0f23ff1e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/html-manager-howto.html +++ /dev/null @@ -1,537 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Tomcat Web Application Manager How To

Tomcat Web Application Manager How To

Table of Contents

Introduction

- -

In many production environments it is very useful to have the capability -to manage your web applications without having to shut down and restart -Tomcat. This document is for the HTML web interface to the web application -manager.

- -

The interface is divided into six sections:

-
    -
  • Message - Displays success and failure messages.
  • -
  • Manager - General manager operations like list and - help.
  • -
  • Applications - List of web applications and - commands.
  • -
  • Deploy - Deploying web applications.
  • -
  • Diagnostics - Identifying potential problems.
  • -
  • Server Information - Information about the Tomcat - server.
  • -
- -

Message

- -

-Displays information about the success or failure of the last web application -manager command you performed. If it succeeded OK is displayed -and may be followed by a success message. If it failed FAIL -is displayed followed by an error message. Common failure messages are -documented below for each command. The complete list of failure messages for -each command can be found in the manager web -application documentation. -

- -

Manager

- -

The Manager section has three links:

-
    -
  • List Applications - Redisplay a list of web - applications.
  • -
  • HTML Manager Help - A link to this document.
  • -
  • Manager Help - A link to the comprehensive Manager - App HOW TO.
  • -
- -

Applications

- -

The Applications section lists information about all the installed web -applications and provides links for managing them. For each web application -the following is displayed:

-
    -
  • Path - The web application context path.
  • -
  • Display Name - The display name for the web application - if it has one configured in its "web.xml" file.
  • -
  • Running - Whether the web application is running and - available (true), or not running and unavailable (false).
  • -
  • Sessions - The number of active sessions for remote - users of this web application. The number of sessions is a link which - when submitted displays more details about session usage by the web - application in the Message box.
  • -
  • Commands - Lists all commands which can be performed on - the web application. Only those commands which can be performed will be - listed as a link which can be submitted. No commands can be performed on - the manager web application itself. The following commands can be - performed: -
      -
    • Start - Start a web application which had been - stopped.
    • -
    • Stop - Stop a web application which is currently - running and make it unavailable.
    • -
    • Reload - Reload the web application so that new - ".jar" files in /WEB-INF/lib/ or new classes in - /WEB-INF/classes/ can be used.
    • -
    • Undeploy - Stop and then remove this web - application from the server.
    • -
    -
  • -
- -

Start

- -

Signal a stopped application to restart, and make itself available again. -Stopping and starting is useful, for example, if the database required by -your application becomes temporarily unavailable. It is usually better to -stop the web application that relies on this database rather than letting -users continuously encounter database exceptions.

- -

If this command succeeds, you will see a Message like this:

-
OK - Started application at context path /examples
- -

Otherwise, the Message will start with FAIL and include an -error message. Possible causes for problems include:

-
    -
  • Encountered exception -

    An exception was encountered trying to start the web application. - Check the Tomcat logs for the details.

    -
  • -
  • Invalid context path was specified -

    The context path must start with a slash character, unless you are - referencing the ROOT web application -- in which case the context path - must be a zero-length string.

    -
  • -
  • No context exists for path /foo -

    There is no deployed application on the context path - that you specified.

    -
  • -
  • No context path was specified -

    - The path parameter is required. -

    -
  • -
- -
- -

Stop

- -

Signal an existing application to make itself unavailable, but leave it -deployed. Any request that comes in while an application is -stopped will see an HTTP error 404, and this application will show as -"stopped" on a list applications command.

- -

If this command succeeds, you will see a Message like this:

-
OK - Stopped application at context path /examples
- -

Otherwise, the Message will start with FAIL and include an -error message. Possible causes for problems include:

-
    -
  • Encountered exception -

    An exception was encountered trying to stop the web application. - Check the Tomcat logs for the details.

    -
  • -
  • Invalid context path was specified -

    The context path must start with a slash character, unless you are - referencing the ROOT web application -- in which case the context path - must be a zero-length string.

    -
  • -
  • No context exists for path /foo -

    There is no deployed application on the context path - that you specified.

    -
  • -
  • No context path was specified -

    - The path parameter is required. -

    -
  • -
- -
- -

Reload

- -

Signal an existing application to shut itself down and reload. This can -be useful when the web application context is not reloadable and you have -updated classes or property files in the /WEB-INF/classes -directory or when you have added or updated jar files in the -/WEB-INF/lib directory. -

-

NOTE: The /WEB-INF/web.xml -web application configuration file is not checked on a reload; -the previous web.xml configuration is used. -If you have made changes to your web.xml file you must stop -then start the web application. -

- -

If this command succeeds, you will see a Message like this:

-

-OK - Reloaded application at context path /examples
-
- -

Otherwise, the Message will start with FAIL and include an -error message. Possible causes for problems include:

-
    -
  • Encountered exception -

    An exception was encountered trying to restart the web application. - Check the Tomcat logs for the details.

    -
  • -
  • Invalid context path was specified -

    The context path must start with a slash character, unless you are - referencing the ROOT web application -- in which case the context path - must be a zero-length string.

    -
  • -
  • No context exists for path /foo -

    There is no deployed application on the context path - that you specified.

    -
  • -
  • No context path was specified -

    The path parameter is required.

    -
  • -
  • Reload not supported on WAR deployed at path /foo -

    Currently, application reloading (to pick up changes to the classes or - web.xml file) is not supported when a web application is - installed directly from a WAR file, which happens when the host is - configured to not unpack WAR files. As it only works when the web - application is installed from an unpacked directory, if you are using - a WAR file, you should undeploy and then deploy - the application again to pick up your changes.

    -
  • -
- -
- -

Undeploy

- -

WARNING - This command will delete the -contents of the web application directory and/or ".war" file if it exists within -the appBase directory (typically "webapps") for this virtual host -. The web application temporary work directory is also deleted. If -you simply want to take an application out of service, you should use the -/stop command instead.

- -

Signal an existing application to gracefully shut itself down, and then -remove it from Tomcat (which also makes this context path available for -reuse later). This command is the logical opposite of the -/deploy Ant command, and the related deploy features available -in the HTML manager.

- -

If this command succeeds, you will see a Message like this:

-
OK - Undeployed application at context path /examples
- -

Otherwise, the Message will start with FAIL and include an -error message. Possible causes for problems include:

-
    -
  • Encountered exception -

    An exception was encountered trying to undeploy the web application. - Check the Tomcat logs for the details.

    -
  • -
  • Invalid context path was specified -

    The context path must start with a slash character, unless you are - referencing the ROOT web application -- in which case the context path - must be a zero-length string.

    -
  • -
  • No context exists for path /foo -

    There is no deployed application on the context path - that you specified.

    -
  • -
  • No context path was specified - The path parameter is required. -
  • -
- -
- -

Deploy

- -

Web applications can be deployed using files or directories located -on the Tomcat server or you can upload a web application archive (WAR) -file to the server.

- -

To install an application, fill in the appropriate fields for the type -of install you want to do and then submit it using the Install -button.

- -

Deploy directory or WAR file located on server

- -

Deploy and start a new web application, attached to the specified Context -Path: (which must not be in use by any other web application). -This command is the logical opposite of the Undeploy command.

- -

There are a number of different ways the deploy command can be used.

- -

Deploy a Directory or WAR by URL

- -

Install a web application directory or ".war" file located on the Tomcat -server. If no Context Path is specified, the directory name or the -war file name without the ".war" extension is used as the path. The -WAR or Directory URL specifies a URL (including the file: -scheme) for either a directory or a web application archive (WAR) file. The -supported syntax for a URL referring to a WAR file is described on the Javadocs -page for the java.net.JarURLConnection class. Use only URLs that -refer to the entire WAR file.

- -

In this example the web application located in the directory -C:\path\to\foo on the Tomcat server (running on Windows) -is deployed as the web application context named /footoo.

-
Context Path: /footoo
-WAR or Directory URL: file:C:/path/to/foo
-
- - -

In this example the ".war" file /path/to/bar.war on the -Tomcat server (running on Unix) is deployed as the web application -context named /bar. Notice that there is no path -parameter so the context path defaults to the name of the web application -archive file without the ".war" extension.

-
WAR or Directory URL: jar:file:/path/to/bar.war!/
- -
- -

Deploy a Directory or War from the Host appBase

- -

Install a web application directory or ".war" file located in your Host -appBase directory. If no Context Path is specified the directory name -or the war file name without the ".war" extension is used as the path.

- -

In this example the web application located in a subdirectory named -foo in the Host appBase directory of the Tomcat server is -deployed as the web application context named /foo. Notice -that there is no path parameter so the context path defaults -to the name of the web application directory.

-
WAR or Directory URL: foo
- - -

In this example the ".war" file bar.war located in your -Host appBase directory on the Tomcat server is deployed as the web -application context named /bartoo.

-
Context Path: /bartoo
-WAR or Directory URL: bar.war
- -
- -

Deploy using a Context configuration ".xml" file

- -

If the Host deployXML flag is set to true, you can install a web -application using a Context configuration ".xml" file and an optional -".war" file or web application directory. The Context Path -is not used when installing a web application using a context ".xml" -configuration file.

- -

A Context configuration ".xml" file can contain valid XML for a -web application Context just as if it were configured in your -Tomcat server.xml configuration file. Here is an -example for Tomcat running on Windows:

-
<Context path="/foobar" docBase="C:\path\to\application\foobar">
-</Context>
- - -

Use of the WAR or Directory URL is optional. When used -to select a web application ".war" file or directory it overrides any -docBase configured in the context configuration ".xml" file.

- -

Here is an example of installing an application using a Context -configuration ".xml" file for Tomcat running on Windows.

-
XML Configuration file URL: file:C:/path/to/context.xml
- - -

Here is an example of installing an application using a Context -configuration ".xml" file and a web application ".war" file located -on the server (Tomcat running on Unix).

-
XML Configuration file URL: file:/path/to/context.xml
-WAR or Directory URL: jar:file:/path/to/bar.war!/
- -
-
- -

Upload a WAR file to install

- -

Upload a WAR file from your local system and install it into the -appBase for your Host. The name of the WAR file without the ".war" -extension is used as the context path name.

- -

Use the Browse button to select a WAR file to upload to the -server from your local desktop system.

- -

The .WAR file may include Tomcat specific deployment configuration, by -including a Context configuration XML file in -/META-INF/context.xml.

- -

Upload of a WAR file could fail for the following reasons:

-
    -
  • File uploaded must be a .war -

    The upload install will only accept files which have the filename - extension of ".war".

    -
  • -
  • War file already exists on server -

    If a war file of the same name already exists in your Host's - appBase the upload will fail. Either undeploy the existing war file - from your Host's appBase or upload the new war file using a different - name.

    -
  • -
  • File upload failed, no file -

    The file upload failed, no file was received by the server.

    -
  • -
  • Install Upload Failed, Exception: -

    The war file upload or install failed with a Java Exception. - The exception message will be listed.

    -
  • -
- -
- -

Deployment Notes

- -

If the Host is configured with unpackWARs=true and you install a war -file, the war will be unpacked into a directory in your Host appBase -directory.

- -

If the application war or directory is deployed in your Host appBase -directory and either the Host is configured with autoDeploy=true the Context -path must match the directory name or war file name without the ".war" -extension.

- -

For security when untrusted users can manage web applications, the -Host deployXML flag can be set to false. This prevents untrusted users -from installing web applications using a configuration XML file and -also prevents them from installing application directories or ".war" -files located outside of their Host appBase.

- -
- -

Deploy Message

- -

If deployment and startup is successful, you will receive a Message -like this:

-
OK - Deployed application at context path /foo
- -

Otherwise, the Message will start with FAIL and include an -error message. Possible causes for problems include:

-
    -
  • Application already exists at path /foo -

    The context paths for all currently running web applications must be - unique. Therefore, you must either undeploy the existing web - application using this context path, or choose a different context path - for the new one.

    -
  • -
  • Document base does not exist or is not a readable directory -

    The URL specified by the WAR or Directory URL: field must - identify a directory on this server that contains the "unpacked" version - of a web application, or the absolute URL of a web application archive - (WAR) file that contains this application. Correct the value entered for - the WAR or Directory URL: field.

    -
  • -
  • Encountered exception -

    An exception was encountered trying to start the new web application. - Check the Tomcat logs for the details, but likely explanations include - problems parsing your /WEB-INF/web.xml file, or missing - classes encountered when initializing application event listeners and - filters.

    -
  • -
  • Invalid application URL was specified -

    The URL for the WAR or Directory URL: field that you specified - was not valid. Such URLs must start with file:, and URLs - for a WAR file must end in ".war".

    -
  • -
  • Invalid context path was specified -

    The context path must start with a slash character, unless you are - referencing the ROOT web application -- in which case the context path - must be a "/" string.

    -
  • -
  • Context path must match the directory or WAR file name: -

    If the application war or directory is deployed in your Host appBase - directory and either the Host is configured with autoDeploy=true the Context - path must match the directory name or war file name without the ".war" - extension.

    -
  • -
  • Only web applications in the Host web application directory can - be deployed -

    - If the Host deployXML flag is set to false this error will happen - if an attempt is made to install a web application directory or - ".war" file outside of the Host appBase directory. -

  • -
- -
-

Diagnostics

- -

Finding memory leaks

- -

The find leaks diagnostic triggers a full garbage collection. It -should be used with extreme caution on production systems.

- -

The find leaks diagnostic attempts to identify web applications that have -caused memory leaks when they were stopped, reloaded or undeployed. Results -should always be confirmed -with a profiler. The diagnostic uses additional functionality provided by the -StandardHost implementation. It will not work if a custom host is used that -does not extend StandardHost.

- -

This diagnostic will list context paths for the web applications that were -stopped, reloaded or undeployed, but which classes from the previous runs -are still present in memory, thus being a memory leak. If an application -has been reloaded several times, it may be listed several times.

- -

Explicitly triggering a full garbage collection from Java code is documented -to be unreliable. Furthermore, depending on the JVM used, there are options to -disable explicit GC triggering, like -XX:+DisableExplicitGC. -If you want to make sure, that the diagnostics were successfully running a full GC, -you will need to check using tools like GC logging, JConsole or similar.

- -
-

Server Information

- -

This section displays information about Tomcat, the operating system of the -server Tomcat is hosted on, the Java Virtual Machine Tomcat is running in, the -primary host name of the server (may not be the host name used to access Tomcat) -and the primary IP address of the server (may not be the IP address used to -access Tomcat).

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/add.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/add.gif deleted file mode 100644 index 0774d074e5e48291bdacfacb086506e6be117e51..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/add.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/asf-logo.svg b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/asf-logo.svg deleted file mode 100644 index e24cbe52975eaea5ed9ede394d40862db1a05b34..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/asf-logo.svg +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/code.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/code.gif deleted file mode 100644 index d27307b5c09467c2e45bbfcd1ff74989eb2e7d65..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/code.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/cors-flowchart.png b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/cors-flowchart.png deleted file mode 100644 index 9abb09d1c7fee7ed73d8d4bbccbff6876aeb378b..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/cors-flowchart.png and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/design.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/design.gif deleted file mode 100644 index f5db0a9fc783924486176ce157924fba53df73fc..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/design.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/docs-stylesheet.css b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/docs-stylesheet.css deleted file mode 100644 index 768e2ed36761a53c7ac85c3b9bd25e506e369e4e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/docs-stylesheet.css +++ /dev/null @@ -1,303 +0,0 @@ -@charset "utf-8"; -/* - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/* Fonts */ -@import url("fonts/fonts.css"); - -/* General style */ - -h1, h2, h3, h4, h5, h6, th { - font-weight: 600; -} - -body { - margin: 0; -} - -body, input { - font-family: 'Open Sans', sans-serif; - font-size: 10.5pt; -} - -code, pre { - font-family: Consolas, monospace; -} - -img { - border: 0; -} - -table { - border-collapse: collapse; - text-align: left; -} -table *:not(table) { - /* Prevent border-collapsing for table child elements like
*/ - border-collapse: separate; -} - -th { - text-align: left; -} - -main { - /* Remove this once all IEs support
element */ - display: block; -} - - -/* Layout */ - -#wrapper { - min-width: 400px; -} - -#header { - border-bottom: 1px solid #bbb; -} - -@media not print { - #header { - box-shadow: 0 0 7px #aaa; - } -} - -#header > div { - padding-left: 15px; - padding-right: 15px; - - /* Work-around for old browsers: */ - background-color: #F8F3E4; - background: linear-gradient(to bottom, #ffffff -10%, #F8F3E4 100%); - position: relative; -} - -#header .logo { - float: left; - padding-top: 10px; - min-width: 190px; -} - -#header .logo img{ - /* To avoid that the Font Descender being added to the parent div's height */ - vertical-align: middle; -} - -#header .asfLogo { - float: right; - position: relative; - top: 8px; -} - -#header h1 { - margin-top: 0.6em; - margin-bottom: 0; -} - -#header .versionInfo { - font-size: 13pt; - margin-bottom: 1em; -} - -#middle { - display: table; - table-layout: fixed; - margin: 0; - width: 100%; -} -#middle > div { display: table-row; } -#middle > div > div { display: table-cell; vertical-align: top; } - - - -#mainLeft { - width: 190px; -} - -#mainLeft > div { - margin-top: -1px; /* to overwrite border of element above */ - padding-left: 16px; - padding-right: 14px; - padding-top: 6px; - padding-bottom: 15px; - background-color: #F8F3E4; - border-right: 1px solid #bbb; - border-bottom: 1px solid #bbb; - font-size: 10pt; - border-bottom-right-radius: 20px; - box-shadow: 0 0 5px #aaa; -} - -#mainLeft h2 { - margin-bottom: 0.2em; - font-size: 1.2em; -} - -#mainLeft ul { - padding: 0; - margin: 0; - list-style-type: none; -} - -#mainLeft ul a { - text-indent: -0.6em; - padding-left: 1.4em; - display: block; - text-decoration: none; - color: #444; -} -#mainLeft ul a:hover { - color: #000; - background-color: #D1c9b9; -} - -#mainRight { - padding-left: 14px; - padding-right: 20px; - -} - -#footer { - margin-top: 30px; - padding-top: 20px; - padding-bottom: 20px; - padding-left: 20px; - padding-right: 20px; - border-top: 1px solid #ccc; - color: #444; - text-align: center; - /* font-style: italic; */ - font-size: 9pt; -} - - -/* Content */ - -#content div.text { - padding-left: 1em; - padding-left: 1em; -} - -#content h3, #content h4, #content h5, #content h6 { - padding-left: 5px; - padding-right: 5px; - background-color: #eaeaea; -} - -@media not print { - #content h3, #content h4, #content h5, #content h6 { - border: 1px solid #ccc; - border-radius: 4px; - } -} - -#content h4, #content h5, #content h6 { - background-color: #f6f6f6; -} - -code { - background-color: rgb(224,255,255); -} - -div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code { - background-color: transparent; -} -div.codeBox { - overflow: auto; - margin: 1em 0; -} -div.codeBox pre { - margin: 0; - padding: 4px; - border: 1px solid #999; - border-radius: 5px; - background-color: #eff8ff; - display: table; /* To prevent
s from taking the complete available width. */
-  /*
-  When it is officially supported, use the following CSS instead of display: table
-  to prevent big 
s from exceeding the browser window:
-  max-width: available;
-  width: min-content;
-  */
-}
-
-div.codeBox pre.wrap {
-  white-space: pre-wrap;
-}
-
-
-table.defaultTable tr, table.detail-table tr {
-    border: 1px solid #CCC;
-}
-
-table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
-    background-color: #FAFBFF;
-}
-
-table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
-    background-color: #EEEFFF;
-}
-
-table.defaultTable th, table.detail-table th {
-  background-color: #88b;
-  color: #fff;
-}
-
-table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
-  padding: 5px 8px;
-}
-
-
-p.notice {
-  border: 1px solid rgb(255, 0, 0);
-  background-color: rgb(238, 238, 238);
-  color: rgb(0, 51, 102);
-  padding: 0.5em;
-  margin: 1em 2em 1em 1em;
-}
-
-
-/* Changelog-Styles */
-
-ul.changelog {
-  padding-left: 1em;
-  list-style-type: none;
-}
-
-ul.changelog  li{
-  padding-top: 5px;
-  padding-bottom: 5px;
-}
-
-ul.changelog img {
-  vertical-align: middle
-}
-
-
-/* Printer-only Styles */
-@media print {
-    .noPrint { display: none; }
-    #middle > div > div#mainLeft { display: none; }
-    a { color: inherit; text-decoration: none; }
-}
-
-/* Fix for Comments section which contains a 

*/ -#comments_thread h1, #comments_thread h2, #comments_thread h3, #comments_thread h4, #comments_thread h5, #comments_thread h6 { - border: none; - background-color: transparent; -} \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/docs.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/docs.gif deleted file mode 100644 index d64a4a18c405e2c10ab791363f9f7acd16f3d433..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/docs.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fix.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fix.gif deleted file mode 100644 index d59ad642ba46c0bc1af17ebd2485722e92d6c70e..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fix.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans400.woff b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans400.woff deleted file mode 100644 index 55b25f867099eb26c436b1c9fecff14a51290d46..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans400.woff and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans400italic.woff b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans400italic.woff deleted file mode 100644 index cedefb8f6ff406c6b77e75ae55ee88e2bd88dc17..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans400italic.woff and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans600.woff b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans600.woff deleted file mode 100644 index e83bb333d2ea4655120d1791947d19d28ac710bc..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans600.woff and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans600italic.woff b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans600italic.woff deleted file mode 100644 index 983bb33145e7ac8d627892bcd53b4dc719b26766..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans600italic.woff and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans700.woff b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans700.woff deleted file mode 100644 index 27619e7cea1c29f9d71567b78470fdd705c174dc..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans700.woff and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans700italic.woff b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans700italic.woff deleted file mode 100644 index e12c3a9f273c2f0e4952293bb852406c2ab1eb0a..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/OpenSans700italic.woff and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/fonts.css b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/fonts.css deleted file mode 100644 index fa306fc44c05dfdac3f27a0b380811ca4b8579af..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/fonts/fonts.css +++ /dev/null @@ -1,54 +0,0 @@ -@charset "utf-8"; -/* - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 400; - src: local('Open Sans'), local('OpenSans'), url('OpenSans400.woff') format('woff'); -} -@font-face { - font-family: 'Open Sans'; - font-style: italic; - font-weight: 400; - src: local('Open Sans Italic'), local('OpenSans-Italic'), url('OpenSans400italic.woff') format('woff'); -} -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 600; - src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url('OpenSans600.woff') format('woff'); -} -@font-face { - font-family: 'Open Sans'; - font-style: italic; - font-weight: 600; - src: local('Open Sans Semibold Italic'), local('OpenSans-SemiboldItalic'), url('OpenSans600italic.woff') format('woff'); -} -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 700; - src: local('Open Sans Bold'), local('OpenSans-Bold'), url('OpenSans700.woff') format('woff'); -} -@font-face { - font-family: 'Open Sans'; - font-style: italic; - font-weight: 700; - src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url('OpenSans700italic.woff') format('woff'); -} \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/printer.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/printer.gif deleted file mode 100644 index 5021187b064c981bfa6688696d7144557468aaeb..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/printer.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/tomcat.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/tomcat.gif deleted file mode 100644 index f2aa6f863e43e3924a35854c556a9c1b6d125cba..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/tomcat.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/tomcat.png b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/tomcat.png deleted file mode 100644 index 209b07fd8a8d2429b1a0c9740dc184f803ba3c67..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/tomcat.png and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/tomcat.svg b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/tomcat.svg deleted file mode 100644 index 8823f7986e3cdc3ba54a7a96ff3cdea843e2e9ef..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/tomcat.svg +++ /dev/null @@ -1,967 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - 2006-05-09T08:17:21Z - 2006-05-09T08:37:38Z - Illustrator - - - - JPEG - 256 - 184 - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA -AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK -DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f -Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAuAEAAwER -AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA -AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB -UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE -1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ -qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy -obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp -0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo -+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 -FXYq7FXYq7FXYq7FXYq7FXhH/OYHnWfQ/wAurfRLSUxXXmK49GQqaN9VtwJJqH3cxqfYnFXhP5Y/ -85O+f/JU0enaw769okbBJLS8ZvrUKg0IhnarDj/I9R2HHFX2F+Xn5neT/P8ApP6R8u3glKAfW7KS -iXNuzdFljqaezCqnsTirK8VdirsVdirsVdirsVdirC/zM/Nvyd+XemC71255Xcqk2WmQUa5nI2+F -CRxUd3ag+nbFXx1+Zf8Azkn+YvneaW1tLh9C0NgwXTrB2V3Sm/rzji8m3UDitP2cVfV//OOfmabz -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 - - - - - - - image/svg+xml - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 -/Dn4G1vgFa2715u9zrn+L1T7Dxc= - - - TM - \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/update.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/update.gif deleted file mode 100644 index 31e22abbc7a2e24b20b978e9be9bce91d4d97728..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/update.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/void.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/void.gif deleted file mode 100644 index e565824aafafe632011b281cba976baf8b3ba89a..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/images/void.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/index.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/index.html deleted file mode 100644 index e43108fe5279a256bb6c3a6c469c446629693de1..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/index.html +++ /dev/null @@ -1,232 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Documentation Index

Documentation Index

Introduction

- -

This is the top-level entry point of the documentation bundle for the -Apache Tomcat Servlet/JSP container. Apache Tomcat version -8.5 implements the Servlet 3.1 and JavaServer Pages 2.3 -specifications from the -Java Community Process, and includes many -additional features that make it a useful platform for developing and deploying -web applications and web services.

- -

Select one of the links from the navigation menu (to the left) to drill -down to the more detailed documentation that is available. Each available -manual is described in more detail below.

- -

Apache Tomcat User Guide

- -

The following documents will assist you in downloading and installing -Apache Tomcat, and using many of the Apache Tomcat features.

- -
    -
  1. Introduction - A - brief, high level, overview of Apache Tomcat.
  2. -
  3. Setup - How to install and run - Apache Tomcat on a variety of platforms.
  4. -
  5. First web application - - An introduction to the concepts of a web application as defined - in the Servlet Specification. Covers basic organization of your web application - source tree, the structure of a web application archive, and an - introduction to the web application deployment descriptor - (/WEB-INF/web.xml).
  6. -
  7. Deployer - - Operating the Apache Tomcat Deployer to deploy, precompile, and validate web - applications.
  8. -
  9. Manager - - Operating the Manager web app to deploy, undeploy, and - redeploy applications while Apache Tomcat is running.
  10. -
  11. Realms and Access Control - - Description of how to configure Realms (databases of users, - passwords, and their associated roles) for use in web applications that - utilize Container Managed Security.
  12. -
  13. Security Manager - - Configuring and using a Java Security Manager to - support fine-grained control over the behavior of your web applications. -
  14. -
  15. JNDI Resources - - Configuring standard and custom resources in the JNDI naming context - that is provided to each web application.
  16. -
  17. - JDBC DataSource - - Configuring a JNDI DataSource with a DB connection pool. - Examples for many popular databases.
  18. -
  19. Classloading - - Information about class loading in Apache Tomcat, including where to place - your application classes so that they are visible.
  20. -
  21. JSPs - - Information about Jasper configuration, as well as the JSP compiler - usage.
  22. -
  23. SSL/TLS - - Installing and configuring SSL/TLS support so that your Apache Tomcat will - serve requests using the https protocol.
  24. -
  25. SSI - - Using Server Side Includes in Apache Tomcat.
  26. -
  27. CGI - - Using CGIs with Apache Tomcat.
  28. -
  29. Proxy Support - - Configuring Apache Tomcat to run behind a proxy server (or a web server - functioning as a proxy server).
  30. -
  31. MBeans Descriptors - - Configuring MBean descriptors files for custom components.
  32. -
  33. Default Servlet - - Configuring the default servlet and customizing directory listings.
  34. -
  35. Apache Tomcat Clustering - - Enable session replication in a Apache Tomcat environment.
  36. -
  37. Balancer - - Configuring, using, and extending the load balancer application.
  38. -
  39. Connectors - - Connectors available in Apache Tomcat, and native web server integration.
  40. -
  41. Monitoring and Management - - Enabling JMX Remote support, and using tools to monitor and manage Apache Tomcat.
  42. -
  43. Logging - - Configuring logging in Apache Tomcat.
  44. -
  45. Apache Portable Runtime - - Using APR to provide superior performance, scalability and better - integration with native server technologies.
  46. -
  47. Virtual Hosting - - Configuring virtual hosting in Apache Tomcat.
  48. -
  49. Advanced IO - - Extensions available over regular, blocking IO.
  50. -
  51. Additional Components - - Obtaining additional, optional components.
  52. -
  53. Using Tomcat libraries with Maven - - Obtaining Tomcat jars through Maven.
  54. -
  55. Security Considerations - - Options to consider when securing an Apache Tomcat installation.
  56. -
  57. Windows Service - - Running Tomcat as a service on Microsoft Windows.
  58. -
  59. Windows Authentication - - Configuring Tomcat to use integrated Windows authentication.
  60. -
  61. High Concurrency JDBC Pool - - Configuring Tomcat to use an alternative JDBC pool.
  62. -
  63. WebSocket support - - Developing WebSocket applications for Apache Tomcat.
  64. -
  65. URL rewrite - - Using the regexp based rewrite valve for conditional URL and host rewrite.
  66. - -
- -

Reference

- -

The following documents are aimed at System Administrators who -are responsible for installing, configuring, and operating an Apache Tomcat server. -

- - -

Apache Tomcat Developers

- -

The following documents are for Java developers who wish to contribute to -the development of the Apache Tomcat project.

-
    -
  • Building from Source - - Details the steps necessary to download Apache Tomcat source code (and the - other packages that it depends on), and build a binary distribution from - those sources. -
  • -
  • Changelog - Details the - changes made to Apache Tomcat. -
  • -
  • Status - - Apache Tomcat development status. -
  • -
  • Developers - List of active - Apache Tomcat contributors. -
  • -
  • Functional Specifications - - Requirements specifications for features of the Catalina servlet - container portion of Apache Tomcat.
  • -
  • Javadocs - - Javadoc API documentation for Apache Tomcat's internals.
  • -
  • Apache Tomcat Architecture - - Documentation of the Apache Tomcat Server Architecture.
  • -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/introduction.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/introduction.html deleted file mode 100644 index 13b21804c41cb716205ec309b8196a4efabec3b3..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/introduction.html +++ /dev/null @@ -1,147 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Introduction

Introduction

Table of Contents

Introduction

- -

For administrators and web developers alike, there are some important bits -of information you should familiarize yourself with before starting out. This -document serves as a brief introduction to some of the concepts and -terminology behind the Tomcat container. As well, where to go when you need -help.

- -

Terminology

- -

In the course of reading these documents, you will run across a number of -terms; some specific to Tomcat, and others defined by the -Servlet and -JSP specifications.

- -
    -
  • Context - In a nutshell, a Context is a - web application.
  • -
-

That is it. If you find any more terms we need to add to this section, please -do let us know.

- -

Directories and Files

- -

Throughout the docs, you'll notice there are numerous references to -$CATALINA_HOME. This represents the root of your Tomcat -installation. When we say, "This information can be found in your -$CATALINA_HOME/README.txt file" we mean to look at the README.txt file at the -root of your Tomcat install. Optionally, Tomcat may be configured for multiple -instances by defining $CATALINA_BASE for each instance. If -multiple instances are not configured, $CATALINA_BASE is the -same as $CATALINA_HOME.

- -

These are some of the key tomcat directories:

- -
    -
  • /bin - Startup, shutdown, and other scripts. The - *.sh files (for Unix systems) are functional duplicates of - the *.bat files (for Windows systems). Since the Win32 - command-line lacks certain functionality, there are some additional - files in here.
  • -
  • /conf - Configuration files and related DTDs. The most - important file in here is server.xml. It is the main configuration file - for the container.
  • -
  • /logs - Log files are here by default.
  • -
  • /webapps - This is where your webapps go.
  • -
- -

Configuring Tomcat

- -

This section will acquaint you with the basic information used during -the configuration of the container.

- -

All of the information in the configuration files is read at startup, -meaning that any change to the files necessitates a restart of the container. -

- -

Where to Go for Help

- -

While we've done our best to ensure that these documents are clearly -written and easy to understand, we may have missed something. Provided -below are various web sites and mailing lists in case you get stuck.

- -

Keep in mind that some of the issues and solutions vary between the -major versions of Tomcat. As you search around the web, there will be -some documentation that is not relevant to Tomcat 8, but -only to earlier versions.

- -
    -
  • Current document - most documents will list potential hangups. Be sure - to fully read the relevant documentation as it will save you much time - and effort. There's nothing like scouring the web only to find out that - the answer was right in front of you all along!
  • -
  • Tomcat FAQ
  • -
  • Tomcat WIKI
  • -
  • Tomcat FAQ at jGuru
  • -
  • Tomcat mailing list archives - numerous sites archive the Tomcat mailing - lists. Since the links change over time, clicking here will search - Google. -
  • -
  • The TOMCAT-USER mailing list, which you can subscribe to - here. If you don't - get a reply, then there's a good chance that your question was probably - answered in the list archives or one of the FAQs. Although questions - about web application development in general are sometimes asked and - answered, please focus your questions on Tomcat-specific issues.
  • -
  • The TOMCAT-DEV mailing list, which you can subscribe to - here. This list is - reserved for discussions about the development of Tomcat - itself. Questions about Tomcat configuration, and the problems you run - into while developing and running applications, will normally be more - appropriate on the TOMCAT-USER list instead.
  • -
- -

And, if you think something should be in the docs, by all means let us know -on the TOMCAT-DEV list.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/jasper-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/jasper-howto.html deleted file mode 100644 index 39fda34c3004d353fab27393e6aab9ef56ed0d2b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/jasper-howto.html +++ /dev/null @@ -1,409 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Jasper 2 JSP Engine How To

Jasper 2 JSP Engine How To

Table of Contents

Introduction

- -

Tomcat 8.5 uses the Jasper 2 JSP Engine to implement -the JavaServer Pages 2.3 -specification.

- -

Jasper 2 has been redesigned to significantly improve performance over -the original Jasper. In addition to general code improvements the following -changes were made:

-
    -
  • JSP Custom Tag Pooling - The java objects instantiated -for JSP Custom Tags can now be pooled and reused. This significantly boosts -the performance of JSP pages which use custom tags.
  • -
  • Background JSP compilation - If you make a change to -a JSP page which had already been compiled Jasper 2 can recompile that -page in the background. The previously compiled JSP page will still be -available to serve requests. Once the new page has been compiled -successfully it will replace the old page. This helps improve availability -of your JSP pages on a production server.
  • -
  • Recompile JSP when included page changes - Jasper 2 -can now detect when a page included at compile time from a JSP has changed -and then recompile the parent JSP.
  • -
  • JDT used to compile JSP pages - The -Eclipse JDT Java compiler is now used to perform JSP java source code -compilation. This compiler loads source dependencies from the container -classloader. Ant and javac can still be used.
  • -
- - -

Jasper is implemented using the servlet class -org.apache.jasper.servlet.JspServlet.

- -

Configuration

- -

By default Jasper is configured for use when doing web application -development. See the section -Production Configuration for information on configuring Jasper -for use on a production Tomcat server.

- -

The servlet which implements Jasper is configured using init parameters -in your global $CATALINA_BASE/conf/web.xml. -

-
    -
  • checkInterval - If development is false and checkInterval -is greater than zero, background compiles are enabled. checkInterval is the time -in seconds between checks to see if a JSP page (and its dependent files) needs -to be recompiled. Default 0 seconds.
  • - -
  • classdebuginfo - Should the class file be compiled with -debugging information? true or false, default -true. -
  • - -
  • classpath - Defines the class path to be used to compile -the generated servlets. This parameter only has an effect if the ServletContext -attribute org.apache.jasper.Constants.SERVLET_CLASSPATH is not set. This -attribute is always set when Jasper is used within Tomcat. By default the -classpath is created dynamically based on the current web application.
  • - -
  • compiler - Which compiler Ant should use to compile JSP -pages. The valid values for this are the same as for the compiler attribute of -Ant's -javac -task. If the value is not set, then the default Eclipse JDT Java compiler will -be used instead of using Ant. There is no default value. If this attribute is -set then setenv.[sh|bat] should be used to add -ant.jar, ant-launcher.jar and tools.jar -to the CLASSPATH environment variable.
  • - -
  • compilerSourceVM - What JDK version are the source files -compatible with? (Default value: 1.7)
  • - -
  • compilerTargetVM - What JDK version are the generated files -compatible with? (Default value: 1.7)
  • - -
  • development - Is Jasper used in development mode? If true, -the frequency at which JSPs are checked for modification may be specified via -the modificationTestInterval parameter.true or false, -default true.
  • - -
  • displaySourceFragment - Should a source fragment be -included in exception messages? true or false, -default true.
  • - -
  • dumpSmap - Should the SMAP info for JSR45 debugging be -dumped to a file? true or false, default -false. false if suppressSmap is true.
  • - -
  • enablePooling - Determines whether tag handler pooling is -enabled. This is a compilation option. It will not alter the behaviour of JSPs -that have already been compiled. true or false, -default true. -
  • - -
  • engineOptionsClass - Allows specifying the Options class -used to configure Jasper. If not present, the default EmbeddedServletOptions -will be used. This option is ignored if running under a SecurityManager. -
  • - -
  • errorOnUseBeanInvalidClassAttribute - Should Jasper issue -an error when the value of the class attribute in an useBean action is not a -valid bean class? true or false, default -true.
  • - -
  • fork - Have Ant fork JSP page compiles so they are -performed in a separate JVM from Tomcat? true or -false, default true.
  • - -
  • genStringAsCharArray - Should text strings be generated as char -arrays, to improve performance in some cases? Default false.
  • - -
  • ieClassId - The class-id value to be sent to Internet -Explorer when using <jsp:plugin> tags. Default -clsid:8AD9C840-044E-11D1-B3E9-00805F499D93.
  • - -
  • javaEncoding - Java file encoding to use for generating -java source files. Default UTF8.
  • - -
  • keepgenerated - Should we keep the generated Java source -code for each page instead of deleting it? true or -false, default true.
  • - -
  • mappedfile - Should we generate static content with one -print statement per input line, to ease debugging? -true or false, default true.
  • - -
  • maxLoadedJsps - The maximum number of JSPs that will be -loaded for a web application. If more than this number of JSPs are loaded, the -least recently used JSPs will be unloaded so that the number of JSPs loaded at -any one time does not exceed this limit. A value of zero or less indicates no -limit. Default -1
  • - -
  • jspIdleTimeout - The amount of time in seconds a JSP can be -idle before it is unloaded. A value of zero or less indicates never unload. -Default -1
  • - -
  • modificationTestInterval - Causes a JSP (and its dependent -files) to not be checked for modification during the specified time interval -(in seconds) from the last time the JSP was checked for modification. A value of -0 will cause the JSP to be checked on every access. Used in development mode -only. Default is 4 seconds.
  • - -
  • recompileOnFail - If a JSP compilation fails should the -modificationTestInterval be ignored and the next access trigger a re-compilation -attempt? Used in development mode only and is disabled by default as compilation -may be expensive and could lead to excessive resource usage.
  • - -
  • scratchdir - What scratch directory should we use when -compiling JSP pages? Default is the work directory for the current web -application. This option is ignored if running under a SecurityManager.
  • - -
  • suppressSmap - Should the generation of SMAP info for JSR45 -debugging be suppressed? true or false, default -false.
  • - -
  • trimSpaces - Should template text that consists entirely of -whitespace be removed? true or false, default -false.
  • - -
  • xpoweredBy - Determines whether X-Powered-By response -header is added by generated servlet. true or false, -default false.
  • - -
  • strictQuoteEscaping - When scriptlet expressions are used -for attribute values, should the rules in JSP.1.6 for the escaping of quote -characters be strictly applied? true or false, default -true.
  • - -
  • quoteAttributeEL - When EL is used in an attribute value -on a JSP page, should the rules for quoting of attributes described in JSP.1.6 -be applied to the expression? true or false, default -true.
  • -
- -

The Java compiler from Eclipse JDT in included as the default compiler. It is -an advanced Java compiler which will load all dependencies from the Tomcat class -loader, which will help tremendously when compiling on large installations with -tens of JARs. On fast servers, this will allow sub-second recompilation cycles -for even large JSP pages.

- -

Apache Ant, which was used in previous Tomcat releases, can be used instead -of the new compiler by configuring the compiler attribute as explained above. -

- -

Known issues

- -

As described in - -bug 39089, a known JVM issue, - -bug 6294277, may cause a -java.lang.InternalError: name is too long to represent exception -when compiling very large JSPs. If this is observed then it may be worked around -by using one of the following: -

-
    -
  • reduce the size of the JSP
  • -
  • disable SMAP generation and JSR-045 support by setting -suppressSmap to true.
  • -
- -

Production Configuration

- -

The main JSP optimization which can be done is precompilation of JSPs. -However, this might not be possible (for example, when using the -jsp-property-group feature) or practical, in which case the configuration of the -Jasper servlet becomes critical.

- -

When using Jasper 2 in a production Tomcat server you should consider making -the following changes from the default configuration.

-
    -
  • development - To disable on access checks for JSP -pages compilation set this to false.
  • -
  • genStringAsCharArray - To generate slightly more efficient -char arrays, set this to true.
  • -
  • modificationTestInterval - If development has to be set to -true for any reason (such as dynamic generation of JSPs), setting -this to a high value will improve performance a lot.
  • -
  • trimSpaces - To remove useless bytes from the response, -set this to true.
  • -
- -

Web Application Compilation

- -

Using Ant is the preferred way to compile web applications using JSPC. Note -that when pre-compiling JSPs, SMAP information will only be included in the -final classes if suppressSmap is false and compile is true. -Use the script given below (a similar script is included in the "deployer" -download) to precompile a webapp: -

- -
<project name="Webapp Precompilation" default="all" basedir=".">
-
-   <import file="${tomcat.home}/bin/catalina-tasks.xml"/>
-
-   <target name="jspc">
-
-    <jasper
-             validateXml="false"
-             uriroot="${webapp.path}"
-             webXmlFragment="${webapp.path}/WEB-INF/generated_web.xml"
-             outputDir="${webapp.path}/WEB-INF/src" />
-
-  </target>
-
-  <target name="compile">
-
-    <mkdir dir="${webapp.path}/WEB-INF/classes"/>
-    <mkdir dir="${webapp.path}/WEB-INF/lib"/>
-
-    <javac destdir="${webapp.path}/WEB-INF/classes"
-           optimize="off"
-           debug="on" failonerror="false"
-           srcdir="${webapp.path}/WEB-INF/src"
-           excludes="**/*.smap">
-      <classpath>
-        <pathelement location="${webapp.path}/WEB-INF/classes"/>
-        <fileset dir="${webapp.path}/WEB-INF/lib">
-          <include name="*.jar"/>
-        </fileset>
-        <pathelement location="${tomcat.home}/lib"/>
-        <fileset dir="${tomcat.home}/lib">
-          <include name="*.jar"/>
-        </fileset>
-        <fileset dir="${tomcat.home}/bin">
-          <include name="*.jar"/>
-        </fileset>
-      </classpath>
-      <include name="**" />
-      <exclude name="tags/**" />
-    </javac>
-
-  </target>
-
-  <target name="all" depends="jspc,compile">
-  </target>
-
-  <target name="cleanup">
-    <delete>
-        <fileset dir="${webapp.path}/WEB-INF/src"/>
-        <fileset dir="${webapp.path}/WEB-INF/classes/org/apache/jsp"/>
-    </delete>
-  </target>
-
-</project>
- -

-The following command line can be used to run the script -(replacing the tokens with the Tomcat base path and the path to the webapp -which should be precompiled): -

-
$ANT_HOME/bin/ant -Dtomcat.home=<$TOMCAT_HOME> -Dwebapp.path=<$WEBAPP_PATH>
- - -

-Then, the declarations and mappings for the servlets which were generated -during the precompilation must be added to the web application deployment -descriptor. Insert the ${webapp.path}/WEB-INF/generated_web.xml -at the right place inside the ${webapp.path}/WEB-INF/web.xml file. -Restart the web application (using the manager) and test it to verify it is -running fine with precompiled servlets. An appropriate token placed in the -web application deployment descriptor may also be used to automatically -insert the generated servlet declarations and mappings using Ant filtering -capabilities. This is actually how all the webapps distributed with Tomcat -are automatically compiled as part of the build process. -

- -

-At the jasper task you can use the option addWebXmlMappings for -automatic merge the ${webapp.path}/WEB-INF/generated_web.xml -with the current web application deployment descriptor at -${webapp.path}/WEB-INF/web.xml. When you want to use Java 6 -features inside your jsp's, add the following javac compiler task attributes: -source="1.6" target="1.6". For live -applications you can also compile with optimize="on" and -without debug info debug="off". -

- -

-When you don't want to stop the jsp generation at first jsp syntax error, use -failOnError="false"and with -showSuccess="true" all successful jsp to java -generation are printed out. Sometimes it is very helpful, when you cleanup the -generate java source files at ${webapp.path}/WEB-INF/src -and the compile jsp servlet classes at -${webapp.path}/WEB-INF/classes/org/apache/jsp. -

- -

Hints:

-
    -
  • When you switch to another Tomcat release, then regenerate and recompile -your jsp's with the new Tomcat version.
  • -
  • Use java system property at server runtime to disable PageContext pooling -org.apache.jasper.runtime.JspFactoryImpl.USE_POOL=false. -and limit the buffering with -org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true. Note -that changing from the defaults may affect performance, but it will vary -depending on the application.
  • -
-

Optimisation

-

-There are a number of extension points provided within Jasper that enable the -user to optimise the behaviour for their environment. -

- -

-The first of these extension points is the tag plug-in mechanism. This allows -alternative implementations of tag handlers to be provided for a web application -to use. Tag plug-ins are registered via a tagPlugins.xml file -located under WEB-INF. A sample plug-in for the JSTL is included -with Jasper. -

- -

-The second extension point is the Expression Language interpreter. Alternative -interpreters may be configured through the ServletContext. See the -ELInterpreterFactory javadoc for details of how to configure an -alternative EL interpreter. -

-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/jdbc-pool.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/jdbc-pool.html deleted file mode 100644 index 7e092a3abf6460cadc6a6484f8b7951c752cda70..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/jdbc-pool.html +++ /dev/null @@ -1,929 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - The Tomcat JDBC Connection Pool

The Tomcat JDBC Connection Pool

Table of Contents

Introduction

- -

The JDBC Connection Pool org.apache.tomcat.jdbc.pool - is a replacement or an alternative to the Apache Commons DBCP - connection pool.

- -

So why do we need a new connection pool?

- -

Here are a few of the reasons:

-
    -
  1. Commons DBCP 1.x is single threaded. In order to be thread safe - Commons locks the entire pool for short periods during both object - allocation and object return. Note that this does not apply to - Commons DBCP 2.x.
  2. -
  3. Commons DBCP 1.x can be slow. As the number of logical CPUs grows and - the number of concurrent threads attempting to borrow or return - objects increases, the performance suffers. For highly concurrent - systems the impact can be significant. Note that this does not apply - to Commons DBCP 2.x.
  4. -
  5. Commons DBCP is over 60 classes. tomcat-jdbc-pool core is 8 classes, - hence modifications for future requirement will require much less - changes. This is all you need to run the connection pool itself, the - rest is gravy.
  6. -
  7. Commons DBCP uses static interfaces. This means you have to use the - right version for a given JRE version or you may see - NoSuchMethodException exceptions.
  8. -
  9. It's not worth rewriting over 60 classes, when a connection pool can - be accomplished with a much simpler implementation.
  10. -
  11. Tomcat jdbc pool implements the ability retrieve a connection - asynchronously, without adding additional threads to the library - itself.
  12. -
  13. Tomcat jdbc pool is a Tomcat module, it depends on Tomcat JULI, a - simplified logging framework used in Tomcat.
  14. -
  15. Retrieve the underlying connection using the - javax.sql.PooledConnection interface.
  16. -
  17. Starvation proof. If a pool is empty, and threads are waiting for a - connection, when a connection is returned, the pool will awake the - correct thread waiting. Most pools will simply starve.
  18. -
- -

Features added over other connection pool implementations

-
    -
  1. Support for highly concurrent environments and multi core/cpu systems.
  2. -
  3. Dynamic implementation of interface, will support java.sql and javax.sql interfaces for - your runtime environment (as long as your JDBC driver does the same), even when compiled with a lower version of the JDK.
  4. -
  5. Validation intervals - we don't have to validate every single time we use the connection, we can do this - when we borrow or return the connection, just not more frequent than an interval we can configure.
  6. -
  7. Run-Once query, a configurable query that will be run only once, when the connection to the database is established. - Very useful to setup session settings, that you want to exist during the entire time the connection is established.
  8. -
  9. Ability to configure custom interceptors. - This allows you to write custom interceptors to enhance the functionality. You can use interceptors to gather query stats, - cache session states, reconnect the connection upon failures, retry queries, cache query results, and so on. - Your options are endless and the interceptors are dynamic, not tied to a JDK version of a - java.sql/javax.sql interface.
  10. -
  11. High performance - we will show some differences in performance later on
  12. -
  13. Extremely simple, due to the very simplified implementation, the line count and source file count are very low, compare with c3p0 - that has over 200 source files(last time we checked), Tomcat jdbc has a core of 8 files, the connection pool itself is about half - that. As bugs may occur, they will be faster to track down, and easier to fix. Complexity reduction has been a focus from inception.
  14. -
  15. Asynchronous connection retrieval - you can queue your request for a connection and receive a Future<Connection> back.
  16. -
  17. Better idle connection handling. Instead of closing connections directly, it can still pool connections and sizes the idle pool with a smarter algorithm.
  18. -
  19. You can decide at what moment connections are considered abandoned, is it when the pool is full, or directly at a timeout - by specifying a pool usage threshold. -
  20. -
  21. The abandon connection timer will reset upon a statement/query activity. Allowing a connections that is in use for a long time to not timeout. - This is achieved using the ResetAbandonedTimer -
  22. -
  23. Close connections after they have been connected for a certain time. Age based close upon return to the pool. -
  24. -
  25. Get JMX notifications and log entries when connections are suspected for being abandoned. This is similar to - the removeAbandonedTimeout but it doesn't take any action, only reports the information. - This is achieved using the suspectTimeout attribute.
  26. -
  27. Connections can be retrieved from a java.sql.Driver, javax.sql.DataSource or javax.sql.XADataSource - This is achieved using the dataSource and dataSourceJNDI attributes.
  28. -
  29. XA connection support
  30. -
- - -

How to use

-

- Usage of the Tomcat connection pool has been made to be as simple as possible, for those of you that are familiar with commons-dbcp, the - transition will be very simple. Moving from other connection pools is also fairly straight forward. -

-

Additional features

-

The Tomcat connection pool offers a few additional features over what most other pools let you do:

-
    -
  • initSQL - the ability to run a SQL statement exactly once, when the connection is created
  • -
  • validationInterval - in addition to running validations on connections, avoid running them too frequently.
  • -
  • jdbcInterceptors - flexible and pluggable interceptors to create any customizations around the pool, - the query execution and the result set handling. More on this in the advanced section.
  • -
  • fairQueue - Set the fair flag to true to achieve thread fairness or to use asynchronous connection retrieval
  • -
-
-

Inside the Apache Tomcat Container

-

- The Tomcat Connection pool is configured as a resource described in The Tomcat JDBC documentation - With the only difference being that you have to specify the factory attribute and set the value to - org.apache.tomcat.jdbc.pool.DataSourceFactory -

-
-

Standalone

-

- The connection pool only has another dependency, and that is on tomcat-juli.jar. - To configure the pool in a stand alone project using bean instantiation, the bean to instantiate is - org.apache.tomcat.jdbc.pool.DataSource. The same attributes (documented below) as you use to configure a connection - pool as a JNDI resource, are used to configure a data source as a bean. -

-
-

JMX

-

- The connection pool object exposes an MBean that can be registered. - In order for the connection pool object to create the MBean, the flag jmxEnabled has to be set to true. - This doesn't imply that the pool will be registered with an MBean server, merely that the MBean is created. - In a container like Tomcat, Tomcat itself registers the DataSource with the MBean server, the - org.apache.tomcat.jdbc.pool.DataSource object will then register the actual - connection pool MBean. - If you're running outside of a container, you can register the DataSource yourself under any object name you specify, - and it propagates the registration to the underlying pool. To do this you would call mBeanServer.registerMBean(dataSource.getPool().getJmxPool(),objectname). - Prior to this call, ensure that the pool has been created by calling dataSource.createPool(). -

-
- -

Attributes

-

To provide a very simple switch to and from commons-dbcp and tomcat-jdbc-pool, - Most attributes are the same and have the same meaning.

-

JNDI Factory and Type

-
- Attribute - - Description -
factory -

factory is required, and the value should be org.apache.tomcat.jdbc.pool.DataSourceFactory

-
type -

Type should always be javax.sql.DataSource or javax.sql.XADataSource

-

Depending on the type a org.apache.tomcat.jdbc.pool.DataSource or a org.apache.tomcat.jdbc.pool.XADataSource will be created.

-
-
- -

System Properties

-

System properties are JVM wide, affect all pools created in the JVM

-
- Attribute - - Description -
org.apache.tomcat.jdbc.pool.onlyAttemptCurrentClassLoader -

(boolean) Controls classloading of dynamic classes, such as - JDBC drivers, interceptors and validators. If set to - false, default value, the pool will first attempt - to load using the current loader (i.e. the class loader that - loaded the pool classes) and if class loading fails attempt to - load using the thread context loader. Set this value to - true, if you wish to remain backwards compatible - with Apache Tomcat 8.0.8 and earlier, and only attempt the - current loader. - If not set then the default value is false. -

-
-
- -

Common Attributes

-

These attributes are shared between commons-dbcp and tomcat-jdbc-pool, in some cases default values are different.

-
- Attribute - - Description -
defaultAutoCommit -

(boolean) The default auto-commit state of connections created by this pool. If not set, default is JDBC driver default (If not set then the setAutoCommit method will not be called.)

-
defaultReadOnly -

(boolean) The default read-only state of connections created by this pool. If not set then the setReadOnly method will not be called. (Some drivers don't support read only mode, ex: Informix)

-
defaultTransactionIsolation -

(String) The default TransactionIsolation state of connections created by this pool. One of the following: (see javadoc )

-
    -
  • NONE
  • -
  • READ_COMMITTED
  • -
  • READ_UNCOMMITTED
  • -
  • REPEATABLE_READ
  • -
  • SERIALIZABLE
  • -
-

If not set, the method will not be called and it defaults to the JDBC driver.

-
defaultCatalog -

(String) The default catalog of connections created by this pool.

-
driverClassName -

(String) The fully qualified Java class name of the JDBC driver to be used. The driver has to be accessible - from the same classloader as tomcat-jdbc.jar -

-
username -

(String) The connection username to be passed to our JDBC driver to establish a connection. - Note that method DataSource.getConnection(username,password) - by default will not use credentials passed into the method, - but will use the ones configured here. See alternateUsernameAllowed - property for more details. -

-
password -

(String) The connection password to be passed to our JDBC driver to establish a connection. - Note that method DataSource.getConnection(username,password) - by default will not use credentials passed into the method, - but will use the ones configured here. See alternateUsernameAllowed - property for more details. -

-
maxActive -

(int) The maximum number of active connections that can be allocated from this pool at the same time. - The default value is 100

-
maxIdle -

(int) The maximum number of connections that should be kept in the pool at all times. - Default value is maxActive:100 - Idle connections are checked periodically (if enabled) and - connections that been idle for longer than minEvictableIdleTimeMillis - will be released. (also see testWhileIdle)

-
minIdle -

- (int) The minimum number of established connections that should be kept in the pool at all times. - The connection pool can shrink below this number if validation queries fail. - Default value is derived from initialSize:10 (also see testWhileIdle) -

-
initialSize -

(int)The initial number of connections that are created when the pool is started. - Default value is 10

-
maxWait -

(int) The maximum number of milliseconds that the pool will wait (when there are no available connections) - for a connection to be returned before throwing an exception. - Default value is 30000 (30 seconds)

-
testOnBorrow -

(boolean) The indication of whether objects will be validated before being borrowed from the pool. - If the object fails to validate, it will be dropped from the pool, and we will attempt to borrow another. - In order to have a more efficient validation, see validationInterval. - Default value is false -

-
testOnConnect -

(boolean) The indication of whether objects will be validated when a connection is first created. - If an object fails to validate, it will be throw SQLException. - Default value is false -

-
testOnReturn -

(boolean) The indication of whether objects will be validated before being returned to the pool. - The default value is false. -

-
testWhileIdle -

(boolean) The indication of whether objects will be validated by the idle object evictor (if any). - If an object fails to validate, it will be dropped from the pool. - The default value is false and this property has to be set in order for the - pool cleaner/test thread is to run (also see timeBetweenEvictionRunsMillis) -

-
validationQuery -

(String) The SQL query that will be used to validate connections from this pool before returning them to the caller. - If specified, this query does not have to return any data, it just can't throw a SQLException. - The default value is null. - If not specified, connections will be validation by the isValid() method. - Example values are SELECT 1(mysql), select 1 from dual(oracle), SELECT 1(MS Sql Server) -

-
validationQueryTimeout -

(int) The timeout in seconds before a connection validation queries fail. This works by calling - java.sql.Statement.setQueryTimeout(seconds) on the statement that executes the validationQuery. - The pool itself doesn't timeout the query, it is still up to the JDBC driver to enforce query timeouts. - A value less than or equal to zero will disable this feature. - The default value is -1. -

-
validatorClassName -

(String) The name of a class which implements the - org.apache.tomcat.jdbc.pool.Validator interface and - provides a no-arg constructor (may be implicit). If specified, the - class will be used to create a Validator instance which is then used - instead of any validation query to validate connections. The default - value is null. An example value is - com.mycompany.project.SimpleValidator. -

-
timeBetweenEvictionRunsMillis -

(int) The number of milliseconds to sleep between runs of the idle connection validation/cleaner thread. - This value should not be set under 1 second. It dictates how often we check for idle, abandoned connections, and how often - we validate idle connections. - The default value is 5000 (5 seconds).
-

-
numTestsPerEvictionRun -

(int) Property not used in tomcat-jdbc-pool.

-
minEvictableIdleTimeMillis -

(int) The minimum amount of time an object may sit idle in the pool before it is eligible for eviction. - The default value is 60000 (60 seconds).

-
accessToUnderlyingConnectionAllowed -

(boolean) Property not used. Access can be achieved by calling unwrap on the pooled connection. - see javax.sql.DataSource interface, or call getConnection through reflection or - cast the object as javax.sql.PooledConnection

-
removeAbandoned -

(boolean) Flag to remove abandoned connections if they exceed the removeAbandonedTimeout. - If set to true a connection is considered abandoned and eligible for removal if it has been in use - longer than the removeAbandonedTimeout Setting this to true can recover db connections from - applications that fail to close a connection. See also logAbandoned - The default value is false.

-
removeAbandonedTimeout -

(int) Timeout in seconds before an abandoned(in use) connection can be removed. - The default value is 60 (60 seconds). The value should be set to the longest running query your applications - might have.

-
logAbandoned -

(boolean) Flag to log stack traces for application code which abandoned a Connection. - Logging of abandoned Connections adds overhead for every Connection borrow because a stack trace has to be generated. - The default value is false.

-
connectionProperties -

(String) The connection properties that will be sent to our JDBC driver when establishing new connections. - Format of the string must be [propertyName=property;]* - NOTE - The "user" and "password" properties will be passed explicitly, so they do not need to be included here. - The default value is null.

-
poolPreparedStatements -

(boolean) Property not used.

-
maxOpenPreparedStatements -

(int) Property not used.

-
- -
- -

Tomcat JDBC Enhanced Attributes

- -
- Attribute - - Description -
initSQL -

(String) A custom query to be run when a connection is first created. - The default value is null.

-
jdbcInterceptors -

(String) A semicolon separated list of classnames extending - org.apache.tomcat.jdbc.pool.JdbcInterceptor class. - See Configuring JDBC interceptors - below for more detailed description of syntax and examples. -

-

- These interceptors will be inserted as an interceptor into the chain - of operations on a java.sql.Connection object. - The default value is null. -

-

- Predefined interceptors:
- org.apache.tomcat.jdbc.pool.interceptor.
ConnectionState
- - keeps track of auto commit, read only, catalog and transaction isolation level.
- org.apache.tomcat.jdbc.pool.interceptor.
StatementFinalizer
- - keeps track of opened statements, and closes them when the connection is returned to the pool. -

-

- More predefined interceptors are described in detail in the - JDBC Interceptors section. -

-
validationInterval -

(long) avoid excess validation, only run validation at most at this frequency - time in milliseconds. - If a connection is due for validation, but has been validated previously within this interval, it will not be validated again. - The default value is 3000 (3 seconds).

-
jmxEnabled -

(boolean) Register the pool with JMX or not. - The default value is true.

-
fairQueue -

(boolean) Set to true if you wish that calls to getConnection should be treated - fairly in a true FIFO fashion. This uses the org.apache.tomcat.jdbc.pool.FairBlockingQueue - implementation for the list of the idle connections. The default value is true. - This flag is required when you want to use asynchronous connection retrieval.
- Setting this flag ensures that threads receive connections in the order they arrive.
- During performance tests, there is a very large difference in how locks - and lock waiting is implemented. When fairQueue=true - there is a decision making process based on what operating system the system is running. - If the system is running on Linux (property os.name=Linux. - To disable this Linux specific behavior and still use the fair queue, simply add the property - org.apache.tomcat.jdbc.pool.FairBlockingQueue.ignoreOS=true to your system properties - before the connection pool classes are loaded. -

-
abandonWhenPercentageFull -

(int) Connections that have been abandoned (timed out) wont get closed and reported up unless - the number of connections in use are above the percentage defined by abandonWhenPercentageFull. - The value should be between 0-100. - The default value is 0, which implies that connections are eligible for closure as soon - as removeAbandonedTimeout has been reached.

-
maxAge -

(long) Time in milliseconds to keep this connection. This attribute - works both when returning connection and when borrowing connection. - When a connection is borrowed from the pool, the pool will check to see - if the now - time-when-connected > maxAge has been reached - , and if so, it reconnects before borrow it. When a connection is - returned to the pool, the pool will check to see if the - now - time-when-connected > maxAge has been reached, and - if so, it closes the connection rather than returning it to the pool. - The default value is 0, which implies that connections - will be left open and no age check will be done upon borrowing from the - pool and returning the connection to the pool.

-
useEquals -

(boolean) Set to true if you wish the ProxyConnection class to use String.equals and set to false - when you wish to use == when comparing method names. This property does not apply to added interceptors as those are configured individually. - The default value is true. -

-
suspectTimeout -

(int) Timeout value in seconds. Default value is 0.
- Similar to to the removeAbandonedTimeout value but instead of treating the connection - as abandoned, and potentially closing the connection, this simply logs the warning if - logAbandoned is set to true. If this value is equal or less than 0, no suspect - checking will be performed. Suspect checking only takes place if the timeout value is larger than 0 and - the connection was not abandoned or if abandon check is disabled. If a connection is suspect a WARN message gets - logged and a JMX notification gets sent once. -

-
rollbackOnReturn -

(boolean) If autoCommit==false then the pool can terminate the transaction by calling rollback on the connection as it is returned to the pool - Default value is false.
-

-
commitOnReturn -

(boolean) If autoCommit==false then the pool can complete the transaction by calling commit on the connection as it is returned to the pool - If rollbackOnReturn==true then this attribute is ignored. - Default value is false.
-

-
alternateUsernameAllowed -

(boolean) By default, the jdbc-pool will ignore the - DataSource.getConnection(username,password) - call, and simply return a previously pooled connection under the globally configured properties username and password, for performance reasons. -

-

- The pool can however be configured to allow use of different credentials - each time a connection is requested. To enable the functionality described in the - DataSource.getConnection(username,password) - call, simply set the property alternateUsernameAllowed - to true.
- Should you request a connection with the credentials user1/password1 and the connection - was previously connected using different user2/password2, the connection will be closed, - and reopened with the requested credentials. This way, the pool size is still managed - on a global level, and not on a per schema level.
- The default value is false.
- This property was added as an enhancement to bug 50025. -

-
dataSource -

(javax.sql.DataSource) Inject a data source to the connection pool, and the pool will use the data source to retrieve connections instead of establishing them using the java.sql.Driver interface. - This is useful when you wish to pool XA connections or connections established using a data source instead of a connection string. Default value is null -

-
dataSourceJNDI -

(String) The JNDI name for a data source to be looked up in JNDI and then used to establish connections to the database. See the dataSource attribute. Default value is null -

-
useDisposableConnectionFacade -

(boolean) Set this to true if you wish to put a facade on your connection so that it cannot be reused after it has been closed. This prevents a thread holding on to a - reference of a connection it has already called closed on, to execute queries on it. Default value is true. -

-
logValidationErrors -

(boolean) Set this to true to log errors during the validation phase to the log file. If set to true, errors will be logged as SEVERE. Default value is false for backwards compatibility. -

-
propagateInterruptState -

(boolean) Set this to true to propagate the interrupt state for a thread that has been interrupted (not clearing the interrupt state). Default value is false for backwards compatibility. -

-
ignoreExceptionOnPreLoad -

(boolean) Flag whether ignore error of connection creation while initializing the pool. - Set to true if you want to ignore error of connection creation while initializing the pool. - Set to false if you want to fail the initialization of the pool by throwing exception. - The default value is false. -

-
useStatementFacade -

(boolean) Set this to true if you wish to wrap statements in order to - enable equals() and hashCode() methods to be - called on the closed statements if any statement proxy is set. - Default value is true. -

-
-
-

Advanced usage

-

JDBC interceptors

-

To see an example of how to use an interceptor, take a look at - org.apache.tomcat.jdbc.pool.interceptor.ConnectionState. - This simple interceptor is a cache of three attributes, transaction isolation level, auto commit and read only state, - in order for the system to avoid not needed roundtrips to the database. -

-

Further interceptors will be added to the core of the pool as the need arises. Contributions are always welcome!

-

Interceptors are of course not limited to just java.sql.Connection but can be used to wrap any - of the results from a method invocation as well. You could build query performance analyzer that provides JMX notifications when a - query is running longer than the expected time.

-
-

Configuring JDBC interceptors

-

Configuring JDBC interceptors is done using the jdbcInterceptors property. - The property contains a list of semicolon separated class names. If the - classname is not fully qualified it will be prefixed with the - org.apache.tomcat.jdbc.pool.interceptor. prefix. -

-

Example:
- - jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState; - org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer" - -
- is the same as -
- jdbcInterceptors="ConnectionState;StatementFinalizer" -

-

- Interceptors can have properties as well. Properties for an interceptor - are specified within parentheses after the class name. Several properties - are separated by commas. -

-

Example:
- - jdbcInterceptors="ConnectionState;StatementFinalizer(useEquals=true)" - -

-

- Extra whitespace characters around class names, property names and values - are ignored. -

-
-

org.apache.tomcat.jdbc.pool.JdbcInterceptor

-

Abstract base class for all interceptors, cannot be instantiated.

-
- Attribute - - Description -
useEquals -

(boolean) Set to true if you wish the ProxyConnection class to use String.equals and set to false - when you wish to use == when comparing method names. - The default value is true. -

-
-
-

org.apache.tomcat.jdbc.pool.interceptor.ConnectionState

-

Caches the connection for the following attributes autoCommit, readOnly, - transactionIsolation and catalog. - It is a performance enhancement to avoid roundtrip to the database when getters are called or setters are called with an already set value. -

-
- Attribute - - Description -
-
-

org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer

-

Keeps track of all statements created using createStatement, prepareStatement or prepareCall - and closes these statements when the connection is returned to the pool. -

-
- Attribute - - Description -
trace -

(boolean as String) Enable tracing of unclosed statements. - When enabled and a connection is closed, and statements are not closed, - the interceptor will log all stack traces. - The default value is false. -

-
-
-

org.apache.tomcat.jdbc.pool.interceptor.StatementCache

-

Caches PreparedStatement and/or CallableStatement - instances on a connection. -

-

The statements are cached per connection. - The count limit is counted globally for all connections that belong to - the same pool. Once the count reaches max, subsequent - statements are not returned to the cache and are closed immediately. -

-
- Attribute - - Description -
prepared -

(boolean as String) Enable caching of PreparedStatement - instances created using prepareStatement calls. - The default value is true. -

-
callable -

(boolean as String) Enable caching of CallableStatement - instances created using prepareCall calls. - The default value is false. -

-
max -

(int as String) Limit on the count of cached statements across - the connection pool. - The default value is 50. -

-
-
-

org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor

-

See 48392. Interceptor to wrap statements and result sets in order to prevent access to the actual connection - using the methods ResultSet.getStatement().getConnection() and Statement.getConnection() -

-
- Attribute - - Description -
-
-

org.apache.tomcat.jdbc.pool.interceptor.QueryTimeoutInterceptor

-

Automatically calls java.sql.Statement.setQueryTimeout(seconds) when a new statement is created. - The pool itself doesn't timeout the query, it is still up to the JDBC driver to enforce query timeouts. -

-
- Attribute - - Description -
queryTimeout -

(int as String) The number of seconds to set for the query timeout. - A value less than or equal to zero will disable this feature. - The default value is 1 seconds. -

-
-
-

org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport

-

Keeps track of query performance and issues log entries when queries exceed a time threshold of fail. - The log level used is WARN -

-
- Attribute - - Description -
threshold -

(int as String) The number of milliseconds a query has to exceed before issuing a log alert. - The default value is 1000 milliseconds. -

-
maxQueries -

(int as String) The maximum number of queries to keep track of in order to preserve memory space. - A value less than or equal to 0 will disable this feature. - The default value is 1000. -

-
logSlow -

(boolean as String) Set to true if you wish to log slow queries. - The default value is true. -

-
logFailed -

(boolean as String) Set to true if you wish to log failed queries. - The default value is false. -

-
-
-

org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx

-

Extends the SlowQueryReport and in addition to log entries it issues JMX notification - for monitoring tools to react to. Inherits all the attributes from its parent class. - This class uses Tomcat's JMX engine so it wont work outside of the Tomcat container. - By default, JMX notifications are sent through the ConnectionPool mbean if it is enabled. - The SlowQueryReportJmx can also register an MBean if notifyPool=false -

-
- Attribute - - Description -
notifyPool -

(boolean as String) Set to false if you want JMX notifications to go to the SlowQueryReportJmx MBean - The default value is true. -

-
objectName -

(String) Define a valid javax.management.ObjectName string that will be used to register this object with the platform mbean server - The default value is null and the object will be registered using - tomcat.jdbc:type=org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx,name=the-name-of-the-pool -

-
-
-

org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer

-

- The abandoned timer starts when a connection is checked out from the pool. - This means if you have a 30second timeout and run 10x10second queries using the connection - it will be marked abandoned and potentially reclaimed depending on the abandonWhenPercentageFull - attribute. - Using this interceptor it will reset the checkout timer every time you perform an operation on the connection or execute a - query successfully. -

-
- Attribute - - Description -
-
-

Code Example

-

Other examples of Tomcat configuration for JDBC usage can be found in the Tomcat documentation.

-

Plain Ol' Java

-

Here is a simple example of how to create and use a data source.

-
  import java.sql.Connection;
-  import java.sql.ResultSet;
-  import java.sql.Statement;
-
-  import org.apache.tomcat.jdbc.pool.DataSource;
-  import org.apache.tomcat.jdbc.pool.PoolProperties;
-
-  public class SimplePOJOExample {
-
-      public static void main(String[] args) throws Exception {
-          PoolProperties p = new PoolProperties();
-          p.setUrl("jdbc:mysql://localhost:3306/mysql");
-          p.setDriverClassName("com.mysql.jdbc.Driver");
-          p.setUsername("root");
-          p.setPassword("password");
-          p.setJmxEnabled(true);
-          p.setTestWhileIdle(false);
-          p.setTestOnBorrow(true);
-          p.setValidationQuery("SELECT 1");
-          p.setTestOnReturn(false);
-          p.setValidationInterval(30000);
-          p.setTimeBetweenEvictionRunsMillis(30000);
-          p.setMaxActive(100);
-          p.setInitialSize(10);
-          p.setMaxWait(10000);
-          p.setRemoveAbandonedTimeout(60);
-          p.setMinEvictableIdleTimeMillis(30000);
-          p.setMinIdle(10);
-          p.setLogAbandoned(true);
-          p.setRemoveAbandoned(true);
-          p.setJdbcInterceptors(
-            "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;"+
-            "org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer");
-          DataSource datasource = new DataSource();
-          datasource.setPoolProperties(p);
-
-          Connection con = null;
-          try {
-            con = datasource.getConnection();
-            Statement st = con.createStatement();
-            ResultSet rs = st.executeQuery("select * from user");
-            int cnt = 1;
-            while (rs.next()) {
-                System.out.println((cnt++)+". Host:" +rs.getString("Host")+
-                  " User:"+rs.getString("User")+" Password:"+rs.getString("Password"));
-            }
-            rs.close();
-            st.close();
-          } finally {
-            if (con!=null) try {con.close();}catch (Exception ignore) {}
-          }
-      }
-
-  }
-
-

As a Resource

-

And here is an example on how to configure a resource for JNDI lookups

-
<Resource name="jdbc/TestDB"
-          auth="Container"
-          type="javax.sql.DataSource"
-          factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
-          testWhileIdle="true"
-          testOnBorrow="true"
-          testOnReturn="false"
-          validationQuery="SELECT 1"
-          validationInterval="30000"
-          timeBetweenEvictionRunsMillis="30000"
-          maxActive="100"
-          minIdle="10"
-          maxWait="10000"
-          initialSize="10"
-          removeAbandonedTimeout="60"
-          removeAbandoned="true"
-          logAbandoned="true"
-          minEvictableIdleTimeMillis="30000"
-          jmxEnabled="true"
-          jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;
-            org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"
-          username="root"
-          password="password"
-          driverClassName="com.mysql.jdbc.Driver"
-          url="jdbc:mysql://localhost:3306/mysql"/>
- -
-

Asynchronous Connection Retrieval

-

The Tomcat JDBC connection pool supports asynchronous connection retrieval without adding additional threads to the - pool library. It does this by adding a method to the data source called Future<Connection> getConnectionAsync(). - In order to use the async retrieval, two conditions must be met: -

-
    -
  1. You must configure the fairQueue property to be true.
  2. -
  3. You will have to cast the data source to org.apache.tomcat.jdbc.pool.DataSource
  4. -
- An example of using the async feature is show below. -
  Connection con = null;
-  try {
-    Future<Connection> future = datasource.getConnectionAsync();
-    while (!future.isDone()) {
-      System.out.println("Connection is not yet available. Do some background work");
-      try {
-        Thread.sleep(100); //simulate work
-      }catch (InterruptedException x) {
-        Thread.currentThread().interrupt();
-      }
-    }
-    con = future.get(); //should return instantly
-    Statement st = con.createStatement();
-    ResultSet rs = st.executeQuery("select * from user");
- -
-

Interceptors

-

Interceptors are a powerful way to enable, disable or modify functionality on a specific connection or its sub components. - There are many different use cases for when interceptors are useful. By default, and for performance reasons, the connection pool is stateless. - The only state the pool itself inserts are defaultAutoCommit, defaultReadOnly, defaultTransactionIsolation, defaultCatalog if - these are set. These 4 properties are only set upon connection creation. Should these properties be modified during the usage of the connection, - the pool itself will not reset them.

-

An interceptor has to extend the org.apache.tomcat.jdbc.pool.JdbcInterceptor class. This class is fairly simple, - You will need to have a no arg constructor

-
  public JdbcInterceptor() {
-  }
-

- When a connection is borrowed from the pool, the interceptor can initialize or in some other way react to the event by implementing the -

-
  public abstract void reset(ConnectionPool parent, PooledConnection con);
-

- method. This method gets called with two parameters, a reference to the connection pool itself ConnectionPool parent - and a reference to the underlying connection PooledConnection con. -

-

- When a method on the java.sql.Connection object is invoked, it will cause the -

-
  public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
-

- method to get invoked. The Method method is the actual method invoked, and Object[] args are the arguments. - To look at a very simple example, where we demonstrate how to make the invocation to java.sql.Connection.close() a noop - if the connection has been closed -

-
  if (CLOSE_VAL==method.getName()) {
-      if (isClosed()) return null; //noop for already closed.
-  }
-  return super.invoke(proxy,method,args);
-

- There is an observation being made. It is the comparison of the method name. One way to do this would be to do - "close".equals(method.getName()). - Above we see a direct reference comparison between the method name and static final String reference. - According to the JVM spec, method names and static final String end up in a shared constant pool, so the reference comparison should work. - One could of course do this as well: -

-
  if (compare(CLOSE_VAL,method)) {
-      if (isClosed()) return null; //noop for already closed.
-  }
-  return super.invoke(proxy,method,args);
-

- The compare(String,Method) will use the useEquals flag on an interceptor and do either reference comparison or - a string value comparison when the useEquals=true flag is set. -

-

Pool start/stop
- When the connection pool is started or closed, you can be notifed. You will only be notified once per interceptor class - even though it is an instance method. and you will be notified using an interceptor currently not attached to a pool. -

-
  public void poolStarted(ConnectionPool pool) {
-  }
-
-  public void poolClosed(ConnectionPool pool) {
-  }
-

- When overriding these methods, don't forget to call super if you are extending a class other than JdbcInterceptor -

-

Configuring interceptors
- Interceptors are configured using the jdbcInterceptors property or the setJdbcInterceptors method. - An interceptor can have properties, and would be configured like this -

-
  String jdbcInterceptors=
-    "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState(useEquals=true,fast=yes)"
- -

Interceptor properties
- Since interceptors can have properties, you need to be able to read the values of these properties within your - interceptor. Taking an example like the one above, you can override the setProperties method. -

-
  public void setProperties(Map<String, InterceptorProperty> properties) {
-     super.setProperties(properties);
-     final String myprop = "myprop";
-     InterceptorProperty p1 = properties.get(myprop);
-     if (p1!=null) {
-         setMyprop(Long.parseLong(p1.getValue()));
-     }
-  }
- -
-

Getting the actual JDBC connection

-

Connection pools create wrappers around the actual connection in order to properly pool them. - We also create interceptors in these wrappers to be able to perform certain functions. - If there is a need to retrieve the actual connection, one can do so using the javax.sql.PooledConnection - interface. -

-
  Connection con = datasource.getConnection();
-  Connection actual = ((javax.sql.PooledConnection)con).getConnection();
- -
- -

Building

-

We build the JDBC pool code with 1.6, but it is backwards compatible down to 1.5 for runtime environment. For unit test, we use 1.6 and higher

-

Other examples of Tomcat configuration for JDBC usage can be found in the Tomcat documentation.

-

Building from source

-

Building is pretty simple. The pool has a dependency on tomcat-juli.jar and in case you want the SlowQueryReportJmx

-
  javac -classpath tomcat-juli.jar \
-        -d . \
-        org/apache/tomcat/jdbc/pool/*.java \
-        org/apache/tomcat/jdbc/pool/interceptor/*.java \
-        org/apache/tomcat/jdbc/pool/jmx/*.java
-

- A build file can be found in the Tomcat source repository. -

-

- As a convenience, a build file is also included where a simple build command will generate all files needed. -

-
  ant download  (downloads dependencies)
-  ant build     (compiles and generates .jar files)
-  ant dist      (creates a release package)
-  ant test      (runs tests, expects a test database to be setup)
- -

- The system is structured for a Maven build, but does generate release artifacts. Just the library itself. -

-
-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/jndi-datasource-examples-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/jndi-datasource-examples-howto.html deleted file mode 100644 index 402a142899c4f7a8be064b44a194ab75ab083d30..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/jndi-datasource-examples-howto.html +++ /dev/null @@ -1,676 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - JNDI Datasource HOW-TO

JNDI Datasource HOW-TO

Table of Contents

Introduction

- -

JNDI Datasource configuration is covered extensively in the -JNDI-Resources-HOWTO. However, feedback from tomcat-user has -shown that specifics for individual configurations can be rather tricky.

- -

Here then are some example configurations that have been posted to -tomcat-user for popular databases and some general tips for db usage.

- -

You should be aware that since these notes are derived from configuration -and/or feedback posted to tomcat-user YMMV :-). Please let us -know if you have any other tested configurations that you feel may be of use -to the wider audience, or if you feel we can improve this section in anyway.

- -

-Please note that JNDI resource configuration changed somewhat between -Tomcat 7.x and Tomcat 8.x as they are using different versions of -Apache Commons DBCP library. You will most likely need to modify older -JNDI resource configurations to match the syntax in the example below in order -to make them work in Tomcat 8. -See Tomcat Migration Guide -for details. -

- -

-Also, please note that JNDI DataSource configuration in general, and this -tutorial in particular, assumes that you have read and understood the -Context and -Host configuration references, including -the section about Automatic Application Deployment in the latter reference. -

-

DriverManager, the service provider mechanism and memory leaks

- -

java.sql.DriverManager supports the -service -provider mechanism. This feature is that all the available JDBC drivers -that announce themselves by providing a META-INF/services/java.sql.Driver -file are automatically discovered, loaded and registered, -relieving you from the need to load the database driver explicitly before -you create a JDBC connection. -However, the implementation is fundamentally broken in all Java versions for -a servlet container environment. The problem is that -java.sql.DriverManager will scan for the drivers only once.

- -

The JRE Memory Leak Prevention Listener -that is included with Apache Tomcat solves this by triggering the drivers scan -during Tomcat startup. This is enabled by default. It means that only -libraries visible to the listener such as the ones in -$CATALINA_BASE/lib will be scanned for database drivers. -If you are considering disabling this feature, note that -the scan would be triggered by the first web application that is -using JDBC, leading to failures when this web application is reloaded -and for other web applications that rely on this feature. -

- -

Thus, the web applications that have database drivers in their -WEB-INF/lib directory cannot rely on the service provider -mechanism and should register the drivers explicitly.

- -

The list of drivers in java.sql.DriverManager is also -a known source of memory leaks. Any Drivers registered -by a web application must be deregistered when the web application stops. -Tomcat will attempt to automatically discover and deregister any -JDBC drivers loaded by the web application class loader when the web -application stops. -However, it is expected that applications do this for themselves via -a ServletContextListener. -

- -

Database Connection Pool (DBCP 2) Configurations

- -

The default database connection pool implementation in Apache Tomcat -relies on the libraries from the -Apache Commons project. -The following libraries are used: -

- -
    -
  • Commons DBCP
  • -
  • Commons Pool
  • -
- -

-These libraries are located in a single JAR at -$CATALINA_HOME/lib/tomcat-dbcp.jar. However, -only the classes needed for connection pooling have been included, and the -packages have been renamed to avoid interfering with applications. -

- -

DBCP 2.0 provides support for JDBC 4.1.

- -

Installation

- -

See the -DBCP documentation for a complete list of configuration parameters. -

- -
- -

Preventing database connection pool leaks

- -

-A database connection pool creates and manages a pool of connections -to a database. Recycling and reusing already existing connections -to a database is more efficient than opening a new connection. -

- -

-There is one problem with connection pooling. A web application has -to explicitly close ResultSet's, Statement's, and Connection's. -Failure of a web application to close these resources can result in -them never being available again for reuse, a database connection pool "leak". -This can eventually result in your web application database connections failing -if there are no more available connections.

- -

-There is a solution to this problem. The Apache Commons DBCP can be -configured to track and recover these abandoned database connections. Not -only can it recover them, but also generate a stack trace for the code -which opened these resources and never closed them.

- -

-To configure a DBCP DataSource so that abandoned database connections are -removed and recycled, add one or both of the following attributes to the -Resource configuration for your DBCP DataSource: -

-
removeAbandonedOnBorrow=true
-
removeAbandonedOnMaintenance=true
-

The default for both of these attributes is false. Note that -removeAbandonedOnMaintenance has no effect unless pool -maintenance is enabled by setting timeBetweenEvictionRunsMillis -to a positive value. See the - -DBCP documentation for full documentation on these attributes. -

- -

-Use the removeAbandonedTimeout attribute to set the number -of seconds a database connection has been idle before it is considered abandoned. -

- -
removeAbandonedTimeout="60"
- -

-The default timeout for removing abandoned connections is 300 seconds. -

- -

-The logAbandoned attribute can be set to true -if you want DBCP to log a stack trace of the code which abandoned the -database connection resources. -

-
logAbandoned="true"
-

-The default is false. -

- -
- -

MySQL DBCP Example

- -
0. Introduction
-

Versions of MySQL and JDBC -drivers that have been reported to work: -

-
    -
  • MySQL 3.23.47, MySQL 3.23.47 using InnoDB,, MySQL 3.23.58, MySQL 4.0.1alpha
  • -
  • Connector/J 3.0.11-stable (the official JDBC Driver)
  • -
  • mm.mysql 2.0.14 (an old 3rd party JDBC Driver)
  • -
- -

Before you proceed, don't forget to copy the JDBC Driver's jar into $CATALINA_HOME/lib.

- -
1. MySQL configuration
-

-Ensure that you follow these instructions as variations can cause problems. -

- -

Create a new test user, a new database and a single test table. -Your MySQL user must have a password assigned. The driver -will fail if you try to connect with an empty password. -

-
mysql> GRANT ALL PRIVILEGES ON *.* TO javauser@localhost
-    ->   IDENTIFIED BY 'javadude' WITH GRANT OPTION;
-mysql> create database javatest;
-mysql> use javatest;
-mysql> create table testdata (
-    ->   id int not null auto_increment primary key,
-    ->   foo varchar(25),
-    ->   bar int);
-
-Note: the above user should be removed once testing is -complete! -
- -

Next insert some test data into the testdata table. -

-
mysql> insert into testdata values(null, 'hello', 12345);
-Query OK, 1 row affected (0.00 sec)
-
-mysql> select * from testdata;
-+----+-------+-------+
-| ID | FOO   | BAR   |
-+----+-------+-------+
-|  1 | hello | 12345 |
-+----+-------+-------+
-1 row in set (0.00 sec)
-
-mysql>
- -
2. Context configuration
-

Configure the JNDI DataSource in Tomcat by adding a declaration for your -resource to your Context.

-

For example:

-
<Context>
-
-    <!-- maxTotal: Maximum number of database connections in pool. Make sure you
-         configure your mysqld max_connections large enough to handle
-         all of your db connections. Set to -1 for no limit.
-         -->
-
-    <!-- maxIdle: Maximum number of idle database connections to retain in pool.
-         Set to -1 for no limit.  See also the DBCP documentation on this
-         and the minEvictableIdleTimeMillis configuration parameter.
-         -->
-
-    <!-- maxWaitMillis: Maximum time to wait for a database connection to become available
-         in ms, in this example 10 seconds. An Exception is thrown if
-         this timeout is exceeded.  Set to -1 to wait indefinitely.
-         -->
-
-    <!-- username and password: MySQL username and password for database connections  -->
-
-    <!-- driverClassName: Class name for the old mm.mysql JDBC driver is
-         org.gjt.mm.mysql.Driver - we recommend using Connector/J though.
-         Class name for the official MySQL Connector/J driver is com.mysql.jdbc.Driver.
-         -->
-
-    <!-- url: The JDBC connection url for connecting to your MySQL database.
-         -->
-
-  <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
-               maxTotal="100" maxIdle="30" maxWaitMillis="10000"
-               username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
-               url="jdbc:mysql://localhost:3306/javatest"/>
-
-</Context>
- -
3. web.xml configuration
- -

Now create a WEB-INF/web.xml for this test application.

-
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
-http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
-    version="2.4">
-  <description>MySQL Test App</description>
-  <resource-ref>
-      <description>DB Connection</description>
-      <res-ref-name>jdbc/TestDB</res-ref-name>
-      <res-type>javax.sql.DataSource</res-type>
-      <res-auth>Container</res-auth>
-  </resource-ref>
-</web-app>
- -
4. Test code
-

Now create a simple test.jsp page for use later.

-
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-
-<sql:query var="rs" dataSource="jdbc/TestDB">
-select id, foo, bar from testdata
-</sql:query>
-
-<html>
-  <head>
-    <title>DB Test</title>
-  </head>
-  <body>
-
-  <h2>Results</h2>
-
-<c:forEach var="row" items="${rs.rows}">
-    Foo ${row.foo}<br/>
-    Bar ${row.bar}<br/>
-</c:forEach>
-
-  </body>
-</html>
- -

That JSP page makes use of -JSTL's -SQL and Core taglibs. You can get it from -Apache Tomcat Taglibs - Standard Tag Library -project — just make sure you get a 1.1.x or later release. Once you have -JSTL, copy jstl.jar and standard.jar to your web app's -WEB-INF/lib directory. - -

- -

Finally deploy your web app into $CATALINA_BASE/webapps either -as a warfile called DBTest.war or into a sub-directory called -DBTest

-

Once deployed, point a browser at -http://localhost:8080/DBTest/test.jsp to view the fruits of -your hard work.

- -
- -

Oracle 8i, 9i & 10g

-
0. Introduction
- -

Oracle requires minimal changes from the MySQL configuration except for the -usual gotchas :-)

-

Drivers for older Oracle versions may be distributed as *.zip files rather -than *.jar files. Tomcat will only use *.jar files installed in -$CATALINA_HOME/lib. Therefore classes111.zip -or classes12.zip will need to be renamed with a .jar -extension. Since jarfiles are zipfiles, there is no need to unzip and jar these -files - a simple rename will suffice.

- -

For Oracle 9i onwards you should use oracle.jdbc.OracleDriver -rather than oracle.jdbc.driver.OracleDriver as Oracle have stated -that oracle.jdbc.driver.OracleDriver is deprecated and support -for this driver class will be discontinued in the next major release. -

- -
1. Context configuration
-

In a similar manner to the mysql config above, you will need to define your -Datasource in your Context. Here we define a -Datasource called myoracle using the thin driver to connect as user scott, -password tiger to the sid called mysid. (Note: with the thin driver this sid is -not the same as the tnsname). The schema used will be the default schema for the -user scott.

- -

Use of the OCI driver should simply involve a changing thin to oci in the URL string. -

-
<Resource name="jdbc/myoracle" auth="Container"
-              type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
-              url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
-              username="scott" password="tiger" maxTotal="20" maxIdle="10"
-              maxWaitMillis="-1"/>
- -
2. web.xml configuration
-

You should ensure that you respect the element ordering defined by the DTD when you -create you applications web.xml file.

-
<resource-ref>
- <description>Oracle Datasource example</description>
- <res-ref-name>jdbc/myoracle</res-ref-name>
- <res-type>javax.sql.DataSource</res-type>
- <res-auth>Container</res-auth>
-</resource-ref>
-
3. Code example
-

You can use the same example application as above (assuming you create the required DB -instance, tables etc.) replacing the Datasource code with something like

-
Context initContext = new InitialContext();
-Context envContext  = (Context)initContext.lookup("java:/comp/env");
-DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
-Connection conn = ds.getConnection();
-//etc.
-
- - -

PostgreSQL

-
0. Introduction
-

PostgreSQL is configured in a similar manner to Oracle.

- -
1. Required files
-

-Copy the Postgres JDBC jar to $CATALINA_HOME/lib. As with Oracle, the -jars need to be in this directory in order for DBCP's Classloader to find -them. This has to be done regardless of which configuration step you take next. -

- -
2. Resource configuration
- -

-You have two choices here: define a datasource that is shared across all Tomcat -applications, or define a datasource specifically for one application. -

- -
2a. Shared resource configuration
-

-Use this option if you wish to define a datasource that is shared across -multiple Tomcat applications, or if you just prefer defining your datasource -in this file. -

-

This author has not had success here, although others have reported so. -Clarification would be appreciated here.

- -
<Resource name="jdbc/postgres" auth="Container"
-          type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
-          url="jdbc:postgresql://127.0.0.1:5432/mydb"
-          username="myuser" password="mypasswd" maxTotal="20" maxIdle="10" maxWaitMillis="-1"/>
-
2b. Application-specific resource configuration
- -

-Use this option if you wish to define a datasource specific to your application, -not visible to other Tomcat applications. This method is less invasive to your -Tomcat installation. -

- -

-Create a resource definition for your Context. -The Context element should look something like the following. -

- -
<Context>
-
-<Resource name="jdbc/postgres" auth="Container"
-          type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
-          url="jdbc:postgresql://127.0.0.1:5432/mydb"
-          username="myuser" password="mypasswd" maxTotal="20" maxIdle="10"
-maxWaitMillis="-1"/>
-</Context>
- -
3. web.xml configuration
-
<resource-ref>
- <description>postgreSQL Datasource example</description>
- <res-ref-name>jdbc/postgres</res-ref-name>
- <res-type>javax.sql.DataSource</res-type>
- <res-auth>Container</res-auth>
-</resource-ref>
- -
4. Accessing the datasource
-

-When accessing the datasource programmatically, remember to prepend -java:/comp/env to your JNDI lookup, as in the following snippet of -code. Note also that "jdbc/postgres" can be replaced with any value you prefer, provided -you change it in the above resource definition file as well. -

- -
InitialContext cxt = new InitialContext();
-if ( cxt == null ) {
-   throw new Exception("Uh oh -- no context!");
-}
-
-DataSource ds = (DataSource) cxt.lookup( "java:/comp/env/jdbc/postgres" );
-
-if ( ds == null ) {
-   throw new Exception("Data source not found!");
-}
- -
-

Non-DBCP Solutions

-

-These solutions either utilise a single connection to the database (not recommended for anything other -than testing!) or some other pooling technology. -

-

Oracle 8i with OCI client

-

Introduction

-

Whilst not strictly addressing the creation of a JNDI DataSource using the OCI client, these notes can be combined with the -Oracle and DBCP solution above.

-

-In order to use OCI driver, you should have an Oracle client installed. You should have installed -Oracle8i(8.1.7) client from cd, and download the suitable JDBC/OCI -driver(Oracle8i 8.1.7.1 JDBC/OCI Driver) from otn.oracle.com. -

-

-After renaming classes12.zip file to classes12.jar -for Tomcat, copy it into $CATALINA_HOME/lib. -You may also have to remove the javax.sql.* classes -from this file depending upon the version of Tomcat and JDK you are using. -

-
- -

Putting it all together

-

-Ensure that you have the ocijdbc8.dll or .so in your $PATH or LD_LIBRARY_PATH - (possibly in $ORAHOME\bin) and also confirm that the native library can be loaded by a simple test program -using System.loadLibrary("ocijdbc8"); -

-

-You should next create a simple test servlet or jsp that has these -critical lines: -

-
DriverManager.registerDriver(new
-oracle.jdbc.driver.OracleDriver());
-conn =
-DriverManager.getConnection("jdbc:oracle:oci8:@database","username","password");
-

-where database is of the form host:port:SID Now if you try to access the URL of your -test servlet/jsp and what you get is a -ServletException with a root cause of java.lang.UnsatisfiedLinkError:get_env_handle. -

-

-First, the UnsatisfiedLinkError indicates that you have -

-
    -
  • a mismatch between your JDBC classes file and -your Oracle client version. The giveaway here is the message stating that a needed library file cannot be -found. For example, you may be using a classes12.zip file from Oracle Version 8.1.6 with a Version 8.1.5 -Oracle client. The classesXXX.zip file and Oracle client software versions must match. -
  • -
  • A $PATH, LD_LIBRARY_PATH problem.
  • -
  • It has been reported that ignoring the driver you have downloaded from otn and using -the classes12.zip file from the directory $ORAHOME\jdbc\lib will also work. -
  • -
-

-Next you may experience the error ORA-06401 NETCMN: invalid driver designator -

-

-The Oracle documentation says : "Cause: The login (connect) string contains an invalid -driver designator. Action: Correct the string and re-submit." - -Change the database connect string (of the form host:port:SID) with this one: -(description=(address=(host=myhost)(protocol=tcp)(port=1521))(connect_data=(sid=orcl))) -

-

-Ed. Hmm, I don't think this is really needed if you sort out your TNSNames - but I'm not an Oracle DBA :-) -

-
-

Common Problems

-

Here are some common problems encountered with a web application which -uses a database and tips for how to solve them.

- -

Intermittent Database Connection Failures

-

-Tomcat runs within a JVM. The JVM periodically performs garbage collection -(GC) to remove java objects which are no longer being used. When the JVM -performs GC execution of code within Tomcat freezes. If the maximum time -configured for establishment of a database connection is less than the amount -of time garbage collection took you can get a database connection failure. -

- -

To collect data on how long garbage collection is taking add the --verbose:gc argument to your CATALINA_OPTS -environment variable when starting Tomcat. When verbose gc is enabled -your $CATALINA_BASE/logs/catalina.out log file will include -data for every garbage collection including how long it took.

- -

When your JVM is tuned correctly 99% of the time a GC will take less -than one second. The remainder will only take a few seconds. Rarely, -if ever should a GC take more than 10 seconds.

- -

Make sure that the db connection timeout is set to 10-15 seconds. -For the DBCP you set this using the parameter maxWaitMillis.

- -
- -

Random Connection Closed Exceptions

-

-These can occur when one request gets a db connection from the connection -pool and closes it twice. When using a connection pool, closing the -connection just returns it to the pool for reuse by another request, -it doesn't close the connection. And Tomcat uses multiple threads to -handle concurrent requests. Here is an example of the sequence -of events which could cause this error in Tomcat: -

-
-  Request 1 running in Thread 1 gets a db connection.
-
-  Request 1 closes the db connection.
-
-  The JVM switches the running thread to Thread 2
-
-  Request 2 running in Thread 2 gets a db connection
-  (the same db connection just closed by Request 1).
-
-  The JVM switches the running thread back to Thread 1
-
-  Request 1 closes the db connection a second time in a finally block.
-
-  The JVM switches the running thread back to Thread 2
-
-  Request 2 Thread 2 tries to use the db connection but fails
-  because Request 1 closed it.
-
-

-Here is an example of properly written code to use a database connection -obtained from a connection pool: -

-
  Connection conn = null;
-  Statement stmt = null;  // Or PreparedStatement if needed
-  ResultSet rs = null;
-  try {
-    conn = ... get connection from connection pool ...
-    stmt = conn.createStatement("select ...");
-    rs = stmt.executeQuery();
-    ... iterate through the result set ...
-    rs.close();
-    rs = null;
-    stmt.close();
-    stmt = null;
-    conn.close(); // Return to connection pool
-    conn = null;  // Make sure we don't close it twice
-  } catch (SQLException e) {
-    ... deal with errors ...
-  } finally {
-    // Always make sure result sets and statements are closed,
-    // and the connection is returned to the pool
-    if (rs != null) {
-      try { rs.close(); } catch (SQLException e) { ; }
-      rs = null;
-    }
-    if (stmt != null) {
-      try { stmt.close(); } catch (SQLException e) { ; }
-      stmt = null;
-    }
-    if (conn != null) {
-      try { conn.close(); } catch (SQLException e) { ; }
-      conn = null;
-    }
-  }
- -
- -

Context versus GlobalNamingResources

-

- Please note that although the above instructions place the JNDI declarations in a Context - element, it is possible and sometimes desirable to place these declarations in the - GlobalNamingResources section of the server - configuration file. A resource placed in the GlobalNamingResources section will be shared - among the Contexts of the server. -

-
- -

JNDI Resource Naming and Realm Interaction

-

- In order to get Realms to work, the realm must refer to the datasource as - defined in the <GlobalNamingResources> or <Context> section, not a datasource as renamed - using <ResourceLink>. -

-
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/jndi-resources-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/jndi-resources-howto.html deleted file mode 100644 index 132b907b0063473a9a47ad3c903b45ed16465158..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/jndi-resources-howto.html +++ /dev/null @@ -1,1056 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - JNDI Resources HOW-TO

JNDI Resources HOW-TO

Table of Contents

Introduction

- -

Tomcat provides a JNDI InitialContext implementation -instance for each web application running under it, in a manner that is -compatible with those provided by a - -Java Enterprise Edition application server. The Java EE standard provides -a standard set of elements in the /WEB-INF/web.xml file to -reference/define resources.

- -

See the following Specifications for more information about programming APIs -for JNDI, and for the features supported by Java Enterprise Edition (Java EE) -servers, which Tomcat emulates for the services that it provides:

- - -

web.xml configuration

- -

The following elements may be used in the web application deployment -descriptor (/WEB-INF/web.xml) of your web application to define -resources:

-
    -
  • <env-entry> - Environment entry, a - single-value parameter that can be used to configure how the application - will operate.
  • -
  • <resource-ref> - Resource reference, - which is typically to an object factory for resources such as a JDBC - DataSource, a JavaMail Session, or custom - object factories configured into Tomcat.
  • -
  • <resource-env-ref> - Resource - environment reference, a new variation of resource-ref - added in Servlet 2.4 that is simpler to configure for resources - that do not require authentication information.
  • -
- -

Providing that Tomcat is able to identify an appropriate resource factory to -use to create the resource and that no further configuration information is -required, Tomcat will use the information in /WEB-INF/web.xml to -create the resource.

- -

Tomcat provides a number of Tomcat specific options for JNDI resources that -cannot be specified in web.xml. These include closeMethod that -enables faster cleaning-up of JNDI resources when a web application stops and -singleton that controls whether or not a new instance of the -resource is created for every JNDI lookup. To use these configuration options -the resource must be specified in a web application's -<Context> element or in the - -<GlobalNamingResources> element of -$CATALINA_BASE/conf/server.xml.

- -

context.xml configuration

- -

If Tomcat is unable to identify the appropriate resource factory and/or -additional configuration information is required, additional Tomcat specific -configuration must be specified before Tomcat can create the resource. -Tomcat specific resource configuration is entered in -the <Context> elements that -can be specified in either $CATALINA_BASE/conf/server.xml or, -preferably, the per-web-application context XML file -(META-INF/context.xml).

- -

Tomcat specific resource configuration is performed using the following -elements in the <Context> -element:

- -
    -
  • <Environment> - - Configure names and values for scalar environment entries that will be - exposed to the web application through the JNDI - InitialContext (equivalent to the inclusion of an - <env-entry> element in the web application - deployment descriptor).
  • -
  • <Resource> - - Configure the name and data type of a resource made available to the - application (equivalent to the inclusion of a - <resource-ref> element in the web application - deployment descriptor).
  • -
  • <ResourceLink> - - Add a link to a resource defined in the global JNDI context. Use resource - links to give a web application access to a resource defined in - the <GlobalNamingResources> - child element of the <Server> - element.
  • -
  • <Transaction> - - Add a resource factory for instantiating the UserTransaction object - instance that is available at java:comp/UserTransaction.
  • - -
- -

Any number of these elements may be nested inside a -<Context> element and will -be associated only with that particular web application.

- -

If a resource has been defined in a -<Context> element it is not -necessary for that resource to be defined in /WEB-INF/web.xml. -However, it is recommended to keep the entry in /WEB-INF/web.xml -to document the resource requirements for the web application.

- -

Where the same resource name has been defined for a -<env-entry> element included in the web application -deployment descriptor (/WEB-INF/web.xml) and in an -<Environment> element as part of the -<Context> element for the -web application, the values in the deployment descriptor will take precedence -only if allowed by the corresponding -<Environment> element (by setting the override -attribute to "true").

- -

Global configuration

- -

Tomcat maintains a separate namespace of global resources for the -entire server. These are configured in the - -<GlobalNamingResources> element of -$CATALINA_BASE/conf/server.xml. You may expose these resources to -web applications by using a -<ResourceLink> to -include it in the per-web-application context.

- -

If a resource has been defined using a -<ResourceLink>, it is not -necessary for that resource to be defined in /WEB-INF/web.xml. -However, it is recommended to keep the entry in /WEB-INF/web.xml -to document the resource requirements for the web application.

- -

Using resources

- -

The InitialContext is configured as a web application is -initially deployed, and is made available to web application components (for -read-only access). All configured entries and resources are placed in -the java:comp/env portion of the JNDI namespace, so a typical -access to a resource - in this case, to a JDBC DataSource - -would look something like this:

- -
// Obtain our environment naming context
-Context initCtx = new InitialContext();
-Context envCtx = (Context) initCtx.lookup("java:comp/env");
-
-// Look up our data source
-DataSource ds = (DataSource)
-  envCtx.lookup("jdbc/EmployeeDB");
-
-// Allocate and use a connection from the pool
-Connection conn = ds.getConnection();
-... use this connection to access the database ...
-conn.close();
- -

Tomcat Standard Resource Factories

- -

Tomcat includes a series of standard resource factories that can - provide services to your web applications, but give you configuration - flexibility (via the - <Context> element) - without modifying the web application or the deployment descriptor. Each - subsection below details the configuration and usage of the standard resource - factories.

- -

See Adding Custom - Resource Factories for information about how to create, install, - configure, and use your own custom resource factory classes with - Tomcat.

- -

NOTE - Of the standard resource factories, only the - "JDBC Data Source" and "User Transaction" factories are mandated to - be available on other platforms, and then they are required only if - the platform implements the Java Enterprise Edition (Java EE) specs. - All other standard resource factories, plus custom resource factories - that you write yourself, are specific to Tomcat and cannot be assumed - to be available on other containers.

- -

Generic JavaBean Resources

- -
0. Introduction
- -

This resource factory can be used to create objects of any - Java class that conforms to standard JavaBeans naming conventions (i.e. - it has a zero-arguments constructor, and has property setters that - conform to the setFoo() naming pattern. The resource factory will - only create a new instance of the appropriate bean class every time a - lookup() for this entry is made if the singleton - attribute of the factory is set to false.

- -

The steps required to use this facility are described below.

- -
1. Create Your JavaBean Class
- -

Create the JavaBean class which will be instantiated each time - that the resource factory is looked up. For this example, assume - you create a class com.mycompany.MyBean, which looks - like this:

- -
package com.mycompany;
-
-public class MyBean {
-
-  private String foo = "Default Foo";
-
-  public String getFoo() {
-    return (this.foo);
-  }
-
-  public void setFoo(String foo) {
-    this.foo = foo;
-  }
-
-  private int bar = 0;
-
-  public int getBar() {
-    return (this.bar);
-  }
-
-  public void setBar(int bar) {
-    this.bar = bar;
-  }
-
-
-}
- -
2. Declare Your Resource Requirements
- -

Next, modify your web application deployment descriptor - (/WEB-INF/web.xml) to declare the JNDI name under which - you will request new instances of this bean. The simplest approach is - to use a <resource-env-ref> element, like this:

- -
<resource-env-ref>
-  <description>
-    Object factory for MyBean instances.
-  </description>
-  <resource-env-ref-name>
-    bean/MyBeanFactory
-  </resource-env-ref-name>
-  <resource-env-ref-type>
-    com.mycompany.MyBean
-  </resource-env-ref-type>
-</resource-env-ref>
- -

WARNING - Be sure you respect the element ordering - that is required by the DTD for web application deployment descriptors! - See the - Servlet - Specification for details.

- -
3. Code Your Application's Use Of This Resource
- -

A typical use of this resource environment reference might look - like this:

- -
Context initCtx = new InitialContext();
-Context envCtx = (Context) initCtx.lookup("java:comp/env");
-MyBean bean = (MyBean) envCtx.lookup("bean/MyBeanFactory");
-
-writer.println("foo = " + bean.getFoo() + ", bar = " +
-               bean.getBar());
- -
4. Configure Tomcat's Resource Factory
- -

To configure Tomcat's resource factory, add an element like this to the - <Context> element for - this web application.

- -
<Context ...>
-  ...
-  <Resource name="bean/MyBeanFactory" auth="Container"
-            type="com.mycompany.MyBean"
-            factory="org.apache.naming.factory.BeanFactory"
-            bar="23"/>
-  ...
-</Context>
- -

Note that the resource name (here, bean/MyBeanFactory - must match the value specified in the web application deployment - descriptor. We are also initializing the value of the bar - property, which will cause setBar(23) to be called before - the new bean is returned. Because we are not initializing the - foo property (although we could have), the bean will - contain whatever default value is set up by its constructor.

- -

Some beans have properties with types that cannot automatically be - converted from a string value. Setting such properties using the Tomcat - BeanFactory will fail with a NamingException. In cases were those beans - provide methods to set the properties from a string value, the Tomcat - BeanFactory can be configured to use these methods. The configuration is - done with the forceString attribute.

- -

Assume our bean looks like this:

- -
package com.mycompany;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-public class MyBean2 {
-
-  private InetAddress local = null;
-
-  public InetAddress getLocal() {
-    return local;
-  }
-
-  public void setLocal(InetAddress ip) {
-    local = ip;
-  }
-
-  public void setLocal(String localHost) {
-    try {
-      local = InetAddress.getByName(localHost);
-    } catch (UnknownHostException ex) {
-    }
-  }
-
-  private InetAddress remote = null;
-
-  public InetAddress getRemote() {
-    return remote;
-  }
-
-  public void setRemote(InetAddress ip) {
-    remote = ip;
-  }
-
-  public void host(String remoteHost) {
-    try {
-      remote = InetAddress.getByName(remoteHost);
-    } catch (UnknownHostException ex) {
-    }
-  }
-
-}
- -

The bean has two properties, both are of type InetAddress. - The first property local has an additional setter taking a - string argument. By default the Tomcat BeanFactory would try to use the - automatically detected setter with the same argument type as the property - type and then throw a NamingException, because it is not prepared to convert - the given string attribute value to InetAddress. - We can tell the Tomcat BeanFactory to use the other setter like that:

- -
<Context ...>
-  ...
-  <Resource name="bean/MyBeanFactory" auth="Container"
-            type="com.mycompany.MyBean2"
-            factory="org.apache.naming.factory.BeanFactory"
-            forceString="local"
-            local="localhost"/>
-  ...
-</Context>
- -

The bean property remote can also be set from a string, - but one has to use the non-standard method name host. - To set local and remote use the following - configuration:

- -
<Context ...>
-  ...
-  <Resource name="bean/MyBeanFactory" auth="Container"
-            type="com.mycompany.MyBean2"
-            factory="org.apache.naming.factory.BeanFactory"
-            forceString="local,remote=host"
-            local="localhost"
-            remote="tomcat.apache.org"/>
-  ...
-</Context>
- -

Multiple property descriptions can be combined in - forceString by concatenation with comma as a separator. - Each property description consists of either only the property name - in which case the BeanFactory calls the setter method. Or it consist - of name=method in which case the property named - name is set by calling method method. - For properties of types String or of primitive type - or of their associated primitive wrapper classes using - forceString is not needed. The correct setter will be - automatically detected and argument conversion will be applied.

- -
- - -

UserDatabase Resources

- -
0. Introduction
- -

UserDatabase resources are typically configured as global resources for - use by a UserDatabase realm. Tomcat includes a UserDatabaseFactory that - creates UserDatabase resources backed by an XML file - usually - tomcat-users.xml

- -

The steps required to set up a global UserDatabase resource are described - below.

- -
1. Create/edit the XML file
- -

The XML file is typically located at - $CATALINA_BASE/conf/tomcat-users.xml however, you are free to - locate the file anywhere on the file system. It is recommended that the XML - files are placed in $CATALINA_BASE/conf. A typical XML would - look like:

- -
<?xml version="1.0" encoding="UTF-8"?>
-<tomcat-users>
-  <role rolename="tomcat"/>
-  <role rolename="role1"/>
-  <user username="tomcat" password="tomcat" roles="tomcat"/>
-  <user username="both" password="tomcat" roles="tomcat,role1"/>
-  <user username="role1" password="tomcat" roles="role1"/>
-</tomcat-users>
- -
2. Declare Your Resource
- -

Next, modify $CATALINA_BASE/conf/server.xml to create the - UserDatabase resource based on your XML file. It should look something like - this:

- -
<Resource name="UserDatabase"
-          auth="Container"
-          type="org.apache.catalina.UserDatabase"
-          description="User database that can be updated and saved"
-          factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
-          pathname="conf/tomcat-users.xml"
-          readonly="false" />
- -

The pathname attribute can be a URL, an absolute path or a - relative path. If relative, it is relative to $CATALINA_BASE. -

- -

The readonly attribute is optional and defaults to - true if not supplied. If the XML is writeable then it will be - written to when Tomcat starts. WARNING: When the file is - written it will inherit the default file permissions for the user Tomcat - is running as. Ensure that these are appropriate to maintain the security - of your installation.

- -
3. Configure the Realm
- -

Configure a UserDatabase Realm to use this resource as described in the - Realm configuration documentation.

- -
- - -

JavaMail Sessions

- -
0. Introduction
- -

In many web applications, sending electronic mail messages is a - required part of the system's functionality. The - Java Mail API - makes this process relatively straightforward, but requires many - configuration details that the client application must be aware of - (including the name of the SMTP host to be used for message sending).

- -

Tomcat includes a standard resource factory that will create - javax.mail.Session session instances for you, already - configured to connect to an SMTP server. - In this way, the application is totally insulated from changes in the - email server configuration environment - it simply asks for, and receives, - a preconfigured session whenever needed.

- -

The steps required for this are outlined below.

- -
1. Declare Your Resource Requirements
- -

The first thing you should do is modify the web application deployment - descriptor (/WEB-INF/web.xml) to declare the JNDI name under - which you will look up preconfigured sessions. By convention, all such - names should resolve to the mail subcontext (relative to the - standard java:comp/env naming context that is the root of - all provided resource factories. A typical web.xml entry - might look like this:

-
<resource-ref>
-  <description>
-    Resource reference to a factory for javax.mail.Session
-    instances that may be used for sending electronic mail
-    messages, preconfigured to connect to the appropriate
-    SMTP server.
-  </description>
-  <res-ref-name>
-    mail/Session
-  </res-ref-name>
-  <res-type>
-    javax.mail.Session
-  </res-type>
-  <res-auth>
-    Container
-  </res-auth>
-</resource-ref>
- -

WARNING - Be sure you respect the element ordering - that is required by the DTD for web application deployment descriptors! - See the - Servlet - Specification for details.

- -
2. Code Your Application's Use Of This Resource
- -

A typical use of this resource reference might look like this:

-
Context initCtx = new InitialContext();
-Context envCtx = (Context) initCtx.lookup("java:comp/env");
-Session session = (Session) envCtx.lookup("mail/Session");
-
-Message message = new MimeMessage(session);
-message.setFrom(new InternetAddress(request.getParameter("from")));
-InternetAddress to[] = new InternetAddress[1];
-to[0] = new InternetAddress(request.getParameter("to"));
-message.setRecipients(Message.RecipientType.TO, to);
-message.setSubject(request.getParameter("subject"));
-message.setContent(request.getParameter("content"), "text/plain");
-Transport.send(message);
- -

Note that the application uses the same resource reference name - that was declared in the web application deployment descriptor. This - is matched up against the resource factory that is configured in the - <Context> element - for the web application as described below.

- -
3. Configure Tomcat's Resource Factory
- -

To configure Tomcat's resource factory, add an elements like this to the - <Context> element for - this web application.

- -
<Context ...>
-  ...
-  <Resource name="mail/Session" auth="Container"
-            type="javax.mail.Session"
-            mail.smtp.host="localhost"/>
-  ...
-</Context>
- -

Note that the resource name (here, mail/Session) must - match the value specified in the web application deployment descriptor. - Customize the value of the mail.smtp.host parameter to - point at the server that provides SMTP service for your network.

- -

Additional resource attributes and values will be converted to properties - and values and passed to - javax.mail.Session.getInstance(java.util.Properties) as part of - the java.util.Properties collection. In addition to the - properties defined in Annex A of the JavaMail specification, individual - providers may also support additional properties. -

- -

If the resource is configured with a password attribute and - either a mail.smtp.user or mail.user attribute - then Tomcat's resource factory will configure and add a - javax.mail.Authenticator to the mail session.

- -
4. Install the JavaMail libraries
- -

- Download the JavaMail API.

- -

Unpackage the distribution and place mail.jar into $CATALINA_HOME/lib so - that it is available to Tomcat during the initialization of the mail Session - Resource. Note: placing this jar in both $CATALINA_HOME/lib - and a web application's lib folder will cause an error, so ensure you have - it in the $CATALINA_HOME/lib location only. -

- -
5. Restart Tomcat
- -

For the additional JAR to be visible to Tomcat, it is necessary for the - Tomcat instance to be restarted.

- - -
Example Application
- -

The /examples application included with Tomcat contains - an example of utilizing this resource factory. It is accessed via the - "JSP Examples" link. The source code for the servlet that actually - sends the mail message is in - /WEB-INF/classes/SendMailServlet.java.

- -

WARNING - The default configuration assumes that there - is an SMTP server listing on port 25 on localhost. If this is - not the case, edit the - <Context> element for - this web application and modify the parameter value for the - mail.smtp.host parameter to be the host name of an SMTP server - on your network.

- -
- -

JDBC Data Sources

- -
0. Introduction
- -

Many web applications need to access a database via a JDBC driver, - to support the functionality required by that application. The Java EE - Platform Specification requires Java EE Application Servers to make - available a DataSource implementation (that is, a connection - pool for JDBC connections) for this purpose. Tomcat offers exactly - the same support, so that database-based applications you develop on - Tomcat using this service will run unchanged on any Java EE server.

- -

For information about JDBC, you should consult the following:

- - -

NOTE - The default data source support in Tomcat - is based on the DBCP connection pool from the - Commons - project. However, it is possible to use any other connection pool - that implements javax.sql.DataSource, by writing your - own custom resource factory, as described - below.

- -
1. Install Your JDBC Driver
- -

Use of the JDBC Data Sources JNDI Resource Factory requires - that you make an appropriate JDBC driver available to both Tomcat internal - classes and to your web application. This is most easily accomplished by - installing the driver's JAR file(s) into the - $CATALINA_HOME/lib directory, which makes the driver - available both to the resource factory and to your application.

- -
2. Declare Your Resource Requirements
- -

Next, modify the web application deployment descriptor - (/WEB-INF/web.xml) to declare the JNDI name under - which you will look up preconfigured data source. By convention, all such - names should resolve to the jdbc subcontext (relative to the - standard java:comp/env naming context that is the root of - all provided resource factories. A typical web.xml entry - might look like this:

-
<resource-ref>
-  <description>
-    Resource reference to a factory for java.sql.Connection
-    instances that may be used for talking to a particular
-    database that is configured in the <Context>
-    configuration for the web application.
-  </description>
-  <res-ref-name>
-    jdbc/EmployeeDB
-  </res-ref-name>
-  <res-type>
-    javax.sql.DataSource
-  </res-type>
-  <res-auth>
-    Container
-  </res-auth>
-</resource-ref>
- -

WARNING - Be sure you respect the element ordering - that is required by the DTD for web application deployment descriptors! - See the - Servlet - Specification for details.

- -
3. Code Your Application's Use Of This Resource
- -

A typical use of this resource reference might look like this:

-
Context initCtx = new InitialContext();
-Context envCtx = (Context) initCtx.lookup("java:comp/env");
-DataSource ds = (DataSource)
-  envCtx.lookup("jdbc/EmployeeDB");
-
-Connection conn = ds.getConnection();
-... use this connection to access the database ...
-conn.close();
- -

Note that the application uses the same resource reference name that was - declared in the web application deployment descriptor. This is matched up - against the resource factory that is configured in the - <Context> element for - the web application as described below.

- -
4. Configure Tomcat's Resource Factory
- -

To configure Tomcat's resource factory, add an element like this to the - <Context> element for - the web application.

- -
<Context ...>
-  ...
-  <Resource name="jdbc/EmployeeDB"
-            auth="Container"
-            type="javax.sql.DataSource"
-            username="dbusername"
-            password="dbpassword"
-            driverClassName="org.hsql.jdbcDriver"
-            url="jdbc:HypersonicSQL:database"
-            maxTotal="8"
-            maxIdle="4"/>
-  ...
-</Context>
- -

Note that the resource name (here, jdbc/EmployeeDB) must - match the value specified in the web application deployment descriptor.

- -

This example assumes that you are using the HypersonicSQL database - JDBC driver. Customize the driverClassName and - driverName parameters to match your actual database's - JDBC driver and connection URL.

- -

The configuration properties for Tomcat's standard data source - resource factory - (org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory) are - as follows:

-
    -
  • driverClassName - Fully qualified Java class name - of the JDBC driver to be used.
  • -
  • username - Database username to be passed to our - JDBC driver.
  • -
  • password - Database password to be passed to our - JDBC driver.
  • -
  • url - Connection URL to be passed to our JDBC driver. - (For backwards compatibility, the property driverName - is also recognized.)
  • -
  • initialSize - The initial number of connections - that will be created in the pool during pool initialization. Default: 0
  • -
  • maxTotal - The maximum number of connections - that can be allocated from this pool at the same time. Default: 8
  • -
  • minIdle - The minimum number of connections that - will sit idle in this pool at the same time. Default: 0
  • -
  • maxIdle - The maximum number of connections that - can sit idle in this pool at the same time. Default: 8
  • -
  • maxWaitMillis - The maximum number of milliseconds that the - pool will wait (when there are no available connections) for a - connection to be returned before throwing an exception. Default: -1 (infinite)
  • -
-

Some additional properties handle connection validation:

-
    -
  • validationQuery - SQL query that can be used by the - pool to validate connections before they are returned to the - application. If specified, this query MUST be an SQL SELECT - statement that returns at least one row.
  • -
  • validationQueryTimeout - Timeout in seconds - for the validation query to return. Default: -1 (infinite)
  • -
  • testOnBorrow - true or false: whether a connection - should be validated using the validation query each time it is - borrowed from the pool. Default: true
  • -
  • testOnReturn - true or false: whether a connection - should be validated using the validation query each time it is - returned to the pool. Default: false
  • -
-

The optional evictor thread is responsible for shrinking the pool - by removing any connections which are idle for a long time. The evictor - does not respect minIdle. Note that you do not need to - activate the evictor thread if you only want the pool to shrink according - to the configured maxIdle property.

-

The evictor is disabled by default and can be configured using - the following properties:

-
    -
  • timeBetweenEvictionRunsMillis - The number of - milliseconds between consecutive runs of the evictor. - Default: -1 (disabled)
  • -
  • numTestsPerEvictionRun - The number of connections - that will be checked for idleness by the evictor during each - run of the evictor. Default: 3
  • -
  • minEvictableIdleTimeMillis - The idle time in - milliseconds after which a connection can be removed from the pool - by the evictor. Default: 30*60*1000 (30 minutes)
  • -
  • testWhileIdle - true or false: whether a connection - should be validated by the evictor thread using the validation query - while sitting idle in the pool. Default: false
  • -
-

Another optional feature is the removal of abandoned connections. - A connection is called abandoned if the application does not return it - to the pool for a long time. The pool can close such connections - automatically and remove them from the pool. This is a workaround - for applications leaking connections.

-

The abandoning feature is disabled by default and can be configured - using the following properties:

-
    -
  • removeAbandoned - true or false: whether to - remove abandoned connections from the pool. Default: false
  • -
  • removeAbandonedTimeout - The number of - seconds after which a borrowed connection is assumed to be abandoned. - Default: 300
  • -
  • logAbandoned - true or false: whether to log - stack traces for application code which abandoned a statement - or connection. This adds serious overhead. Default: false
  • -
-

Finally there are various properties that allow further fine tuning - of the pool behaviour:

-
    -
  • defaultAutoCommit - true or false: default - auto-commit state of the connections created by this pool. - Default: true
  • -
  • defaultReadOnly - true or false: default - read-only state of the connections created by this pool. - Default: false
  • -
  • defaultTransactionIsolation - This sets the - default transaction isolation level. Can be one of - NONE, READ_COMMITTED, - READ_UNCOMMITTED, REPEATABLE_READ, - SERIALIZABLE. Default: no default set
  • -
  • poolPreparedStatements - true or false: whether to - pool PreparedStatements and CallableStatements. Default: false
  • -
  • maxOpenPreparedStatements - The maximum number of open - statements that can be allocated from the statement pool at the same time. - Default: -1 (unlimited)
  • -
  • defaultCatalog - The name of the default catalog. - Default: not set
  • -
  • connectionInitSqls - A list of SQL statements - run once after a Connection is created. Separate multiple statements - by semicolons (;). Default: no statement
  • -
  • connectionProperties - A list of driver specific - properties passed to the driver for creating connections. Each - property is given as name=value, multiple properties - are separated by semicolons (;). Default: no properties
  • -
  • accessToUnderlyingConnectionAllowed - true or false: whether - accessing the underlying connections is allowed. Default: false
  • -
-

For more details, please refer to the commons-dbcp documentation.

- -
- -

Adding Custom Resource Factories

- -

If none of the standard resource factories meet your needs, you can write - your own factory and integrate it into Tomcat, and then configure the use - of this factory in the - <Context> element for - the web application. In the example below, we will create a factory that only - knows how to create com.mycompany.MyBean beans from the - Generic JavaBean Resources example - above.

- -

1. Write A Resource Factory Class

- -

You must write a class that implements the JNDI service provider - javax.naming.spi.ObjectFactory interface. Every time your - web application calls lookup() on a context entry that is - bound to this factory (assuming that the factory is configured with - singleton="false"), the - getObjectInstance() method is called, with the following - arguments:

-
    -
  • Object obj - The (possibly null) object containing - location or reference information that can be used in creating an object. - For Tomcat, this will always be an object of type - javax.naming.Reference, which contains the class name of - this factory class, as well as the configuration properties (from the - <Context> for the - web application) to use in creating objects to be returned.
  • -
  • Name name - The name to which this factory is bound - relative to nameCtx, or null if no name - is specified.
  • -
  • Context nameCtx - The context relative to which the - name parameter is specified, or null if - name is relative to the default initial context.
  • -
  • Hashtable environment - The (possibly null) - environment that is used in creating this object. This is generally - ignored in Tomcat object factories.
  • -
- -

To create a resource factory that knows how to produce MyBean - instances, you might create a class like this:

- -
package com.mycompany;
-
-import java.util.Enumeration;
-import java.util.Hashtable;
-import javax.naming.Context;
-import javax.naming.Name;
-import javax.naming.NamingException;
-import javax.naming.RefAddr;
-import javax.naming.Reference;
-import javax.naming.spi.ObjectFactory;
-
-public class MyBeanFactory implements ObjectFactory {
-
-  public Object getObjectInstance(Object obj,
-      Name name2, Context nameCtx, Hashtable environment)
-      throws NamingException {
-
-      // Acquire an instance of our specified bean class
-      MyBean bean = new MyBean();
-
-      // Customize the bean properties from our attributes
-      Reference ref = (Reference) obj;
-      Enumeration addrs = ref.getAll();
-      while (addrs.hasMoreElements()) {
-          RefAddr addr = (RefAddr) addrs.nextElement();
-          String name = addr.getType();
-          String value = (String) addr.getContent();
-          if (name.equals("foo")) {
-              bean.setFoo(value);
-          } else if (name.equals("bar")) {
-              try {
-                  bean.setBar(Integer.parseInt(value));
-              } catch (NumberFormatException e) {
-                  throw new NamingException("Invalid 'bar' value " + value);
-              }
-          }
-      }
-
-      // Return the customized instance
-      return (bean);
-
-  }
-
-}
- -

In this example, we are unconditionally creating a new instance of - the com.mycompany.MyBean class, and populating its properties - based on the parameters included in the <ResourceParams> - element that configures this factory (see below). You should note that any - parameter named factory should be skipped - that parameter is - used to specify the name of the factory class itself (in this case, - com.mycompany.MyBeanFactory) rather than a property of the - bean being configured.

- -

For more information about ObjectFactory, see the - - JNDI Service Provider Interface (SPI) Specification.

- -

You will need to compile this class against a class path that includes - all of the JAR files in the $CATALINA_HOME/lib directory. When you are through, - place the factory class (and the corresponding bean class) unpacked under - $CATALINA_HOME/lib, or in a JAR file inside - $CATALINA_HOME/lib. In this way, the required class - files are visible to both Catalina internal resources and your web - application.

- -

2. Declare Your Resource Requirements

- -

Next, modify your web application deployment descriptor - (/WEB-INF/web.xml) to declare the JNDI name under which - you will request new instances of this bean. The simplest approach is - to use a <resource-env-ref> element, like this:

- -
<resource-env-ref>
-  <description>
-    Object factory for MyBean instances.
-  </description>
-  <resource-env-ref-name>
-    bean/MyBeanFactory
-  </resource-env-ref-name>
-  <resource-env-ref-type>
-    com.mycompany.MyBean
-  </resource-env-ref-type>
-</resource-env-ref>
- -

WARNING - Be sure you respect the element ordering - that is required by the DTD for web application deployment descriptors! - See the - Servlet - Specification for details.

- -

3. Code Your Application's Use Of This Resource

- -

A typical use of this resource environment reference might look - like this:

- -
Context initCtx = new InitialContext();
-Context envCtx = (Context) initCtx.lookup("java:comp/env");
-MyBean bean = (MyBean) envCtx.lookup("bean/MyBeanFactory");
-
-writer.println("foo = " + bean.getFoo() + ", bar = " +
-               bean.getBar());
- -

4. Configure Tomcat's Resource Factory

- -

To configure Tomcat's resource factory, add an elements like this to the - <Context> element for - this web application.

- -
<Context ...>
-  ...
-  <Resource name="bean/MyBeanFactory" auth="Container"
-            type="com.mycompany.MyBean"
-            factory="com.mycompany.MyBeanFactory"
-            singleton="false"
-            bar="23"/>
-  ...
-</Context>
- -

Note that the resource name (here, bean/MyBeanFactory - must match the value specified in the web application deployment - descriptor. We are also initializing the value of the bar - property, which will cause setBar(23) to be called before - the new bean is returned. Because we are not initializing the - foo property (although we could have), the bean will - contain whatever default value is set up by its constructor.

- -

You will also note that, from the application developer's perspective, - the declaration of the resource environment reference, and the programming - used to request new instances, is identical to the approach used for the - Generic JavaBean Resources example. This illustrates one of the - advantages of using JNDI resources to encapsulate functionality - you can - change the underlying implementation without necessarily having to - modify applications using the resources, as long as you maintain - compatible APIs.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/jspapi/index.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/jspapi/index.html deleted file mode 100644 index d3f031b3bf30561f0bd3b77b66cd03ac439ae30d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/jspapi/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - API docs - - - - -The JSP Javadoc is not installed by default. Download and install -the "fulldocs" package to get it. - -You can also access the javadoc online in the Tomcat - -documentation bundle. - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/logging.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/logging.html deleted file mode 100644 index 78fc9fd1e6b3b338990cab46f7250f477d769609..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/logging.html +++ /dev/null @@ -1,424 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Logging in Tomcat

Logging in Tomcat

Table of Contents

Introduction

-

- The internal logging for Apache Tomcat uses JULI, a packaged renamed fork - of Apache Commons Logging - that is hard-coded to use the java.util.logging framework. - This ensures that Tomcat's internal logging and any web application - logging will remain independent, even if a web application uses Apache - Commons Logging. -

- -

- To configure Tomcat to use an alternative logging framework for its - internal logging, follow the instructions provided by the alternative - logging framework for redirecting logging for applications that use - java.util.logging. Keep in mind that the alternative logging - framework will need to be capable of working in an environment where - different loggers with the same name may exist in different class loaders. -

- -

- A web application running on Apache Tomcat can: -

-
    -
  • - Use any logging framework of its choice. -
  • -
  • - Use system logging API, java.util.logging. -
  • -
  • - Use the logging API provided by the Java Servlets specification, - javax.servlet.ServletContext.log(...) -
  • -
- -

- The logging frameworks used by different web applications are independent. - See class loading for more details. - The exception to this rule is java.util.logging. If it used - directly or indirectly by your logging library then elements of it will be - shared across web applications because it is loaded by the system class - loader. -

- -

Java logging API — java.util.logging

- -

- Apache Tomcat has its own implementation of several key elements of - java.util.logging API. This implementation is called JULI. - The key component there is a custom LogManager implementation, - that is aware of different web applications running on Tomcat (and - their different class loaders). It supports private per-application - logging configurations. It is also notified by Tomcat when a web application - is unloaded from memory, so that the references to its classes can be - cleared, preventing memory leaks. -

- -

- This java.util.logging implementation is enabled by providing - certain system properties when starting Java. The Apache Tomcat startup - scripts do this for you, but if you are using different tools to run - Tomcat (such as jsvc, or running Tomcat from within an IDE), you should - take care of them by yourself. -

- -

- More details about java.util.logging may be found in the documentation - for your JDK and on its Javadoc pages for the java.util.logging - package. -

- -

- More details about Tomcat JULI may be found below. -

- -
- -

Servlets logging API

- -

- The calls to javax.servlet.ServletContext.log(...) to write - log messages are handled by internal Tomcat logging. Such messages are - logged to the category named -

-
org.apache.catalina.core.ContainerBase.[${engine}].[${host}].[${context}]
-

- This logging is performed according to the Tomcat logging configuration. You - cannot overwrite it in a web application. -

- -

- The Servlets logging API predates the java.util.logging API - that is now provided by Java. As such, it does not offer you much options. - E.g., you cannot control the log levels. It can be noted, though, that - in Apache Tomcat implementation the calls to ServletContext.log(String) - or GenericServlet.log(String) are logged at the INFO level. - The calls to ServletContext.log(String, Throwable) or - GenericServlet.log(String, Throwable) - are logged at the SEVERE level. -

- -
- -

Console

- -

- When running Tomcat on unixes, the console output is usually redirected - to the file named catalina.out. The name is configurable - using an environment variable. (See the startup scripts). - Whatever is written to System.err/out will be caught into - that file. That may include: -

- -
    -
  • Uncaught exceptions printed by java.lang.ThreadGroup.uncaughtException(..)
  • -
  • Thread dumps, if you requested them via a system signal
  • -
- -

- When running as a service on Windows, the console output is also caught - and redirected, but the file names are different. -

- -

- The default logging configuration in Apache Tomcat writes the same - messages to the console and to a log file. This is great when using - Tomcat for development, but usually is not needed in production. -

- -

- Old applications that still use System.out or System.err - can be tricked by setting swallowOutput attribute on a - Context. If the attribute is set to - true, the calls to System.out/err during request - processing will be intercepted, and their output will be fed to the - logging subsystem using the - javax.servlet.ServletContext.log(...) calls.
- Note, that the swallowOutput feature is - actually a trick, and it has its limitations. - It works only with direct calls to System.out/err, - and only during request processing cycle. It may not work in other - threads that might be created by the application. It cannot be used to - intercept logging frameworks that themselves write to the system streams, - as those start early and may obtain a direct reference to the streams - before the redirection takes place. -

- -
- -

Access logging

- -

- Access logging is a related but different feature, which is - implemented as a Valve. It uses self-contained - logic to write its log files. The essential requirement for - access logging is to handle a large continuous stream of data - with low overhead, so it only uses Apache Commons Logging for - its own debug messages. This implementation approach avoids - additional overhead and potentially complex configuration. - Please refer to the Valves - documentation for more details on its configuration, including - the various report formats. -

- -
- -

Using java.util.logging (default)

- -

- The default implementation of java.util.logging provided in the JDK is too - limited to be useful. The key limitation is the inability to have per-web - application logging, as the configuration is per-VM. As a result, Tomcat - will, in the default configuration, replace the default LogManager - implementation with a container friendly implementation called JULI, which - addresses these shortcomings. -

-

- JULI supports the same configuration mechanisms as the standard JDK - java.util.logging, using either a programmatic approach, or - properties files. The main difference is that per-classloader properties - files can be set (which enables easy redeployment friendly webapp - configuration), and the properties files support extended constructs which - allows more freedom for defining handlers and assigning them to loggers. -

-

- JULI is enabled by default, and supports per classloader configuration, in - addition to the regular global java.util.logging configuration. This means - that logging can be configured at the following layers: -

-
    -
  • Globally. That is usually done in the - ${catalina.base}/conf/logging.properties file. - The file is specified by the java.util.logging.config.file - System property which is set by the startup scripts. - If it is not readable or is not configured, the default is to use the - ${java.home}/lib/logging.properties file in the JRE. -
  • -
  • In the web application. The file will be - WEB-INF/classes/logging.properties -
  • -
-

- The default logging.properties in the JRE specifies a - ConsoleHandler that routes logging to System.err. - The default conf/logging.properties in Apache Tomcat also - adds several FileHandlers that write to files. -

-

- A handler's log level threshold is INFO by default and can be set using - SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST or ALL. - You can also target specific packages to collect logging from and specify - a level. -

-

- To enable debug logging for part of Tomcat's internals, you should - configure both the appropriate logger(s) and the appropriate handler(s) to - use the FINEST or ALL level. e.g.: -

-
org.apache.catalina.session.level=ALL
-java.util.logging.ConsoleHandler.level=ALL
-

- When enabling debug logging it is recommended that it is enabled for the - narrowest possible scope as debug logging can generate large amounts of - information. -

-

- The configuration used by JULI is the same as the one supported by plain - java.util.logging, but uses a few extensions to allow better - flexibility in configuring loggers and handlers. The main differences are: -

-
    -
  • A prefix may be added to handler names, so that multiple handlers of a - single class may be instantiated. A prefix is a String which starts with a - digit, and ends with '.'. For example, 22foobar. is a valid - prefix.
  • -
  • System property replacement is performed for property values which - contain ${systemPropertyName}.
  • -
  • If using a class loader that implements the - org.apache.juli.WebappProperties interface (Tomcat's - web application class loader does) then property replacement is also - performed for ${classloader.webappName}, - ${classloader.hostName} and - ${classloader.serviceName} which are replaced with the - web application name, the host name and the service name respectively. -
  • -
  • By default, loggers will not delegate to their parent if they have - associated handlers. This may be changed per logger using the - loggerName.useParentHandlers property, which accepts a - boolean value.
  • -
  • The root logger can define its set of handlers using the - .handlers property.
  • -
  • By default the log files will be kept on the file system forever. - This may be changed per handler using the - handlerName.maxDays property. If the specified value for the - property is <=0 then the log files will be kept on the - file system forever, otherwise they will be kept the specified maximum - days.
  • -
-

- There are several additional implementation classes, that can be used - together with the ones provided by Java. The notable one is - org.apache.juli.FileHandler. -

-

- org.apache.juli.FileHandler supports buffering of the - logs. The buffering is not enabled by default. To configure it, use the - bufferSize property of a handler. The value of 0 - uses system default buffering (typically an 8K buffer will be used). A - value of <0 forces a writer flush upon each log write. A - value >0 uses a BufferedOutputStream with the defined - value but note that the system default buffering will also be - applied. -

-

- Example logging.properties file to be placed in $CATALINA_BASE/conf: -

-
handlers = 1catalina.org.apache.juli.FileHandler, \
-           2localhost.org.apache.juli.FileHandler, \
-           3manager.org.apache.juli.FileHandler, \
-           java.util.logging.ConsoleHandler
-
-.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
-
-############################################################
-# Handler specific properties.
-# Describes specific configuration info for Handlers.
-############################################################
-
-1catalina.org.apache.juli.FileHandler.level = FINE
-1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
-1catalina.org.apache.juli.FileHandler.prefix = catalina.
-
-2localhost.org.apache.juli.FileHandler.level = FINE
-2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
-2localhost.org.apache.juli.FileHandler.prefix = localhost.
-
-3manager.org.apache.juli.FileHandler.level = FINE
-3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
-3manager.org.apache.juli.FileHandler.prefix = manager.
-3manager.org.apache.juli.FileHandler.bufferSize = 16384
-
-java.util.logging.ConsoleHandler.level = FINE
-java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
-
-
-############################################################
-# Facility specific properties.
-# Provides extra control for each logger.
-############################################################
-
-org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
-org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = \
-   2localhost.org.apache.juli.FileHandler
-
-org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
-org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = \
-   3manager.org.apache.juli.FileHandler
-
-# For example, set the org.apache.catalina.util.LifecycleBase logger to log
-# each component that extends LifecycleBase changing state:
-#org.apache.catalina.util.LifecycleBase.level = FINE
- -

- Example logging.properties for the servlet-examples web application to be - placed in WEB-INF/classes inside the web application: -

-
handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
-
-############################################################
-# Handler specific properties.
-# Describes specific configuration info for Handlers.
-############################################################
-
-org.apache.juli.FileHandler.level = FINE
-org.apache.juli.FileHandler.directory = ${catalina.base}/logs
-org.apache.juli.FileHandler.prefix = ${classloader.webappName}.
-
-java.util.logging.ConsoleHandler.level = FINE
-java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
- - -

Documentation references

-

See the following resources for additional information:

- -
- -

Considerations for production usage

-

You may want to take note of the following:

-
    -
  • Consider removing ConsoleHandler from configuration. By - default (thanks to the .handlers setting) logging goes both - to a FileHandler and to a ConsoleHandler. The - output of the latter one is usually captured into a file, such as - catalina.out. Thus you end up with two copies of the same - messages.
  • -
  • Consider removing FileHandlers for the applications - that you do not use. E.g., the one for host-manager.
  • -
  • The handlers by default use the system default encoding to write - the log files. It can be configured with encoding property. - See Javadoc for details.
  • -
  • Consider configuring an - Access log.
  • -
-
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/manager-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/manager-howto.html deleted file mode 100644 index 095815ead9b6fc5706f762854ac23a7e6806ebce..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/manager-howto.html +++ /dev/null @@ -1,1448 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Manager App HOW-TO

Manager App HOW-TO

Table of Contents

Introduction

- -

In many production environments, it is very useful to have the capability -to deploy a new web application, or undeploy an existing one, without having -to shut down and restart the entire container. In addition, you can request -an existing application to reload itself, even if you have not declared it -to be reloadable in the Tomcat server -configuration file.

- -

To support these capabilities, Tomcat includes a web application -(installed by default on context path /manager) that supports -the following functions:

-
    -
  • Deploy a new web application from the uploaded contents of a WAR file.
  • -
  • Deploy a new web application, on a specified context path, from the - server file system.
  • -
  • List the currently deployed web applications, as well as the - sessions that are currently active for those web apps.
  • -
  • Reload an existing web application, to reflect changes in the - contents of /WEB-INF/classes or /WEB-INF/lib. -
  • -
  • List the OS and JVM property values.
  • -
  • List the available global JNDI resources, for use in deployment - tools that are preparing <ResourceLink> elements - nested in a <Context> deployment description.
  • -
  • Start a stopped application (thus making it available again).
  • -
  • Stop an existing application (so that it becomes unavailable), but - do not undeploy it.
  • -
  • Undeploy a deployed web application and delete its document base - directory (unless it was deployed from file system).
  • -
- -

A default Tomcat installation includes the Manager. To add an instance of the -Manager web application Context to a new host install the -manager.xml context configuration file in the -$CATALINA_BASE/conf/[enginename]/[hostname] folder. Here is an -example:

-
<Context privileged="true" antiResourceLocking="false"
-         docBase="${catalina.home}/webapps/manager">
-  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
-         allow="127\.0\.0\.1" />
-</Context>
- -

If you have Tomcat configured to support multiple virtual hosts -(websites) you would need to configure a Manager for each.

- -

There are three ways to use the Manager web application.

-
    -
  • As an application with a user interface you use in your browser. -Here is an example URL where you can replace localhost with -your website host name: http://localhost:8080/manager/html .
  • -
  • A minimal version using HTTP requests only which is suitable for use -by scripts setup by system administrators. Commands are given as part of the -request URI, and responses are in the form of simple text that can be easily -parsed and processed. See -Supported Manager Commands for more information.
  • -
  • A convenient set of task definitions for the Ant -(version 1.4 or later) build tool. See -Executing Manager Commands -With Ant for more information.
  • -
- -

Configuring Manager Application Access

- - -

The description below uses the variable name $CATALINA_BASE to refer the - base directory against which most relative paths are resolved. If you have - not configured Tomcat for multiple instances by setting a CATALINA_BASE - directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME, - the directory into which you have installed Tomcat.

- - -

It would be quite unsafe to ship Tomcat with default settings that allowed -anyone on the Internet to execute the Manager application on your server. -Therefore, the Manager application is shipped with the requirement that anyone -who attempts to use it must authenticate themselves, using a username and -password that have one of manager-xxx roles associated with -them (the role name depends on what functionality is required). -Further, there is no username in the default users file -($CATALINA_BASE/conf/tomcat-users.xml) that is assigned to those -roles. Therefore, access to the Manager application is completely disabled -by default.

- -

You can find the role names in the web.xml file of the Manager -web application. The available roles are:

- -
    -
  • manager-gui — Access to the HTML interface.
  • -
  • manager-status — Access to the "Server Status" - page only.
  • -
  • manager-script — Access to the tools-friendly - plain text interface that is described in this document, - and to the "Server Status" page.
  • -
  • manager-jmx — Access to JMX proxy interface - and to the "Server Status" page.
  • -
- -

The HTML interface is protected against CSRF (Cross-Site Request Forgery) -attacks, but the text and JMX interfaces cannot be protected. It means that -users who are allowed access to the text and JMX interfaces have to be cautious -when accessing the Manager application with a web browser. -To maintain the CSRF protection:

- -
    -
  • If you use web browser to access the Manager application using - a user that has either manager-script or - manager-jmx roles (for example for testing - the plain text or JMX interfaces), you MUST close all windows - of the browser afterwards to terminate the session. - If you do not close the browser and visit other sites, you may become - victim of a CSRF attack.
  • -
  • It is recommended to never grant - the manager-script or manager-jmx - roles to users that have the manager-gui role.
  • -
- -

Note that JMX proxy interface is effectively low-level root-like -administrative interface of Tomcat. One can do a lot, if he knows -what commands to call. You should be cautious when enabling the -manager-jmx role.

- -

To enable access to the Manager web application, you must either create -a new username/password combination and associate one of the -manager-xxx roles with it, or add a -manager-xxx role -to some existing username/password combination. -As the majority of this document describes the using the text interface, this -example will use the role name manager-script. -Exactly how the usernames/passwords are configured depends on which -Realm implementation you are using:

-
    -
  • UserDatabaseRealm plus MemoryUserDatabase, or MemoryRealm - — The UserDatabaseRealm and MemoryUserDatabase are - configured in the default $CATALINA_BASE/conf/server.xml. - Both MemoryUserDatabase and MemoryRealm read an - XML-format file by default stored at - $CATALINA_BASE/conf/tomcat-users.xml, which can be - edited with any text editor. This file contains an XML - <user> for each individual user, which might - look something like this: -
    <user username="craigmcc" password="secret" roles="standard,manager-script" />
    - which defines the username and password used by this individual to - log on, and the role names he or she is associated with. You can - add the manager-script role to the comma-delimited - roles attribute for one or more existing users, and/or - create new users with that assigned role.
  • -
  • DataSourceRealm or JDBCRealm - — Your user and role information is stored in - a database accessed via JDBC. Add the manager-script role - to one or more existing users, and/or create one or more new users - with this role assigned, following the standard procedures for your - environment.
  • -
  • JNDIRealm — Your user and role information is stored in - a directory server accessed via LDAP. Add the - manager-script role to one or more existing users, - and/or create one or more new users with this role assigned, following - the standard procedures for your environment.
  • -
- -

The first time you attempt to issue one of the Manager commands -described in the next section, you will be challenged to log on using -BASIC authentication. The username and password you enter do not matter, -as long as they identify a valid user in the users database who possesses -the role manager-script.

- -

In addition to the password restrictions, access to the Manager web -application can be restricted by the remote IP address or host -by adding a RemoteAddrValve or RemoteHostValve. -See valves documentation -for details. Here is -an example of restricting access to the localhost by IP address:

-
<Context privileged="true">
-         <Valve className="org.apache.catalina.valves.RemoteAddrValve"
-                allow="127\.0\.0\.1"/>
-</Context>
- -

HTML User-friendly Interface

- -

The user-friendly HTML interface of Manager web application is located at

- -
http://{host}:{port}/manager/html
- -

As has already been mentioned above, you need manager-gui -role to be allowed to access it. There is a separate document that provides -help on this interface. See:

- - - -

The HTML interface is protected against CSRF (Cross-Site Request Forgery) -attacks. Each access to the HTML pages generates a random token, which is -stored in your session and is included in all links on the page. If your next -action does not have correct value of the token, the action will be denied. -If the token has expired you can start again from the main page or -List Applications page of Manager.

- -

Supported Manager Commands

- -

All commands that the Manager application knows how to process are -specified in a single request URI like this:

-
http://{host}:{port}/manager/text/{command}?{parameters}
-

where {host} and {port} represent the hostname -and port number on which Tomcat is running, {command} -represents the Manager command you wish to execute, and -{parameters} represents the query parameters -that are specific to that command. In the illustrations below, customize -the host and port appropriately for your installation.

- -

The commands are usually executed by HTTP GET requests. The -/deploy command has a form that is executed by an HTTP PUT request.

- -

Common Parameters

- -

Most commands accept one or more of the following query parameters:

-
    -
  • path - The context path (including the leading slash) - of the web application you are dealing with. To select the ROOT web - application, specify "/". NOTE: - It is not possible to perform administrative commands on the - Manager application itself.
  • -
  • version - The version of this web application as used by - the parallel deployment feature. If you - use parallel deployment wherever a path is required you must specify a - version in addition to the path and it is the combination of path and - version that must be unique rather than just the path.
  • -
  • war - URL of a web application archive (WAR) file, or - pathname of a directory which contains the web application, or a - Context configuration ".xml" file. You can use URLs in any of the - following formats: -
      -
    • file:/absolute/path/to/a/directory - The absolute - path of a directory that contains the unpacked version of a web - application. This directory will be attached to the context path - you specify without any changes.
    • -
    • file:/absolute/path/to/a/webapp.war - The absolute - path of a web application archive (WAR) file. This is valid - only for the /deploy command, and is - the only acceptable format to that command.
    • -
    • file:/absolute/path/to/a/context.xml - The - absolute path of a web application Context configuration ".xml" - file which contains the Context configuration element.
    • -
    • directory - The directory name for the web - application context in the Host's application base directory.
    • -
    • webapp.war - The name of a web application war file - located in the Host's application base directory.
    • -
  • -
- -

Each command will return a response in text/plain format -(i.e. plain ASCII with no HTML markup), making it easy for both humans and -programs to read). The first line of the response will begin with either -OK or FAIL, indicating whether the requested -command was successful or not. In the case of failure, the rest of the first -line will contain a description of the problem that was encountered. Some -commands include additional lines of information as described below.

- -

Internationalization Note - The Manager application looks up -its message strings in resource bundles, so it is possible that the strings -have been translated for your platform. The examples below show the English -version of the messages.

- -
- -

Deploy A New Application Archive (WAR) Remotely

- -
http://localhost:8080/manager/text/deploy?path=/foo
- -

Upload the web application archive (WAR) file that is specified as the -request data in this HTTP PUT request, install it into the appBase -directory of our corresponding virtual host, and start, deriving the name for -the WAR file added to the appBase from the specified path. The -application can later be undeployed (and the corresponding WAR file removed) by -use of the /undeploy command.

- -

This command is executed by an HTTP PUT request.

- -

The .WAR file may include Tomcat specific deployment configuration, by -including a Context configuration XML file in -/META-INF/context.xml.

- -

URL parameters include:

-
    -
  • update: When set to true, any existing update will be - undeployed first. The default value is set to false.
  • -
  • tag: Specifying a tag name, this allows associating the - deployed webapp with a tag or label. If the web application is undeployed, - it can be later redeployed when needed using only the tag.
  • -
- -

NOTE - This command is the logical -opposite of the /undeploy command.

- -

If installation and startup is successful, you will receive a response -like this:

-
OK - Deployed application at context path /foo
- -

Otherwise, the response will start with FAIL and include an -error message. Possible causes for problems include:

-
    -
  • Application already exists at path /foo -

    The context paths for all currently running web applications must be - unique. Therefore, you must undeploy the existing web - application using this context path, or choose a different context path - for the new one. The update parameter may be specified as - a parameter on the URL, with a value of true to avoid this - error. In that case, an undeploy will be performed on an existing - application before performing the deployment.

    -
  • -
  • Encountered exception -

    An exception was encountered trying to start the new web application. - Check the Tomcat logs for the details, but likely explanations include - problems parsing your /WEB-INF/web.xml file, or missing - classes encountered when initializing application event listeners and - filters.

    -
  • -
- -
- -

Deploy A New Application from a Local Path

- -

Deploy and start a new web application, attached to the specified context -path (which must not be in use by any other web application). -This command is the logical opposite of the /undeploy command.

- -

This command is executed by an HTTP GET request. -There are a number of different ways the deploy command can be used.

- -

Deploy a previously deployed webapp

- -
http://localhost:8080/manager/text/deploy?path=/footoo&tag=footag
- -

This can be used to deploy a previously deployed web application, which -has been deployed using the tag attribute. Note that the work -directory of the Manager webapp will contain the previously deployed WARs; -removing it would make the deployment fail.

- -
- -

Deploy a Directory or WAR by URL

- -

Deploy a web application directory or ".war" file located on the Tomcat -server. If no path is specified, the path and version are derived -from the directory name or the war file name. The war parameter -specifies a URL (including the file: scheme) for either -a directory or a web application archive (WAR) file. The supported syntax for -a URL referring to a WAR file is described on the Javadocs page for the -java.net.JarURLConnection class. Use only URLs that refer to -the entire WAR file.

- -

In this example the web application located in the directory -/path/to/foo on the Tomcat server is deployed as the -web application context named /footoo.

-
http://localhost:8080/manager/text/deploy?path=/footoo&war=file:/path/to/foo
- - -

In this example the ".war" file /path/to/bar.war on the -Tomcat server is deployed as the web application context named -/bar. Notice that there is no path parameter -so the context path defaults to the name of the web application archive -file without the ".war" extension.

-
http://localhost:8080/manager/text/deploy?war=file:/path/to/bar.war
- -
- -

Deploy a Directory or War from the Host appBase

- -

Deploy a web application directory or ".war" file located in your Host -appBase directory. The path and optional version are derived from the directory -or war file name.

- -

In this example the web application located in a sub directory named -foo in the Host appBase directory of the Tomcat server is -deployed as the web application context named /foo. Notice -that the context path used is the name of the web application directory.

-
http://localhost:8080/manager/text/deploy?war=foo
- - -

In this example the ".war" file bar.war located in your -Host appBase directory on the Tomcat server is deployed as the web -application context named /bar.

-
http://localhost:8080/manager/text/deploy?war=bar.war
- -
- -

Deploy using a Context configuration ".xml" file

- -

If the Host deployXML flag is set to true you can deploy a web -application using a Context configuration ".xml" file and an optional -".war" file or web application directory. The context path -is not used when deploying a web application using a context ".xml" -configuration file.

- -

A Context configuration ".xml" file can contain valid XML for a -web application Context just as if it were configured in your -Tomcat server.xml configuration file. Here is an -example:

-
<Context path="/foobar" docBase="/path/to/application/foobar">
-</Context>
- - -

When the optional war parameter is set to the URL -for a web application ".war" file or directory it overrides any -docBase configured in the context configuration ".xml" file.

- -

Here is an example of deploying an application using a Context -configuration ".xml" file.

-
http://localhost:8080/manager/text/deploy?config=file:/path/context.xml
- - -

Here is an example of deploying an application using a Context -configuration ".xml" file and a web application ".war" file located -on the server.

-
http://localhost:8080/manager/text/deploy
- ?config=file:/path/context.xml&war=file:/path/bar.war
- -
- -

Deployment Notes

- -

If the Host is configured with unpackWARs=true and you deploy a war -file, the war will be unpacked into a directory in your Host appBase -directory.

- -

If the application war or directory is installed in your Host appBase -directory and either the Host is configured with autoDeploy=true or the -Context path must match the directory name or war file name without the -".war" extension.

- -

For security when untrusted users can manage web applications, the -Host deployXML flag can be set to false. This prevents untrusted users -from deploying web applications using a configuration XML file and -also prevents them from deploying application directories or ".war" -files located outside of their Host appBase.

- -
- -

Deploy Response

- -

If installation and startup is successful, you will receive a response -like this:

-
OK - Deployed application at context path /foo
- -

Otherwise, the response will start with FAIL and include an -error message. Possible causes for problems include:

-
    -
  • Application already exists at path /foo -

    The context paths for all currently running web applications must be - unique. Therefore, you must undeploy the existing web - application using this context path, or choose a different context path - for the new one. The update parameter may be specified as - a parameter on the URL, with a value of true to avoid this - error. In that case, an undeploy will be performed on an existing - application before performing the deployment.

    -
  • -
  • Document base does not exist or is not a readable directory -

    The URL specified by the war parameter must identify a - directory on this server that contains the "unpacked" version of a - web application, or the absolute URL of a web application archive (WAR) - file that contains this application. Correct the value specified by - the war parameter.

    -
  • -
  • Encountered exception -

    An exception was encountered trying to start the new web application. - Check the Tomcat logs for the details, but likely explanations include - problems parsing your /WEB-INF/web.xml file, or missing - classes encountered when initializing application event listeners and - filters.

    -
  • -
  • Invalid application URL was specified -

    The URL for the directory or web application that you specified - was not valid. Such URLs must start with file:, and URLs - for a WAR file must end in ".war".

    -
  • -
  • Invalid context path was specified -

    The context path must start with a slash character. To reference the - ROOT web application use "/".

    -
  • -
  • Context path must match the directory or WAR file name: -

    If the application war or directory is installed in your Host appBase - directory and either the Host is configured with autoDeploy=true the - Context path must match the directory name or war file name without - the ".war" extension.

    -
  • -
  • Only web applications in the Host web application directory can - be installed -

    - If the Host deployXML flag is set to false this error will happen - if an attempt is made to deploy a web application directory or - ".war" file outside of the Host appBase directory. -

  • -
- -
-
- -

List Currently Deployed Applications

- -
http://localhost:8080/manager/text/list
- -

List the context paths, current status (running or -stopped), and number of active sessions for all currently -deployed web applications. A typical response immediately -after starting Tomcat might look like this:

-
OK - Listed applications for virtual host localhost
-/webdav:running:0:webdav
-/examples:running:0:examples
-/manager:running:0:manager
-/:running:0:ROOT
-/test:running:0:test##2
-/test:running:0:test##1
- -
- -

Reload An Existing Application

- -
http://localhost:8080/manager/text/reload?path=/examples
- -

Signal an existing application to shut itself down and reload. This can -be useful when the web application context is not reloadable and you have -updated classes or property files in the /WEB-INF/classes -directory or when you have added or updated jar files in the -/WEB-INF/lib directory. -

- -

If this command succeeds, you will see a response like this:

-
OK - Reloaded application at context path /examples
- -

Otherwise, the response will start with FAIL and include an -error message. Possible causes for problems include:

-
    -
  • Encountered exception -

    An exception was encountered trying to restart the web application. - Check the Tomcat logs for the details.

    -
  • -
  • Invalid context path was specified -

    The context path must start with a slash character. To reference the - ROOT web application use "/".

    -
  • -
  • No context exists for path /foo -

    There is no deployed application on the context path - that you specified.

    -
  • -
  • No context path was specified -

    - The path parameter is required. -

  • -
  • Reload not supported on WAR deployed at path /foo -

    - Currently, application reloading (to pick up changes to the classes or - web.xml file) is not supported when a web application is - deployed directly from a WAR file. It only works when the web application - is deployed from an unpacked directory. If you are using a WAR file, - you should undeploy and then deploy or - deploy with the update parameter the - application again to pick up your changes. -

  • -
- -
- -

List OS and JVM Properties

- -
http://localhost:8080/manager/text/serverinfo
- -

Lists information about the Tomcat version, OS, and JVM properties.

- -

If an error occurs, the response will start with FAIL and -include an error message. Possible causes for problems include:

-
    -
  • Encountered exception -

    An exception was encountered trying to enumerate the system properties. - Check the Tomcat logs for the details.

    -
  • -
- -
- -

List Available Global JNDI Resources

- -
http://localhost:8080/manager/text/resources[?type=xxxxx]
- -

List the global JNDI resources that are available for use in resource -links for context configuration files. If you specify the type -request parameter, the value must be the fully qualified Java class name of -the resource type you are interested in (for example, you would specify -javax.sql.DataSource to acquire the names of all available -JDBC data sources). If you do not specify the type request -parameter, resources of all types will be returned.

- -

Depending on whether the type request parameter is specified -or not, the first line of a normal response will be:

-
OK - Listed global resources of all types
-

or

-
OK - Listed global resources of type xxxxx
-

followed by one line for each resource. Each line is composed of fields -delimited by colon characters (":"), as follows:

-
    -
  • Global Resource Name - The name of this global JNDI resource, - which would be used in the global attribute of a - <ResourceLink> element.
  • -
  • Global Resource Type - The fully qualified Java class name of - this global JNDI resource.
  • -
- -

If an error occurs, the response will start with FAIL and -include an error message. Possible causes for problems include:

-
    -
  • Encountered exception -

    An exception was encountered trying to enumerate the global JNDI - resources. Check the Tomcat logs for the details.

    -
  • -
  • No global JNDI resources are available -

    The Tomcat server you are running has been configured without - global JNDI resources.

    -
  • -
- - -
- -

Session Statistics

- -
http://localhost:8080/manager/text/sessions?path=/examples
- -

Display the default session timeout for a web application, and the -number of currently active sessions that fall within one-minute ranges of -their actual timeout times. For example, after restarting Tomcat and then -executing one of the JSP samples in the /examples web app, -you might get something like this:

- -
OK - Session information for application at context path /examples
-Default maximum session inactive interval 30 minutes
-<1 minutes: 1 sessions
-1 - <2 minutes: 1 sessions
- -
- -

Expire Sessions

- -
http://localhost:8080/manager/text/expire?path=/examples&idle=num
- -

Display the session statistics (like the above /sessions -command) and expire sessions that are idle for longer than num -minutes. To expire all sessions, use &idle=0 .

- -
OK - Session information for application at context path /examples
-Default maximum session inactive interval 30 minutes
-1 - <2 minutes: 1 sessions
-3 - <4 minutes: 1 sessions
->0 minutes: 2 sessions were expired
- -

Actually /sessions and /expire are synonyms for -the same command. The difference is in the presence of idle -parameter.

- -
- -

Start an Existing Application

- -
http://localhost:8080/manager/text/start?path=/examples
- -

Signal a stopped application to restart, and make itself available again. -Stopping and starting is useful, for example, if the database required by -your application becomes temporarily unavailable. It is usually better to -stop the web application that relies on this database rather than letting -users continuously encounter database exceptions.

- -

If this command succeeds, you will see a response like this:

-
OK - Started application at context path /examples
- -

Otherwise, the response will start with FAIL and include an -error message. Possible causes for problems include:

-
    -
  • Encountered exception -

    An exception was encountered trying to start the web application. - Check the Tomcat logs for the details.

    -
  • -
  • Invalid context path was specified -

    The context path must start with a slash character. To reference the - ROOT web application use "/".

    -
  • -
  • No context exists for path /foo -

    There is no deployed application on the context path - that you specified.

    -
  • -
  • No context path was specified -

    - The path parameter is required. -

  • -
- -
- -

Stop an Existing Application

- -
http://localhost:8080/manager/text/stop?path=/examples
- -

Signal an existing application to make itself unavailable, but leave it -deployed. Any request that comes in while an application is -stopped will see an HTTP error 404, and this application will show as -"stopped" on a list applications command.

- -

If this command succeeds, you will see a response like this:

-
OK - Stopped application at context path /examples
- -

Otherwise, the response will start with FAIL and include an -error message. Possible causes for problems include:

-
    -
  • Encountered exception -

    An exception was encountered trying to stop the web application. - Check the Tomcat logs for the details.

    -
  • -
  • Invalid context path was specified -

    The context path must start with a slash character. To reference the - ROOT web application use "/".

    -
  • -
  • No context exists for path /foo -

    There is no deployed application on the context path - that you specified.

    -
  • -
  • No context path was specified - The path parameter is required. -
  • -
- -
- - -

Undeploy an Existing Application

- -
http://localhost:8080/manager/text/undeploy?path=/examples
- -

WARNING - This command will delete any web -application artifacts that exist within appBase directory -(typically "webapps") for this virtual host. -This will delete the application .WAR, if present, -the application directory resulting either from a deploy in unpacked form -or from .WAR expansion as well as the XML Context definition from -$CATALINA_BASE/conf/[enginename]/[hostname]/ directory. -If you simply want to take an application -out of service, you should use the /stop command instead.

- -

Signal an existing application to gracefully shut itself down, and -remove it from Tomcat (which also makes this context path available for -reuse later). In addition, the document root directory is removed, if it -exists in the appBase directory (typically "webapps") for -this virtual host. This command is the logical opposite of the -/deploy command.

- -

If this command succeeds, you will see a response like this:

-
OK - Undeployed application at context path /examples
- -

Otherwise, the response will start with FAIL and include an -error message. Possible causes for problems include:

-
    -
  • Encountered exception -

    An exception was encountered trying to undeploy the web application. - Check the Tomcat logs for the details.

    -
  • -
  • Invalid context path was specified -

    The context path must start with a slash character. To reference the - ROOT web application use "/".

    -
  • -
  • No context exists named /foo -

    There is no deployed application with the name that you specified.

    -
  • -
  • No context path was specified - The path parameter is required. -
  • -
- -
- -

Finding memory leaks

- -
http://localhost:8080/manager/text/findleaks[?statusLine=[true|false]]
- -

The find leaks diagnostic triggers a full garbage collection. It -should be used with extreme caution on production systems.

- -

The find leaks diagnostic attempts to identify web applications that have -caused memory leaks when they were stopped, reloaded or undeployed. Results -should always be confirmed -with a profiler. The diagnostic uses additional functionality provided by the -StandardHost implementation. It will not work if a custom host is used that -does not extend StandardHost.

- -

Explicitly triggering a full garbage collection from Java code is documented -to be unreliable. Furthermore, depending on the JVM used, there are options to -disable explicit GC triggering, like -XX:+DisableExplicitGC. -If you want to make sure, that the diagnostics were successfully running a full -GC, you will need to check using tools like GC logging, JConsole or similar.

- -

If this command succeeds, you will see a response like this:

-
/leaking-webapp
- -

If you wish to see a status line included in the response then include the -statusLine query parameter in the request with a value of -true.

- -

Each context path for a web application that was stopped, reloaded or -undeployed, but which classes from the previous runs are still loaded in memory, -thus causing a memory leak, will be listed on a new line. If an application -has been reloaded several times, it may be listed several times.

- -

If the command does not succeed, the response will start with -FAIL and include an error message.

- -
- -

Connector SSL/TLS cipher information

- -
http://localhost:8080/manager/text/sslConnectorCiphers
- -

The SSL Connector/Ciphers diagnostic lists the SSL/TLS ciphers that are currently -configured for each connector. For NIO and NIO2, the names of the individual -cipher suites are listed. For APR, the value of SSLCipherSuite is returned.

- -

The response will look something like this:

-
OK - Connector / SSL Cipher information
-Connector[HTTP/1.1-8080]
-  SSL is not enabled for this connector
-Connector[HTTP/1.1-8443]
-  TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
-  TLS_DHE_RSA_WITH_AES_128_CBC_SHA
-  TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
-  TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
-  ...
- -
- -

Connector SSL/TLS certificate chain information

- -
http://localhost:8080/manager/text/sslConnectorCerts
- -

The SSL Connector/Certs diagnostic lists the certificate chain that is -currently configured for each virtual host.

- -

The response will look something like this:

-
OK - Connector / Certificate Chain information
-Connector[HTTP/1.1-8080]
-SSL is not enabled for this connector
-Connector[HTTP/1.1-8443]-_default_-RSA
-[
-[
-  Version: V3
-  Subject: CN=localhost, OU=Apache Tomcat PMC, O=The Apache Software Foundation, L=Wakefield, ST=MA, C=US
-  Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11
-  ...
- -
- -

Connector SSL/TLS trusted certificate information

- -
http://localhost:8080/manager/text/sslConnectorTrustedCerts
- -

The SSL Connector/Certs diagnostic lists the trusted certificates that are -currently configured for each virtual host.

- -

The response will look something like this:

-
OK - Connector / Trusted Certificate information
-Connector[HTTP/1.1-8080]
-SSL is not enabled for this connector
-Connector[AJP/1.3-8009]
-SSL is not enabled for this connector
-Connector[HTTP/1.1-8443]-_default_
-[
-[
-  Version: V3
-  Subject: CN=Apache Tomcat Test CA, OU=Apache Tomcat PMC, O=The Apache Software Foundation, L=Wakefield, ST=MA, C=US
-  ...
- -
- -

Thread Dump

- -
http://localhost:8080/manager/text/threaddump
- -

Write a JVM thread dump.

- -

The response will look something like this:

-
OK - JVM thread dump
-2014-12-08 07:24:40.080
-Full thread dump Java HotSpot(TM) Client VM (25.25-b02 mixed mode):
-
-"http-nio-8080-exec-2" Id=26 cpu=46800300 ns usr=46800300 ns blocked 0 for -1 ms waited 0 for -1 ms
-   java.lang.Thread.State: RUNNABLE
-        locks java.util.concurrent.ThreadPoolExecutor$Worker@1738ad4
-        at sun.management.ThreadImpl.dumpThreads0(Native Method)
-        at sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:446)
-        at org.apache.tomcat.util.Diagnostics.getThreadDump(Diagnostics.java:440)
-        at org.apache.tomcat.util.Diagnostics.getThreadDump(Diagnostics.java:409)
-        at org.apache.catalina.manager.ManagerServlet.threadDump(ManagerServlet.java:557)
-        at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:371)
-        at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
-        at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
-...
-
- -
- -

VM Info

- -
http://localhost:8080/manager/text/vminfo
- -

Write some diagnostic information about Java Virtual Machine.

- -

The response will look something like this:

-
OK - VM info
-2014-12-08 07:27:32.578
-Runtime information:
-  vmName: Java HotSpot(TM) Client VM
-  vmVersion: 25.25-b02
-  vmVendor: Oracle Corporation
-  specName: Java Virtual Machine Specification
-  specVersion: 1.8
-  specVendor: Oracle Corporation
-  managementSpecVersion: 1.2
-  name: ...
-  startTime: 1418012458849
-  uptime: 393855
-  isBootClassPathSupported: true
-
-OS information:
-...
-
- -
- -

Save Configuration

- -
http://localhost:8080/manager/text/save
- -

If specified without any parameters, this command saves the current -configuration of the server to server.xml. The existing file will be renamed as -a backup if required.

- -

If specified with a path parameter that matches the path of -a deployed web application then the configuration for that web application will -be saved to an appropriately named context.xml file in the xmlBase -for the current Host.

- -

To use the command a StoreConfig MBean must be present. Typically this is -configured using the StoreConfigLifecycleListener. -

- -

If the command does not succeed, the response will start with -FAIL and include an error message.

- -
- -

Server Status

- -

From the following links you can view Status information about the server. -Any one of manager-xxx roles allows access to this page.

- -
http://localhost:8080/manager/status
-http://localhost:8080/manager/status/all
- -

Displays server status information in HTML format.

- -
http://localhost:8080/manager/status?XML=true
-http://localhost:8080/manager/status/all?XML=true
- -

Displays server status information in XML format.

- -

First, you have the server and JVM version number, JVM provider, OS name -and number followed by the architecture type.

- -

Second, there is information about the memory usage of the JVM.

- -

Then, there is information about the Tomcat AJP and HTTP connectors. -The same information is available for both of them : -

-
    -
  • Threads information : Max threads, min and max spare threads, - current thread count and current thread busy.

  • -
  • Request information : Max processing time and processing time, - request and error count, bytes received and sent.

  • -
  • A table showing Stage, Time, Bytes Sent, Bytes Receive, Client, - VHost and Request. All existing threads are listed in the table. - Here is the list of the possible thread stages :

    -
      -
    • "Parse and Prepare Request" : The request headers are - being parsed or the necessary preparation to read the request body (if - a transfer encoding has been specified) is taking place.

    • -
    • "Service" : The thread is processing a request and - generating the response. This stage follows the "Parse and Prepare - Request" stage and precedes the "Finishing" stage. There is always at - least one thread in this stage (the server-status page).

    • -
    • "Finishing" : The end of the request processing. Any - remainder of the response still in the output buffers is sent to the - client. This stage is followed by "Keep-Alive" if it is appropriate to - keep the connection alive or "Ready" if "Keep-Alive" is not - appropriate.

    • -
    • "Keep-Alive" : The thread keeps the connection open to - the client in case the client sends another request. If another request - is received, the next stage will be "Parse and Prepare Request". If no - request is received before the keep alive times out, the connection will - be closed and the next stage will be "Ready".

    • -
    • "Ready" : The thread is at rest and ready to be - used.

    • -
    -
  • -
- -

If you are using /status/all command, additional information -on each of deployed web applications will be available.

- -

Using the JMX Proxy Servlet

- -

What is JMX Proxy Servlet

- The JMX Proxy Servlet is a lightweight proxy to get and set the - tomcat internals. (Or any class that has been exposed via an MBean) - Its usage is not very user friendly but the UI is - extremely helpful for integrating command line scripts for monitoring - and changing the internals of tomcat. You can do two things with the proxy: - get information and set information. For you to really understand the - JMX Proxy Servlet, you should have a general understanding of JMX. - If you don't know what JMX is, then prepare to be confused. -
- -

JMX Query command

-

This takes the form:

-
http://webserver/manager/jmxproxy/?qry=STUFF
-

Where STUFF is the JMX query you wish to perform. For example, - here are some queries you might wish to run:

-
    -
  • - qry=*%3Atype%3DRequestProcessor%2C* --> - type=RequestProcessor which will locate all - workers which can process requests and report - their state. -
  • -
  • - qry=*%3Aj2eeType=Servlet%2c* --> - j2eeType=Servlet which return all loaded servlets. -
  • -
  • - qry=Catalina%3Atype%3DEnvironment%2Cresourcetype%3DGlobal%2Cname%3DsimpleValue --> - Catalina:type=Environment,resourcetype=Global,name=simpleValue - which look for a specific MBean by the given name. -
  • -
-

- You'll need to experiment with this to really understand its capabilities - If you provide no qry parameter, then all of the MBeans will - be displayed. We really recommend looking at the tomcat source code and - understand the JMX spec to get a better understanding of all the queries - you may run. -

-
- -

JMX Get command

-

- The JXMProxyServlet also supports a "get" command that you can use to - fetch the value of a specific MBean's attribute. The general form of - the get command is: -

- -
http://webserver/manager/jmxproxy/?get=BEANNAME&att=MYATTRIBUTE&key=MYKEY
- -

You must provide the following parameters:

-
    -
  1. get: The full bean name
  2. -
  3. att: The attribute you wish to fetch
  4. -
  5. key: (optional) The key into a CompositeData MBean attribute
  6. -
-

- If all goes well, then it will say OK, otherwise an error message will - be shown. For example, let's say we wish to fetch the current heap memory - data: -

- -
http://webserver/manager/jmxproxy/?get=java.lang:type=Memory&att=HeapMemoryUsage
- -

Or, if you only want the "used" key:

- -
http://webserver/manager/jmxproxy/
- ?get=java.lang:type=Memory&att=HeapMemoryUsage&key=used
-
- -

JMX Set command

-

- Now that you can query an MBean, its time to muck with Tomcat's internals! - The general form of the set command is : -

-
http://webserver/manager/jmxproxy/?set=BEANNAME&att=MYATTRIBUTE&val=NEWVALUE
-

So you need to provide 3 request parameters:

-
    -
  1. set: The full bean name
  2. -
  3. att: The attribute you wish to alter
  4. -
  5. val: The new value
  6. -
-

- If all goes ok, then it will say OK, otherwise an error message will be - shown. For example, lets say we wish to turn up debugging on the fly for the - ErrorReportValve. The following will set debugging to 10. -

-
http://localhost:8080/manager/jmxproxy/
- ?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost
- &att=debug&val=10
-

and my result is (YMMV):

-
Result: ok
- -

Here is what I see if I pass in a bad value. Here is the URL I used, - I try set debugging equal to 'cow':

-
http://localhost:8080/manager/jmxproxy/
- ?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost
- &att=debug&val=cow
-

When I try that, my result is

-
Error: java.lang.NumberFormatException: For input string: "cow"
-
- -

JMX Invoke command

-

The invoke command enables methods to be called on MBeans. The - general form of the command is:

-
http://webserver/manager/jmxproxy/
- ?invoke=BEANNAME&op=METHODNAME&ps=COMMASEPARATEDPARAMETERS
-

For example, to call the findConnectors() method of the - Service use:

-
http://localhost:8080/manager/jmxproxy/
- ?invoke=Catalina%3Atype%3DService&op=findConnectors&ps=
-
-

Executing Manager Commands With Ant

- -

In addition to the ability to execute Manager commands via HTTP requests, -as documented above, Tomcat includes a convenient set of Task definitions -for the Ant (version 1.4 or later) build tool. In order to use these -commands, you must perform the following setup operations:

-
    -
  • Download the binary distribution of Ant from - http://ant.apache.org. - You must use version 1.4 or later.
  • -
  • Install the Ant distribution in a convenient directory (called - ANT_HOME in the remainder of these instructions).
  • -
  • Add the $ANT_HOME/bin directory to your PATH - environment variable.
  • -
  • Configure at least one username/password combination in your Tomcat - user database that includes the manager-script role.
  • -
- -

To use custom tasks within Ant, you must declare them first with an -<import> element. Therefore, your build.xml -file might look something like this:

- -
<project name="My Application" default="compile" basedir=".">
-
-  <!-- Configure the directory into which the web application is built -->
-  <property name="build"    value="${basedir}/build"/>
-
-  <!-- Configure the context path for this application -->
-  <property name="path"     value="/myapp"/>
-
-  <!-- Configure properties to access the Manager application -->
-  <property name="url"      value="http://localhost:8080/manager/text"/>
-  <property name="username" value="myusername"/>
-  <property name="password" value="mypassword"/>
-
-  <!-- Configure the path to the Tomcat installation -->
-  <property name="catalina.home" value="/usr/local/apache-tomcat"/>
-
-  <!-- Configure the custom Ant tasks for the Manager application -->
-  <import file="${catalina.home}/bin/catalina-tasks.xml"/>
-
-  <!-- Executable Targets -->
-  <target name="compile" description="Compile web application">
-    <!-- ... construct web application in ${build} subdirectory, and
-            generated a ${path}.war ... -->
-  </target>
-
-  <target name="deploy" description="Install web application"
-          depends="compile">
-    <deploy url="${url}" username="${username}" password="${password}"
-            path="${path}" war="file:${build}${path}.war"/>
-  </target>
-
-  <target name="reload" description="Reload web application"
-          depends="compile">
-    <reload  url="${url}" username="${username}" password="${password}"
-            path="${path}"/>
-  </target>
-
-  <target name="undeploy" description="Remove web application">
-    <undeploy url="${url}" username="${username}" password="${password}"
-            path="${path}"/>
-  </target>
-
-</project>
- -

Note: The definition of the resources task via the import above will override -the resources datatype added in Ant 1.7. If you wish to use the resources -datatype you will need to use Ant's namespace support to modify -catalina-tasks.xml to assign the Tomcat tasks to their own -namespace.

- -

Now, you can execute commands like ant deploy to deploy the -application to a running instance of Tomcat, or ant reload to -tell Tomcat to reload it. Note also that most of the interesting values in -this build.xml file are defined as replaceable properties, so -you can override their values from the command line. For example, you might -consider it a security risk to include the real manager password in your -build.xml file's source code. To avoid this, omit the password -property, and specify it from the command line:

-
ant -Dpassword=secret deploy
- -

Tasks output capture

- -

Using Ant version 1.6.2 or later, -the Catalina tasks offer the option to capture their output in -properties or external files. They support directly the following subset of the -<redirector> type attributes: -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AttributeDescriptionRequired
outputName of a file to which to write the output. If -the error stream is not also redirected to a file or property, it will -appear in this output.No
errorThe file to which the standard error of the -command should be redirected.No
logErrorThis attribute is used when you wish to see -error output in Ant's log and you are redirecting output to a -file/property. The error output will not be included in the output -file/property. If you redirect error with the error or errorProperty -attributes, this will have no effect.No
appendWhether output and error files should be -appended to or overwritten. Defaults to false.No
createemptyfilesWhether output and error files should be created -even when empty. Defaults to true.No
outputpropertyThe name of a property in which the output of -the command should be stored. Unless the error stream is redirected to -a separate file or stream, this property will include the error output.No
errorpropertyThe name of a property in which the standard -error of the command should be stored.No
- -

A couple of additional attributes can also be specified: -

- - - - - - - - - - - - - - - - -
AttributeDescriptionRequired
alwaysLogThis attribute is used when you wish to see the -output you are capturing, appearing also in the Ant's log. It must not be -used unless you are capturing task output. -Defaults to false. -This attribute will be supported directly by <redirector> -in Ant 1.6.3No
failonerrorThis attribute is used when you wish to avoid that -any manager command processing error terminates the ant execution. Defaults to true. -It must be set to false, if you want to capture error output, -otherwise execution will terminate before anything can be captured. -
-This attribute acts only on manager command execution, -any wrong or missing command attribute will still cause Ant execution termination. -
No
- -

They also support the embedded <redirector> element -in which you can specify -its full set of attributes, but input, inputstring and -inputencoding that, even if accepted, are not used because they have -no meaning in this context. -Refer to ant manual for details on -<redirector> element attributes. -

- -

-Here is a sample build file extract that shows how this output redirection support -can be used: -

- -
    <target name="manager.deploy"
-        depends="context.status"
-        if="context.notInstalled">
-        <deploy url="${mgr.url}"
-            username="${mgr.username}"
-            password="${mgr.password}"
-            path="${mgr.context.path}"
-            config="${mgr.context.descriptor}"/>
-    </target>
-
-    <target name="manager.deploy.war"
-        depends="context.status"
-        if="context.deployable">
-        <deploy url="${mgr.url}"
-            username="${mgr.username}"
-            password="${mgr.password}"
-            update="${mgr.update}"
-            path="${mgr.context.path}"
-            war="${mgr.war.file}"/>
-    </target>
-
-    <target name="context.status">
-        <property name="running" value="${mgr.context.path}:running"/>
-        <property name="stopped" value="${mgr.context.path}:stopped"/>
-
-        <list url="${mgr.url}"
-            outputproperty="ctx.status"
-            username="${mgr.username}"
-            password="${mgr.password}">
-        </list>
-
-        <condition property="context.running">
-            <contains string="${ctx.status}" substring="${running}"/>
-        </condition>
-        <condition property="context.stopped">
-            <contains string="${ctx.status}" substring="${stopped}"/>
-        </condition>
-        <condition property="context.notInstalled">
-            <and>
-                <isfalse value="${context.running}"/>
-                <isfalse value="${context.stopped}"/>
-            </and>
-        </condition>
-        <condition property="context.deployable">
-            <or>
-                <istrue value="${context.notInstalled}"/>
-                <and>
-                    <istrue value="${context.running}"/>
-                    <istrue value="${mgr.update}"/>
-                </and>
-                <and>
-                    <istrue value="${context.stopped}"/>
-                    <istrue value="${mgr.update}"/>
-                </and>
-            </or>
-        </condition>
-        <condition property="context.undeployable">
-            <or>
-                <istrue value="${context.running}"/>
-                <istrue value="${context.stopped}"/>
-            </or>
-        </condition>
-    </target>
- -

WARNING: even if it doesn't make many sense, and is always a bad idea, -calling a Catalina task more than once, -badly set Ant tasks depends chains may cause that a task be called -more than once in the same Ant run, even if not intended to. A bit of caution should be exercised when you are -capturing output from that task, because this could lead to something unexpected:

-
    -
  • when capturing in a property you will find in it only the output from the first call, because -Ant properties are immutable and once set they cannot be changed, -
  • -
  • when capturing in a file, each run will overwrite it and you will find in it only the last call -output, unless you are using the append="true" attribute, in which case you will -see the output of each task call appended to the file. -
  • -
- -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/maven-jars.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/maven-jars.html deleted file mode 100644 index 12b4babc5eb759809dd830a73091ef84788a219a..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/maven-jars.html +++ /dev/null @@ -1,69 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Apache Tomcat - Using Tomcat libraries with Maven

Apache Tomcat - Using Tomcat libraries with Maven

Table of Contents

Using Tomcat libraries With Maven

-

Tomcat Snapshots

- Tomcat snapshots are located in the - Apache Snapshot Repository. - The official URL is
http://repository.apache.org/content/repositories/snapshots/org/apache/tomcat/
-

- Snapshots are done periodically, not on a regular basis, but when changes happen and the Tomcat team deems a new snapshot might - useful. -

-
-

Tomcat Releases

-

- Stable releases are published to the - Central - Maven Repositories. The URL for this is -

-
http://repo2.maven.org/maven2/org/apache/tomcat/
-
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/mbeans-descriptors-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/mbeans-descriptors-howto.html deleted file mode 100644 index 499e50f8746292a47168fa4a054a41b50a32adff..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/mbeans-descriptors-howto.html +++ /dev/null @@ -1,94 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - MBeans Descriptors How To

MBeans Descriptors How To

Table of Contents

Introduction

- -

Tomcat uses JMX MBeans as the technology for implementing -manageability of Tomcat.

- -

The descriptions of JMX MBeans for Catalina are in the mbeans-descriptors.xml -file in each package.

- -

You will need to add MBean descriptions for your custom components -in order to avoid a "ManagedBean is not found" exception.

- -

Adding MBean descriptions

- -

You may also add MBean descriptions for custom components in -a mbeans-descriptors.xml file, located in the same package as the class files -it describes.

- -

The permitted syntax for the mbeans-descriptors.xml is defined by -the DTD file.

- -

The entries for a custom LDAP authentication Realm may look like this:

- -
  <mbean         name="LDAPRealm"
-            className="org.apache.catalina.mbeans.ClassNameMBean"
-          description="Custom LDAPRealm"
-               domain="Catalina"
-                group="Realm"
-                 type="com.myfirm.mypackage.LDAPRealm">
-
-    <attribute   name="className"
-          description="Fully qualified class name of the managed object"
-                 type="java.lang.String"
-            writeable="false"/>
-
-    <attribute   name="debug"
-          description="The debugging detail level for this component"
-                 type="int"/>
-    .
-    .
-    .
-
-  </mbean>
- - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/mbeans-descriptors.dtd b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/mbeans-descriptors.dtd deleted file mode 100644 index f12b8fe318a819bd1599ee8993dedbda2fcc38f2..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/mbeans-descriptors.dtd +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/monitoring.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/monitoring.html deleted file mode 100644 index 8aa456f8dd675a49ca29287f8debbb55df8a1303..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/monitoring.html +++ /dev/null @@ -1,1136 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Monitoring and Managing Tomcat

Monitoring and Managing Tomcat

Table of Contents

Introduction

- -

Monitoring is a key aspect of system administration. Looking inside a - running server, obtaining some statistics or reconfiguring some aspects of - an application are all daily administration tasks.

- -

Enabling JMX Remote

- -

Note: This configuration is needed only if you are - going to monitor Tomcat remotely. It is not needed if you are going - to monitor it locally, using the same user that Tomcat runs with.

- -

The Oracle website includes the list of options and how to configure - JMX Remote on Java 6: - - http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html. -

-

The following is a quick configuration guide for Java 6:

-

Add the following parameters to setenv.bat script of your - Tomcat (see RUNNING.txt for details).
- Note: This syntax is for Microsoft Windows. The command has - to be on the same line. It is wrapped to be more readable. If Tomcat is - running as a Windows service, use its configuration dialog to set - java options for the service. - For un*xes remove "set " from beginning of the line. -

-
set CATALINA_OPTS=-Dcom.sun.management.jmxremote
-  -Dcom.sun.management.jmxremote.port=%my.jmx.port%
-  -Dcom.sun.management.jmxremote.ssl=false
-  -Dcom.sun.management.jmxremote.authenticate=false
- -
    -
  1. If you require authorization, add and change this: -
      -Dcom.sun.management.jmxremote.authenticate=true
    -  -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password
    -  -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access
    -
  2. -
  3. edit the access authorization file $CATALINA_BASE/conf/jmxremote.access: -
    monitorRole readonly
    -controlRole readwrite
    -
  4. -
  5. edit the password file $CATALINA_BASE/conf/jmxremote.password: -
    monitorRole tomcat
    -controlRole tomcat
    - Tip: The password file should be read-only and only accessible by the - operating system user Tomcat is running as. -
  6. -
-

Note: The JSR 160 JMX-Adaptor opens a second data channel - on a random port. That is a problem when you have a local firewall installed. - To fix it, configure a JmxRemoteLifecycleListener, as described - in listeners documentation. -

- -

Manage Tomcat with JMX remote Ant Tasks

-

To simplify JMX usage with Ant 1.6.x, a set of tasks is provided that may - be used with antlib.

-

antlib: Copy your catalina-ant.jar from $CATALINA_HOME/lib to $ANT_HOME/lib.

-

The following example shows the JMX Accessor usage:
- Note: The name attribute value was wrapped here to be - more readable. It has to be all on the same line, without spaces.

-
<project name="Catalina Ant JMX"
-      xmlns:jmx="antlib:org.apache.catalina.ant.jmx"
-      default="state"
-      basedir=".">
-  <property name="jmx.server.name" value="localhost" />
-  <property name="jmx.server.port" value="9012" />
-  <property name="cluster.server.address" value="192.168.1.75" />
-  <property name="cluster.server.port" value="9025" />
-
-  <target name="state" description="Show JMX Cluster state">
-    <jmx:open
-      host="${jmx.server.name}"
-      port="${jmx.server.port}"
-      username="controlRole"
-      password="tomcat"/>
-    <jmx:get
-      name=
-"Catalina:type=IDataSender,host=localhost,
-senderAddress=${cluster.server.address},senderPort=${cluster.server.port}"
-      attribute="connected"
-      resultproperty="IDataSender.backup.connected"
-      echo="false"
-    />
-    <jmx:get
-      name="Catalina:type=ClusterSender,host=localhost"
-      attribute="senderObjectNames"
-      resultproperty="senderObjectNames"
-      echo="false"
-    />
-    <!-- get current maxActiveSession from ClusterTest application
-       echo it to Ant output and store at
-       property <em>clustertest.maxActiveSessions.orginal</em>
-    -->
-    <jmx:get
-      name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
-      attribute="maxActiveSessions"
-      resultproperty="clustertest.maxActiveSessions.orginal"
-      echo="true"
-    />
-    <!-- set maxActiveSession to 100
-    -->
-    <jmx:set
-      name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
-      attribute="maxActiveSessions"
-      value="100"
-      type="int"
-    />
-    <!-- get all sessions and split result as delimiter <em>SPACE</em> for easy
-       access all session ids directly with Ant property sessions.[0..n].
-    -->
-    <jmx:invoke
-      name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
-      operation="listSessionIds"
-      resultproperty="sessions"
-      echo="false"
-      delimiter=" "
-    />
-    <!-- Access session attribute <em>Hello</em> from first session.
-    -->
-    <jmx:invoke
-      name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
-      operation="getSessionAttribute"
-      resultproperty="Hello"
-      echo="false"
-    >
-      <arg value="${sessions.0}"/>
-      <arg value="Hello"/>
-    </jmx:invoke>
-    <!-- Query for all application manager.of the server from all hosts
-       and bind all attributes from all found manager MBeans.
-    -->
-    <jmx:query
-      name="Catalina:type=Manager,*"
-      resultproperty="manager"
-      echo="true"
-      attributebinding="true"
-    />
-    <!-- echo the create properties -->
-<echo>
-senderObjectNames: ${senderObjectNames.0}
-IDataSender.backup.connected: ${IDataSender.backup.connected}
-session: ${sessions.0}
-manager.length: ${manager.length}
-manager.0.name: ${manager.0.name}
-manager.1.name: ${manager.1.name}
-hello: ${Hello}
-manager.ClusterTest.0.name: ${manager.ClusterTest.0.name}
-manager.ClusterTest.0.activeSessions: ${manager.ClusterTest.0.activeSessions}
-manager.ClusterTest.0.counterSend_EVT_SESSION_EXPIRED:
- ${manager.ClusterTest.0.counterSend_EVT_SESSION_EXPIRED}
-manager.ClusterTest.0.counterSend_EVT_GET_ALL_SESSIONS:
- ${manager.ClusterTest.0.counterSend_EVT_GET_ALL_SESSIONS}
-</echo>
-
-  </target>
-
-</project>
-

import: Import the JMX Accessor Project with - <import file="${CATALINA.HOME}/bin/catalina-tasks.xml" /> and - reference the tasks with jmxOpen, jmxSet, jmxGet, - jmxQuery, jmxInvoke, jmxEquals and jmxCondition.

- -

JMXAccessorOpenTask - JMX open connection task

-

-List of Attributes -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AttributeDescriptionDefault value
urlSet JMX connection URL - service:jmx:rmi:///jndi/rmi://localhost:8050/jmxrmi -
hostSet the host, shortcut the very long URL syntax. - localhost
portSet the remote connection port - 8050
usernameremote JMX connection user name. -
passwordremote JMX connection password. -
refName of the internal connection reference. With this attribute you can - configure more the one connection inside the same Ant project. - jmx.server
echoEcho the command usage (for access analysis or debugging) - false
ifOnly execute if a property of the given name exists in the current project. -
unlessOnly execute if a property of the given name not exists in the current project. -
- -

-Example to open a new JMX connection -

-
  <jmx:open
-    host="${jmx.server.name}"
-    port="${jmx.server.port}"
-  />
- -

-Example to open a JMX connection from URL, with authorization and -store at other reference -

-
  <jmx:open
-    url="service:jmx:rmi:///jndi/rmi://localhost:9024/jmxrmi"
-    ref="jmx.server.9024"
-    username="controlRole"
-    password="tomcat"
-  />
- -

-Example to open a JMX connection from URL, with authorization and -store at other reference, but only when property jmx.if exists and -jmx.unless not exists -

-
  <jmx:open
-    url="service:jmx:rmi:///jndi/rmi://localhost:9024/jmxrmi"
-    ref="jmx.server.9024"
-    username="controlRole"
-    password="tomcat"
-    if="jmx.if"
-    unless="jmx.unless"
-  />
- -

Note: All properties from jmxOpen task also exists at all -other tasks and conditions. -

- -

JMXAccessorGetTask: get attribute value Ant task

-

-List of Attributes -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AttributeDescriptionDefault value
nameFull qualified JMX ObjectName -- Catalina:type=Server -
attributeExisting MBean attribute (see Tomcat MBean description above) -
refJMX Connection reference - jmx.server
echoEcho command usage (access and result) - false
resultpropertySave result at this project property -
delimiterSplit result with delimiter (java.util.StringTokenizer) - and use resultproperty as prefix to store tokens. -
separatearrayresultsWhen return value is an array, save result as property list - ($resultproperty.[0..N] and $resultproperty.length) - true
- -

-Example to get remote MBean attribute from default JMX connection -

-
  <jmx:get
-    name="Catalina:type=Manager,context=/servlets-examples,host=localhost"
-    attribute="maxActiveSessions"
-    resultproperty="servlets-examples.maxActiveSessions"
-  />
- -

-Example to get and result array and split it at separate properties -

-
  <jmx:get
-      name="Catalina:type=ClusterSender,host=localhost"
-      attribute="senderObjectNames"
-      resultproperty="senderObjectNames"
-  />
-

-Access the senderObjectNames properties with: -

-
  ${senderObjectNames.length} give the number of returned sender list.
-  ${senderObjectNames.[0..N]} found all sender object names
- - -

-Example to get IDataSender attribute connected only when cluster is configured.
-Note: The name attribute value was wrapped here to be -more readable. It has to be all on the same line, without spaces. -

-

-  <jmx:query
-    failonerror="false"
-    name="Catalina:type=Cluster,host=${tomcat.application.host}"
-    resultproperty="cluster"
-  />
-  <jmx:get
-    name=
-"Catalina:type=IDataSender,host=${tomcat.application.host},
-senderAddress=${cluster.backup.address},senderPort=${cluster.backup.port}"
-    attribute="connected"
-    resultproperty="datasender.connected"
-    if="cluster.0.name" />
- -

JMXAccessorSetTask: set attribute value Ant task

-

-List of Attributes -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AttributeDescriptionDefault value
nameFull qualified JMX ObjectName -- Catalina:type=Server -
attributeExisting MBean attribute (see Tomcat MBean description above) -
valuevalue that set to attribute -
typetype of the attribute. - java.lang.String
refJMX Connection reference - jmx.server
echoEcho command usage (access and result) - false
- -

-Example to set remote MBean attribute value -

-
  <jmx:set
-    name="Catalina:type=Manager,context=/servlets-examples,host=localhost"
-    attribute="maxActiveSessions"
-    value="500"
-    type="int"
-  />
- - -

JMXAccessorInvokeTask: invoke MBean operation Ant task

-

-List of Attributes -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AttributeDescriptionDefault value
nameFull qualified JMX ObjectName -- Catalina:type=Server -
operationExisting MBean operation (see Tomcat - funcspecs/fs-admin-opers.html). -
refJMX Connection reference - jmx.server
echoEcho command usage (access and result) - false
resultpropertySave result at this project property -
delimiterSplit result with delimiter (java.util.StringTokenizer) - and use resultproperty as prefix to store tokens. -
separatearrayresultsWhen return value is an array, save result as property list - ($resultproperty.[0..N] and $resultproperty.length) - true
- -

-stop an application -

-
  <jmx:invoke
-    name="Catalina:type=Manager,context=/servlets-examples,host=localhost"
-    operation="stop"/>
-

-Now you can find the sessionid at ${sessions.[0..N} properties and access the count -with ${sessions.length} property. -

-

-Example to get all sessionids -

-
  <jmx:invoke
-    name="Catalina:type=Manager,context=/servlets-examples,host=localhost"
-    operation="listSessionIds"
-    resultproperty="sessions"
-    delimiter=" "
-  />
-

-Now you can find the sessionid at ${sessions.[0..N} properties and access the count -with ${sessions.length} property. -

-

-Example to get remote MBean session attribute from session ${sessionid.0} -

-
  <jmx:invoke
-    name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
-    operation="getSessionAttribute"
-    resultproperty="hello">
-     <arg value="${sessionid.0}"/>
-     <arg value="Hello" />
-  </jmx:invoke>
- -

-Example to create a new access logger valve at vhost localhost -

-
 <jmx:invoke
-         name="Catalina:type=MBeanFactory"
-         operation="createAccessLoggerValve"
-         resultproperty="accessLoggerObjectName"
- >
-     <arg value="Catalina:type=Host,host=localhost"/>
- </jmx:invoke>
-

-Now you can find new MBean with name stored at ${accessLoggerObjectName} -property. -

- -

JMXAccessorQueryTask: query MBean Ant task

-

-List of Attributes -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AttributeDescriptionDefault value
nameJMX ObjectName query string -- Catalina:type=Manager,* -
refJMX Connection reference - jmx.server
echoEcho command usage (access and result) - false
resultpropertyPrefix project property name to all founded MBeans (mbeans.[0..N].objectname) -
attributebindingbind ALL MBean attributes in addition to name - false
delimiterSplit result with delimiter (java.util.StringTokenizer) - and use resultproperty as prefix to store tokens. -
separatearrayresultsWhen return value is an array, save result as property list - ($resultproperty.[0..N] and $resultproperty.length) - true
- -

-Get all Manager ObjectNames from all services and Hosts -

-
  <jmx:query
-    name="Catalina:type=Manager,*
-    resultproperty="manager" />
-

-Now you can find the Session Manager at ${manager.[0..N].name} -properties and access the result object counter with ${manager.length} property. -

-

-Example to get the Manager from servlet-examples application an bind all MBean properties -

-
  <jmx:query
-    name="Catalina:type=Manager,context=/servlet-examples,host=localhost*"
-    attributebinding="true"
-    resultproperty="manager.servletExamples" />
-

-Now you can find the manager at ${manager.servletExamples.0.name} property -and can access all properties from this manager with ${manager.servletExamples.0.[manager attribute names]}. -The result object counter from MBeans is stored ad ${manager.length} property. -

- -

-Example to get all MBeans from a server and store inside an external XML property file -

-
<project name="jmx.query"
-            xmlns:jmx="antlib:org.apache.catalina.ant.jmx"
-            default="query-all" basedir=".">
-<property name="jmx.host" value="localhost"/>
-<property name="jmx.port" value="8050"/>
-<property name="jmx.username" value="controlRole"/>
-<property name="jmx.password" value="tomcat"/>
-
-<target name="query-all" description="Query all MBeans of a server">
-  <!-- Configure connection -->
-  <jmx:open
-    host="${jmx.host}"
-    port="${jmx.port}"
-    ref="jmx.server"
-    username="${jmx.username}"
-    password="${jmx.password}"/>
-
-  <!-- Query MBean list -->
-  <jmx:query
-    name="*:*"
-    resultproperty="mbeans"
-    attributebinding="false"/>
-
-  <echoproperties
-    destfile="mbeans.properties"
-    prefix="mbeans."
-    format="xml"/>
-
-  <!-- Print results -->
-  <echo message=
-    "Number of MBeans in server ${jmx.host}:${jmx.port} is ${mbeans.length}"/>
-</target>
-</project>
-

-Now you can find all MBeans inside the file mbeans.properties. -

- -

JMXAccessorCreateTask: remote create MBean Ant task

-

-List of Attributes -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AttributeDescriptionDefault value
nameFull qualified JMX ObjectName -- Catalina:type=MBeanFactory -
classNameExisting MBean full qualified class name (see Tomcat MBean description above) -
classLoaderObjectName of server or web application classloader
- ( Catalina:type=ServerClassLoader,name=[server,common,shared] or
- Catalina:type=WebappClassLoader,context=/myapps,host=localhost) -
refJMX Connection reference - jmx.server
echoEcho command usage (access and result) - false
- -

-Example to create remote MBean -

-
  <jmx:create
-    ref="${jmx.reference}"
-    name="Catalina:type=MBeanFactory"
-    className="org.apache.commons.modeler.BaseModelMBean"
-    classLoader="Catalina:type=ServerClassLoader,name=server">
-    <arg value="org.apache.catalina.mbeans.MBeanFactory" />
-  </jmx:create>
- -

- Warning: Many Tomcat MBeans can't be linked to their parent once
- created. The Valve, Cluster and Realm MBeans are not automatically
- connected with their parent. Use the MBeanFactory create
- operation instead. -

- -

JMXAccessorUnregisterTask: remote unregister MBean Ant task

-

-List of Attributes -

- - - - - - - - - - - - - - - - - - - - - - - - - - -
AttributeDescriptionDefault value
nameFull qualified JMX ObjectName -- Catalina:type=MBeanFactory -
refJMX Connection reference - jmx.server
echoEcho command usage (access and result) - false
- -

-Example to unregister remote MBean -

-
  <jmx:unregister
-    name="Catalina:type=MBeanFactory"
-  />
- -

- Warning: A lot of Tomcat MBeans can't be unregister.
- The MBeans are not unlinked from their parent. Use MBeanFactory
- remove operation instead. -

- -

JMXAccessorCondition: express condition

-

-List of Attributes -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AttributeDescriptionDefault value
urlSet JMX connection URL - service:jmx:rmi:///jndi/rmi://localhost:8050/jmxrmi -
hostSet the host, shortcut the very long URL syntax. - localhost
portSet the remote connection port - 8050
usernameremote JMX connection user name. -
passwordremote JMX connection password. -
refName of the internal connection reference. With this attribute you can - configure more the one connection inside the same Ant project. - jmx.server
nameFull qualified JMX ObjectName -- Catalina:type=Server -
echoEcho condition usage (access and result) - false
ifOnly execute if a property of the given name exists in the current project. -
unlessOnly execute if a property of the given name not exists in the current project. -
value (required)Second arg for operation -
typeValue type to express operation (support long and double) - long
operation express one -
    -
  • == equals
  • -
  • != not equals
  • -
  • > greater than (&gt;)
  • -
  • >= greater than or equals (&gt;=)
  • -
  • < lesser than (&lt;)
  • -
  • <= lesser than or equals (&lt;=)
  • -
-
==
- -

-Wait for server connection and that cluster backup node is accessable -

-
<target name="wait">
-  <waitfor maxwait="${maxwait}" maxwaitunit="second" timeoutproperty="server.timeout" >
-    <and>
-      <socket server="${server.name}" port="${server.port}"/>
-      <http url="${url}"/>
-      <jmx:condition
-        operation="=="
-        host="localhost"
-        port="9014"
-        username="controlRole"
-        password="tomcat"
-        name=
-"Catalina:type=IDataSender,host=localhost,senderAddress=192.168.111.1,senderPort=9025"
-        attribute="connected"
-        value="true"
-      />
-    </and>
-  </waitfor>
-  <fail if="server.timeout" message="Server ${url} don't answer inside ${maxwait} sec" />
-  <echo message="Server ${url} alive" />
-</target>
- -

JMXAccessorEqualsCondition: equals MBean Ant condition

-

-List of Attributes -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AttributeDescriptionDefault value
urlSet JMX connection URL - service:jmx:rmi:///jndi/rmi://localhost:8050/jmxrmi -
hostSet the host, shortcut the very long URL syntax. - localhost
portSet the remote connection port - 8050
usernameremote JMX connection user name. -
passwordremote JMX connection password. -
refName of the internal connection reference. With this attribute you can - configure more the one connection inside the same Ant project. - jmx.server
nameFull qualified JMX ObjectName -- Catalina:type=Server -
echoEcho condition usage (access and result) - false
- -

-Wait for server connection and that cluster backup node is accessible -

-
<target name="wait">
-  <waitfor maxwait="${maxwait}" maxwaitunit="second" timeoutproperty="server.timeout" >
-    <and>
-      <socket server="${server.name}" port="${server.port}"/>
-      <http url="${url}"/>
-      <jmx:equals
-        host="localhost"
-        port="9014"
-        username="controlRole"
-        password="tomcat"
-        name=
-"Catalina:type=IDataSender,host=localhost,senderAddress=192.168.111.1,senderPort=9025"
-        attribute="connected"
-        value="true"
-      />
-    </and>
-  </waitfor>
-  <fail if="server.timeout" message="Server ${url} don't answer inside ${maxwait} sec" />
-  <echo message="Server ${url} alive" />
-</target>
- -

Using the JMXProxyServlet

- -

- Tomcat offers an alternative to using remote (or even local) JMX - connections while still giving you access to everything JMX has to offer: - Tomcat's - JMXProxyServlet. -

- -

- The JMXProxyServlet allows a client to issue JMX queries via an HTTP - interface. This technique offers the following advantages over using - JMX directly from a client program: -

- -
    -
  • You don't have to launch a full JVM and make a remote JMX connection - just to ask for one small piece of data from a running server
  • -
  • You don't have to know how to work with JMX connections
  • -
  • You don't need any of the complex configuration covered in the rest - of this page
  • -
  • Your client program does not have to be written in Java
  • -
- -

- A perfect example of JMX overkill can be seen in the case of popular - server-monitoring software such as Nagios or Icinga: if you want to - monitor 10 items via JMX, you will have to launch 10 JVMs, make 10 JMX - connections, and then shut them all down every few minutes. With the - JMXProxyServlet, you can make 10 HTTP connections and be done with it. -

- -

- You can find out more information about the JMXProxyServlet in the - documentation for the - Tomcat - manager. -

-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/proxy-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/proxy-howto.html deleted file mode 100644 index f1dc136c6bb0f7cef867c09c528752c8fe554b32..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/proxy-howto.html +++ /dev/null @@ -1,155 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Proxy Support HOW-TO

Proxy Support HOW-TO

Table of Contents

Introduction

- -

Using standard configurations of Tomcat, web applications can ask for -the server name and port number to which the request was directed for -processing. When Tomcat is running standalone with the -HTTP/1.1 Connector, it will generally -report the server name specified in the request, and the port number on -which the Connector is listening. The servlet API -calls of interest, for this purpose, are:

-
    -
  • ServletRequest.getServerName(): Returns the host name of the server to which the request was sent.
  • -
  • ServletRequest.getServerPort(): Returns the port number of the server to which the request was sent.
  • -
  • ServletRequest.getLocalName(): Returns the host name of the Internet Protocol (IP) interface on which the request was received.
  • -
  • ServletRequest.getLocalPort(): Returns the Internet Protocol (IP) port number of the interface on which the request was received.
  • -
- -

When you are running behind a proxy server (or a web server that is -configured to behave like a proxy server), you will sometimes prefer to -manage the values returned by these calls. In particular, you will -generally want the port number to reflect that specified in the original -request, not the one on which the Connector itself is -listening. You can use the proxyName and proxyPort -attributes on the <Connector> element to configure -these values.

- -

Proxy support can take many forms. The following sections describe -proxy configurations for several common cases.

- -

Apache 1.3 Proxy Support

- -

Apache 1.3 supports an optional module (mod_proxy) that -configures the web server to act as a proxy server. This can be used to -forward requests for a particular web application to a Tomcat instance, -without having to configure a web connector such as mod_jk. -To accomplish this, you need to perform the following tasks:

-
    -
  1. Configure your copy of Apache so that it includes the - mod_proxy module. If you are building from source, - the easiest way to do this is to include the - --enable-module=proxy directive on the - ./configure command line.

  2. -
  3. If not already added for you, make sure that you are loading the - mod_proxy module at Apache startup time, by using the - following directives in your httpd.conf file:

    -
    LoadModule proxy_module  {path-to-modules}/mod_proxy.so
    -AddModule  mod_proxy.c
  4. -
  5. Include two directives in your httpd.conf file for - each web application that you wish to forward to Tomcat. For - example, to forward an application at context path /myapp:

    -
    ProxyPass         /myapp  http://localhost:8081/myapp
    -ProxyPassReverse  /myapp  http://localhost:8081/myapp
    -

    which tells Apache to forward URLs of the form - http://localhost/myapp/* to the Tomcat connector - listening on port 8081.

  6. -
  7. Configure your copy of Tomcat to include a special - <Connector> element, with appropriate - proxy settings, for example:

    -
    <Connector port="8081" ...
    -              proxyName="www.mycompany.com"
    -              proxyPort="80"/>
    -

    which will cause servlets inside this web application to think that - all proxied requests were directed to www.mycompany.com - on port 80.

  8. -
  9. It is legal to omit the proxyName attribute from the - <Connector> element. If you do so, the value - returned by request.getServerName() will by the host - name on which Tomcat is running. In the example above, it would be - localhost.

  10. -
  11. If you also have a <Connector> listening on port - 8080 (nested within the same Service - element), the requests to either port will share the same set of - virtual hosts and web applications.

  12. -
  13. You might wish to use the IP filtering features of your operating - system to restrict connections to port 8081 (in this example) to - be allowed only from the server that is running - Apache.

  14. -
  15. Alternatively, you can set up a series of web applications that are - only available via proxying, as follows:

    -
      -
    • Configure another <Service> that contains - only a <Connector> for the proxy port.
    • -
    • Configure appropriate Engine, - Host, and - Context elements for the virtual hosts - and web applications accessible via proxying.
    • -
    • Optionally, protect port 8081 with IP filters as described - earlier.
    • -
  16. -
  17. When requests are proxied by Apache, the web server will be recording - these requests in its access log. Therefore, you will generally want to - disable any access logging performed by Tomcat itself.

  18. -
- -

When requests are proxied in this manner, all requests -for the configured web applications will be processed by Tomcat (including -requests for static content). You can improve performance by using the -mod_jk web connector instead of mod_proxy. -mod_jk can be configured so that the web server serves static -content that is not processed by filters or security constraints defined -within the web application's deployment descriptor -(/WEB-INF/web.xml).

- -

Apache 2.0 Proxy Support

-The same instructions hold true as for 1.3. (Except in Apache 2.0, -you may omit AddModule mod_proxy.c) -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/realm-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/realm-howto.html deleted file mode 100644 index 42438a71ed15b310b5bef6ca415bd11ec4fe0bfd..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/realm-howto.html +++ /dev/null @@ -1,1223 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Realm Configuration HOW-TO

Realm Configuration HOW-TO

Table of Contents

Quick Start

- -

This document describes how to configure Tomcat to support container -managed security, by connecting to an existing "database" of usernames, -passwords, and user roles. You only need to care about this if you are using -a web application that includes one or more -<security-constraint> elements, and a -<login-config> element defining how users are required -to authenticate themselves. If you are not utilizing these features, you can -safely skip this document.

- -

For fundamental background information about container managed security, -see the Servlet -Specification (Version 2.4), Section 12.

- -

For information about utilizing the Single Sign On feature of -Tomcat (allowing a user to authenticate themselves once across the entire -set of web applications associated with a virtual host), see -here.

- -

Overview

- - -

What is a Realm?

- -

A Realm is a "database" of usernames and passwords that -identify valid users of a web application (or set of web applications), plus -an enumeration of the list of roles associated with each valid user. -You can think of roles as similar to groups in Unix-like operating -systems, because access to specific web application resources is granted to -all users possessing a particular role (rather than enumerating the list of -associated usernames). A particular user can have any number of roles -associated with their username.

- -

Although the Servlet Specification describes a portable mechanism for -applications to declare their security requirements (in the -web.xml deployment descriptor), there is no portable API -defining the interface between a servlet container and the associated user -and role information. In many cases, however, it is desirable to "connect" -a servlet container to some existing authentication database or mechanism -that already exists in the production environment. Therefore, Tomcat -defines a Java interface (org.apache.catalina.Realm) that -can be implemented by "plug in" components to establish this connection. -Six standard plug-ins are provided, supporting connections to various -sources of authentication information:

-
    -
  • JDBCRealm - Accesses authentication information - stored in a relational database, accessed via a JDBC driver.
  • -
  • DataSourceRealm - Accesses authentication - information stored in a relational database, accessed via a named JNDI - JDBC DataSource.
  • -
  • JNDIRealm - Accesses authentication information - stored in an LDAP based directory server, accessed via a JNDI provider. -
  • -
  • UserDatabaseRealm - Accesses authentication - information stored in an UserDatabase JNDI resource, which is typically - backed by an XML document (conf/tomcat-users.xml).
  • -
  • MemoryRealm - Accesses authentication - information stored in an in-memory object collection, which is initialized - from an XML document (conf/tomcat-users.xml).
  • -
  • JAASRealm - Accesses authentication information - through the Java Authentication & Authorization Service (JAAS) - framework.
  • -
- -

It is also possible to write your own Realm implementation, -and integrate it with Tomcat. To do so, you need to:

-
    -
  • Implement org.apache.catalina.Realm,
  • -
  • Place your compiled realm in $CATALINA_HOME/lib,
  • -
  • Declare your realm as described in the "Configuring a Realm" section below,
  • -
  • Declare your realm to the MBeans Descriptors.
  • -
- -
- - -

Configuring a Realm

- -

Before getting into the details of the standard Realm implementations, it is -important to understand, in general terms, how a Realm is configured. In -general, you will be adding an XML element to your conf/server.xml -configuration file, that looks something like this:

- -
<Realm className="... class name for this implementation"
-       ... other attributes for this implementation .../>
- -

The <Realm> element can be nested inside any one of -of the following Container elements. The location of the -Realm element has a direct impact on the "scope" of that Realm -(i.e. which web applications will share the same authentication information): -

-
    -
  • Inside an <Engine> element - This Realm will be shared - across ALL web applications on ALL virtual hosts, UNLESS it is overridden - by a Realm element nested inside a subordinate <Host> - or <Context> element.
  • -
  • Inside a <Host> element - This Realm will be shared across - ALL web applications for THIS virtual host, UNLESS it is overridden - by a Realm element nested inside a subordinate <Context> - element.
  • -
  • Inside a <Context> element - This Realm will be used ONLY - for THIS web application.
  • -
- - -
- - -

Common Features

- - -

Digested Passwords

- -

For each of the standard Realm implementations, the -user's password (by default) is stored in clear text. In many -environments, this is undesirable because casual observers of the -authentication data can collect enough information to log on -successfully, and impersonate other users. To avoid this problem, the -standard implementations support the concept of digesting -user passwords. This allows the stored version of the passwords to be -encoded (in a form that is not easily reversible), but that the -Realm implementation can still utilize for -authentication.

- -

When a standard realm authenticates by retrieving the stored -password and comparing it with the value presented by the user, you -can select digested passwords by placing a -CredentialHandler element inside your <Realm> -element. An easy choice to support one of the algorithms SSHA, SHA or MD5 -would be the usage of the MessageDigestCredentialHandler. -This element must be configured to one of the digest algorithms supported -by the java.security.MessageDigest class (SSHA, SHA or MD5). -When you select this option, the contents of the password that is stored -in the Realm must be the cleartext version of the password, -as digested by the specified algorithm.

- -

When the authenticate() method of the Realm is called, the -(cleartext) password specified by the user is itself digested by the same -algorithm, and the result is compared with the value returned by the -Realm. An equal match implies that the cleartext version of the -original password is the same as the one presented by the user, so that this -user should be authorized.

- -

To calculate the digested value of a cleartext password, two convenience -techniques are supported:

-
    -
  • If you are writing an application that needs to calculate digested - passwords dynamically, call the static Digest() method of the - org.apache.catalina.realm.RealmBase class, passing the - cleartext password, the digest algorithm name and the encoding as arguments. - This method will return the digested password.
  • -
  • If you want to execute a command line utility to calculate the digested - password, simply execute -
    CATALINA_HOME/bin/digest.[bat|sh] -a {algorithm} {cleartext-password}
    - and the digested version of this cleartext password will be returned to - standard output.
  • -
- -

If using digested passwords with DIGEST authentication, the cleartext used - to generate the digest is different and the digest must use one iteration of - the MD5 algorithm with no salt. In the examples above - {cleartext-password} must be replaced with - {username}:{realm}:{cleartext-password}. For example, in a - development environment this might take the form - testUser:Authentication required:testPassword. The value for - {realm} is taken from the <realm-name> - element of the web application's <login-config>. If - not specified in web.xml, the default value of Authentication - required is used.

- -

Usernames and/or passwords using encodings other than the platform default -are supported using

-
CATALINA_HOME/bin/digest.[bat|sh] -a {algorithm} -e {encoding} {input}
-

but care is required to ensure that the input is correctly passed to the -digester. The digester returns {input}:{digest}. If the input -appears corrupted in the return, the digest will be invalid.

- -

The output format of the digest is {salt}${iterations}${digest}. -If the salt length is zero and the iteration count is one, the output is -simplified to {digest}.

- -

The full syntax of CATALINA_HOME/bin/digest.[bat|sh] is:

-
CATALINA_HOME/bin/digest.[bat|sh] [-a <algorithm>] [-e <encoding>]
-        [-i <iterations>] [-s <salt-length>] [-k <key-length>]
-        [-h <handler-class-name>] <credentials>
-
-
    -
  • -a - The algorithm to use to generate the stored - credential. If not specified, the default for the handler will - be used. If neither handler nor algorithm is specified then a - default of SHA-512 will be used
  • -
  • -e - The encoding to use for any byte to/from character - conversion that may be necessary. If not specified, the - system encoding (Charset#defaultCharset()) will - be used.
  • -
  • -i - The number of iterations to use when generating the - stored credential. If not specified, the default for the - CredentialHandler will be used.
  • -
  • -s - The length (in bytes) of salt to generate and store as - part of the credential. If not specified, the default for - the CredentialHandler will be used.
  • -
  • -k - The length (in bits) of the key(s), if any, created while - generating the credential. If not specified, the default - for the CredentialHandler will be used.
  • -
  • -h - The fully qualified class name of the CredentialHandler - to use. If not specified, the built-in handlers will be - tested in turn (MessageDigestCredentialHandler then - SecretKeyCredentialHandler) and the first one to accept the - specified algorithm will be used.
  • -
-
- - - -

Example Application

- -

The example application shipped with Tomcat includes an area that is -protected by a security constraint, utilizing form-based login. To access it, -point your browser at -http://localhost:8080/examples/jsp/security/protected/ -and log on with one of the usernames and passwords described for the default -UserDatabaseRealm.

- -
- - -

Manager Application

- -

If you wish to use the Manager Application -to deploy and undeploy applications in a running Tomcat installation, you -MUST add the "manager-gui" role to at least one username in your selected -Realm implementation. This is because the manager web application itself uses a -security constraint that requires role "manager-gui" to access ANY request URI -within the HTML interface of that application.

- -

For security reasons, no username in the default Realm (i.e. using -conf/tomcat-users.xml is assigned the "manager-gui" role. -Therefore, no one will be able to utilize the features of this application -until the Tomcat administrator specifically assigns this role to one or more -users.

- -
- -

Realm Logging

- -

Debugging and exception messages logged by a Realm will - be recorded by the logging configuration associated with the container - for the realm: its surrounding Context, - Host, or - Engine.

- -
- -

Standard Realm Implementations

- -

JDBCRealm

- -
Introduction
- -

JDBCRealm is an implementation of the Tomcat -Realm interface that looks up users in a relational database -accessed via a JDBC driver. There is substantial configuration flexibility -that lets you adapt to existing table and column names, as long as your -database structure conforms to the following requirements:

-
    -
  • There must be a table, referenced below as the users table, - that contains one row for every valid user that this Realm - should recognize.
  • -
  • The users table must contain at least two columns (it may - contain more if your existing applications required it): -
      -
    • Username to be recognized by Tomcat when the user logs in.
    • -
    • Password to be recognized by Tomcat when the user logs in. - This value may in cleartext or digested - see below for more - information.
    • -
  • -
  • There must be a table, referenced below as the user roles table, - that contains one row for every valid role that is assigned to a - particular user. It is legal for a user to have zero, one, or more than - one valid role.
  • -
  • The user roles table must contain at least two columns (it may - contain more if your existing applications required it): -
      -
    • Username to be recognized by Tomcat (same value as is specified - in the users table).
    • -
    • Role name of a valid role associated with this user.
    • -
  • -
- -
Quick Start
- -

To set up Tomcat to use JDBCRealm, you will need to follow these steps:

-
    -
  1. If you have not yet done so, create tables and columns in your database - that conform to the requirements described above.
  2. -
  3. Configure a database username and password for use by Tomcat, that has - at least read only access to the tables described above. (Tomcat will - never attempt to write to these tables.)
  4. -
  5. Place a copy of the JDBC driver you will be using inside the - $CATALINA_HOME/lib directory. - Note that only JAR files are recognized!
  6. -
  7. Set up a <Realm> element, as described below, in your - $CATALINA_BASE/conf/server.xml file.
  8. -
  9. Restart Tomcat if it is already running.
  10. -
- -
Realm Element Attributes
- -

To configure JDBCRealm, you will create a <Realm> -element and nest it in your $CATALINA_BASE/conf/server.xml file, -as described above. The attributes for the -JDBCRealm are defined in the Realm configuration -documentation.

- -
Example
- -

An example SQL script to create the needed tables might look something -like this (adapt the syntax as required for your particular database):

-
create table users (
-  user_name         varchar(15) not null primary key,
-  user_pass         varchar(15) not null
-);
-
-create table user_roles (
-  user_name         varchar(15) not null,
-  role_name         varchar(15) not null,
-  primary key (user_name, role_name)
-);
- -

Example Realm elements are included (commented out) in the -default $CATALINA_BASE/conf/server.xml file. Here's an example -for using a MySQL database called "authority", configured with the tables -described above, and accessed with username "dbuser" and password "dbpass":

-
<Realm className="org.apache.catalina.realm.JDBCRealm"
-      driverName="org.gjt.mm.mysql.Driver"
-   connectionURL="jdbc:mysql://localhost/authority?user=dbuser&amp;password=dbpass"
-       userTable="users" userNameCol="user_name" userCredCol="user_pass"
-   userRoleTable="user_roles" roleNameCol="role_name"/>
- -
Additional Notes
- -

JDBCRealm operates according to the following rules:

-
    -
  • When a user attempts to access a protected resource for the first time, - Tomcat will call the authenticate() method of this - Realm. Thus, any changes you have made to the database - directly (new users, changed passwords or roles, etc.) will be immediately - reflected.
  • -
  • Once a user has been authenticated, the user (and his or her associated - roles) are cached within Tomcat for the duration of the user's login. - (For FORM-based authentication, that means until the session times out or - is invalidated; for BASIC authentication, that means until the user - closes their browser). The cached user is not saved and - restored across sessions serialisations. Any changes to the database - information for an already authenticated user will not be - reflected until the next time that user logs on again.
  • -
  • Administering the information in the users and user roles - table is the responsibility of your own applications. Tomcat does not - provide any built-in capabilities to maintain users and roles.
  • -
- -
- - -

DataSourceRealm

- -
Introduction
- -

DataSourceRealm is an implementation of the Tomcat -Realm interface that looks up users in a relational database -accessed via a JNDI named JDBC DataSource. There is substantial configuration -flexibility that lets you adapt to existing table and column names, as long -as your database structure conforms to the following requirements:

-
    -
  • There must be a table, referenced below as the users table, - that contains one row for every valid user that this Realm - should recognize.
  • -
  • The users table must contain at least two columns (it may - contain more if your existing applications required it): -
      -
    • Username to be recognized by Tomcat when the user logs in.
    • -
    • Password to be recognized by Tomcat when the user logs in. - This value may in cleartext or digested - see below for more - information.
    • -
  • -
  • There must be a table, referenced below as the user roles table, - that contains one row for every valid role that is assigned to a - particular user. It is legal for a user to have zero, one, or more than - one valid role.
  • -
  • The user roles table must contain at least two columns (it may - contain more if your existing applications required it): -
      -
    • Username to be recognized by Tomcat (same value as is specified - in the users table).
    • -
    • Role name of a valid role associated with this user.
    • -
  • -
- -
Quick Start
- -

To set up Tomcat to use DataSourceRealm, you will need to follow these steps:

-
    -
  1. If you have not yet done so, create tables and columns in your database - that conform to the requirements described above.
  2. -
  3. Configure a database username and password for use by Tomcat, that has - at least read only access to the tables described above. (Tomcat will - never attempt to write to these tables.)
  4. -
  5. Configure a JNDI named JDBC DataSource for your database. Refer to the - JNDI DataSource Example - HOW-TO for information on how to configure a JNDI named JDBC DataSource. - Be sure to set the Realm's localDataSource - attribute appropriately, depending on where the JNDI DataSource is - defined.
  6. -
  7. Set up a <Realm> element, as described below, in your - $CATALINA_BASE/conf/server.xml file.
  8. -
  9. Restart Tomcat if it is already running.
  10. -
- -
Realm Element Attributes
- -

To configure DataSourceRealm, you will create a <Realm> -element and nest it in your $CATALINA_BASE/conf/server.xml file, -as described above. The attributes for the -DataSourceRealm are defined in the Realm -configuration documentation.

- -
Example
- -

An example SQL script to create the needed tables might look something -like this (adapt the syntax as required for your particular database):

-
create table users (
-  user_name         varchar(15) not null primary key,
-  user_pass         varchar(15) not null
-);
-
-create table user_roles (
-  user_name         varchar(15) not null,
-  role_name         varchar(15) not null,
-  primary key (user_name, role_name)
-);
- -

Here is an example for using a MySQL database called "authority", configured -with the tables described above, and accessed with the JNDI JDBC DataSource with -name "java:/comp/env/jdbc/authority".

-
<Realm className="org.apache.catalina.realm.DataSourceRealm"
-   dataSourceName="jdbc/authority"
-   userTable="users" userNameCol="user_name" userCredCol="user_pass"
-   userRoleTable="user_roles" roleNameCol="role_name"/>
- -
Additional Notes
- -

DataSourceRealm operates according to the following rules:

-
    -
  • When a user attempts to access a protected resource for the first time, - Tomcat will call the authenticate() method of this - Realm. Thus, any changes you have made to the database - directly (new users, changed passwords or roles, etc.) will be immediately - reflected.
  • -
  • Once a user has been authenticated, the user (and his or her associated - roles) are cached within Tomcat for the duration of the user's login. - (For FORM-based authentication, that means until the session times out or - is invalidated; for BASIC authentication, that means until the user - closes their browser). The cached user is not saved and - restored across sessions serialisations. Any changes to the database - information for an already authenticated user will not be - reflected until the next time that user logs on again.
  • -
  • Administering the information in the users and user roles - table is the responsibility of your own applications. Tomcat does not - provide any built-in capabilities to maintain users and roles.
  • -
- -
- - -

JNDIRealm

- -
Introduction
- -

JNDIRealm is an implementation of the Tomcat -Realm interface that looks up users in an LDAP directory -server accessed by a JNDI provider (typically, the standard LDAP -provider that is available with the JNDI API classes). The realm -supports a variety of approaches to using a directory for -authentication.

- -
Connecting to the directory
- -

The realm's connection to the directory is defined by the -connectionURL configuration attribute. This is a URL -whose format is defined by the JNDI provider. It is usually an LDAP -URL that specifies the domain name of the directory server to connect -to, and optionally the port number and distinguished name (DN) of the -required root naming context.

- -

If you have more than one provider you can configure an -alternateURL. If a socket connection cannot be -made to the provider at the connectionURL an -attempt will be made to use the alternateURL.

- -

When making a connection in order to search the directory and -retrieve user and role information, the realm authenticates itself to -the directory with the username and password specified by the -connectionName and -connectionPassword properties. If these properties -are not specified the connection is anonymous. This is sufficient in -many cases. -

- - -
Selecting the user's directory entry
- -

Each user that can be authenticated must be represented in the -directory by an individual entry that corresponds to an element in the -initial DirContext defined by the -connectionURL attribute. This user entry must have an -attribute containing the username that is presented for -authentication.

- -

Often the distinguished name of the user's entry contains the -username presented for authentication but is otherwise the same for -all users. In this case the userPattern attribute may -be used to specify the DN, with "{0}" marking where -the username should be substituted.

- -

Otherwise the realm must search the directory to find a unique entry -containing the username. The following attributes configure this -search:

- -
    -
  • userBase - the entry that is the base of - the subtree containing users. If not specified, the search - base is the top-level context.
  • - -
  • userSubtree - the search scope. Set to - true if you wish to search the entire subtree - rooted at the userBase entry. The default value - of false requests a single-level search - including only the top level.
  • - -
  • userSearch - pattern specifying the LDAP - search filter to use after substitution of the username.
  • - -
- - -
Authenticating the user
- -
    -
  • -

    Bind mode

    - -

    By default the realm authenticates a user by binding to -the directory with the DN of the entry for that user and the password -presented by the user. If this simple bind succeeds the user is considered to -be authenticated.

    - -

    For security reasons a directory may store a digest of the user's -password rather than the clear text version (see -Digested Passwords for more information). In that case, -as part of the simple bind operation the directory automatically -computes the correct digest of the plaintext password presented by the -user before validating it against the stored value. In bind mode, -therefore, the realm is not involved in digest processing. The -digest attribute is not used, and will be ignored if -set.

    -
  • - -
  • -

    Comparison mode

    -

    Alternatively, the realm may retrieve the stored -password from the directory and compare it explicitly with the value -presented by the user. This mode is configured by setting the -userPassword attribute to the name of a directory -attribute in the user's entry that contains the password.

    - -

    Comparison mode has some disadvantages. First, the -connectionName and -connectionPassword attributes must be configured to -allow the realm to read users' passwords in the directory. For -security reasons this is generally undesirable; indeed many directory -implementations will not allow even the directory manager to read -these passwords. In addition, the realm must handle password digests -itself, including variations in the algorithms used and ways of -representing password hashes in the directory. However, the realm may -sometimes need access to the stored password, for example to support -HTTP Digest Access Authentication (RFC 2069). (Note that HTTP digest -authentication is different from the storage of password digests in -the repository for user information as discussed above). -

    -
  • -
- -
Assigning roles to the user
- -

The directory realm supports two approaches to the representation -of roles in the directory:

- -
    -
  • -

    Roles as explicit directory entries

    - -

    Roles may be represented by explicit directory entries. A role -entry is usually an LDAP group entry with one attribute -containing the name of the role and another whose values are the -distinguished names or usernames of the users in that role. The -following attributes configure a directory search to -find the names of roles associated with the authenticated user:

    - -
      -
    • roleBase - the base entry for the role search. - If not specified, the search base is the top-level directory - context.
    • - -
    • roleSubtree - the search - scope. Set to true if you wish to search the entire - subtree rooted at the roleBase entry. The default - value of false requests a single-level search - including the top level only.
    • - -
    • roleSearch - the LDAP search filter for - selecting role entries. It optionally includes pattern - replacements "{0}" for the distinguished name and/or "{1}" for the - username and/or "{2}" for an attribute from user's directory entry, - of the authenticated user. Use userRoleAttribute to - specify the name of the attribute that provides the value for "{2}".
    • - -
    • roleName - the attribute in a role entry - containing the name of that role.
    • - -
    • roleNested - enable nested roles. Set to - true if you want to nest roles in roles. If configured, then - every newly found roleName and distinguished - Name will be recursively tried for a new role search. - The default value is false.
    • - -
    - -
  • -
- -
    -
  • -

    Roles as an attribute of the user entry

    - -

    Role names may also be held as the values of an attribute in the -user's directory entry. Use userRoleName to specify -the name of this attribute.

    - -
  • -
-

A combination of both approaches to role representation may be used.

- -
Quick Start
- -

To set up Tomcat to use JNDIRealm, you will need to follow these steps:

-
    -
  1. Make sure your directory server is configured with a schema that matches - the requirements listed above.
  2. -
  3. If required, configure a username and password for use by Tomcat, that has - read only access to the information described above. (Tomcat will - never attempt to modify this information.)
  4. -
  5. Set up a <Realm> element, as described below, in your - $CATALINA_BASE/conf/server.xml file.
  6. -
  7. Restart Tomcat if it is already running.
  8. -
- -
Realm Element Attributes
- -

To configure JNDIRealm, you will create a <Realm> -element and nest it in your $CATALINA_BASE/conf/server.xml file, -as described above. The attributes for the -JNDIRealm are defined in the Realm configuration -documentation.

- -
Example
- -

Creation of the appropriate schema in your directory server is beyond the -scope of this document, because it is unique to each directory server -implementation. In the examples below, we will assume that you are using a -distribution of the OpenLDAP directory server (version 2.0.11 or later), which -can be downloaded from -http://www.openldap.org. Assume that -your slapd.conf file contains the following settings -(among others):

-
database ldbm
-suffix dc="mycompany",dc="com"
-rootdn "cn=Manager,dc=mycompany,dc=com"
-rootpw secret
- -

We will assume for connectionURL that the directory -server runs on the same machine as Tomcat. See -http://docs.oracle.com/javase/7/docs/technotes/guides/jndi/index.html -for more information about configuring and using the JNDI LDAP -provider.

- -

Next, assume that this directory server has been populated with elements -as shown below (in LDIF format):

- -
# Define top-level entry
-dn: dc=mycompany,dc=com
-objectClass: dcObject
-dc:mycompany
-
-# Define an entry to contain people
-# searches for users are based on this entry
-dn: ou=people,dc=mycompany,dc=com
-objectClass: organizationalUnit
-ou: people
-
-# Define a user entry for Janet Jones
-dn: uid=jjones,ou=people,dc=mycompany,dc=com
-objectClass: inetOrgPerson
-uid: jjones
-sn: jones
-cn: janet jones
-mail: j.jones@mycompany.com
-userPassword: janet
-
-# Define a user entry for Fred Bloggs
-dn: uid=fbloggs,ou=people,dc=mycompany,dc=com
-objectClass: inetOrgPerson
-uid: fbloggs
-sn: bloggs
-cn: fred bloggs
-mail: f.bloggs@mycompany.com
-userPassword: fred
-
-# Define an entry to contain LDAP groups
-# searches for roles are based on this entry
-dn: ou=groups,dc=mycompany,dc=com
-objectClass: organizationalUnit
-ou: groups
-
-# Define an entry for the "tomcat" role
-dn: cn=tomcat,ou=groups,dc=mycompany,dc=com
-objectClass: groupOfUniqueNames
-cn: tomcat
-uniqueMember: uid=jjones,ou=people,dc=mycompany,dc=com
-uniqueMember: uid=fbloggs,ou=people,dc=mycompany,dc=com
-
-# Define an entry for the "role1" role
-dn: cn=role1,ou=groups,dc=mycompany,dc=com
-objectClass: groupOfUniqueNames
-cn: role1
-uniqueMember: uid=fbloggs,ou=people,dc=mycompany,dc=com
- -

An example Realm element for the OpenLDAP directory -server configured as described above might look like this, assuming -that users use their uid (e.g. jjones) to login to the -application and that an anonymous connection is sufficient to search -the directory and retrieve role information:

- -
<Realm   className="org.apache.catalina.realm.JNDIRealm"
-     connectionURL="ldap://localhost:389"
-       userPattern="uid={0},ou=people,dc=mycompany,dc=com"
-          roleBase="ou=groups,dc=mycompany,dc=com"
-          roleName="cn"
-        roleSearch="(uniqueMember={0})"
-/>
- -

With this configuration, the realm will determine the user's -distinguished name by substituting the username into the -userPattern, authenticate by binding to the directory -with this DN and the password received from the user, and search the -directory to find the user's roles.

- -

Now suppose that users are expected to enter their email address -rather than their userid when logging in. In this case the realm must -search the directory for the user's entry. (A search is also necessary -when user entries are held in multiple subtrees corresponding perhaps -to different organizational units or company locations).

- -

Further, suppose that in addition to the group entries you want to -use an attribute of the user's entry to hold roles. Now the entry for -Janet Jones might read as follows:

- -
dn: uid=jjones,ou=people,dc=mycompany,dc=com
-objectClass: inetOrgPerson
-uid: jjones
-sn: jones
-cn: janet jones
-mail: j.jones@mycompany.com
-memberOf: role2
-memberOf: role3
-userPassword: janet
- -

This realm configuration would satisfy the new requirements:

- -
<Realm   className="org.apache.catalina.realm.JNDIRealm"
-     connectionURL="ldap://localhost:389"
-          userBase="ou=people,dc=mycompany,dc=com"
-        userSearch="(mail={0})"
-      userRoleName="memberOf"
-          roleBase="ou=groups,dc=mycompany,dc=com"
-          roleName="cn"
-        roleSearch="(uniqueMember={0})"
-/>
- -

Now when Janet Jones logs in as "j.jones@mycompany.com", the realm -searches the directory for a unique entry with that value as its mail -attribute and attempts to bind to the directory as -uid=jjones,ou=people,dc=mycompany,dc=com with the given -password. If authentication succeeds, she is assigned three roles: -"role2" and "role3", the values of the "memberOf" attribute in her -directory entry, and "tomcat", the value of the "cn" attribute in the -only group entry of which she is a member.

- -

Finally, to authenticate the user by retrieving -the password from the directory and making a local comparison in the -realm, you might use a realm configuration like this:

- -
<Realm   className="org.apache.catalina.realm.JNDIRealm"
-    connectionName="cn=Manager,dc=mycompany,dc=com"
-connectionPassword="secret"
-     connectionURL="ldap://localhost:389"
-      userPassword="userPassword"
-       userPattern="uid={0},ou=people,dc=mycompany,dc=com"
-          roleBase="ou=groups,dc=mycompany,dc=com"
-          roleName="cn"
-        roleSearch="(uniqueMember={0})"
-/>
- -

However, as discussed above, the default bind mode for -authentication is usually to be preferred.

- -
Additional Notes
- -

JNDIRealm operates according to the following rules:

-
    -
  • When a user attempts to access a protected resource for the first time, - Tomcat will call the authenticate() method of this - Realm. Thus, any changes you have made to the directory - (new users, changed passwords or roles, etc.) will be immediately - reflected.
  • -
  • Once a user has been authenticated, the user (and his or her associated - roles) are cached within Tomcat for the duration of the user's login. - (For FORM-based authentication, that means until the session times out or - is invalidated; for BASIC authentication, that means until the user - closes their browser). The cached user is not saved and - restored across sessions serialisations. Any changes to the directory - information for an already authenticated user will not be - reflected until the next time that user logs on again.
  • -
  • Administering the information in the directory server - is the responsibility of your own applications. Tomcat does not - provide any built-in capabilities to maintain users and roles.
  • -
- -
- - -

UserDatabaseRealm

- -
Introduction
- -

UserDatabaseRealm is an implementation of the Tomcat -Realm interface that uses a JNDI resource to store user -information. By default, the JNDI resource is backed by an XML file. It is not -designed for large-scale production use. At startup time, the UserDatabaseRealm -loads information about all users, and their corresponding roles, from an XML -document (by default, this document is loaded from -$CATALINA_BASE/conf/tomcat-users.xml). The users, their passwords -and their roles may all be editing dynamically, typically via JMX. Changes may -be saved and will be reflected in the XML file.

- -
Realm Element Attributes
- -

To configure UserDatabaseRealm, you will create a <Realm> -element and nest it in your $CATALINA_BASE/conf/server.xml file, -as described above. The attributes for the -UserDatabaseRealm are defined in the Realm -configuration documentation.

- -
User File Format
- -

The users file uses the same format as the -MemoryRealm.

- -
Example
- -

The default installation of Tomcat is configured with a UserDatabaseRealm -nested inside the <Engine> element, so that it applies -to all virtual hosts and web applications. The default contents of the -conf/tomcat-users.xml file is:

-
<tomcat-users>
-  <user username="tomcat" password="tomcat" roles="tomcat" />
-  <user username="role1"  password="tomcat" roles="role1"  />
-  <user username="both"   password="tomcat" roles="tomcat,role1" />
-</tomcat-users>
- -
Additional Notes
- -

UserDatabaseRealm operates according to the following rules:

-
    -
  • When Tomcat first starts up, it loads all defined users and their - associated information from the users file. Changes made to the data in - this file will not be recognized until Tomcat is - restarted. Changes may be made via the UserDatabase resource. Tomcat - provides MBeans that may be accessed via JMX for this purpose.
  • -
  • When a user attempts to access a protected resource for the first time, - Tomcat will call the authenticate() method of this - Realm.
  • -
  • Once a user has been authenticated, the user (and his or her associated - roles) are cached within Tomcat for the duration of the user's login. - (For FORM-based authentication, that means until the session times out or - is invalidated; for BASIC authentication, that means until the user - closes their browser). The cached user is not saved and - restored across sessions serialisations.
  • -
- - -
- - -

MemoryRealm

- -
Introduction
- -

MemoryRealm is a simple demonstration implementation of the -Tomcat Realm interface. It is not designed for production use. -At startup time, MemoryRealm loads information about all users, and their -corresponding roles, from an XML document (by default, this document is loaded -from $CATALINA_BASE/conf/tomcat-users.xml). Changes to the data -in this file are not recognized until Tomcat is restarted.

- -
Realm Element Attributes
- -

To configure MemoryRealm, you will create a <Realm> -element and nest it in your $CATALINA_BASE/conf/server.xml file, -as described above. The attributes for the -MemoryRealm are defined in the Realm -configuration documentation.

- -
User File Format
- -

The users file (by default, conf/tomcat-users.xml must be an -XML document, with a root element <tomcat-users>. Nested -inside the root element will be a <user> element for each -valid user, consisting of the following attributes:

-
    -
  • name - Username this user must log on with.
  • -
  • password - Password this user must log on with (in - clear text if the digest attribute was not set on the - <Realm> element, or digested appropriately as - described here otherwise).
  • -
  • roles - Comma-delimited list of the role names - associated with this user.
  • -
- -
Additional Notes
- -

MemoryRealm operates according to the following rules:

-
    -
  • When Tomcat first starts up, it loads all defined users and their - associated information from the users file. Changes to the data in - this file will not be recognized until Tomcat is - restarted.
  • -
  • When a user attempts to access a protected resource for the first time, - Tomcat will call the authenticate() method of this - Realm.
  • -
  • Once a user has been authenticated, the user (and his or her associated - roles) are cached within Tomcat for the duration of the user's login. - (For FORM-based authentication, that means until the session times out or - is invalidated; for BASIC authentication, that means until the user - closes their browser). The cached user is not saved and - restored across sessions serialisations.
  • -
  • Administering the information in the users file is the responsibility - of your application. Tomcat does not - provide any built-in capabilities to maintain users and roles.
  • -
- - -
- - -

JAASRealm

- -
Introduction
- -

JAASRealm is an implementation of the Tomcat -Realm interface that authenticates users through the Java -Authentication & Authorization Service (JAAS) framework which is now -provided as part of the standard Java SE API.

-

Using JAASRealm gives the developer the ability to combine -practically any conceivable security realm with Tomcat's CMA.

-

JAASRealm is prototype for Tomcat of the JAAS-based -J2EE authentication framework for J2EE v1.4, based on the JCP Specification -Request 196 to enhance container-managed security and promote -'pluggable' authentication mechanisms whose implementations would be -container-independent. -

-

Based on the JAAS login module and principal (see javax.security.auth.spi.LoginModule -and javax.security.Principal), you can develop your own -security mechanism or wrap another third-party mechanism for -integration with the CMA as implemented by Tomcat. -

- -
Quick Start
-

To set up Tomcat to use JAASRealm with your own JAAS login module, - you will need to follow these steps:

-
    -
  1. Write your own LoginModule, User and Role classes based -on JAAS (see - -the JAAS Authentication Tutorial and - -the JAAS Login Module Developer's Guide) to be managed by the JAAS Login -Context (javax.security.auth.login.LoginContext) -When developing your LoginModule, note that JAASRealm's built-in CallbackHandler -only recognizes the NameCallback and PasswordCallback at present. -
  2. -
  3. Although not specified in JAAS, you should create -separate classes to distinguish between users and roles, extending javax.security.Principal, -so that Tomcat can tell which Principals returned from your login -module are users and which are roles (see org.apache.catalina.realm.JAASRealm). -Regardless, the first Principal returned is always treated as the user Principal. -
  4. -
  5. Place the compiled classes on Tomcat's classpath -
  6. -
  7. Set up a login.config file for Java (see -JAAS LoginConfig file) and tell Tomcat where to find it by specifying -its location to the JVM, for instance by setting the environment -variable: JAVA_OPTS=$JAVA_OPTS -Djava.security.auth.login.config==$CATALINA_BASE/conf/jaas.config
  8. - -
  9. Configure your security-constraints in your web.xml for -the resources you want to protect
  10. -
  11. Configure the JAASRealm module in your server.xml
  12. -
  13. Restart Tomcat if it is already running.
  14. -
-
Realm Element Attributes
-

To configure JAASRealm as for step 6 above, you create -a <Realm> element and nest it in your -$CATALINA_BASE/conf/server.xml -file within your <Engine> node. The attributes for the -JAASRealm are defined in the Realm -configuration documentation.

- -
Example
- -

Here is an example of how your server.xml snippet should look.

- -
<Realm className="org.apache.catalina.realm.JAASRealm"
-                appName="MyFooRealm"
-    userClassNames="org.foobar.realm.FooUser"
-     roleClassNames="org.foobar.realm.FooRole"/>
- -

It is the responsibility of your login module to create and save User and -Role objects representing Principals for the user -(javax.security.auth.Subject). If your login module doesn't -create a user object but also doesn't throw a login exception, then the -Tomcat CMA will break and you will be left at the -http://localhost:8080/myapp/j_security_check URI or at some other -unspecified location.

- -

The flexibility of the JAAS approach is two-fold:

-
    -
  • you can carry out whatever processing you require behind -the scenes in your own login module.
  • -
  • you can plug in a completely different LoginModule by changing the configuration -and restarting the server, without any code changes to your application.
  • -
- -
Additional Notes
-
    -
  • When a user attempts to access a protected resource for - the first time, Tomcat will call the authenticate() - method of this Realm. Thus, any changes you have made in - the security mechanism directly (new users, changed passwords or - roles, etc.) will be immediately reflected.
  • -
  • Once a user has been authenticated, the user (and his or - her associated roles) are cached within Tomcat for the duration of - the user's login. For FORM-based authentication, that means until - the session times out or is invalidated; for BASIC authentication, - that means until the user closes their browser. Any changes to the - security information for an already authenticated user will not - be reflected until the next time that user logs on again.
  • -
  • As with other Realm implementations, digested passwords - are supported if the <Realm> element in server.xml - contains a digest attribute; JAASRealm's CallbackHandler - will digest the password prior to passing it back to the LoginModule
  • -
- -
- - -

CombinedRealm

- -
Introduction
- -

CombinedRealm is an implementation of the Tomcat - Realm interface that authenticates users through one or more - sub-Realms.

- -

Using CombinedRealm gives the developer the ability to combine multiple - Realms of the same or different types. This can be used to authenticate - against different sources, provide fall back in case one Realm fails or for - any other purpose that requires multiple Realms.

- -

Sub-realms are defined by nesting Realm elements inside the - Realm element that defines the CombinedRealm. Authentication - will be attempted against each Realm in the order they are - listed. Authentication against any Realm will be sufficient to authenticate - the user.

- -
Realm Element Attributes
-

To configure a CombinedRealm, you create a <Realm> - element and nest it in your $CATALINA_BASE/conf/server.xml - file within your <Engine> or <Host>. - You can also nest inside a <Context> node in a - context.xml file.

- -
Example
- -

Here is an example of how your server.xml snippet should look to use a -UserDatabase Realm and a DataSource Realm.

- -
<Realm className="org.apache.catalina.realm.CombinedRealm" >
-   <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
-             resourceName="UserDatabase"/>
-   <Realm className="org.apache.catalina.realm.DataSourceRealm"
-             dataSourceName="jdbc/authority"
-             userTable="users" userNameCol="user_name" userCredCol="user_pass"
-             userRoleTable="user_roles" roleNameCol="role_name"/>
-</Realm>
- -
- -

LockOutRealm

- -
Introduction
- -

LockOutRealm is an implementation of the Tomcat - Realm interface that extends the CombinedRealm to provide lock - out functionality to provide a user lock out mechanism if there are too many - failed authentication attempts in a given period of time.

- -

To ensure correct operation, there is a reasonable degree of - synchronisation in this Realm.

- -

This Realm does not require modification to the underlying Realms or the - associated user storage mechanisms. It achieves this by recording all failed - logins, including those for users that do not exist. To prevent a DOS by - deliberating making requests with invalid users (and hence causing this - cache to grow) the size of the list of users that have failed authentication - is limited.

- -

Sub-realms are defined by nesting Realm elements inside the - Realm element that defines the LockOutRealm. Authentication - will be attempted against each Realm in the order they are - listed. Authentication against any Realm will be sufficient to authenticate - the user.

- -
Realm Element Attributes
-

To configure a LockOutRealm, you create a <Realm> - element and nest it in your $CATALINA_BASE/conf/server.xml - file within your <Engine> or <Host>. - You can also nest inside a <Context> node in a - context.xml file. The attributes for the - LockOutRealm are defined in the Realm - configuration documentation.

- -
Example
- -

Here is an example of how your server.xml snippet should look to add lock out -functionality to a UserDatabase Realm.

- -
<Realm className="org.apache.catalina.realm.LockOutRealm" >
-   <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
-             resourceName="UserDatabase"/>
-</Realm>
- -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/rewrite.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/rewrite.html deleted file mode 100644 index 44bc9d2ea8fa9e719824aaf45a4185aa9096076a..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/rewrite.html +++ /dev/null @@ -1,717 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - The rewrite Valve

The rewrite Valve

Introduction

- -

The rewrite valve implements URL rewrite functionality in a way that is - very similar to mod_rewrite from Apache HTTP Server.

- -

Configuration

- -

The rewrite valve is configured as a valve using the org.apache.catalina.valves.rewrite.RewriteValve - class name.

- -

The rewrite valve can be configured as a valve added in a Host. - See virtual-server documentation for - informations how to configure it. It will use a rewrite.config file - containing the rewrite directives, it must be placed in the Host configuration - folder. -

- -

It can also be in the context.xml of a webapp. - The valve will then use a rewrite.config file containing the - rewrite directives, it must be placed in the WEB-INF folder of the web application -

- -

Directives

- -

The rewrite.config file contains a list of directives which closely - resemble the directives used by mod_rewrite, in particular the central - RewriteRule and RewriteCond directives. Lines that start with a - # character are treated as comments and will be ignored.

- -

Note: This section is a modified version of the mod_rewrite documentation, - which is Copyright 1995-2006 The Apache Software Foundation, and licensed under the - under the Apache License, Version 2.0.

- -

RewriteCond

- -

Syntax: RewriteCond TestString CondPattern

- -

The RewriteCond directive defines a rule condition. One or more RewriteCond - can precede a RewriteRule directive. The following rule is then only used if both - the current state of the URI matches its pattern, and if these conditions are met.

- -

TestString is a string which can contain the - following expanded constructs in addition to plain text:

- -
    -
  • - RewriteRule backreferences: These are - backreferences of the form $N - (0 <= N <= 9), which provide access to the grouped - parts (in parentheses) of the pattern, from the - RewriteRule which is subject to the current - set of RewriteCond conditions.. -
  • -
  • - RewriteCond backreferences: These are - backreferences of the form %N - (1 <= N <= 9), which provide access to the grouped - parts (again, in parentheses) of the pattern, from the last matched - RewriteCond in the current set - of conditions. -
  • -
  • - RewriteMap expansions: These are - expansions of the form ${mapname:key|default}. - See the documentation for - RewriteMap for more details. -
  • -
  • - Server-Variables: These are variables of - the form - %{ NAME_OF_VARIABLE - } - where NAME_OF_VARIABLE can be a string taken - from the following list: - -
      -
    • -

      HTTP headers:

      -

      - HTTP_USER_AGENT
      - HTTP_REFERER
      - HTTP_COOKIE
      - HTTP_FORWARDED
      - HTTP_HOST
      - HTTP_PROXY_CONNECTION
      - HTTP_ACCEPT
      -

      -
    • -
    • -

      connection & request:

      -

      - REMOTE_ADDR
      - REMOTE_HOST
      - REMOTE_PORT
      - REMOTE_USER
      - REMOTE_IDENT
      - REQUEST_METHOD
      - SCRIPT_FILENAME
      - REQUEST_PATH
      - CONTEXT_PATH
      - SERVLET_PATH
      - PATH_INFO
      - QUERY_STRING
      - AUTH_TYPE
      -

      -
    • -
    • -

      server internals:

      -

      - DOCUMENT_ROOT
      - SERVER_NAME
      - SERVER_ADDR
      - SERVER_PORT
      - SERVER_PROTOCOL
      - SERVER_SOFTWARE
      -

      -
    • -
    • -

      date and time:

      -

      - TIME_YEAR
      - TIME_MON
      - TIME_DAY
      - TIME_HOUR
      - TIME_MIN
      - TIME_SEC
      - TIME_WDAY
      - TIME
      -

      -
    • -
    • -

      specials:

      -

      - THE_REQUEST
      - REQUEST_URI
      - REQUEST_FILENAME
      - HTTPS
      -

      -
    • -
    - -

    These variables all - correspond to the similarly named HTTP - MIME-headers and Servlet API methods. - Most are documented elsewhere in the Manual or in - the CGI specification. Those that are special to - the rewrite valve include those below.

    - -
    - -
    REQUEST_PATH
    - -
    Corresponds to the full path that is used for mapping.
    - -
    CONTEXT_PATH
    - -
    Corresponds to the path of the mapped context.
    - -
    SERVLET_PATH
    - -
    Corresponds to the servlet path.
    - -
    THE_REQUEST
    - -
    The full HTTP request line sent by the - browser to the server (e.g., "GET - /index.html HTTP/1.1"). This does not - include any additional headers sent by the - browser.
    - -
    REQUEST_URI
    - -
    The resource requested in the HTTP request - line. (In the example above, this would be - "/index.html".)
    - -
    REQUEST_FILENAME
    - -
    The full local file system path to the file or - script matching the request.
    - -
    HTTPS
    - -
    Will contain the text "on" if the connection is - using SSL/TLS, or "off" otherwise.
    - -
    - -
  • -
- -

Other things you should be aware of:

- -
    -
  1. The variables SCRIPT_FILENAME and REQUEST_FILENAME - contain the same value - the value of the - filename field of the internal - request_rec structure of the Apache server. - The first name is the commonly known CGI variable name - while the second is the appropriate counterpart of - REQUEST_URI (which contains the value of the - uri field of request_rec).
  2. - -
  3. - %{ENV:variable}, where variable can be - any Java system property, is also available.
  4. - -
  5. - %{SSL:variable}, where variable is the - name of an SSL environment - variable, are not implemented yet. Example: - %{SSL:SSL_CIPHER_USEKEYSIZE} may expand to - 128.
  6. - -
  7. - %{HTTP:header}, where header can be - any HTTP MIME-header name, can always be used to obtain the - value of a header sent in the HTTP request. - Example: %{HTTP:Proxy-Connection} is - the value of the HTTP header - ``Proxy-Connection:''.
  8. - -
- -

CondPattern is the condition pattern, - a regular expression which is applied to the - current instance of the TestString. - TestString is first evaluated, before being matched against - CondPattern.

- -

Remember: CondPattern is a - perl compatible regular expression with some - additions:

- -
    -
  1. You can prefix the pattern string with a - '!' character (exclamation mark) to specify a - non-matching pattern.
  2. - -
  3. - There are some special variants of CondPatterns. - Instead of real regular expression strings you can also - use one of the following: - -
      -
    • '<CondPattern' (lexicographically - precedes)
      - Treats the CondPattern as a plain string and - compares it lexicographically to TestString. True if - TestString lexicographically precedes - CondPattern.
    • - -
    • '>CondPattern' (lexicographically - follows)
      - Treats the CondPattern as a plain string and - compares it lexicographically to TestString. True if - TestString lexicographically follows - CondPattern.
    • - -
    • '=CondPattern' (lexicographically - equal)
      - Treats the CondPattern as a plain string and - compares it lexicographically to TestString. True if - TestString is lexicographically equal to - CondPattern (the two strings are exactly - equal, character for character). If CondPattern - is "" (two quotation marks) this - compares TestString to the empty string.
    • - -
    • '-d' (is - directory)
      - Treats the TestString as a pathname and tests - whether or not it exists, and is a directory.
    • - -
    • '-f' (is regular - file)
      - Treats the TestString as a pathname and tests - whether or not it exists, and is a regular file.
    • - -
    • '-s' (is regular file, with - size)
      - Treats the TestString as a pathname and tests - whether or not it exists, and is a regular file with size greater - than zero.
    • - -
    - -Note: - All of these tests can - also be prefixed by an exclamation mark ('!') to - negate their meaning. - -
  4. - -
  5. You can also set special flags for - CondPattern by appending - [flags] - as the third argument to the RewriteCond - directive, where flags is a comma-separated list of any of the - following flags: - -
      -
    • 'nocase|NC' - (no case)
      - This makes the test case-insensitive - differences - between 'A-Z' and 'a-z' are ignored, both in the - expanded TestString and the CondPattern. - This flag is effective only for comparisons between - TestString and CondPattern. It has no - effect on file system and subrequest checks.
    • - -
    • - 'ornext|OR' - (or next condition)
      - Use this to combine rule conditions with a local OR - instead of the implicit AND. Typical example: - -
      RewriteCond %{REMOTE_HOST}  ^host1.*  [OR]
      -RewriteCond %{REMOTE_HOST}  ^host2.*  [OR]
      -RewriteCond %{REMOTE_HOST}  ^host3.*
      -RewriteRule ...some special stuff for any of these hosts...
      - - Without this flag you would have to write the condition/rule - pair three times. -
    • -
    -
  6. -
- -

Example:

- -

To rewrite the Homepage of a site according to the - ``User-Agent:'' header of the request, you can - use the following:

- -
RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla.*
-RewriteRule  ^/$                 /homepage.max.html  [L]
-
-RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.*
-RewriteRule  ^/$                 /homepage.min.html  [L]
-
-RewriteRule  ^/$                 /homepage.std.html  [L]
- -

Explanation: If you use a browser which identifies itself - as 'Mozilla' (including Netscape Navigator, Mozilla etc), then you - get the max homepage (which could include frames, or other special - features). - If you use the Lynx browser (which is terminal-based), then - you get the min homepage (which could be a version designed for - easy, text-only browsing). - If neither of these conditions apply (you use any other browser, - or your browser identifies itself as something non-standard), you get - the std (standard) homepage.

- -
- -

RewriteMap

- -

Syntax: RewriteMap name rewriteMapClassName optionalParameters

- -

The maps are implemented using an interface that users must implement. Its class - name is org.apache.catalina.valves.rewrite.RewriteMap, and its code is:

- -
package org.apache.catalina.valves.rewrite;
-
-public interface RewriteMap {
-    public String setParameters(String params);
-    public String lookup(String key);
-}
- -
- -

RewriteRule

- -

Syntax: RewriteRule Pattern Substitution

- -

The RewriteRule directive is the real - rewriting workhorse. The directive can occur more than once, - with each instance defining a single rewrite rule. The - order in which these rules are defined is important - this is the order - in which they will be applied at run-time.

- -

Pattern is a perl compatible regular - expression, which is applied to the current URL. - ``Current'' means the value of the URL when this rule is - applied. This may not be the originally requested URL, - which may already have matched a previous rule, and have been - altered.

- -

Some hints on the syntax of regular - expressions:

- - -
-Text:
-  .           Any single character
-  [chars]     Character class: Any character of the class ``chars''
-  [^chars]    Character class: Not a character of the class ``chars''
-  text1|text2 Alternative: text1 or text2
-
-Quantifiers:
-  ?           0 or 1 occurrences of the preceding text
-  *           0 or N occurrences of the preceding text (N > 0)
-  +           1 or N occurrences of the preceding text (N > 1)
-
-Grouping:
-  (text)      Grouping of text
-              (used either to set the borders of an alternative as above, or
-              to make backreferences, where the Nth group can
-              be referred to on the RHS of a RewriteRule as $N)
-
-Anchors:
-  ^           Start-of-line anchor
-  $           End-of-line anchor
-
-Escaping:
-  \char       escape the given char
-              (for instance, to specify the chars ".[]()" etc.)
-
- -

For more information about regular expressions, have a look at the - perl regular expression manpage ("perldoc - perlre"). If you are interested in more detailed - information about regular expressions and their variants - (POSIX regex etc.) the following book is dedicated to this topic:

- -

- Mastering Regular Expressions, 2nd Edition
- Jeffrey E.F. Friedl
- O'Reilly & Associates, Inc. 2002
- ISBN 978-0-596-00289-3
-

- -

In the rules, the NOT character - ('!') is also available as a possible pattern - prefix. This enables you to negate a pattern; to say, for instance: - ``if the current URL does NOT match this - pattern''. This can be used for exceptional cases, where - it is easier to match the negative pattern, or as a last - default rule.

- -

-Note: When using the NOT character to negate a pattern, you cannot include -grouped wildcard parts in that pattern. This is because, when the -pattern does NOT match (i.e., the negation matches), there are no -contents for the groups. Thus, if negated patterns are used, you -cannot use $N in the substitution string! -

- -

The substitution of a - rewrite rule is the string which is substituted for (or - replaces) the original URL which Pattern - matched. In addition to plain text, it can include

- -
    -
  1. back-references ($N) to the RewriteRule - pattern
  2. - -
  3. back-references (%N) to the last matched - RewriteCond pattern
  4. - -
  5. server-variables as in rule condition test-strings - (%{VARNAME})
  6. - -
  7. mapping-function calls - (${mapname:key|default})
  8. -
-

Back-references are identifiers of the form - $N - (N=0..9), which will be replaced - by the contents of the Nth group of the - matched Pattern. The server-variables are the same - as for the TestString of a RewriteCond - directive. The mapping-functions come from the - RewriteMap directive and are explained there. - These three types of variables are expanded in the order above.

- -

As already mentioned, all rewrite rules are - applied to the Substitution (in the order in which - they are defined - in the config file). The URL is completely - replaced by the Substitution and the - rewriting process continues until all rules have been applied, - or it is explicitly terminated by a - L flag.

- -

The special characters $ and % can - be quoted by prepending them with a backslash character - \.

- -

There is a special substitution string named - '-' which means: NO - substitution! This is useful in providing - rewriting rules which only match - URLs but do not substitute anything for them. It is commonly used - in conjunction with the C (chain) flag, in order - to apply more than one pattern before substitution occurs.

- -

Unlike newer mod_rewrite versions, the Tomcat rewrite valve does - not automatically support absolute URLs (the specific redirect flag - must be used to be able to specify an absolute URLs, see below) - or direct file serving.

- -

Additionally you can set special flags for Substitution by - appending [flags] - as the third argument to the RewriteRule - directive. Flags is a comma-separated list of any of the - following flags:

- -
    -
  • 'chain|C' - (chained with next rule)
    - This flag chains the current rule with the next rule - (which itself can be chained with the following rule, - and so on). This has the following effect: if a rule - matches, then processing continues as usual - - the flag has no effect. If the rule does - not match, then all following chained - rules are skipped. For instance, it can be used to remove the - ``.www'' part, inside a per-directory rule set, - when you let an external redirect happen (where the - ``.www'' part should not occur!).
  • - -
  • - 'cookie|CO=NAME:VAL:domain[:lifetime[:path]]' - (set cookie)
    - This sets a cookie in the client's browser. The cookie's name - is specified by NAME and the value is - VAL. The domain field is the domain of the - cookie, such as '.apache.org', the optional lifetime - is the lifetime of the cookie in minutes, and the optional - path is the path of the cookie
  • - -
  • - 'env|E=VAR:VAL' - (set environment variable)
    - This forces a request attribute named VAR to - be set to the value VAL, where VAL can - contain regexp backreferences ($N and - %N) which will be expanded. You can use this - flag more than once, to set more than one variable.
  • - -
  • 'forbidden|F' (force URL - to be forbidden)
    - This forces the current URL to be forbidden - it immediately - sends back a HTTP response of 403 (FORBIDDEN). - Use this flag in conjunction with - appropriate RewriteConds to conditionally block some - URLs.
  • - -
  • 'gone|G' (force URL to be - gone)
    - This forces the current URL to be gone - it - immediately sends back a HTTP response of 410 (GONE). Use - this flag to mark pages which no longer exist as gone.
  • - -
  • - 'host|H=Host' - (apply rewriting to host)
    - Rather that rewrite the URL, the virtual host will be - rewritten.
  • - -
  • 'last|L' - (last rule)
    - Stop the rewriting process here and don't apply any more - rewrite rules. This corresponds to the Perl - last command or the break command - in C. Use this flag to prevent the currently - rewritten URL from being rewritten further by following - rules. For example, use it to rewrite the root-path URL - ('/') to a real one, e.g., - '/e/www/'.
  • - -
  • 'next|N' - (next round)
    - Re-run the rewriting process (starting again with the - first rewriting rule). This time, the URL to match is no longer - the original URL, but rather the URL returned by the last rewriting rule. - This corresponds to the Perl next command or - the continue command in C. Use - this flag to restart the rewriting process - - to immediately go to the top of the loop.
    - Be careful not to create an infinite - loop!
  • - -
  • 'nocase|NC' - (no case)
    - This makes the Pattern case-insensitive, - ignoring difference between 'A-Z' and - 'a-z' when Pattern is matched against the current - URL.
  • - -
  • - 'noescape|NE' - (no URI escaping of - output)
    - This flag prevents the rewrite valve from applying the usual URI - escaping rules to the result of a rewrite. Ordinarily, - special characters (such as '%', '$', ';', and so on) - will be escaped into their hexcode equivalents ('%25', - '%24', and '%3B', respectively); this flag prevents this - from happening. This allows percent symbols to appear in - the output, as in -
    RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]
    - which would turn '/foo/zed' into a safe - request for '/bar?arg=P1=zed'. -
  • - - - -
  • 'qsappend|QSA' - (query string - append)
    - This flag forces the rewrite engine to append a query - string part of the substitution string to the existing string, - instead of replacing it. Use this when you want to add more - data to the query string via a rewrite rule.
  • - -
  • 'redirect|R - [=code]' (force - redirect)
    - Prefix Substitution with - http://thishost[:thisport]/ (which makes the - new URL a URI) to force a external redirection. If no - code is given, a HTTP response of 302 (FOUND, previously MOVED - TEMPORARILY) will be returned. If you want to use other response - codes in the range 300-399, simply specify the appropriate number - or use one of the following symbolic names: - temp (default), permanent, - seeother. Use this for rules to - canonicalize the URL and return it to the client - to - translate ``/~'' into - ``/u/'', or to always append a slash to - /u/user, etc.
    - Note: When you use this flag, make - sure that the substitution field is a valid URL! Otherwise, - you will be redirecting to an invalid location. Remember - that this flag on its own will only prepend - http://thishost[:thisport]/ to the URL, and rewriting - will continue. Usually, you will want to stop rewriting at this point, - and redirect immediately. To stop rewriting, you should add - the 'L' flag. -
  • - -
  • 'skip|S=num' - (skip next rule(s))
    - This flag forces the rewriting engine to skip the next - num rules in sequence, if the current rule - matches. Use this to make pseudo if-then-else constructs: - The last rule of the then-clause becomes - skip=N, where N is the number of rules in the - else-clause. (This is not the same as the - 'chain|C' flag!)
  • - -
  • - 'type|T=MIME-type' - (force MIME type)
    - Force the MIME-type of the target file to be - MIME-type. This can be used to - set up the content-type based on some conditions. - For example, the following snippet allows .php files to - be displayed by mod_php if they are called with - the .phps extension: -
    RewriteRule ^(.+\.php)s$ $1 [T=application/x-httpd-php-source]
    -
  • -
- -
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/security-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/security-howto.html deleted file mode 100644 index 099d2b408b802ea9a1ca7e254272212f2c43274d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/security-howto.html +++ /dev/null @@ -1,523 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Security Considerations

Security Considerations

Table of Contents

Introduction

-

Tomcat is configured to be reasonably secure for most use cases by - default. Some environments may require more, or less, secure configurations. - This page is to provide a single point of reference for configuration - options that may impact security and to offer some commentary on the - expected impact of changing those options. The intention is to provide a - list of configuration options that should be considered when assessing the - security of a Tomcat installation.

- -

Note: Reading this page is not a substitute for reading - and understanding the detailed configuration documentation. Fuller - descriptions of these attributes may be found in the relevant documentation - pages.

-

Non-Tomcat settings

-

Tomcat configuration should not be the only line of defense. The other - components in the system (operating system, network, database, etc.) should - also be secured.

-

Tomcat should not be run under the root user. Create a dedicated user for - the Tomcat process and provide that user with the minimum necessary - permissions for the operating system. For example, it should not be possible - to log on remotely using the Tomcat user.

-

File permissions should also be suitably restricted. In the - .tar.gz distribution, files and directories are not world - readable and the group does not have write access. On Unix like operating - systems, Tomcat runs with a default umask of 0027 to maintain - these permissions for files created while Tomcat is running (e.g. log files, - expanded WARs, etc.).

-

Taking the Tomcat instances at the ASF as an example (where - auto-deployment is disabled and web applications are deployed as exploded - directories), the standard configuration is to have all Tomcat files owned - by root with group Tomcat and whilst owner has read/write privileges, group - only has read and world has no permissions. The exceptions are the logs, - temp and work directory that are owned by the Tomcat user rather than root. - This means that even if an attacker compromises the Tomcat process, they - can't change the Tomcat configuration, deploy new web applications or - modify existing web applications. The Tomcat process runs with a umask of - 007 to maintain these permissions.

-

At the network level, consider using a firewall to limit both incoming - and outgoing connections to only those connections you expect to be - present.

- -

JMX

-

The security of the JMX connection is dependent on the implementation - provided by the JRE and therefore falls outside the control of Tomcat.

- -

Typically, access control is very limited (either read-only to - everything or read-write to everything). Tomcat exposes a large amount - of internal information and control via JMX to aid debugging, monitoring - and management. Given the limited access control available, JMX access - should be treated as equivalent to local root/admin access and restricted - accordingly.

- -

The JMX access control provided by most (all?) JRE vendors does not - log failed authentication attempts, nor does it provide an account - lock-out feature after repeated failed authentications. This makes a - brute force attack easy to mount and difficult to detect.

- -

Given all of the above, care should be taken to ensure that, if used, - the JMX interface is appropriately secured. Options you may wish to - consider to secure the JMX interface include:

- -
    -
  • configuring a strong password for all JMX users;
  • -
  • binding the JMX listener only to an internal network;
  • -
  • limiting network access to the JMX port to trusted clients; and
  • -
  • providing an application specific health page for use by external - monitoring systems.
  • -
-
- -

Default web applications

- -

General

-

Tomcat ships with a number of web applications that are enabled by - default. Vulnerabilities have been discovered in these applications in the - past. Applications that are not required should be removed so the system - will not be at risk if another vulnerability is discovered.

-
- -

ROOT

-

The ROOT web application presents a very low security risk but it does - include the version of Tomcat that is being used. The ROOT web application - should normally be removed from a publicly accessible Tomcat instance, not - for security reasons, but so that a more appropriate default page is shown - to users.

-
- -

Documentation

-

The documentation web application presents a very low security risk but - it does identify the version of Tomcat that is being used. It should - normally be removed from a publicly accessible Tomcat instance.

-
- -

Examples

-

The examples web application should always be removed from any security - sensitive installation. While the examples web application does not - contain any known vulnerabilities, it is known to contain features - (particularly the cookie examples that display the contents of all - received and allow new cookies to be set) that may be used by an attacker - in conjunction with a vulnerability in another application deployed on the - Tomcat instance to obtain additional information that would otherwise be - unavailable.

-
- -

Manager

-

The Manager application allows the remote deployment of web - applications and is frequently targeted by attackers due to the widespread - use of weak passwords and publicly accessible Tomcat instances with the - Manager application enabled. The Manager application is not accessible by - default as no users are configured with the necessary access. If the - Manager application is enabled then guidance in the section - Securing Management Applications section should be - followed.

-
- -

Host Manager

-

The Host Manager application allows the creation and management of - virtual hosts - including the enabling of the Manager application for a - virtual host. The Host Manager application is not accessible by default - as no users are configured with the necessary access. If the Host Manager - application is enabled then guidance in the section Securing - Management Applications section should be followed.

-
- -

Securing Management Applications

-

When deploying a web application that provides management functions for - the Tomcat instance, the following guidelines should be followed:

-
    -
  • Ensure that any users permitted to access the management application - have strong passwords.
  • -
  • Do not remove the use of the LockOutRealm - which prevents brute force attacks against user passwords.
  • -
  • Configure the RemoteAddrValve - in the context.xml file for the - management application which limits access to localhost by default. - If remote access is required, limit it to specific IP addresses using - this valve.
  • -
-
-

Security manager

-

Enabling the security manager causes web applications to be run in a - sandbox, significantly limiting a web application's ability to perform - malicious actions such as calling System.exit(), establishing network - connections or accessing the file system outside of the web application's - root and temporary directories. However, it should be noted that there are - some malicious actions, such as triggering high CPU consumption via an - infinite loop, that the security manager cannot prevent.

- -

Enabling the security manager is usually done to limit the potential - impact, should an attacker find a way to compromise a trusted web - application . A security manager may also be used to reduce the risks of - running untrusted web applications (e.g. in hosting environments) but it - should be noted that the security manager only reduces the risks of - running untrusted web applications, it does not eliminate them. If running - multiple untrusted web applications, it is recommended that each web - application is deployed to a separate Tomcat instance (and ideally separate - hosts) to reduce the ability of a malicious web application impacting the - availability of other applications.

- -

Tomcat is tested with the security manager enabled; but the majority of - Tomcat users do not run with a security manager, so Tomcat is not as well - user-tested in this configuration. There have been, and continue to be, - bugs reported that are triggered by running under a security manager.

- -

The restrictions imposed by a security manager are likely to break most - applications if the security manager is enabled. The security manager should - not be used without extensive testing. Ideally, the use of a security - manager should be introduced at the start of the development cycle as it can - be time-consuming to track down and fix issues caused by enabling a security - manager for a mature application.

- -

Enabling the security manager changes the defaults for the following - settings:

-
    -
  • The default value for the deployXML attribute of the - Host element is changed to false.
  • -
-

server.xml

-

General

-

The default server.xml contains a large number of comments, including - some example component definitions that are commented out. Removing these - comments makes it considerably easier to read and comprehend - server.xml.

-

If a component type is not listed, then there are no settings for that - type that directly impact security.

-
- -

Server

-

Setting the port attribute to -1 disables - the shutdown port.

-

If the shutdown port is not disabled, a strong password should be - configured for shutdown.

-
- -

Listeners

-

The APR Lifecycle Listener is not stable if compiled on Solaris using - gcc. If using the APR/native connector on Solaris, compile it with the - Sun Studio compiler.

- -

The Security Listener should be enabled and configured as appropriate. -

-
- -

Connectors

-

By default, an HTTP and an AJP connector are configured. Connectors - that will not be used should be removed from server.xml.

- -

The address attribute may be used to control which IP - address the connector listens on for connections. By default, the - connector listens on all configured IP addresses.

- -

The allowTrace attribute may be used to enable TRACE - requests which can be useful for debugging. Due to the way some browsers - handle the response from a TRACE request (which exposes the browser to an - XSS attack), support for TRACE requests is disabled by default.

- -

The maxPostSize attribute controls the maximum size - of a POST request that will be parsed for parameters. The parameters are - cached for the duration of the request so this is limited to 2MB by - default to reduce exposure to a DOS attack.

- -

The maxSavePostSize attribute controls the saving of - POST requests during FORM and CLIENT-CERT authentication. The parameters - are cached for the duration of the authentication (which may be many - minutes) so this is limited to 4KB by default to reduce exposure to a DOS - attack.

- -

The maxParameterCount attribute controls the - maximum number of parameter and value pairs (GET plus POST) that can - be parsed and stored in the request. Excessive parameters are ignored. - If you want to reject such requests, configure a - FailedRequestFilter.

- -

The xpoweredBy attribute controls whether or not the - X-Powered-By HTTP header is sent with each request. If sent, the value of - the header contains the Servlet and JSP specification versions, the full - Tomcat version (e.g. Apache Tomcat/8.5), the name of - the JVM vendor and - the version of the JVM. This header is disabled by default. This header - can provide useful information to both legitimate clients and attackers. -

- -

The server attribute controls the value of the Server - HTTP header. The default value of this header for Tomcat 4.1.x to - 8.5.x is Apache-Coyote/1.1. This header can provide - limited information to both legitimate clients and attackers.

- -

The SSLEnabled, scheme and - secure attributes may all be independently set. These are - normally used when Tomcat is located behind a reverse proxy and the proxy - is connecting to Tomcat via HTTP or HTTPS. They allow Tomcat to see the - SSL attributes of the connections between the client and the proxy rather - than the proxy and Tomcat. For example, the client may connect to the - proxy over HTTPS but the proxy connects to Tomcat using HTTP. If it is - necessary for Tomcat to be able to distinguish between secure and - non-secure connections received by a proxy, the proxy must use separate - connectors to pass secure and non-secure requests to Tomcat. If the - proxy uses AJP then the SSL attributes of the client connection are - passed via the AJP protocol and separate connectors are not needed.

- -

The tomcatAuthentication and - tomcatAuthorization attributes are used with the - AJP connectors to determine if Tomcat should handle all authentication and - authorisation or if authentication should be delegated to the reverse - proxy (the authenticated user name is passed to Tomcat as part of the AJP - protocol) with the option for Tomcat to still perform authorization.

- -

The requiredSecret attribute in AJP connectors - configures shared secret between Tomcat and reverse proxy in front of - Tomcat. It is used to prevent unauthorized connections over AJP protocol.

-
- -

Host

-

The host element controls deployment. Automatic deployment allows for - simpler management but also makes it easier for an attacker to deploy a - malicious application. Automatic deployment is controlled by the - autoDeploy and deployOnStartup - attributes. If both are false, only Contexts defined in - server.xml will be deployed and any changes will require a Tomcat restart. -

- -

In a hosted environment where web applications may not be trusted, set - the deployXML attribute to false to ignore - any context.xml packaged with the web application that may try to assign - increased privileges to the web application. Note that if the security - manager is enabled that the deployXML attribute will - default to false.

-
- -

Context

-

This applies to Context - elements in all places where they can be defined: - server.xml file, - default context.xml file, - per-host context.xml.default file, - web application context file in per-host configuration directory - or inside the web application.

- -

The crossContext attribute controls if a context is - allowed to access the resources of another context. It is - false by default and should only be changed for trusted web - applications.

- -

The privileged attribute controls if a context is - allowed to use container provided servlets like the Manager servlet. It is - false by default and should only be changed for trusted web - applications.

- -

The allowLinking attribute of a nested - Resources element controls if a context - is allowed to use linked files. If enabled and the context is undeployed, - the links will be followed when deleting the context resources. Changing - this setting from the default of false on case insensitive - operating systems (this includes Windows) will disable a number of - security measures and allow, among other things, direct access to the - WEB-INF directory.

- -

The sessionCookiePathUsesTrailingSlash can be used to - work around a bug in a number of browsers (Internet Explorer, Safari and - Edge) to prevent session cookies being exposed across applications when - applications share a common path prefix. However, enabling this option - can create problems for applications with Servlets mapped to - /*. It should also be noted the RFC6265 section 8.5 makes it - clear that different paths should not be considered sufficient to isolate - cookies from other applications.

-
- -

Valves

-

It is strongly recommended that an AccessLogValve is configured. The - default Tomcat configuration includes an AccessLogValve. These are - normally configured per host but may also be configured per engine or per - context as required.

- -

Any administrative application should be protected by a - RemoteAddrValve. (Note that this Valve is also available as a Filter.) - The allow attribute should be used to limit access to a - set of known trusted hosts.

- -

The default ErrorReportValve includes the Tomcat version number in the - response sent to clients. To avoid this, custom error handling can be - configured within each web application. Alternatively, you can explicitly - configure an ErrorReportValve and set its - showServerInfo attribute to false. - Alternatively, the version number can be changed by creating the file - CATALINA_BASE/lib/org/apache/catalina/util/ServerInfo.properties with - content as follows:

-
server.info=Apache Tomcat/8.5.x
-

Modify the values as required. Note that this will also change the version - number reported in some of the management tools and may make it harder to - determine the real version installed. The CATALINA_HOME/bin/version.bat|sh - script will still report the version number.

- -

The default ErrorReportValve can display stack traces and/or JSP - source code to clients when an error occurs. To avoid this, custom error - handling can be configured within each web application. Alternatively, you - can explicitly configure an ErrorReportValve - and set its showReport attribute to false.

-
- -

Realms

-

The MemoryRealm is not intended for production use as any changes to - tomcat-users.xml require a restart of Tomcat to take effect.

- -

The JDBCRealm is not recommended for production use as it is single - threaded for all authentication and authorization options. Use the - DataSourceRealm instead.

- -

The UserDatabaseRealm is not intended for large-scale installations. It - is intended for small-scale, relatively static environments.

- -

The JAASRealm is not widely used and therefore the code is not as - mature as the other realms. Additional testing is recommended before using - this realm.

- -

By default, the realms do not implement any form of account lock-out. - This means that brute force attacks can be successful. To prevent a brute - force attack, the chosen realm should be wrapped in a LockOutRealm.

-
- -

Manager

-

The manager component is used to generate session IDs.

- -

The class used to generate random session IDs may be changed with - the randomClass attribute.

- -

The length of the session ID may be changed with the - sessionIdLength attribute.

-
- -

Cluster

-

The cluster implementation is written on the basis that a secure, - trusted network is used for all of the cluster related network traffic. It - is not safe to run a cluster on a insecure, untrusted network.

-
-

System Properties

-

Setting org.apache.catalina.connector.RECYCLE_FACADES - system property to true will cause a new facade object to be - created for each request. This reduces the chances of a bug in an - application exposing data from one request to another.

- -

The - org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH and - org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH - system properties allow non-standard parsing of the request URI. Using - these options when behind a reverse proxy may enable an attacker to bypass - any security constraints enforced by the proxy.

- -

The - org.apache.catalina.connector.Response.ENFORCE_ENCODING_IN_GET_WRITER - system property has security implications if disabled. Many user - agents, in breach of RFC2616, try to guess the character encoding of text - media types when the specification-mandated default of ISO-8859-1 should be - used. Some browsers will interpret as UTF-7 a response containing characters - that are safe for ISO-8859-1 but trigger an XSS vulnerability if interpreted - as UTF-7.

-

web.xml

-

This applies to the default conf/web.xml file and - WEB-INF/web.xml files in web applications if they define - the components mentioned here.

- -

The DefaultServlet is configured - with readonly set to - true. Changing this to false allows clients to - delete or modify static resources on the server and to upload new - resources. This should not normally be changed without requiring - authentication.

- -

The DefaultServlet is configured with listings set to - false. This isn't because allowing directory listings is - considered unsafe but because generating listings of directories with - thousands of files can consume significant CPU leading to a DOS attack. -

- -

The DefaultServlet is configured with showServerInfo - set to true. When the directory listings is enabled the Tomcat - version number is included in the response sent to clients. To avoid this, - you can explicitly configure a DefaultServlet and set its - showServerInfo attribute to false. - Alternatively, the version number can be changed by creating the file - CATALINA_BASE/lib/org/apache/catalina/util/ServerInfo.properties with - content as follows:

-
server.info=Apache Tomcat/8.5.x
-

Modify the values as required. Note that this will also change the version - number reported in some of the management tools and may make it harder to - determine the real version installed. The CATALINA_HOME/bin/version.bat|sh - script will still report the version number. -

- -

The CGI Servlet is disabled by default. If enabled, the debug - initialisation parameter should not be set to 10 or higher on a - production system because the debug page is not secure.

- -

FailedRequestFilter - can be configured and used to reject requests that had errors during - request parameter parsing. Without the filter the default behaviour is - to ignore invalid or excessive parameters.

- -

HttpHeaderSecurityFilter can be - used to add headers to responses to improve security. If clients access - Tomcat directly, then you probably want to enable this filter and all the - headers it sets unless your application is already setting them. If Tomcat - is accessed via a reverse proxy, then the configuration of this filter needs - to be co-ordinated with any headers that the reverse proxy sets.

-

General

-

BASIC and FORM authentication pass user names and passwords in clear - text. Web applications using these authentication mechanisms with clients - connecting over untrusted networks should use SSL.

- -

The session cookie for a session with an authenticated user are nearly - as useful as the user's password to an attacker and in nearly all - circumstances should be afforded the same level of protection as the - password itself. This usually means authenticating over SSL and continuing - to use SSL until the session ends.

-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/security-manager-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/security-manager-howto.html deleted file mode 100644 index 3da06e67f3b6b2e8cc2609cb7767bdba5b5829f4..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/security-manager-howto.html +++ /dev/null @@ -1,523 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Security Manager HOW-TO

Security Manager HOW-TO

Table of Contents

Background

- -

The Java SecurityManager is what allows a web browser - to run an applet in its own sandbox to prevent untrusted code from - accessing files on the local file system, connecting to a host other - than the one the applet was loaded from, and so on. In the same way - the SecurityManager protects you from an untrusted applet running in - your browser, use of a SecurityManager while running Tomcat can protect - your server from trojan servlets, JSPs, JSP beans, and tag libraries. - Or even inadvertent mistakes.

- -

Imagine if someone who is authorized to publish JSPs on your site - inadvertently included the following in their JSP:

-
<% System.exit(1); %>
- -

Every time this JSP was executed by Tomcat, Tomcat would exit. - Using the Java SecurityManager is just one more line of defense a - system administrator can use to keep the server secure and reliable.

- -

WARNING - A security audit - have been conducted using the Tomcat codebase. Most of the critical - package have been protected and a new security package protection mechanism - has been implemented. Still, make sure that you are satisfied with your SecurityManager - configuration before allowing untrusted users to publish web applications, - JSPs, servlets, beans, or tag libraries. However, running with a - SecurityManager is definitely better than running without one.

- -

Permissions

- -

Permission classes are used to define what Permissions a class loaded - by Tomcat will have. There are a number of Permission classes that are - a standard part of the JDK, and you can create your own Permission class - for use in your own web applications. Both techniques are used in - Tomcat.

- - -

Standard Permissions

- -

This is just a short summary of the standard system SecurityManager - Permission classes applicable to Tomcat. See - - http://docs.oracle.com/javase/7/docs/technotes/guides/security/ - for more information.

- -
    -
  • java.util.PropertyPermission - Controls read/write - access to JVM properties such as java.home.
  • -
  • java.lang.RuntimePermission - Controls use of - some System/Runtime functions like exit() and - exec(). Also control the package access/definition.
  • -
  • java.io.FilePermission - Controls read/write/execute - access to files and directories.
  • -
  • java.net.SocketPermission - Controls use of - network sockets.
  • -
  • java.net.NetPermission - Controls use of - multicast network connections.
  • -
  • java.lang.reflect.ReflectPermission - Controls - use of reflection to do class introspection.
  • -
  • java.security.SecurityPermission - Controls access - to Security methods.
  • -
  • java.security.AllPermission - Allows access to all - permissions, just as if you were running Tomcat without a - SecurityManager.
  • -
- -
- -

Configuring Tomcat With A SecurityManager

- -

Policy File Format

- -

The security policies implemented by the Java SecurityManager are - configured in the $CATALINA_BASE/conf/catalina.policy file. - This file completely replaces the java.policy file present - in your JDK system directories. The catalina.policy file - can be edited by hand, or you can use the - policytool - application that comes with Java 1.2 or later.

- -

Entries in the catalina.policy file use the standard - java.policy file format, as follows:

-
// Example policy file entry
-
-grant [signedBy <signer>,] [codeBase <code source>] {
-  permission  <class>  [<name> [, <action list>]];
-};
- -

The signedBy and codeBase entries are - optional when granting permissions. Comment lines begin with "//" and - end at the end of the current line. The codeBase is in the - form of a URL, and for a file URL can use the ${java.home} - and ${catalina.home} properties (which are expanded out to - the directory paths defined for them by the JAVA_HOME, - CATALINA_HOME and CATALINA_BASE environment - variables).

- -

The Default Policy File

- -

The default $CATALINA_BASE/conf/catalina.policy file - looks like this:

- - -
// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements.  See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// ============================================================================
-// catalina.policy - Security Policy Permissions for Tomcat
-//
-// This file contains a default set of security policies to be enforced (by the
-// JVM) when Catalina is executed with the "-security" option.  In addition
-// to the permissions granted here, the following additional permissions are
-// granted to each web application:
-//
-// * Read access to the web application's document root directory
-// * Read, write and delete access to the web application's working directory
-// ============================================================================
-
-
-// ========== SYSTEM CODE PERMISSIONS =========================================
-
-
-// These permissions apply to javac
-grant codeBase "file:${java.home}/lib/-" {
-        permission java.security.AllPermission;
-};
-
-// These permissions apply to all shared system extensions
-grant codeBase "file:${java.home}/jre/lib/ext/-" {
-        permission java.security.AllPermission;
-};
-
-// These permissions apply to javac when ${java.home] points at $JAVA_HOME/jre
-grant codeBase "file:${java.home}/../lib/-" {
-        permission java.security.AllPermission;
-};
-
-// These permissions apply to all shared system extensions when
-// ${java.home} points at $JAVA_HOME/jre
-grant codeBase "file:${java.home}/lib/ext/-" {
-        permission java.security.AllPermission;
-};
-
-
-// ========== CATALINA CODE PERMISSIONS =======================================
-
-
-// These permissions apply to the daemon code
-grant codeBase "file:${catalina.home}/bin/commons-daemon.jar" {
-        permission java.security.AllPermission;
-};
-
-// These permissions apply to the logging API
-// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home},
-// update this section accordingly.
-//  grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..}
-grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
-        permission java.io.FilePermission
-         "${java.home}${file.separator}lib${file.separator}logging.properties", "read";
-
-        permission java.io.FilePermission
-         "${catalina.base}${file.separator}conf${file.separator}logging.properties", "read";
-        permission java.io.FilePermission
-         "${catalina.base}${file.separator}logs", "read, write";
-        permission java.io.FilePermission
-         "${catalina.base}${file.separator}logs${file.separator}*", "read, write, delete";
-
-        permission java.lang.RuntimePermission "shutdownHooks";
-        permission java.lang.RuntimePermission "getClassLoader";
-        permission java.lang.RuntimePermission "setContextClassLoader";
-
-        permission java.lang.management.ManagementPermission "monitor";
-
-        permission java.util.logging.LoggingPermission "control";
-
-        permission java.util.PropertyPermission "java.util.logging.config.class", "read";
-        permission java.util.PropertyPermission "java.util.logging.config.file", "read";
-        permission java.util.PropertyPermission "org.apache.juli.AsyncLoggerPollInterval", "read";
-        permission java.util.PropertyPermission "org.apache.juli.AsyncMaxRecordCount", "read";
-        permission java.util.PropertyPermission "org.apache.juli.AsyncOverflowDropType", "read";
-        permission java.util.PropertyPermission "org.apache.juli.ClassLoaderLogManager.debug", "read";
-        permission java.util.PropertyPermission "catalina.base", "read";
-
-        // Note: To enable per context logging configuration, permit read access to
-        // the appropriate file. Be sure that the logging configuration is
-        // secure before enabling such access.
-        // E.g. for the examples web application (uncomment and unwrap
-        // the following to be on a single line):
-        // permission java.io.FilePermission "${catalina.base}${file.separator}
-        //  webapps${file.separator}examples${file.separator}WEB-INF
-        //  ${file.separator}classes${file.separator}logging.properties", "read";
-};
-
-// These permissions apply to the server startup code
-grant codeBase "file:${catalina.home}/bin/bootstrap.jar" {
-        permission java.security.AllPermission;
-};
-
-// These permissions apply to the servlet API classes
-// and those that are shared across all class loaders
-// located in the "lib" directory
-grant codeBase "file:${catalina.home}/lib/-" {
-        permission java.security.AllPermission;
-};
-
-
-// If using a per instance lib directory, i.e. ${catalina.base}/lib,
-// then the following permission will need to be uncommented
-// grant codeBase "file:${catalina.base}/lib/-" {
-//         permission java.security.AllPermission;
-// };
-
-
-// ========== WEB APPLICATION PERMISSIONS =====================================
-
-
-// These permissions are granted by default to all web applications
-// In addition, a web application will be given a read FilePermission
-// for all files and directories in its document root.
-grant {
-    // Required for JNDI lookup of named JDBC DataSource's and
-    // javamail named MimePart DataSource used to send mail
-    permission java.util.PropertyPermission "java.home", "read";
-    permission java.util.PropertyPermission "java.naming.*", "read";
-    permission java.util.PropertyPermission "javax.sql.*", "read";
-
-    // OS Specific properties to allow read access
-    permission java.util.PropertyPermission "os.name", "read";
-    permission java.util.PropertyPermission "os.version", "read";
-    permission java.util.PropertyPermission "os.arch", "read";
-    permission java.util.PropertyPermission "file.separator", "read";
-    permission java.util.PropertyPermission "path.separator", "read";
-    permission java.util.PropertyPermission "line.separator", "read";
-
-    // JVM properties to allow read access
-    permission java.util.PropertyPermission "java.version", "read";
-    permission java.util.PropertyPermission "java.vendor", "read";
-    permission java.util.PropertyPermission "java.vendor.url", "read";
-    permission java.util.PropertyPermission "java.class.version", "read";
-    permission java.util.PropertyPermission "java.specification.version", "read";
-    permission java.util.PropertyPermission "java.specification.vendor", "read";
-    permission java.util.PropertyPermission "java.specification.name", "read";
-
-    permission java.util.PropertyPermission "java.vm.specification.version", "read";
-    permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
-    permission java.util.PropertyPermission "java.vm.specification.name", "read";
-    permission java.util.PropertyPermission "java.vm.version", "read";
-    permission java.util.PropertyPermission "java.vm.vendor", "read";
-    permission java.util.PropertyPermission "java.vm.name", "read";
-
-    // Required for OpenJMX
-    permission java.lang.RuntimePermission "getAttribute";
-
-    // Allow read of JAXP compliant XML parser debug
-    permission java.util.PropertyPermission "jaxp.debug", "read";
-
-    // All JSPs need to be able to read this package
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat";
-
-    // Precompiled JSPs need access to these packages.
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.el";
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime";
-    permission java.lang.RuntimePermission
-     "accessClassInPackage.org.apache.jasper.runtime.*";
-
-    // Precompiled JSPs need access to these system properties.
-    permission java.util.PropertyPermission
-     "org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER", "read";
-    permission java.util.PropertyPermission
-     "org.apache.el.parser.COERCE_TO_ZERO", "read";
-
-    // The cookie code needs these.
-    permission java.util.PropertyPermission
-     "org.apache.catalina.STRICT_SERVLET_COMPLIANCE", "read";
-    permission java.util.PropertyPermission
-     "org.apache.tomcat.util.http.ServerCookie.STRICT_NAMING", "read";
-    permission java.util.PropertyPermission
-     "org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR", "read";
-
-    // Applications using WebSocket need to be able to access these packages
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket";
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server";
-
-    // Applications need to access these packages to use the Servlet 4.0 Preview
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.servlet4preview";
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.servlet4preview.http";
-};
-
-
-// The Manager application needs access to the following packages to support the
-// session display functionality. It also requires the custom Tomcat
-// DeployXmlPermission to enable the use of META-INF/context.xml
-// These settings support the following configurations:
-// - default CATALINA_HOME == CATALINA_BASE
-// - CATALINA_HOME != CATALINA_BASE, per instance Manager in CATALINA_BASE
-// - CATALINA_HOME != CATALINA_BASE, shared Manager in CATALINA_HOME
-grant codeBase "file:${catalina.base}/webapps/manager/-" {
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session";
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";
-    permission org.apache.catalina.security.DeployXmlPermission "manager";
-};
-grant codeBase "file:${catalina.home}/webapps/manager/-" {
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session";
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";
-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";
-    permission org.apache.catalina.security.DeployXmlPermission "manager";
-};
-
-// The Host Manager application needs the custom Tomcat DeployXmlPermission to
-// enable the use of META-INF/context.xml
-// These settings support the following configurations:
-// - default CATALINA_HOME == CATALINA_BASE
-// - CATALINA_HOME != CATALINA_BASE, per instance Host Manager in CATALINA_BASE
-// - CATALINA_HOME != CATALINA_BASE, shared Host Manager in CATALINA_HOME
-grant codeBase "file:${catalina.base}/webapps/host-manager/-" {
-    permission org.apache.catalina.security.DeployXmlPermission "host-manager";
-};
-grant codeBase "file:${catalina.home}/webapps/host-manager/-" {
-    permission org.apache.catalina.security.DeployXmlPermission "host-manager";
-};
-
-
-// You can assign additional permissions to particular web applications by
-// adding additional "grant" entries here, based on the code base for that
-// application, /WEB-INF/classes/, or /WEB-INF/lib/ jar files.
-//
-// Different permissions can be granted to JSP pages, classes loaded from
-// the /WEB-INF/classes/ directory, all jar files in the /WEB-INF/lib/
-// directory, or even to individual jar files in the /WEB-INF/lib/ directory.
-//
-// For instance, assume that the standard "examples" application
-// included a JDBC driver that needed to establish a network connection to the
-// corresponding database and used the scrape taglib to get the weather from
-// the NOAA web server.  You might create a "grant" entries like this:
-//
-// The permissions granted to the context root directory apply to JSP pages.
-// grant codeBase "file:${catalina.base}/webapps/examples/-" {
-//      permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";
-//      permission java.net.SocketPermission "*.noaa.gov:80", "connect";
-// };
-//
-// The permissions granted to the context WEB-INF/classes directory
-// grant codeBase "file:${catalina.base}/webapps/examples/WEB-INF/classes/-" {
-// };
-//
-// The permission granted to your JDBC driver
-// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar!/-" {
-//      permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";
-// };
-// The permission granted to the scrape taglib
-// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/scrape.jar!/-" {
-//      permission java.net.SocketPermission "*.noaa.gov:80", "connect";
-// };
-
-// To grant permissions for web applications using packed WAR files, use the
-// Tomcat specific WAR url scheme.
-//
-// The permissions granted to the entire web application
-// grant codeBase "war:file:${catalina.base}/webapps/examples.war*/-" {
-// };
-//
-// The permissions granted to a specific JAR
-// grant codeBase "war:file:${catalina.base}/webapps/examples.war*/WEB-INF/lib/foo.jar" {
-// };
- -

Starting Tomcat With A SecurityManager

- -

Once you have configured the catalina.policy file for use - with a SecurityManager, Tomcat can be started with a SecurityManager in - place by using the "-security" option:

-
$CATALINA_HOME/bin/catalina.sh start -security    (Unix)
-%CATALINA_HOME%\bin\catalina start -security      (Windows)
- -

Permissions for packed WAR files

- -

When using packed WAR files, it is necessary to use Tomcat's custom war - URL protocol to assign permissions to web application code.

- -

To assign permissions to the entire web application the entry in the - policy file would look like this:

- -
// Example policy file entry
-grant codeBase "war:file:${catalina.base}/webapps/examples.war*/-" {
-    ...
-};
-
- -

To assign permissions to a single JAR within the web application the - entry in the policy file would look like this:

- -
// Example policy file entry
-grant codeBase "war:file:${catalina.base}/webapps/examples.war*/WEB-INF/lib/foo.jar" {
-    ...
-};
-
- -
- -

Configuring Package Protection in Tomcat

-

Starting with Tomcat 5, it is now possible to configure which Tomcat - internal package are protected against package definition and access. See - - http://www.oracle.com/technetwork/java/seccodeguide-139067.html - for more information.

- - -

WARNING: Be aware that removing the default package protection - could possibly open a security hole

- -

The Default Properties File

- -

The default $CATALINA_BASE/conf/catalina.properties file - looks like this:

-
#
-# List of comma-separated packages that start with or equal this string
-# will cause a security exception to be thrown when
-# passed to checkPackageAccess unless the
-# corresponding RuntimePermission ("accessClassInPackage."+package) has
-# been granted.
-package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,
-org.apache.jasper.
-#
-# List of comma-separated packages that start with or equal this string
-# will cause a security exception to be thrown when
-# passed to checkPackageDefinition unless the
-# corresponding RuntimePermission ("defineClassInPackage."+package) has
-# been granted.
-#
-# by default, no packages are restricted for definition, and none of
-# the class loaders supplied with the JDK call checkPackageDefinition.
-#
-package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,
-org.apache.tomcat.,org.apache.jasper.
-

Once you have configured the catalina.properties file for use - with a SecurityManager, remember to re-start Tomcat.

-

Troubleshooting

- -

If your web application attempts to execute an operation that is - prohibited by lack of a required Permission, it will throw an - AccessControLException or a SecurityException - when the SecurityManager detects the violation. Debugging the permission - that is missing can be challenging, and one option is to turn on debug - output of all security decisions that are made during execution. This - is done by setting a system property before starting Tomcat. The easiest - way to do this is via the CATALINA_OPTS environment variable. - Execute this command:

-
export CATALINA_OPTS=-Djava.security.debug=all    (Unix)
-set CATALINA_OPTS=-Djava.security.debug=all       (Windows)
- -

before starting Tomcat.

- -

WARNING - This will generate many megabytes - of output! However, it can help you track down problems by searching - for the word "FAILED" and determining which permission was being checked - for. See the Java security documentation for more options that you can - specify here as well.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/servletapi/index.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/servletapi/index.html deleted file mode 100644 index 3e1f5627b7ecb6e63596bc6dc43228817a7ad675..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/servletapi/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - API docs - - - - -The Servlet Javadoc is not installed by default. Download and install -the "fulldocs" package to get it. - -You can also access the javadoc online in the Tomcat - -documentation bundle. - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/setup.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/setup.html deleted file mode 100644 index ed42dd7f9f6152847631f6a1b4f3bd4fb0522177..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/setup.html +++ /dev/null @@ -1,201 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Tomcat Setup

Tomcat Setup

Table of Contents

Introduction

-

- There are several ways to set up Tomcat for running on different - platforms. The main documentation for this is a file called - RUNNING.txt. We encourage you to refer to that - file if the information below does not answer some of your questions. -

-

Windows

- -

- Installing Tomcat on Windows can be done easily using the Windows - installer. Its interface and functionality is similar to other wizard - based installers, with only a few items of interest. -

- - -
    -
  • Installation as a service: Tomcat will be - installed as a Windows service no matter what setting is selected. - Using the checkbox on the component page sets the service as "auto" - startup, so that Tomcat is automatically started when Windows - starts. For optimal security, the service should be run as a - separate user, with reduced permissions (see the Windows Services - administration tool and its documentation).
  • -
  • Java location: The installer will provide a default - JRE to use to run the service. The installer uses the registry to - determine the base path of a Java 7 or later JRE, including the JRE - installed as part of the full JDK. When running on a 64-bit - operating system, the installer will first look for a 64-bit JRE and - only look for a 32-bit JRE if a 64-bit JRE is not found. It is not - mandatory to use the default JRE detected by the installer. Any - installed Java 7 or later JRE (32-bit or 64-bit) may be used.
  • -
  • Tray icon: When Tomcat is run as a service, there - will not be any tray icon present when Tomcat is running. Note that - when choosing to run Tomcat at the end of installation, the tray - icon will be used even if Tomcat was installed as a service.
  • -
  • Defaults: The defaults used by the installer may be - overridden by use of the /C=<config file> command - line argument. The configuration file uses the format - name=value with each pair on a separate line. The names - of the available configuration options are: -
      -
    • JavaHome
    • -
    • TomcatPortShutdown
    • -
    • TomcatPortHttp
    • -
    • TomcatPortAjp
    • -
    • TomcatMenuEntriesEnable
    • -
    • TomcatShortcutAllUsers
    • -
    • TomcatServiceDefaultName
    • -
    • TomcatServiceName
    • -
    • TomcatServiceFileName
    • -
    • TomcatServiceManagerFileName
    • -
    • TomcatAdminEnable
    • -
    • TomcatAdminUsername
    • -
    • TomcatAdminPassword
    • -
    • TomcatAdminRoles
    • -
    - By using /C=... along with /S and - /D= it is possible to perform fully configured - unattended installs of Apache Tomact. -
  • -
  • Refer to the - Windows Service HOW-TO - for information on how to manage Tomcat as a Windows service. -
  • -
- - -

The installer will create shortcuts allowing starting and configuring - Tomcat. It is important to note that the Tomcat administration web - application can only be used when Tomcat is running.

- -

Unix daemon

- -

Tomcat can be run as a daemon using the jsvc tool from the - commons-daemon project. Source tarballs for jsvc are included with the - Tomcat binaries, and need to be compiled. Building jsvc requires - a C ANSI compiler (such as GCC), GNU Autoconf, and a JDK.

- -

Before running the script, the JAVA_HOME environment - variable should be set to the base path of the JDK. Alternately, when - calling the ./configure script, the path of the JDK may - be specified using the --with-java parameter, such as - ./configure --with-java=/usr/java.

- -

Using the following commands should result in a compiled jsvc binary, - located in the $CATALINA_HOME/bin folder. This assumes - that GNU TAR is used, and that CATALINA_HOME is an - environment variable pointing to the base path of the Tomcat - installation.

- -

Please note that you should use the GNU make (gmake) instead of - the native BSD make on FreeBSD systems.

- -
cd $CATALINA_HOME/bin
-tar xvfz commons-daemon-native.tar.gz
-cd commons-daemon-1.1.x-native-src/unix
-./configure
-make
-cp jsvc ../..
-cd ../..
- -

Tomcat can then be run as a daemon using the following commands.

- -
CATALINA_BASE=$CATALINA_HOME
-cd $CATALINA_HOME
-./bin/jsvc \
-    -classpath $CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar \
-    -outfile $CATALINA_BASE/logs/catalina.out \
-    -errfile $CATALINA_BASE/logs/catalina.err \
-    -Dcatalina.home=$CATALINA_HOME \
-    -Dcatalina.base=$CATALINA_BASE \
-    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
-    -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \
-    org.apache.catalina.startup.Bootstrap
- -

When runnong on Java 9 you will need to additionally specify the - following when starting jsvc to avoid warnings on shutdown.

-
...
---add-opens=java.base/java.lang=ALL-UNNAMED \
---add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED \
-...
-
- -

You may also need to specify -jvm server if the JVM defaults - to using a server VM rather than a client VM. This has been observed on - OSX.

- -

jsvc has other useful parameters, such as -user which - causes it to switch to another user after the daemon initialization is - complete. This allows, for example, running Tomcat as a non privileged - user while still being able to use privileged ports. Note that if you - use this option and start Tomcat as root, you'll need to disable the - org.apache.catalina.security.SecurityListener check that - prevents Tomcat starting when running as root.

- -

jsvc --help will return the full jsvc usage - information. In particular, the -debug option is useful - to debug issues running jsvc.

- -

The file $CATALINA_HOME/bin/daemon.sh can be used as a - template for starting Tomcat automatically at boot time from - /etc/init.d with jsvc.

- -

Note that the Commons-Daemon JAR file must be on your runtime classpath - to run Tomcat in this manner. The Commons-Daemon JAR file is in the - Class-Path entry of the bootstrap.jar manifest, but if you get a - ClassNotFoundException or a NoClassDefFoundError for a Commons-Daemon - class, add the Commons-Daemon JAR to the -cp argument when launching - jsvc.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/ssi-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/ssi-howto.html deleted file mode 100644 index 5c04aefec7b0bce406a7c90bd7c2de25de185dd6..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/ssi-howto.html +++ /dev/null @@ -1,398 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - SSI How To

SSI How To

Table of Contents

Introduction

- -

SSI (Server Side Includes) are directives that are placed in HTML pages, -and evaluated on the server while the pages are being served. They let you -add dynamically generated content to an existing HTML page, without having -to serve the entire page via a CGI program, or other dynamic technology. -

- -

Within Tomcat SSI support can be added when using Tomcat as your -HTTP server and you require SSI support. Typically this is done -during development when you don't want to run a web server like Apache.

- -

Tomcat SSI support implements the same SSI directives as Apache. See the - -Apache Introduction to SSI for information on using SSI directives.

- -

SSI support is available as a servlet and as a filter. You should use one -or the other to provide SSI support but not both.

- -

Servlet based SSI support is implemented using the class -org.apache.catalina.ssi.SSIServlet. Traditionally, this servlet -is mapped to the URL pattern "*.shtml".

- -

Filter based SSI support is implemented using the class -org.apache.catalina.ssi.SSIFilter. Traditionally, this filter -is mapped to the URL pattern "*.shtml", though it can be mapped to "*" as -it will selectively enable/disable SSI processing based on mime types. The -contentType init param allows you to apply SSI processing to JSP pages, -javascript, or any other content you wish.

-

By default SSI support is disabled in Tomcat.

-

Installation

- -

CAUTION - SSI directives can be used to execute programs -external to the Tomcat JVM. If you are using the Java SecurityManager this -will bypass your security policy configuration in catalina.policy. -

- -

To use the SSI servlet, remove the XML comments from around the SSI servlet -and servlet-mapping configuration in -$CATALINA_BASE/conf/web.xml.

- -

To use the SSI filter, remove the XML comments from around the SSI filter -and filter-mapping configuration in -$CATALINA_BASE/conf/web.xml.

- -

Only Contexts which are marked as privileged may use SSI features (see the -privileged property of the Context element).

- -

Servlet Configuration

- -

There are several servlet init parameters which can be used to -configure the behaviour of the SSI servlet.

-
    -
  • buffered - Should output from this servlet be buffered? -(0=false, 1=true) Default 0 (false).
  • -
  • debug - Debugging detail level for messages logged -by this servlet. Default 0.
  • -
  • expires - The number of seconds before a page with SSI -directives will expire. Default behaviour is for all SSI directives to be -evaluated for every request.
  • -
  • isVirtualWebappRelative - Should "virtual" SSI directive -paths be interpreted as relative to the context root, instead of the server -root? Default false.
  • -
  • inputEncoding - The encoding to be assumed for SSI -resources if one cannot be determined from the resource itself. Default is -the default platform encoding.
  • -
  • outputEncoding - The encoding to be used for the result -of the SSI processing. Default is UTF-8.
  • -
  • allowExec - Is the exec command enabled? Default is -false.
  • -
- - -

Filter Configuration

- -

There are several filter init parameters which can be used to -configure the behaviour of the SSI filter.

-
    -
  • contentType - A regex pattern that must be matched before -SSI processing is applied. When crafting your own pattern, don't forget that a -mime content type may be followed by an optional character set in the form -"mime/type; charset=set" that you must take into account. Default is -"text/x-server-parsed-html(;.*)?".
  • -
  • debug - Debugging detail level for messages logged -by this servlet. Default 0.
  • -
  • expires - The number of seconds before a page with SSI -directives will expire. Default behaviour is for all SSI directives to be -evaluated for every request.
  • -
  • isVirtualWebappRelative - Should "virtual" SSI directive -paths be interpreted as relative to the context root, instead of the server -root? Default false.
  • -
  • allowExec - Is the exec command enabled? Default is -false.
  • -
- - -

Directives

-

Server Side Includes are invoked by embedding SSI directives in an HTML document - whose type will be processed by the SSI servlet. The directives take the form of an HTML - comment. The directive is replaced by the results of interpreting it before sending the - page to the client. The general form of a directive is:

-

<!--#directive [parm=value] -->

-

The directives are:

-
    -
  • -config - <!--#config timefmt="%B %Y" --> -Used to set the format of dates and other items processed by SSI -
  • -
  • -echo - <!--#echo var="VARIABLE_NAME" --> -will be replaced by the value of the variable. -
  • -
  • -exec - Used to run commands on the host system. -
  • -
  • -include - <!--#include virtual="file-name" --> -inserts the contents -
  • -
  • -flastmod - <!--#flastmod file="filename.shtml" --> -Returns the time that a file was lost modified. -
  • -
  • -fsize - <!--#fsize file="filename.shtml" --> -Returns the size of a file. -
  • -
  • -printenv - <!--#printenv --> -Returns the list of all the defined variables. -
  • -
  • -set - <!--#set var="foo" value="Bar" --> -is used to assign a value to a user-defined variable. -
  • -
  • -if elif endif else - Used to create conditional sections. For example: -
    <!--#config timefmt="%A" -->
    -<!--#if expr="$DATE_LOCAL = /Monday/" -->
    -<p>Meeting at 10:00 on Mondays</p>
    -<!--#elif expr="$DATE_LOCAL = /Friday/" -->
    -<p>Turn in your time card</p>
    -<!--#else -->
    -<p>Yoga class at noon.</p>
    -<!--#endif -->
    -
  • -
-

-See the - -Apache Introduction to SSI for more information on using SSI directives.

-

Variables

-

The SSI servlet currently implements the following variables: -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Variable NameDescription
AUTH_TYPE - The type of authentication used for this user: BASIC, FORM, etc.
CONTENT_LENGTH - The length of the data (in bytes or the number of - characters) passed from a form.
CONTENT_TYPE - The MIME type of the query data, such as "text/html".
DATE_GMT -Current date and time in GMT
DATE_LOCAL -Current date and time in the local time zone
DOCUMENT_NAME -The current file
DOCUMENT_URI -Virtual path to the file
GATEWAY_INTERFACE - The revision of the Common Gateway Interface that the - server uses if enabled: "CGI/1.1".
HTTP_ACCEPT - A list of the MIME types that the client can accept.
HTTP_ACCEPT_ENCODING - A list of the compression types that the client can accept.
HTTP_ACCEPT_LANGUAGE - A list of the languages that the client can accept.
HTTP_CONNECTION - The way that the connection from the client is being managed: - "Close" or "Keep-Alive".
HTTP_HOST - The web site that the client requested.
HTTP_REFERER - The URL of the document that the client linked from.
HTTP_USER_AGENT - The browser the client is using to issue the request.
LAST_MODIFIED -Last modification date and time for current file
PATH_INFO - Extra path information passed to a servlet.
PATH_TRANSLATED - The translated version of the path given by the - variable PATH_INFO.
QUERY_STRING -The query string that follows the "?" in the URL. -
QUERY_STRING_UNESCAPED -Undecoded query string with all shell metacharacters escaped -with "\"
REMOTE_ADDR - The remote IP address of the user making the request.
REMOTE_HOST - The remote hostname of the user making the request.
REMOTE_PORT - The port number at remote IP address of the user making the request.
REMOTE_USER - The authenticated name of the user.
REQUEST_METHOD - The method with which the information request was - issued: "GET", "POST" etc.
REQUEST_URI - The web page originally requested by the client.
SCRIPT_FILENAME - The location of the current web page on the server.
SCRIPT_NAME - The name of the web page.
SERVER_ADDR - The server's IP address.
SERVER_NAME - The server's hostname or IP address.
SERVER_PORT - The port on which the server received the request.
SERVER_PROTOCOL - The protocol used by the server. E.g. "HTTP/1.1".
SERVER_SOFTWARE - The name and version of the server software that is - answering the client request.
UNIQUE_ID - A token used to identify the current session if one - has been established.
-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/ssl-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/ssl-howto.html deleted file mode 100644 index 540f6151ae1825c68e0d13ffa50bf51482fa16c4..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/ssl-howto.html +++ /dev/null @@ -1,687 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - SSL/TLS Configuration HOW-TO

SSL/TLS Configuration HOW-TO

Table of Contents

Quick Start

- -

The description below uses the variable name $CATALINA_BASE to refer the - base directory against which most relative paths are resolved. If you have - not configured Tomcat for multiple instances by setting a CATALINA_BASE - directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME, - the directory into which you have installed Tomcat.

- -

To install and configure SSL/TLS support on Tomcat, you need to follow -these simple steps. For more information, read the rest of this HOW-TO.

-
    -
  1. Create a keystore file to store the server's private key and -self-signed certificate by executing the following command:

    -

    Windows:

    -
    "%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA
    -

    Unix:

    -
    $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA
    - -

    and specify a password value of "changeit".

  2. -
  3. Uncomment the "SSL HTTP/1.1 Connector" entry in - $CATALINA_BASE/conf/server.xml and modify as described in - the Configuration section below.

  4. - -
- - -

Introduction to SSL/TLS

- -

Transport Layer Security (TLS) and its predecessor, Secure Sockets Layer -(SSL), are technologies which allow web browsers and web servers to communicate -over a secured connection. This means that the data being sent is encrypted by -one side, transmitted, then decrypted by the other side before processing. -This is a two-way process, meaning that both the server AND the browser encrypt -all traffic before sending out data.

- -

Another important aspect of the SSL/TLS protocol is Authentication. This means -that during your initial attempt to communicate with a web server over a secure -connection, that server will present your web browser with a set of -credentials, in the form of a "Certificate", as proof the site is who and what -it claims to be. In certain cases, the server may also request a Certificate -from your web browser, asking for proof that you are who you claim -to be. This is known as "Client Authentication," although in practice this is -used more for business-to-business (B2B) transactions than with individual -users. Most SSL-enabled web servers do not request Client Authentication.

- -

SSL/TLS and Tomcat

- -

It is important to note that configuring Tomcat to take advantage of -secure sockets is usually only necessary when running it as a stand-alone -web server. Details can be found in the -Security Considerations Document. -When running Tomcat primarily as a Servlet/JSP container behind -another web server, such as Apache or Microsoft IIS, it is usually necessary -to configure the primary web server to handle the SSL connections from users. -Typically, this server will negotiate all SSL-related functionality, then -pass on any requests destined for the Tomcat container only after decrypting -those requests. Likewise, Tomcat will return cleartext responses, that will -be encrypted before being returned to the user's browser. In this environment, -Tomcat knows that communications between the primary web server and the -client are taking place over a secure connection (because your application -needs to be able to ask about this), but it does not participate in the -encryption or decryption itself.

- -

Certificates

- -

In order to implement SSL, a web server must have an associated Certificate -for each external interface (IP address) that accepts secure connections. -The theory behind this design is that a server should provide some kind of -reasonable assurance that its owner is who you think it is, particularly -before receiving any sensitive information. While a broader explanation of -Certificates is beyond the scope of this document, think of a Certificate as a -"digital passport" for an Internet address. It states which organisation the -site is associated with, along with some basic contact information about the -site owner or administrator.

- -

This certificate is cryptographically signed by its owner, and is -therefore extremely difficult for anyone else to forge. For the certificate to -work in the visitors browsers without warnings, it needs to be signed by a -trusted third party. These are called Certificate Authorities (CAs). To -obtain a signed certificate, you need to choose a CA and follow the instructions -your chosen CA provides to obtain your certificate. A range of CAs is available -including some that offer certificates at no cost.

- -

Java provides a relatively simple command-line tool, called -keytool, which can easily create a "self-signed" Certificate. -Self-signed Certificates are simply user generated Certificates which have not -been signed by a well-known CA and are, therefore, not really guaranteed to be -authentic at all. While self-signed certificates can be useful for some testing -scenarios, they are not suitable for any form of production use.

- -

General Tips on Running SSL

- -

When securing a website with SSL it's important to make sure that all assets -that the site uses are served over SSL, so that an attacker can't bypass -the security by injecting malicious content in a javascript file or similar. To -further enhance the security of your website, you should evaluate to use the -HSTS header. It allows you to communicate to the browser that your site should -always be accessed over https.

- -

Using name-based virtual hosts on a secured connection requires careful -configuration of the names specified in a single certificate or Tomcat 8.5 -onwards where Server Name Indication (SNI) support is available. SNI allows -multiple certificates with different names to be associated with a single TLS -connector.

- -

Configuration

- -

Prepare the Certificate Keystore

- -

Tomcat currently operates only on JKS, PKCS11 or -PKCS12 format keystores. The JKS format -is Java's standard "Java KeyStore" format, and is the format created by the -keytool command-line utility. This tool is included in the JDK. -The PKCS12 format is an internet standard, and can be manipulated -via (among other things) OpenSSL and Microsoft's Key-Manager. -

- -

Each entry in a keystore is identified by an alias string. Whilst many -keystore implementations treat aliases in a case insensitive manner, case -sensitive implementations are available. The PKCS11 specification, -for example, requires that aliases are case sensitive. To avoid issues related -to the case sensitivity of aliases, it is not recommended to use aliases that -differ only in case. -

- -

To import an existing certificate into a JKS keystore, please read the -documentation (in your JDK documentation package) about keytool. -Note that OpenSSL often adds readable comments before the key, but -keytool does not support that. So if your certificate has -comments before the key data, remove them before importing the certificate with -keytool. -

-

To import an existing certificate signed by your own CA into a PKCS12 -keystore using OpenSSL you would execute a command like:

-
openssl pkcs12 -export -in mycert.crt -inkey mykey.key
-                       -out mycert.p12 -name tomcat -CAfile myCA.crt
-                       -caname root -chain
-

For more advanced cases, consult the -OpenSSL documentation.

- -

To create a new JKS keystore from scratch, containing a single -self-signed Certificate, execute the following from a terminal command line:

-

Windows:

-
"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA
-

Unix:

-
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA
- -

(The RSA algorithm should be preferred as a secure algorithm, and this -also ensures general compatibility with other servers and components.)

- -

This command will create a new file, in the home directory of the user -under which you run it, named ".keystore". To specify a -different location or filename, add the -keystore parameter, -followed by the complete pathname to your keystore file, -to the keytool command shown above. You will also need to -reflect this new location in the server.xml configuration file, -as described later. For example:

-

Windows:

-
"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA
-  -keystore \path\to\my\keystore
-

Unix:

-
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA
-  -keystore /path/to/my/keystore
- -

After executing this command, you will first be prompted for the keystore -password. The default password used by Tomcat is "changeit" -(all lower case), although you can specify a custom password if you like. -You will also need to specify the custom password in the -server.xml configuration file, as described later.

- -

Next, you will be prompted for general information about this Certificate, -such as company, contact name, and so on. This information will be displayed -to users who attempt to access a secure page in your application, so make -sure that the information provided here matches what they will expect.

- -

Finally, you will be prompted for the key password, which is the -password specifically for this Certificate (as opposed to any other -Certificates stored in the same keystore file). The keytool prompt -will tell you that pressing the ENTER key automatically uses the same password -for the key as the keystore. You are free to use the same password or to select -a custom one. If you select a different password to the keystore password, you -will also need to specify the custom password in the server.xml -configuration file.

- -

If everything was successful, you now have a keystore file with a -Certificate that can be used by your server.

- -
- -

Edit the Tomcat Configuration File

-

-Tomcat can use three different implementations of SSL: -

-
    -
  • JSSE implementation provided as part of the Java runtime
  • -
  • JSSE implementation that uses OpenSSL
  • -
  • APR implementation, which uses the OpenSSL engine by default
  • -
-

-The exact configuration details depend on which implementation is being used. -If you configured Connector by specifying generic -protocol="HTTP/1.1" then the implementation used by Tomcat is -chosen automatically. If the installation uses APR -- i.e. you have installed the Tomcat native library - -then it will use the JSSE OpenSSL implementation, otherwise it will use the Java -JSSE implementation. -

- -

-Auto-selection of implementation can be avoided if needed. It is done by specifying a classname -in the protocol attribute of the Connector.

- -

To define a Java (JSSE) connector, regardless of whether the APR library is -loaded or not, use one of the following:

-
<!-- Define a HTTP/1.1 Connector on port 8443, JSSE NIO implementation -->
-<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
-           sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"
-           port="8443" .../>
-
-<!-- Define a HTTP/1.1 Connector on port 8443, JSSE NIO2 implementation -->
-<Connector protocol="org.apache.coyote.http11.Http11Nio2Protocol"
-           sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"
-           port="8443" .../>
- -

The OpenSSL JSSE implementation can also be configured explicitly if needed. If the APR library -is installed (as for using the APR connector), using the sslImplementationName attribute -allows enabling it. When using the OpenSSL JSSE implementation, the configuration can use -either the JSSE attributes or -the OpenSSL attributes (as used for the APR connector), but must not mix attributes from -both types in the same SSLHostConfig or Connector element.

-
<!-- Define a HTTP/1.1 Connector on port 8443, JSSE NIO implementation and OpenSSL -->
-<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443"
-           sslImplementationName="org.apache.tomcat.util.net.openssl.OpenSSLImplementation"
-           .../>
- -

Alternatively, to specify an APR connector (the APR library must be available) use:

-
<!-- Define a HTTP/1.1 Connector on port 8443, APR implementation -->
-<Connector protocol="org.apache.coyote.http11.Http11AprProtocol"
-           port="8443" .../>
- -

If you are using APR or JSSE OpenSSL, you have the option of configuring an alternative engine to OpenSSL.

-
<Listener className="org.apache.catalina.core.AprLifecycleListener"
-          SSLEngine="someengine" SSLRandomSeed="somedevice" />
-

The default value is

-
<Listener className="org.apache.catalina.core.AprLifecycleListener"
-          SSLEngine="on" SSLRandomSeed="builtin" />
-

Also the useAprConnector attribute may be used to have Tomcat default to -using the APR connector rather than the NIO connector:

-
<Listener className="org.apache.catalina.core.AprLifecycleListener"
-          useAprConnector="true" SSLEngine="on" SSLRandomSeed="builtin" />
-

-So to enable OpenSSL, make sure the SSLEngine attribute is set to something other than off. -The default value is on and if you specify another value, -it has to be a valid OpenSSL engine name. -

- -

-SSLRandomSeed allows to specify a source of entropy. Productive system needs a reliable source of entropy -but entropy may need a lot of time to be collected therefore test systems could use no blocking entropy -sources like "/dev/urandom" that will allow quicker starts of Tomcat. -

- -

The final step is to configure the Connector in the -$CATALINA_BASE/conf/server.xml file, where -$CATALINA_BASE represents the base directory for the -Tomcat instance. An example <Connector> element -for an SSL connector is included in the default server.xml -file installed with Tomcat. To configure an SSL connector that uses JSSE, you -will need to remove the comments and edit it so it looks something like -this:

-
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
-<Connector
-           protocol="org.apache.coyote.http11.Http11NioProtocol"
-           port="8443" maxThreads="200"
-           scheme="https" secure="true" SSLEnabled="true"
-           keystoreFile="${user.home}/.keystore" keystorePass="changeit"
-           clientAuth="false" sslProtocol="TLS"/>
-

- Note: If tomcat-native is installed, the configuration will use JSSE with - an OpenSSL implementation, which supports either this configuration or the APR - configuration example given below.

-

- The APR connector uses different attributes for many SSL settings, - particularly keys and certificates. An example of an APR configuration is:

-
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
-<Connector
-           protocol="org.apache.coyote.http11.Http11AprProtocol"
-           port="8443" maxThreads="200"
-           scheme="https" secure="true" SSLEnabled="true"
-           SSLCertificateFile="/usr/local/ssl/server.crt"
-           SSLCertificateKeyFile="/usr/local/ssl/server.pem"
-           SSLVerifyClient="optional" SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"/>
- - -

The configuration options and information on which attributes -are mandatory, are documented in the SSL Support section of the -HTTP connector configuration -reference. Make sure that you use the correct attributes for the connector you -are using. The NIO and NIO2 connectors use JSSE unless the JSSE OpenSSL implementation is -installed (in which case it supports either the JSSE or OpenSSL configuration styles), -whereas the APR/native connector uses APR.

- -

The port attribute is the TCP/IP -port number on which Tomcat will listen for secure connections. You can -change this to any port number you wish (such as to the default port for -https communications, which is 443). However, special setup -(outside the scope of this document) is necessary to run Tomcat on port -numbers lower than 1024 on many operating systems.

- -

If you change the port number here, you should also change the - value specified for the redirectPort attribute on the - non-SSL connector. This allows Tomcat to automatically redirect - users who attempt to access a page with a security constraint specifying - that SSL is required, as required by the Servlet Specification.

- -

After completing these configuration changes, you must restart Tomcat as -you normally do, and you should be in business. You should be able to access -any web application supported by Tomcat via SSL. For example, try:

-
https://localhost:8443/
-

and you should see the usual Tomcat splash page (unless you have modified -the ROOT web application). If this does not work, the following section -contains some troubleshooting tips.

- -
- -

Installing a Certificate from a Certificate Authority

-

To obtain and install a Certificate from a Certificate Authority (like verisign.com, thawte.com -or trustcenter.de), read the previous section and then follow these instructions:

- -

Create a local Certificate Signing Request (CSR)

-

In order to obtain a Certificate from the Certificate Authority of your choice -you have to create a so called Certificate Signing Request (CSR). That CSR will be used -by the Certificate Authority to create a Certificate that will identify your website -as "secure". To create a CSR follow these steps:

-
    -
  • Create a local self-signed Certificate (as described in the previous section): -
    keytool -genkey -alias tomcat -keyalg RSA
    -    -keystore <your_keystore_filename>
    - Note: In some cases you will have to enter the domain of your website (i.e. www.myside.org) - in the field "first- and lastname" in order to create a working Certificate. -
  • -
  • The CSR is then created with: -
    keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr
    -    -keystore <your_keystore_filename>
    -
  • -
-

Now you have a file called certreq.csr that you can submit to the Certificate Authority (look at the -documentation of the Certificate Authority website on how to do this). In return you get a Certificate.

-
- -

Importing the Certificate

-

Now that you have your Certificate you can import it into you local keystore. -First of all you have to import a so called Chain Certificate or Root Certificate into your keystore. -After that you can proceed with importing your Certificate.

- -
    -
  • Download a Chain Certificate from the Certificate Authority you obtained the Certificate from.
    - For Verisign.com commercial certificates go to: - http://www.verisign.com/support/install/intermediate.html
    - For Verisign.com trial certificates go to: - http://www.verisign.com/support/verisign-intermediate-ca/Trial_Secure_Server_Root/index.html
    - For Trustcenter.de go to: - http://www.trustcenter.de/certservices/cacerts/en/en.htm#server
    - For Thawte.com go to: - http://www.thawte.com/certs/trustmap.html
    -
  • -
  • Import the Chain Certificate into your keystore -
    keytool -import -alias root -keystore <your_keystore_filename>
    -    -trustcacerts -file <filename_of_the_chain_certificate>
    -
  • -
  • And finally import your new Certificate -
    keytool -import -alias tomcat -keystore <your_keystore_filename>
    -    -file <your_certificate_filename>
    -
  • -
-
-

Using OCSP Certificates

-

To use Online Certificate Status Protocol (OCSP) with Apache Tomcat, ensure - you have downloaded, installed, and configured the - - Tomcat Native Connector. -Furthermore, if you use the Windows platform, ensure you download the -ocsp-enabled connector.

-

To use OCSP, you require the following:

- -
    -
  • OCSP-enabled certificates
  • -
  • Tomcat with SSL APR connector
  • -
  • Configured OCSP responder
  • -
- -

Generating OCSP-Enabled Certificates

-

Apache Tomcat requires the OCSP-enabled certificate to have the OCSP - responder location encoded in the certificate. The basic OCSP-related - certificate authority settings in the openssl.cnf file could look - as follows:

- -

-#... omitted for brevity
-
-[x509]
-x509_extensions = v3_issued
-
-[v3_issued]
-subjectKeyIdentifier=hash
-authorityKeyIdentifier=keyid,issuer
-# The address of your responder
-authorityInfoAccess = OCSP;URI:http://127.0.0.1:8088
-keyUsage = critical,digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement,keyCertSign,cRLSign,encipherOnly,decipherOnly
-basicConstraints=critical,CA:FALSE
-nsComment="Testing OCSP Certificate"
-
-#... omitted for brevity
-
- -

The settings above encode the OCSP responder address - 127.0.0.1:8088 into the certificate. Note that for the following - steps, you must have openssl.cnf and other configuration of - your CA ready. To generate an OCSP-enabled certificate:

- -
    -
  • - Create a private key: -
    openssl genrsa -aes256 -out ocsp-cert.key 4096
    -
  • -
  • - Create a signing request (CSR): -
    openssl req -config openssl.cnf -new -sha256 \
    -  -key ocsp-cert.key -out ocsp-cert.csr
  • -
  • - Sign the CSR: -
    openssl ca -openssl.cnf -extensions ocsp -days 375 -notext \
    -  -md sha256 -in ocsp-cert.csr -out ocsp-cert.crt
    -
  • -
  • - You may verify the certificate: -
    openssl x509 -noout -text -in ocsp-cert.crt
    -
  • -
-
- -

Configuring OCSP Connector

- -

To configure the OCSP connector, first verify that you are loading the Tomcat - APR library. Check the - Apache Portable Runtime (APR) based Native library for Tomcat -for more information about installation of APR. A basic OCSP-enabled connector - definition in the server.xml file looks as follows:

-

-<Connector
-    port="8443"
-    protocol="org.apache.coyote.http11.Http11AprProtocol"
-    secure="true"
-    scheme="https"
-    SSLEnabled="true"
-  <SSLHostConfig
-      caCertificateFile="/path/to/ca.pem"
-      certificateVerification="require"
-      certificateVerificationDepth="10" >
-    <Certificate
-        certificateFile="/path/to/ocsp-cert.crt"
-        certificateKeyFile="/path/to/ocsp-cert.key" />
-  </SSLHostConfig>
-
-
- -

Starting OCSP Responder

-

Apache Tomcat will query an OCSP responder server to get the certificate - status. When testing, an easy way to create an OCSP responder is by executing - the following: -

openssl ocsp -port 127.0.0.1:8088 \
-    -text -sha256 -index index.txt \
-    -CA ca-chain.cert.pem -rkey ocsp-cert.key \
-    -rsigner ocsp-cert.crt

- -

Do note that when using OCSP, the responder encoded in the connector - certificate must be running. For further information, see - - OCSP documentation - . -

- -
- -

Troubleshooting

- -

Here is a list of common problems that you may encounter when setting up -SSL communications, and what to do about them.

- -
    - -
  • When Tomcat starts up, I get an exception like - "java.io.FileNotFoundException: {some-directory}/{some-file} not found". - -

    A likely explanation is that Tomcat cannot find the keystore file - where it is looking. By default, Tomcat expects the keystore file to - be named .keystore in the user home directory under which - Tomcat is running (which may or may not be the same as yours :-). If - the keystore file is anywhere else, you will need to add a - keystoreFile attribute to the <Connector> - element in the Tomcat - configuration file.

    -
  • - -
  • When Tomcat starts up, I get an exception like - "java.io.FileNotFoundException: Keystore was tampered with, or - password was incorrect". - -

    Assuming that someone has not actually tampered with - your keystore file, the most likely cause is that Tomcat is using - a different password than the one you used when you created the - keystore file. To fix this, you can either go back and - recreate the keystore - file, or you can add or update the keystorePass - attribute on the <Connector> element in the - Tomcat configuration - file. REMINDER - Passwords are case sensitive!

    -
  • - -
  • When Tomcat starts up, I get an exception like - "java.net.SocketException: SSL handshake error javax.net.ssl.SSLException: No - available certificate or key corresponds to the SSL cipher suites which are - enabled." - -

    A likely explanation is that Tomcat cannot find the alias for the server - key within the specified keystore. Check that the correct - keystoreFile and keyAlias are specified in the - <Connector> element in the - Tomcat configuration file. - REMINDER - keyAlias values may be case - sensitive!

    -
  • - -
  • My Java-based client aborts handshakes with exceptions such as - "java.lang.RuntimeException: Could not generate DH keypair" and - "java.security.InvalidAlgorithmParameterException: Prime size must be multiple - of 64, and can only range from 512 to 1024 (inclusive)" - -

    If you are using the APR/native connector or the JSSE OpenSSL implementation, - it will determine the strength of ephemeral DH keys from the key size of - your RSA certificate. For example a 2048 bit RSA key will result in - using a 2048 bit prime for the DH keys. Unfortunately Java 6 only supports - 768 bit and Java 7 only supports 1024 bit. So if your certificate has a - stronger key, old Java clients might produce such handshake failures. - As a mitigation you can either try to force them to use another cipher by - configuring an appropriate SSLCipherSuite and activate - SSLHonorCipherOrder, or embed weak DH params in your - certificate file. The latter approach is not recommended because it weakens - the SSL security (logjam attack).

    -
  • - -
- -

If you are still having problems, a good source of information is the -TOMCAT-USER mailing list. You can find pointers to archives -of previous messages on this list, as well as subscription and unsubscription -information, at -http://tomcat.apache.org/lists.html.

- -

Using the SSL for session tracking in your application

-

This is a new feature in the Servlet 3.0 specification. Because it uses the - SSL session ID associated with the physical client-server connection there - are some limitations. They are:

-
    -
  • Tomcat must have a connector with the attribute - isSecure set to true.
  • -
  • If SSL connections are managed by a proxy or a hardware accelerator - they must populate the SSL request headers (see the - SSLValve) so that - the SSL session ID is visible to Tomcat.
  • -
  • If Tomcat terminates the SSL connection, it will not be possible to use - session replication as the SSL session IDs will be different on each - node.
  • -
- -

- To enable SSL session tracking you need to use a context listener to set the - tracking mode for the context to be just SSL (if any other tracking mode is - enabled, it will be used in preference). It might look something like:

-
package org.apache.tomcat.example;
-
-import java.util.EnumSet;
-
-import javax.servlet.ServletContext;
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
-import javax.servlet.SessionTrackingMode;
-
-public class SessionTrackingModeListener implements ServletContextListener {
-
-    @Override
-    public void contextDestroyed(ServletContextEvent event) {
-        // Do nothing
-    }
-
-    @Override
-    public void contextInitialized(ServletContextEvent event) {
-        ServletContext context = event.getServletContext();
-        EnumSet<SessionTrackingMode> modes =
-            EnumSet.of(SessionTrackingMode.SSL);
-
-        context.setSessionTrackingModes(modes);
-    }
-
-}
- -

Note: SSL session tracking is implemented for the NIO and NIO2 connectors. - It is not yet implemented for the APR connector.

- -

Miscellaneous Tips and Bits

- -

To access the SSL session ID from the request, use:

- -
String sslID = (String)request.getAttribute("javax.servlet.request.ssl_session_id");
-

-For additional discussion on this area, please see -Bugzilla. -

- -

To terminate an SSL session, use:

-
// Standard HTTP session invalidation
-session.invalidate();
-
-// Invalidate the SSL Session
-org.apache.tomcat.util.net.SSLSessionManager mgr =
-    (org.apache.tomcat.util.net.SSLSessionManager)
-    request.getAttribute("javax.servlet.request.ssl_session_mgr");
-mgr.invalidateSession();
-
-// Close the connection since the SSL session will be active until the connection
-// is closed
-response.setHeader("Connection", "close");
-

- Note that this code is Tomcat specific due to the use of the - SSLSessionManager class. This is currently only available for the NIO and - NIO2 connectors, not the APR/native connector. -

-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/developers.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/developers.html deleted file mode 100644 index 5a082ac6e95cd75860a6e0f86025ee57ba6347d8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/developers.html +++ /dev/null @@ -1,50 +0,0 @@ - -Apache Tribes - The Tomcat Cluster Communication Module (8.5.27) - Apache Tribes - Developers

Apache Tribes - Developers

Developers

-

TODO

-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/faq.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/faq.html deleted file mode 100644 index f1a2a91cad3f94a701312a92c155def099d538af..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/faq.html +++ /dev/null @@ -1,50 +0,0 @@ - -Apache Tribes - The Tomcat Cluster Communication Module (8.5.27) - Apache Tribes - Frequently Asked Questions

Apache Tribes - Frequently Asked Questions

Frequently Asked Questions

-

TODO

-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/interceptors.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/interceptors.html deleted file mode 100644 index 81e7ec898407a4473ff08422b18fb4dc7aabfb06..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/interceptors.html +++ /dev/null @@ -1,50 +0,0 @@ - -Apache Tribes - The Tomcat Cluster Communication Module (8.5.27) - Apache Tribes - Interceptors

Apache Tribes - Interceptors

Interceptors

-

TODO

-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/introduction.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/introduction.html deleted file mode 100644 index 0fa5f518107d59b575aa81ee414d9c63605e5349..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/introduction.html +++ /dev/null @@ -1,277 +0,0 @@ - -Apache Tribes - The Tomcat Cluster Communication Module (8.5.27) - Apache Tribes - Introduction

Apache Tribes - Introduction

Table of Contents

Quick Start

- -

Apache Tribes is a group or peer-to-peer communication framework that enables you to easily connect - your remote objects to communicate with each other. -

-
    -
  • Import: org.apache.catalina.tribes.Channel
  • -
  • Import: org.apache.catalina.tribes.Member
  • -
  • Import: org.apache.catalina.tribes.MembershipListener
  • -
  • Import: org.apache.catalina.tribes.ChannelListener
  • -
  • Import: org.apache.catalina.tribes.group.GroupChannel
  • -
  • Create a class that implements: org.apache.catalina.tribes.ChannelListener
  • -
  • Create a class that implements: org.apache.catalina.tribes.MembershipListener
  • -
  • Simple class to demonstrate how to send a message: -
    //create a channel
    -Channel myChannel = new GroupChannel();
    -
    -//create my listeners
    -ChannelListener msgListener = new MyMessageListener();
    -MembershipListener mbrListener = new MyMemberListener();
    -
    -//attach the listeners to the channel
    -myChannel.addMembershipListener(mbrListener);
    -myChannel.addChannelListener(msgListener);
    -
    -//start the channel
    -myChannel.start(Channel.DEFAULT);
    -
    -//create a message to be sent, message must implement java.io.Serializable
    -//for performance reasons you probably want them to implement java.io.Externalizable
    -Serializable myMsg = new MyMessage();
    -
    -//retrieve my current members
    -Member[] group = myChannel.getMembers();
    -
    -//send the message
    -myChannel.send(group,myMsg,Channel.SEND_OPTIONS_DEFAULT);
    -
  • -
-

- Simple yeah? There is a lot more to Tribes than we have shown, hopefully the docs will be able - to explain more to you. Remember, that we are always interested in suggestions, improvements, bug fixes - and anything that you think would help this project. -

-

- Note: Tribes is currently built for JDK1.5, you can run on JDK1.4 by a small modifications to locks used from the java.util.concurrent package. -

-

What is Tribes

-

- Tribes is a messaging framework with group communication abilities. Tribes allows you to send and receive - messages over a network, it also allows for dynamic discovery of other nodes in the network.
- And that is the short story, it really is as simple as that. What makes Tribes useful and unique will be - described in the section below.
-

-

- The Tribes module was started early 2006 and a small part of the code base comes from the clustering module - that has been existing since 2003 or 2004. - The current cluster implementation has several short comings and many workarounds were created due - to the complexity in group communication. Long story short, what should have been two modules a long time - ago, will be now. Tribes takes out the complexity of messaging from the replication module and becomes - a fully independent and highly flexible group communication module.
-

-

- In Tomcat the old modules/cluster has now become modules/groupcom(Tribes) and - modules/ha (replication). This will allow development to proceed and let the developers - focus on the issues they are actually working on rather than getting boggled down in details of a module - they are not interested in. The understanding is that both communication and replication are complex enough, - and when trying to develop them in the same module, well you know, it becomes a cluster :)
-

-

- Tribes allows for guaranteed messaging, and can be customized in many ways. Why is this important?
- Well, you as a developer want to know that the messages you are sending are reaching their destination. - More than that, if a message doesn't reach its destination, the application on top of Tribes will be notified - that the message was never sent, and what node it failed. -

- -

Why another messaging framework

-

- I am a big fan of reusing code and would never dream of developing something if someone else has already - done it and it was available to me and the community I try to serve.
- When I did my research to improve the clustering module I was constantly faced with a few obstacles:
- 1. The framework wasn't flexible enough
- 2. The framework was licensed in a way that neither I nor the community could use it
- 3. Several features that I needed were missing
- 4. Messaging was guaranteed, but no feedback was reported to me
- 5. The semantics of my message delivery had to be configured before runtime
- And the list continues... -

-

- So I came up with Tribes, to address these issues and other issues that came along. - When designing Tribes I wanted to make sure I didn't lose any of the flexibility and - delivery semantics that the existing frameworks already delivered. The goal was to create a framework - that could do everything that the others already did, but to provide more flexibility for the application - developer. In the next section will give you the high level overview of what features tribes offers or will offer. -

-

Feature Overview

-

- To give you an idea of the feature set I will list it out here. - Some of the features are not yet completed, if that is the case they are marked accordingly. -

-

- Pluggable modules
- Tribes is built using interfaces. Any of the modules or components that are part of Tribes can be swapped out - to customize your own Tribes implementation. -

-

- Guaranteed Messaging
- In the default implementation of Tribes uses TCP or UDP for messaging. TCP already has guaranteed message delivery - and flow control built in. I believe that the performance of Java TCP, will outperform an implementation of - Java/UDP/flow-control/message guarantee since the logic happens further down the stack. UDP messaging has been added in for - sending messages over UDP instead of TCP when desired. The same guarantee scenarios as described below are still available - over UDP, however, when a UDP message is lost, it's considered failed.
- Tribes supports both non-blocking and blocking IO operations. The recommended setting is to use non blocking - as it promotes better parallelism when sending and receiving messages. The blocking implementation is available - for those platforms where NIO is still a trouble child. -

-

- Different Guarantee Levels
- There are three different levels of delivery guarantee when a message is sent. -

-
    -
  1. IO Based send guarantee. - fastest, least reliable
    - This means that Tribes considers the message transfer to be successful - if the message was sent to the socket send buffer and accepted.
    - On blocking IO, this would be socket.getOutputStream().write(msg)
    - On non blocking IO, this would be socketChannel.write(), and the buffer byte buffer gets emptied - followed by a socketChannel.read() to ensure the channel still open. - The read() has been added since write() will succeed if the connection has been "closed" - when using NIO. -
  2. -
  3. ACK based. - recommended, guaranteed delivery
    - When the message has been received on a remote node, an ACK is sent back to the sender, - indicating that the message was received successfully. -
  4. -
  5. SYNC_ACK based. - guaranteed delivery, guaranteed processed, slowest
    - When the message has been received on a remote node, the node will process - the message and if the message was processed successfully, an ACK is sent back to the sender - indicating that the message was received and processed successfully. - If the message was received, but processing it failed, an ACK_FAIL will be sent back - to the sender. This is a unique feature that adds an incredible amount value to the application - developer. Most frameworks here will tell you that the message was delivered, and the application - developer has to build in logic on whether the message was actually processed properly by the application - on the remote node. If configured, Tribes will throw an exception when it receives an ACK_FAIL - and associate that exception with the member that didn't process the message. -
  6. -
-

- You can of course write even more sophisticated guarantee levels, and some of them will be mentioned later on - in the documentation. One mentionable level would be a 2-Phase-Commit, where the remote applications don't receive - the message until all nodes have received the message. Sort of like a all-or-nothing protocol. -

-

- Per Message Delivery Attributes
- Perhaps the feature that makes Tribes stand out from the crowd of group communication frameworks. - Tribes enables you to send to decide what delivery semantics a message transfer should have on a per - message basis. Meaning, that your messages are not delivered based on some static configuration - that remains fixed after the message framework has been started.
- To give you an example of how powerful this feature is, I'll try to illustrate it with a simple example. - Imagine you need to send 10 different messages, you could send them the following way: -

-
Message_1 - asynchronous and fast, no guarantee required, fire and forget
-Message_2 - all-or-nothing, either all receivers get it, or none.
-Message_3 - encrypted and SYNC_ACK based
-Message_4 - asynchronous, SYNC_ACK and call back when the message is processed on the remote nodes
-Message_5 - totally ordered, this message should be received in the same order on all nodes that have been
-            send totally ordered
-Message_6 - asynchronous and totally ordered
-Message_7 - RPC message, send a message, wait for all remote nodes to reply before returning
-Message_8 - RPC message, wait for the first reply
-Message_9 - RPC message, asynchronous, don't wait for a reply, collect them via a callback
-Message_10- sent to a member that is not part of this group
-

- As you can imagine by now, these are just examples. The number of different semantics you can apply on a - per-message-basis is almost limitless. Tribes allows you to set up to 28 different on a message - and then configure Tribes to what flag results in what action on the message.
- Imagine a shared transactional cache, probably >90% are reads, and the dirty reads should be completely - unordered and delivered as fast as possible. But transactional writes on the other hand, have to - be ordered so that no cache gets corrupted. With tribes you would send the write messages totally ordered, - while the read messages you simple fire to achieve highest throughput.
- There are probably better examples on how this powerful feature can be used, so use your imagination and - your experience to think of how this could benefit you in your application. -

-

- Interceptor based message processing
- Tribes uses a customizable interceptor stack to process messages that are sent and received.
- So what, all frameworks have this!
- Yes, but in Tribes interceptors can react to a message based on the per-message-attributes - that are sent runtime. Meaning, that if you add a encryption interceptor that encrypts message - you can decide if this interceptor will encrypt all messages, or only certain messages that are decided - by the applications running on top of Tribes.
- This is how Tribes is able to send some messages totally ordered and others fire and forget style - like the example above.
- The number of interceptors that are available will keep growing, and we would appreciate any contributions - that you might have. -

-

- Threadless Interceptor stack - The interceptor don't require any separate threads to perform their message manipulation.
- Messages that are sent will piggy back on the thread that is sending them all the way through transmission. - The exception is the MessageDispatchInterceptor that will queue up the message - and send it on a separate thread for asynchronous message delivery. - Messages received are controlled by a thread pool in the receiver component.
- The channel object can send a heartbeat() through the interceptor stack to allow - for timeouts, cleanup and other events.
- The MessageDispatchInterceptor is the only interceptor that is configured by default. -

-

- Parallel Delivery
- Tribes support parallel delivery of messages. Meaning that node_A could send three messages to node_B in - parallel. This feature becomes useful when sending messages with different delivery semantics. - Otherwise if Message_1 was sent totally ordered, Message_2 would have to wait for that message to complete.
- Through NIO, Tribes is also able to send a message to several receivers at the same time on the same thread. -

-

- Silent Member Messaging
- With Tribes you are able to send messages to members that are not in your group. - So by default, you can already send messages over a wide area network, even though the dynamic discover - module today is limited to local area networks by using multicast for dynamic node discovery. - Of course, the membership component will be expanded to support WAN memberships in the future. - But this is very useful, when you want to hide members from the rest of the group and only communicate with them -

-

Where can I get Tribes

-

- Tribes ships as a module with Tomcat, and is released as part of the Apache Tomcat release. -

- - -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/membership.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/membership.html deleted file mode 100644 index c894d947e0b505e55228e73f1bce802150bdbc43..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/membership.html +++ /dev/null @@ -1,50 +0,0 @@ - -Apache Tribes - The Tomcat Cluster Communication Module (8.5.27) - Apache Tribes - Membership

Apache Tribes - Membership

Membership

-

TODO

-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/setup.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/setup.html deleted file mode 100644 index 5a7eae45577499d85b1a8e3fdc90fd0d51efe3c0..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/setup.html +++ /dev/null @@ -1,50 +0,0 @@ - -Apache Tribes - The Tomcat Cluster Communication Module (8.5.27) - Apache Tribes - Configuration

Apache Tribes - Configuration

Configuration Overview

-

TODO

-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/status.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/status.html deleted file mode 100644 index 15c10b82f1d3b9edc1c7a0708b66ab3831878661..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/status.html +++ /dev/null @@ -1,50 +0,0 @@ - -Apache Tribes - The Tomcat Cluster Communication Module (8.5.27) - Apache Tribes - Status

Apache Tribes - Status

Status

-

TODO

-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/transport.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/transport.html deleted file mode 100644 index bd64c57e10a4f0402ffb1142694ef824d16890d1..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/tribes/transport.html +++ /dev/null @@ -1,50 +0,0 @@ - -Apache Tribes - The Tomcat Cluster Communication Module (8.5.27) - Apache Tribes - Transport

Apache Tribes - Transport

Transport

-

TODO

-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/virtual-hosting-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/virtual-hosting-howto.html deleted file mode 100644 index 412801699e551c0155b285a156a7b2ab5ec85891..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/virtual-hosting-howto.html +++ /dev/null @@ -1,140 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Virtual Hosting and Tomcat

Virtual Hosting and Tomcat

Table of Contents

Assumptions

-

- For the sake of this how-to, assume you have a development host with two - host names, ren and stimpy. Let's also assume - one instance of Tomcat running, so $CATALINA_HOME refers to - wherever it's installed, perhaps /usr/local/tomcat. -

-

- Also, this how-to uses Unix-style path separators and commands; if you're - on Windows modify accordingly. -

-

server.xml

-

- At the simplest, edit the Engine portion - of your server.xml file to look like this: -

-
<Engine name="Catalina" defaultHost="ren">
-    <Host name="ren"    appBase="renapps"/>
-    <Host name="stimpy" appBase="stimpyapps"/>
-</Engine>
-

- Note that the directory structures under the appBase for each host should - not overlap each other. -

-

- Consult the configuration documentation for other attributes of the - Engine and - Host elements. -

-

Webapps Directory

-

- Create directories for each of the virtual hosts: -

-
mkdir $CATALINA_HOME/renapps
-mkdir $CATALINA_HOME/stimpyapps
-

Configuring Your Contexts

-

General

-

Contexts are normally located underneath the appBase directory. For - example, to deploy the foobar context as a war file in - the ren host, use - $CATALINA_HOME/renapps/foobar.war. Note that the - default or ROOT context for ren would be deployed as - $CATALINA_HOME/renapps/ROOT.war (WAR) or - $CATALINA_HOME/renapps/ROOT (directory). -

-

NOTE: The docBase for a context should never be - the same as the appBase for a host. -

-
-

context.xml - approach #1

-

- Within your Context, create a META-INF directory and then - place your Context definition in it in a file named - context.xml. i.e. - $CATALINA_HOME/renapps/ROOT/META-INF/context.xml - This makes deployment easier, particularly if you're distributing a WAR - file. -

-
-

context.xml - approach #2

-

- Create a structure under $CATALINA_HOME/conf/Catalina - corresponding to your virtual hosts, e.g.: -

-
mkdir $CATALINA_HOME/conf/Catalina/ren
-mkdir $CATALINA_HOME/conf/Catalina/stimpy
-

- Note that the ending directory name "Catalina" represents the - name attribute of the - Engine element as shown above. -

-

- Now, for your default webapps, add: -

-
$CATALINA_HOME/conf/Catalina/ren/ROOT.xml
-$CATALINA_HOME/conf/Catalina/stimpy/ROOT.xml
-

- If you want to use the Tomcat manager webapp for each host, you'll also - need to add it here: -

-
cd $CATALINA_HOME/conf/Catalina
-cp localhost/manager.xml ren/
-cp localhost/manager.xml stimpy/
-
-

Further Information

-

- Consult the configuration documentation for other attributes of the - Context element. -

-
-

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/web-socket-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/web-socket-howto.html deleted file mode 100644 index 4352592bd42a0cf9bf86a7c3913ce458dbde7e1e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/web-socket-howto.html +++ /dev/null @@ -1,133 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - WebSocket How-To

WebSocket How-To

Table of Contents

Overview

-

Tomcat provides support for WebSocket as defined by - RFC 6455.

-

Application development

-

Tomcat implements the Java WebSocket 1.1 API defined by JSR-356.

- -

There are several example applications that demonstrate how the WebSocket API - can be used. You will need to look at both the client side - HTML and the server side - code.

-

Tomcat WebSocket specific configuration

- -

Tomcat provides a number of Tomcat specific configuration options for - WebSocket. It is anticipated that these will be absorbed into the WebSocket - specification over time.

- -

The write timeout used when sending WebSocket messages in blocking mode - defaults to 20000 milliseconds (20 seconds). This may be changed by setting - the property org.apache.tomcat.websocket.BLOCKING_SEND_TIMEOUT - in the user properties collection attached to the WebSocket session. The - value assigned to this property should be a Long and represents - the timeout to use in milliseconds. For an infinite timeout, use - -1.

- -

If the application does not define a MessageHandler.Partial for - incoming binary messages, any incoming binary messages must be buffered so - the entire message can be delivered in a single call to the registered - MessageHandler.Whole for binary messages. The default buffer - size for binary messages is 8192 bytes. This may be changed for a web - application by setting the servlet context initialization parameter - org.apache.tomcat.websocket.binaryBufferSize to the desired - value in bytes.

- -

If the application does not define a MessageHandler.Partial for - incoming text messages, any incoming text messages must be buffered so the - entire message can be delivered in a single call to the registered - MessageHandler.Whole for text messages. The default buffer size - for text messages is 8192 bytes. This may be changed for a web application by - setting the servlet context initialization parameter - org.apache.tomcat.websocket.textBufferSize to the desired value - in bytes.

- -

The Java WebSocket specification 1.0 does not permit programmatic deployment - after the first endpoint has started a WebSocket handshake. By default, - Tomcat continues to permit additional programmatic deployment. This - behavior is controlled by the - org.apache.tomcat.websocket.noAddAfterHandshake servlet context - initialization parameter. The default may be changed by setting the - org.apache.tomcat.websocket.STRICT_SPEC_COMPLIANCE system - property to true but any explicit setting on the servlet context - will always take priority.

- -

When using the WebSocket client to connect to server endpoints, the timeout - for IO operations while establishing the connection is controlled by the - userProperties of the provided - javax.websocket.ClientEndpointConfig. The property is - org.apache.tomcat.websocket.IO_TIMEOUT_MS and is the - timeout as a String in milliseconds. The default is 5000 (5 - seconds).

- -

When using the WebSocket client to connect to secure server endpoints, the - client SSL configuration is controlled by the userProperties - of the provided javax.websocket.ClientEndpointConfig. The - following user properties are supported:

-
    -
  • org.apache.tomcat.websocket.SSL_CONTEXT
  • -
  • org.apache.tomcat.websocket.SSL_PROTOCOLS
  • -
  • org.apache.tomcat.websocket.SSL_TRUSTSTORE
  • -
  • org.apache.tomcat.websocket.SSL_TRUSTSTORE_PWD
  • -
-

The default truststore password is changeit.

-

If the org.apache.tomcat.websocket.SSL_CONTEXT property is - set then the org.apache.tomcat.websocket.SSL_TRUSTSTORE and - org.apache.tomcat.websocket.SSL_TRUSTSTORE_PWD properties - will be ignored.

- -

When using the WebSocket client to connect to server endpoints, the number of - HTTP redirects that the client will follow is controlled by the - userProperties of the provided - javax.websocket.ClientEndpointConfig. The property is - org.apache.tomcat.websocket.MAX_REDIRECTIONS. The default value - is 20. Redirection support can be disabled by configuring a value of zero.

- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/websocketapi/index.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/websocketapi/index.html deleted file mode 100644 index b40f5b9a845edcaf0d56ac6602d8b2fd6e092554..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/websocketapi/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - API docs - - - - -The WebSocket Javadoc is not installed by default. Download and install -the "fulldocs" package to get it. - -You can also access the javadoc online in the Tomcat - -documentation bundle. - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/windows-auth-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/windows-auth-howto.html deleted file mode 100644 index 864e83193ba924d7cb2eae82e71d38e674dbc085..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/windows-auth-howto.html +++ /dev/null @@ -1,340 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Windows Authentication How-To

Windows Authentication How-To

Table of Contents

Overview

-

Integrated Windows authentication is most frequently used within intranet -environments since it requires that the server performing the authentication and -the user being authenticated are part of the same domain. For the user to be -authenticated automatically, the client machine used by the user must also be -part of the domain.

-

There are several options for implementing integrated Windows authentication -with Apache Tomcat. They are:

-
    -
  • Built-in Tomcat support.
  • -
  • Use a third party library such as Waffle.
  • -
  • Use a reverse proxy that supports Windows authentication to perform the -authentication step such as IIS or httpd.
  • -
-

The configuration of each of these options is discussed in the following -sections.

-

Built-in Tomcat support

-

Kerberos (the basis for integrated Windows authentication) requires careful -configuration. If the steps in this guide are followed exactly, then a working -configuration will result. It is important that the steps below are followed -exactly. There is very little scope for flexibility in the configuration. From -the testing to date it is known that:

-
    -
  • The host name used to access the Tomcat server must match the host name in -the SPN exactly else authentication will fail. A checksum error may be reported -in the debug logs in this case.
  • -
  • The client must be of the view that the server is part of the local trusted -intranet.
  • -
  • The SPN must be HTTP/<hostname> and it must be exactly the same in all -the places it is used.
  • -
  • The port number must not be included in the SPN.
  • -
  • No more than one SPN may be mapped to a domain user.
  • -
  • Tomcat must run as the domain account with which the SPN has been associated -or as domain admin. It is NOT recommended to run Tomcat under a -domain admin user.
  • -
  • The domain name (DEV.LOCAL) is not case sensitive when used in -the ktpass command, nor when used in jaas.conf
  • -
  • The domain must be specified when using the ktpass command
  • -
-

There are four components to the configuration of the built-in Tomcat -support for Windows authentication. The domain controller, the server hosting -Tomcat, the web application wishing to use Windows authentication and the client -machine. The following sections describe the configuration required for each -component.

-

The names of the three machines used in the configuration examples below are -win-dc01.dev.local (the domain controller), win-tc01.dev.local (the Tomcat -instance) and win-pc01.dev.local (client). All are members of the DEV.LOCAL -domain.

-

Note: In order to use the passwords in the steps below, the domain password -policy had to be relaxed. This is not recommended for production environments. -

- -

Domain Controller

-

These steps assume that the server has already been configured to act as a - domain controller. Configuration of a Windows server as a domain controller is - outside the scope of this how-to. The steps to configure the domain controller - to enable Tomcat to support Windows authentication are as follows: -

-
    -
  • Create a domain user that will be mapped to the service name used by the - Tomcat server. In this how-to, this user is called tc01 and has a - password of tc01pass.
  • -
  • Map the service principal name (SPN) to the user account. SPNs take the - form - <service class>/<host>:<port>/<service name>. - The SPN used in this how-to is HTTP/win-tc01.dev.local. To - map the user to the SPN, run the following: -
    setspn -A HTTP/win-tc01.dev.local tc01
    -
  • -
  • Generate the keytab file that the Tomcat server will use to authenticate - itself to the domain controller. This file contains the Tomcat private key for - the service provider account and should be protected accordingly. To generate - the file, run the following command (all on a single line): -
    ktpass /out c:\tomcat.keytab /mapuser tc01@DEV.LOCAL
    -          /princ HTTP/win-tc01.dev.local@DEV.LOCAL
    -          /pass tc01pass /kvno 0
  • -
  • Create a domain user to be used on the client. In this how-to the domain - user is test with a password of testpass.
  • -
-

The above steps have been tested on a domain controller running Windows - Server 2008 R2 64-bit Standard using the Windows Server 2003 functional level - for both the forest and the domain. -

-
- -

Tomcat instance (Windows server)

-

These steps assume that Tomcat and a Java 6 JDK/JRE have already been - installed and configured and that Tomcat is running as the tc01@DEV.LOCAL - user. The steps to configure the Tomcat instance for Windows authentication - are as follows: -

-
    -
  • Copy the tomcat.keytab file created on the domain controller - to $CATALINA_BASE/conf/tomcat.keytab.
  • -
  • Create the kerberos configuration file - $CATALINA_BASE/conf/krb5.ini. The file used in this how-to - contained:
    [libdefaults]
    -default_realm = DEV.LOCAL
    -default_keytab_name = FILE:c:\apache-tomcat-8.5.x\conf\tomcat.keytab
    -default_tkt_enctypes = rc4-hmac,aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96
    -default_tgs_enctypes = rc4-hmac,aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96
    -forwardable=true
    -
    -[realms]
    -DEV.LOCAL = {
    -        kdc = win-dc01.dev.local:88
    -}
    -
    -[domain_realm]
    -dev.local= DEV.LOCAL
    -.dev.local= DEV.LOCAL
    - The location of this file can be changed by setting the - java.security.krb5.conf system property.
  • -
  • Create the JAAS login configuration file - $CATALINA_BASE/conf/jaas.conf. The file used in this how-to - contained:
    com.sun.security.jgss.krb5.initiate {
    -    com.sun.security.auth.module.Krb5LoginModule required
    -    doNotPrompt=true
    -    principal="HTTP/win-tc01.dev.local@DEV.LOCAL"
    -    useKeyTab=true
    -    keyTab="c:/apache-tomcat-8.5.x/conf/tomcat.keytab"
    -    storeKey=true;
    -};
    -
    -com.sun.security.jgss.krb5.accept {
    -    com.sun.security.auth.module.Krb5LoginModule required
    -    doNotPrompt=true
    -    principal="HTTP/win-tc01.dev.local@DEV.LOCAL"
    -    useKeyTab=true
    -    keyTab="c:/apache-tomcat-8.5.x/conf/tomcat.keytab"
    -    storeKey=true;
    -};
    - The location of this file can be changed by setting the - java.security.auth.login.config system property. The LoginModule - used is a JVM specific one so ensure that the LoginModule specified matches - the JVM being used. The name of the login configuration must match the - value used by the authentication - valve.
  • -
-

The SPNEGO authenticator will work with any - Realm but if used with the JNDI Realm, by default the JNDI Realm will use - the user's delegated credentials to connect to the Active Directory. -

-

The above steps have been tested on a Tomcat server running Windows Server - 2008 R2 64-bit Standard with an Oracle 1.6.0_24 64-bit JDK.

-
- -

Tomcat instance (Linux server)

-

This was tested with:

-
    -
  • Java 1.7.0, update 45, 64-bit
  • -
  • Ubuntu Server 12.04.3 LTS 64-bit
  • -
  • Tomcat 8.0.x (r1546570)
  • -
-

It should work with any Tomcat 8 release although it is recommended that - the latest stable release is used.

-

The configuration is the same as for Windows but with the following - changes:

-
    -
  • The Linux server does not have to be part of the Windows domain.
  • -
  • The path to the keytab file in krb5.ini and jaas.conf should be updated - to reflect the path to the keytab file on the Linux server using Linux - style file paths (e.g. /usr/local/tomcat/...).
  • -
-
- -

Web application

-

The web application needs to be configured to the use Tomcat specific - authentication method of SPNEGO (rather than BASIC etc.) in - web.xml. As with the other authenticators, behaviour can be customised by - explicitly configuring the - authentication valve and setting attributes on the Valve.

-
- -

Client

-

The client must be configured to use Kerberos authentication. For Internet - Explorer this means making sure that the Tomcat instance is in the "Local - intranet" security domain and that it is configured (Tools > Internet - Options > Advanced) with integrated Windows authentication enabled. Note that - this will not work if you use the same machine for the client - and the Tomcat instance as Internet Explorer will use the unsupported NTLM - protocol.

-
- - - -

Third party libraries

- -

Waffle

-

Full details of this solution can be found through the - Waffle web site. The - key features are:

-
    -
  • Drop-in solution
  • -
  • Simple configuration (no JAAS or Kerberos keytab configuration required) -
  • -
  • Uses a native library
  • -
-
- -

Spring Security - Kerberos Extension

-

Full details of this solution can be found through the - Kerberos extension web site. The key features are:

-
    -
  • Extension to Spring Security
  • -
  • Requires a Kerberos keytab file to be generated
  • -
  • Pure Java solution
  • -
-
- -

SPNEGO project at SourceForge

-

Full details of this solution can be found through the - project - site. The key features are:

-
    -
  • Uses Kerberos
  • -
  • Pure Java solution
  • -
-
- -

Jespa

-

Full details of this solution can be found through the - project web siteThe key - features are:

-
    -
  • Pure Java solution
  • -
  • Advanced Active Directory integration
  • -
-
-

Reverse proxies

- -

Microsoft IIS

-

There are three steps to configuring IIS to provide Windows authentication. - They are:

-
    -
  1. Configure IIS as a reverse proxy for Tomcat (see the - - IIS Web Server How-To).
  2. -
  3. Configure IIS to use Windows authentication
  4. -
  5. Configure Tomcat to use the authentication user information from IIS by - setting the tomcatAuthentication attribute on the - AJP connector to false. Alternatively, set the - tomcatAuthorization attribute to true to allow IIS to - authenticate, while Tomcat performs the authorization.
  6. -
-
- -

Apache httpd

-

Apache httpd does not support Windows authentication out of the box but - there are a number of third-party modules that can be used. These include:

-
    -
  1. mod_auth_sspi for use on Windows platforms.
  2. -
  3. mod_auth_ntlm_winbind for non-Windows platforms. Known to - work with httpd 2.0.x on 32-bit platforms. Some users have reported stability - issues with both httpd 2.2.x builds and 64-bit Linux builds.
  4. -
-

There are three steps to configuring httpd to provide Windows - authentication. They are:

-
    -
  1. Configure httpd as a reverse proxy for Tomcat (see the - - Apache httpd Web Server How-To).
  2. -
  3. Configure httpd to use Windows authentication
  4. -
  5. Configure Tomcat to use the authentication user information from httpd by - setting the tomcatAuthentication attribute on the - AJP connector to false.
  6. -
-
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/windows-service-howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/windows-service-howto.html deleted file mode 100644 index 5456b02dd767401ba2b7593629a3ca18fb363ff7..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/docs/windows-service-howto.html +++ /dev/null @@ -1,483 +0,0 @@ - -Apache Tomcat 8 (8.5.27) - Windows service HOW-TO

Windows service HOW-TO

Table of Contents

Tomcat service application

-

- Tomcat8 is a service application for running Tomcat - 8 as a Windows service. -

-

Tomcat monitor application

-

- Tomcat8w is a GUI application for monitoring and - configuring Tomcat services. -

-

The available command line options are:

- - - - - - - - - - -
//ES//Edit service configurationThis is the default operation. It is called if the no option is - provided but the executable is renamed to servicenameW.exe
//MS//Monitor servicePut the icon in the system tray
- -

Command line arguments

-

- Each command line directive is in the form of //XX//ServiceName -

-

The available command line options are:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
//TS//Run the service as console applicationThis is the default operation. It is called if the no option is - provided. The ServiceName is the name of the executable without - exe suffix, meaning Tomcat8
//RS//Run the serviceCalled only from ServiceManager
//SS//Stop the service
//US//Update service parameters
//IS//Install service
//DS//Delete serviceStops the service if running
- -

Command line parameters

-

- Each command line parameter is prefixed with --. If the command line - parameter is prefixed with ++ then it's value will be appended to the - existing option. - If the environment variable with the same name as command line parameter but - prefixed with PR_ exists it will take precedence. - For example:

-
set PR_CLASSPATH=xx.jar
- -

is equivalent to providing

-
--Classpath=xx.jar
-

as command line parameter.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterNameDefaultDescription
--DescriptionService name description (maximum 1024 characters)
--DisplayNameServiceNameService display name
--Installprocrun.exe //RS//ServiceNameInstall image
--StartupmanualService startup mode can be either auto or manual
--DependsOnList of services that this service depend on. Dependent services - are separated using either # or ; characters
--EnvironmentList of environment variables that will be provided to the service - in the form key=value. They are separated using either - # or ; characters. If you need to use either the # - or ; character within a value then the entire value must be - enclosed inside single quotes.
--UserUser account used for running executable. It is used only for - StartMode java or exe and enables running applications - as service under account without LogonAsService privilege.
--PasswordPassword for user account set by --User parameter
--JavaHomeJAVA_HOMESet a different JAVA_HOME than defined by JAVA_HOME environment - variable
--JvmautoUse either auto (i.e. find the JVM from the Windows registry) - or specify the full path to the jvm.dll. - You can use the environment variable expansion here.
--JvmOptions-XrsList of options in the form of -D or -X that will be - passed to the JVM. The options are separated using either - # or ; characters. If you need to embed either # or - ; characters, put them inside single quotes. (Not used in - exe mode.)
--JvmOptions9List of options in the form of -D or -X that will be - passed to the JVM when running on Java 9 or later. The options are - separated using either # or ; characters. If you need to - embed either # or ; characters, put them inside single - quotes. (Not used in exe mode.)
--ClasspathSet the Java classpath. (Not used in exe mode.)
--JvmMsInitial memory pool size in MB. (Not used in exe mode.)
--JvmMxMaximum memory pool size in MB. (Not used in exe mode.)
--JvmSsThread stack size in KB. (Not used in exe mode.)
--StartModeOne of jvm, Java or exe. The modes are: -
    -
  • jvm - start Java in-process. Depends on jvm.dll, see --Jvm.
  • -
  • Java - same as exe, but automatically uses the default Java - executable, i.e. %JAVA_HOME%\bin\java.exe. Make sure JAVA_HOME is set - correctly, or use --JavaHome to provide the correct location. - If neither is set, procrun will try to find the default JDK (not JRE) - from the Windows registry.
  • -
  • exe - run the image as a separate process
  • -
-
--StartImageExecutable that will be run. Only applies to exe mode.
--StartPathWorking path for the start image executable.
--StartClassMainClass that contains the startup method. Applies to the jvm and - Java modes. (Not used in exe mode.)
--StartMethodmainMethod name if differs then main
--StartParamsList of parameters that will be passed to either StartImage or - StartClass. Parameters are separated using either # or - ; character.
--StopModeOne of jvm, Java or exe. See --StartMode - for further details.
--StopImageExecutable that will be run on Stop service signal. Only applies to - exe mode.
--StopPathWorking path for the stop image executable. Does not apply to jvm - mode.
--StopClassMainClass that will be used on Stop service signal. Applies to the - jvm and Java modes.
--StopMethodmainMethod name if differs then main
--StopParamsList of parameters that will be passed to either StopImage or - StopClass. Parameters are separated using either # or - ; character.
--StopTimeoutNo TimeoutDefines the timeout in seconds that procrun waits for service to - exit gracefully.
--LogPath%SystemRoot%\System32\LogFiles\ApacheDefines the path for logging. Creates the directory if necessary.
--LogPrefixcommons-daemonDefines the service log filename prefix. The log file is created in the - LogPath directory with .YEAR-MONTH-DAY.log suffix
--LogLevelInfoDefines the logging level and can be either Error, - Info, Warn or Debug. (Case insensitive).
--StdOutputRedirected stdout filename. - If named auto then file is created inside LogPath with the - name service-stdout.YEAR-MONTH-DAY.log.
--StdErrorRedirected stderr filename. - If named auto then file is created inside LogPath with the - name service-stderr.YEAR-MONTH-DAY.log.
--PidFileDefines the file name for storing the running process id. Actual file is - created in the LogPath directory
- -

Installing services

-

-The safest way to manually install the service is to use the provided -service.bat script. Administrator privileges are required to run this -script. If necessary, you can use the /user switch to specify -a user to use for the installation of the service. -

-

-NOTE: On Windows Vista or any later operating system with User -Account Control (UAC) enabled you will be asked for additional privileges -when 'Tomcat8.exe' is launched by the script.
-If you want to pass additional options to service installer as -PR_* environment variables, you have to either configure them -globally in OS, or launch the program that sets them with elevated privileges -(e.g. right-click on cmd.exe and select "Run as administrator"; on Windows 8 -(or later) or Windows Server 2012 (or later), you can open an elevated command -prompt for the current directory from the Explorer -by clicking on the "File" menu bar). See issue 56143 for details. -

- -
Install the service named 'Tomcat8'
-C:\> service.bat install
- -

There is a 2nd optional parameter that lets you specify the name of the -service, as displayed in Windows services.

- -
Install the service named 'MyService'
-C:\> service.bat install MyService
- -

-If using tomcat8.exe, you need to use the //IS// parameter.

- -
Install the service named 'Tomcat8'
-C:\> tomcat8 //IS//Tomcat8 --DisplayName="Apache Tomcat 8" ^
-     --Install="C:\Program Files\Tomcat\bin\tomcat8.exe" --Jvm=auto ^
-     --StartMode=jvm --StopMode=jvm ^
-     --StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start ^
-     --StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop
- -

Updating services

-

-To update the service parameters, you need to use the //US// parameter. -

- -
Update the service named 'Tomcat8'
-C:\> tomcat8 //US//Tomcat8 --Description="Apache Tomcat Server - http://tomcat.apache.org/ " ^
-     --Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar
- -

If you gave the service an optional name, you need to specify it like this: -

- -
Update the service named 'MyService'
-C:\> tomcat8 //US//MyService --Description="Apache Tomcat Server - http://tomcat.apache.org/ " ^
-     --Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar
- -

Removing services

-

-To remove the service, you need to use the //DS// parameter.
-If the service is running it will be stopped and then deleted.

- -
Remove the service named 'Tomcat8'
-C:\> tomcat8 //DS//Tomcat8
- -

If you gave the service an optional name, you need to specify it like this: -

- -
Remove the service named 'MyService'
-C:\> tomcat8 //DS//MyService
- -

Debugging services

-

-To run the service in console mode, you need to use the //TS// parameter. -The service shutdown can be initiated by pressing CTRL+C or -CTRL+BREAK. -If you rename the tomcat8.exe to testservice.exe then you can just execute the -testservice.exe and this command mode will be executed by default.

- -
Run the service named 'Tomcat8' in console mode
-C:\> tomcat8 //TS//Tomcat8 [additional arguments]
-Or simply execute:
-C:\> tomcat8
- -

Multiple Instances

-

-Tomcat supports installation of multiple instances. You can have a single -installation of Tomcat with multiple instances running on different IP/port -combinations, or multiple Tomcat versions, each running one or more instances on -different IP/ports.

-

-Each instance folder will need the following structure: -

-
    -
  • conf
  • -
  • logs
  • -
  • temp
  • -
  • webapps
  • -
  • work
  • -
-

-At a minimum, conf should contain a copy of the following files from -CATALINA_HOME\conf\. Any files not copied and edited, will be picked up by -default from CATALINA_HOME\conf, i.e. CATALINA_BASE\conf files override defaults -from CATALINA_HOME\conf.

-
    -
  • server.xml
  • -
  • web.xml
  • -
-

-You must edit CATALINA_BASE\conf\server.xml to specify a unique IP/port for the -instance to listen on. Find the line that contains -<Connector port="8080" ... and add an address attribute and/or -update the port number so as to specify a unique IP/port combination.

-

-To install an instance, first set the CATALINA_HOME environment variable to the -name of the Tomcat installation directory. Then create a second environment -variable CATALINA_BASE and point this to the instance folder. Then run "service -install" command specifying a service name.

- -
set CATALINA_HOME=c:\tomcat_8
-set CATALINA_BASE=c:\tomcat_8\instances\instance1
-service install instance1
- -

-To modify the service settings, you can run tomcat8w //ES//instance1. -

-

-For additional instances, create additional instance folder, update the -CATALINA_BASE environment variable, and run the service install again.

- -
set CATALINA_BASE=c:\tomcat_8\instances\instance2
-service install instance2
- -

- Comments -

Notice: This comments section collects your suggestions - on improving documentation for Apache Tomcat.

- If you have trouble and need help, read - Find Help page - and ask your question on the tomcat-users - mailing list. - Do not ask such questions here. This is not a Q&A section.

- The Apache Comments System is explained here. - Comments may be removed by our moderators if they are either - implemented or considered invalid/off-topic. -

\ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/CookieExample.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/CookieExample.java deleted file mode 100644 index c62463becd1574da613243a21868c92db4625dd4..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/CookieExample.java +++ /dev/null @@ -1,142 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import java.io.IOException; -import java.io.PrintWriter; -import java.util.ResourceBundle; - -import javax.servlet.ServletException; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import util.CookieFilter; -import util.HTMLFilter; - -/** - * Example servlet showing request headers - * - * @author James Duncan Davidson - */ - -public class CookieExample extends HttpServlet { - - private static final long serialVersionUID = 1L; - - private static final ResourceBundle RB = ResourceBundle.getBundle("LocalStrings"); - - @Override - public void doGet(HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException - { - - String cookieName = request.getParameter("cookiename"); - String cookieValue = request.getParameter("cookievalue"); - Cookie aCookie = null; - if (cookieName != null && cookieValue != null) { - aCookie = new Cookie(cookieName, cookieValue); - aCookie.setPath(request.getContextPath() + "/"); - response.addCookie(aCookie); - } - - response.setContentType("text/html"); - response.setCharacterEncoding("UTF-8"); - - PrintWriter out = response.getWriter(); - out.println(""); - out.println(""); - out.println(""); - - String title = RB.getString("cookies.title"); - out.println("" + title + ""); - out.println(""); - out.println(""); - - // relative links - - // XXX - // making these absolute till we work out the - // addition of a PathInfo issue - - out.println(""); - out.println("\"view"); - out.println(""); - out.println("\"return\""); - - out.println("

" + title + "

"); - - Cookie[] cookies = request.getCookies(); - if ((cookies != null) && (cookies.length > 0)) { - HttpSession session = request.getSession(false); - String sessionId = null; - if (session != null) { - sessionId = session.getId(); - } - out.println(RB.getString("cookies.cookies") + "
"); - for (int i = 0; i < cookies.length; i++) { - Cookie cookie = cookies[i]; - String cName = cookie.getName(); - String cValue = cookie.getValue(); - out.print("Cookie Name: " + HTMLFilter.filter(cName) + "
"); - out.println(" Cookie Value: " - + HTMLFilter.filter(CookieFilter.filter(cName, cValue, sessionId)) - + "

"); - } - } else { - out.println(RB.getString("cookies.no-cookies")); - } - - if (aCookie != null) { - out.println("

"); - out.println(RB.getString("cookies.set") + "
"); - out.print(RB.getString("cookies.name") + " " - + HTMLFilter.filter(cookieName) + "
"); - out.print(RB.getString("cookies.value") + " " - + HTMLFilter.filter(cookieValue)); - } - - out.println("

"); - out.println(RB.getString("cookies.make-cookie") + "
"); - out.print("

"); - out.print(RB.getString("cookies.name") + " "); - out.println("
"); - out.print(RB.getString("cookies.value") + " "); - out.println("
"); - out.println("
"); - - - out.println(""); - out.println(""); - } - - @Override - public void doPost(HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException - { - doGet(request, response); - } - -} - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/HelloWorldExample.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/HelloWorldExample.java deleted file mode 100644 index 1a5ea5a68dc930f2eb4108792029cd9ae9b904d6..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/HelloWorldExample.java +++ /dev/null @@ -1,79 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -import java.io.IOException; -import java.io.PrintWriter; -import java.util.ResourceBundle; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * The simplest possible servlet. - * - * @author James Duncan Davidson - */ - -public class HelloWorldExample extends HttpServlet { - - private static final long serialVersionUID = 1L; - - @Override - public void doGet(HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException - { - ResourceBundle rb = - ResourceBundle.getBundle("LocalStrings",request.getLocale()); - response.setContentType("text/html"); - response.setCharacterEncoding("UTF-8"); - PrintWriter out = response.getWriter(); - - out.println(""); - out.println(""); - out.println(""); - - String title = rb.getString("helloworld.title"); - - out.println("" + title + ""); - out.println(""); - out.println(""); - - // note that all links are created to be relative. this - // ensures that we can move the web application that this - // servlet belongs to to a different place in the url - // tree and not have any harmful side effects. - - // XXX - // making these absolute till we work out the - // addition of a PathInfo issue - - out.println(""); - out.println("\"view"); - out.println(""); - out.println("\"return\""); - out.println("

" + title + "

"); - out.println(""); - out.println(""); - } -} - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/LocalStrings.properties b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/LocalStrings.properties deleted file mode 100644 index a3f97e54742e527395666b430e4d3f68eb0b74fe..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/LocalStrings.properties +++ /dev/null @@ -1,51 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Default localized resources for example servlets -# This locale is en_US - -helloworld.title=Hello World! - -requestinfo.title=Request Information Example -requestinfo.label.method=Method: -requestinfo.label.requesturi=Request URI: -requestinfo.label.protocol=Protocol: -requestinfo.label.pathinfo=Path Info: -requestinfo.label.remoteaddr=Remote Address: - -requestheader.title=Request Header Example - -requestparams.title=Request Parameters Example -requestparams.params-in-req=Parameters in this request: -requestparams.no-params=No Parameters, Please enter some -requestparams.firstname=First Name: -requestparams.lastname=Last Name: - -cookies.title=Cookies Example -cookies.cookies=Your browser is sending the following cookies: -cookies.no-cookies=Your browser isn't sending any cookies -cookies.make-cookie=Create a cookie to send to your browser -cookies.name=Name: -cookies.value=Value: -cookies.set=You just sent the following cookie to your browser: - -sessions.title=Sessions Example -sessions.id=Session ID: -sessions.created=Created: -sessions.lastaccessed=Last Accessed: -sessions.data=The following data is in your session: -sessions.adddata=Add data to your session -sessions.dataname=Name of Session Attribute: -sessions.datavalue=Value of Session Attribute: diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/LocalStrings_en.properties b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/LocalStrings_en.properties deleted file mode 100644 index a3f97e54742e527395666b430e4d3f68eb0b74fe..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/LocalStrings_en.properties +++ /dev/null @@ -1,51 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Default localized resources for example servlets -# This locale is en_US - -helloworld.title=Hello World! - -requestinfo.title=Request Information Example -requestinfo.label.method=Method: -requestinfo.label.requesturi=Request URI: -requestinfo.label.protocol=Protocol: -requestinfo.label.pathinfo=Path Info: -requestinfo.label.remoteaddr=Remote Address: - -requestheader.title=Request Header Example - -requestparams.title=Request Parameters Example -requestparams.params-in-req=Parameters in this request: -requestparams.no-params=No Parameters, Please enter some -requestparams.firstname=First Name: -requestparams.lastname=Last Name: - -cookies.title=Cookies Example -cookies.cookies=Your browser is sending the following cookies: -cookies.no-cookies=Your browser isn't sending any cookies -cookies.make-cookie=Create a cookie to send to your browser -cookies.name=Name: -cookies.value=Value: -cookies.set=You just sent the following cookie to your browser: - -sessions.title=Sessions Example -sessions.id=Session ID: -sessions.created=Created: -sessions.lastaccessed=Last Accessed: -sessions.data=The following data is in your session: -sessions.adddata=Add data to your session -sessions.dataname=Name of Session Attribute: -sessions.datavalue=Value of Session Attribute: diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/LocalStrings_es.properties b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/LocalStrings_es.properties deleted file mode 100644 index 025a3ff757110ee25ef57a4f7cfa362cff378e5b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/LocalStrings_es.properties +++ /dev/null @@ -1,43 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -helloworld.title = Hola Mundo! -requestinfo.title = Ejemplo de Informacion de Requerimiento: -requestinfo.label.method = M\u00E9todo: -requestinfo.label.requesturi = URI de Requerimiento: -requestinfo.label.protocol = Protocolo: -requestinfo.label.pathinfo = Info de Ruta: -requestinfo.label.remoteaddr = Direccion Remota: -requestheader.title = Ejemplo de Cabecera de Requerimiento: -requestparams.title = Ejemplo de par\u00E1metros de Requerimiento: -requestparams.params-in-req = Par\u00E1metros en este Request: -requestparams.no-params = No hay p\u00E1rametro. Por favor, usa alguno -requestparams.firstname = Nombre: -requestparams.lastname = Apellidos: -cookies.title = Ejemplo de Cookies -cookies.cookies = Tu navegador est\u00E1 enviando los siguientes cookies: -cookies.no-cookies = Tu navegador no est\u00E1 enviando cookies -cookies.make-cookie = Crea un cookie para enviarlo a tu navegador -cookies.name = Nombre: -cookies.value = Valor: -cookies.set = Acabas de enviar a tu navegador estos cookies: -sessions.title = Ejemplo de Sesiones -sessions.id = ID de Sesi\u00F3n: -sessions.created = Creado: -sessions.lastaccessed = Ultimo Acceso: -sessions.data = Lo siguientes datos est\u00E1n en tu sesi\u00F3n: -sessions.adddata = A\u00F1ade datos a tu sesi\u00F3n: -sessions.dataname = Nombre del atributo de sesi\u00F3n: -sessions.datavalue = Valor del atributo de sesi\u00F3n: diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/LocalStrings_fr.properties b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/LocalStrings_fr.properties deleted file mode 100644 index b6b9a3f5950c6175114c0687f3746b1b8428b8a6..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/LocalStrings_fr.properties +++ /dev/null @@ -1,51 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Default localized resources for example servlets -# This locale is fr_FR - -helloworld.title=Salut le Monde! - -requestinfo.title=Exemple d''information sur la requ\u00eate -requestinfo.label.method=M\u00e9thode: -requestinfo.label.requesturi=URI de requ\u00eate: -requestinfo.label.protocol=Protocole: -requestinfo.label.pathinfo=Info de chemin: -requestinfo.label.remoteaddr=Adresse distante: - -requestheader.title=Exemple d''information sur les ent\u00eate de requ\u00eate - -requestparams.title=Exemple de requ\u00eate avec param\u00eatres -requestparams.params-in-req=Param\u00eatres dans la requ\u00eate: -requestparams.no-params=Pas de param\u00eatre, merci dans saisir quelqu'uns -requestparams.firstname=Pr\u00e9nom: -requestparams.lastname=Nom: - -cookies.title=Exemple d''utilisation de Cookies -cookies.cookies=Votre navigateur retourne les cookies suivant: -cookies.no-cookies=Votre navigateur ne retourne aucun cookie -cookies.make-cookie=Cr\u00e9ation d''un cookie \u00e0 retourner \u00e0 votre navigateur -cookies.name=Nom: -cookies.value=Valeur: -cookies.set=Vous venez d''envoyer le cookie suivant \u00e0 votre navigateur: - -sessions.title=Exemple de Sessions -sessions.id=ID de Session: -sessions.created=Cr\u00e9e le: -sessions.lastaccessed=Dernier acc\u00e8s: -sessions.data=Les donn\u00e9es existantes dans votre session: -sessions.adddata=Ajouter des donn\u00e9es \u00e0 votre session -sessions.dataname=Nom de l''Attribut de Session: -sessions.datavalue=Valeur de l''Attribut de Session: diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/LocalStrings_pt.properties b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/LocalStrings_pt.properties deleted file mode 100644 index 919643e7eb4a5e98527c15376159ff981f2852fd..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/LocalStrings_pt.properties +++ /dev/null @@ -1,51 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Default localized resources for example servlets -# This locale is pt_PT - -helloworld.title=Ola Mundo! - -requestinfo.title=Exemplo da Informacao do Pedido -requestinfo.label.method=Metodo: -requestinfo.label.requesturi=URI do Pedido: -requestinfo.label.protocol=Protocolo: -requestinfo.label.pathinfo=Informacao do Caminho: -requestinfo.label.remoteaddr=Endereco Remoto: - -requestheader.title=Exemplo da Cebeceira do Pedido - -requestparams.title=Examplo de Parametros do Pedido -requestparams.params-in-req=Parametros neste pedido: -requestparams.no-params=Sem Parametros, Por favor entre alguns -requestparams.firstname=Primeiro Nome: -requestparams.lastname=Apelido: - -cookies.title=CExamplo de Cookies -cookies.cookies=O se browser esta a enviar os seguintes cookies: -cookies.no-cookies=O seu browser nao esta a enviar nenhuns cookies -cookies.make-cookie=Crie um cookie para enviar para o seu browser -cookies.name=Nome: -cookies.value=Valor: -cookies.set=Acabou de enviar o seguinte cookie para o seu browser: - -sessions.title=Examplo de sessoes -sessions.id=Identificador da Sessao: -sessions.created=Criada: -sessions.lastaccessed=Ultima vez acedida: -sessions.data=Os seguintes dados fazem parte da sua sessao: -sessions.adddata=Adicione data a sua sessao -sessions.dataname=Nome do atributo da sessao: -sessions.datavalue=Valor do atributo da Sessao: diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/RequestHeaderExample.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/RequestHeaderExample.java deleted file mode 100644 index 79e7bac116b77e379afce92b1075cf333f403300..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/RequestHeaderExample.java +++ /dev/null @@ -1,109 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Enumeration; -import java.util.Locale; -import java.util.ResourceBundle; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import util.CookieFilter; -import util.HTMLFilter; - -/** - * Example servlet showing request headers - * - * @author James Duncan Davidson - */ - -public class RequestHeaderExample extends HttpServlet { - - private static final long serialVersionUID = 1L; - - private static final ResourceBundle RB = ResourceBundle.getBundle("LocalStrings"); - - @Override - public void doGet(HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException - { - response.setContentType("text/html"); - response.setCharacterEncoding("UTF-8"); - - PrintWriter out = response.getWriter(); - out.println(""); - out.println(""); - out.println(""); - - String title = RB.getString("requestheader.title"); - out.println("" + title + ""); - out.println(""); - out.println(""); - - // all links relative - - // XXX - // making these absolute till we work out the - // addition of a PathInfo issue - - out.println(""); - out.println("\"view"); - out.println(""); - out.println("\"return\""); - - out.println("

" + title + "

"); - out.println(""); - Enumeration e = request.getHeaderNames(); - while (e.hasMoreElements()) { - String headerName = e.nextElement(); - String headerValue = request.getHeader(headerName); - out.println(""); - } - out.println("
"); - out.println(HTMLFilter.filter(headerName)); - out.println(""); - if (headerName.toLowerCase(Locale.ENGLISH).contains("cookie")) { - HttpSession session = request.getSession(false); - String sessionId = null; - if (session != null) { - sessionId = session.getId(); - } - out.println(HTMLFilter.filter(CookieFilter.filter(headerValue, sessionId))); - } else { - out.println(HTMLFilter.filter(headerValue)); - } - out.println("
"); - } - - @Override - public void doPost(HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException - { - doGet(request, response); - } - -} - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/RequestInfoExample.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/RequestInfoExample.java deleted file mode 100644 index 952e5012fbf1a463b838dc85a98aa4a15943345d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/RequestInfoExample.java +++ /dev/null @@ -1,118 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import java.io.IOException; -import java.io.PrintWriter; -import java.util.ResourceBundle; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import util.HTMLFilter; - -/** - * Example servlet showing request information. - * - * @author James Duncan Davidson - */ - -public class RequestInfoExample extends HttpServlet { - - private static final long serialVersionUID = 1L; - - private static final ResourceBundle RB = ResourceBundle.getBundle("LocalStrings"); - - @Override - public void doGet(HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException - { - response.setContentType("text/html"); - response.setCharacterEncoding("UTF-8"); - - PrintWriter out = response.getWriter(); - out.println(""); - out.println(""); - out.println(""); - - String title = RB.getString("requestinfo.title"); - out.println("" + title + ""); - out.println(""); - out.println(""); - - // img stuff not req'd for source code html showing - // all links relative! - - // XXX - // making these absolute till we work out the - // addition of a PathInfo issue - - out.println(""); - out.println("\"view"); - out.println(""); - out.println("\"return\""); - - out.println("

" + title + "

"); - out.println(""); - - String cipherSuite= - (String)request.getAttribute("javax.servlet.request.cipher_suite"); - if(cipherSuite!=null){ - out.println(""); - } - - out.println("
"); - out.println(RB.getString("requestinfo.label.method")); - out.println(""); - out.println(HTMLFilter.filter(request.getMethod())); - out.println("
"); - out.println(RB.getString("requestinfo.label.requesturi")); - out.println(""); - out.println(HTMLFilter.filter(request.getRequestURI())); - out.println("
"); - out.println(RB.getString("requestinfo.label.protocol")); - out.println(""); - out.println(HTMLFilter.filter(request.getProtocol())); - out.println("
"); - out.println(RB.getString("requestinfo.label.pathinfo")); - out.println(""); - out.println(HTMLFilter.filter(request.getPathInfo())); - out.println("
"); - out.println(RB.getString("requestinfo.label.remoteaddr")); - out.println(""); - out.println(HTMLFilter.filter(request.getRemoteAddr())); - out.println("
"); - out.println("SSLCipherSuite:"); - out.println(""); - out.println(HTMLFilter.filter(cipherSuite)); - out.println("
"); - } - - @Override - public void doPost(HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException - { - doGet(request, response); - } - -} - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/RequestParamExample.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/RequestParamExample.java deleted file mode 100644 index be07415add464680d9458576ab3ab820330f29d7..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/RequestParamExample.java +++ /dev/null @@ -1,111 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import java.io.IOException; -import java.io.PrintWriter; -import java.util.ResourceBundle; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import util.HTMLFilter; - -/** - * Example servlet showing request headers - * - * @author James Duncan Davidson - */ - -public class RequestParamExample extends HttpServlet { - - private static final long serialVersionUID = 1L; - - private static final ResourceBundle RB = ResourceBundle.getBundle("LocalStrings"); - - @Override - public void doGet(HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException - { - response.setContentType("text/html"); - response.setCharacterEncoding("UTF-8"); - - PrintWriter out = response.getWriter(); - out.println(""); - out.println(""); - out.println(""); - - String title = RB.getString("requestparams.title"); - out.println("" + title + ""); - out.println(""); - out.println(""); - - // img stuff not req'd for source code html showing - - // all links relative - - // XXX - // making these absolute till we work out the - // addition of a PathInfo issue - - out.println(""); - out.println("\"view"); - out.println(""); - out.println("\"return\""); - - out.println("

" + title + "

"); - String firstName = request.getParameter("firstname"); - String lastName = request.getParameter("lastname"); - out.println(RB.getString("requestparams.params-in-req") + "
"); - if (firstName != null || lastName != null) { - out.println(RB.getString("requestparams.firstname")); - out.println(" = " + HTMLFilter.filter(firstName) + "
"); - out.println(RB.getString("requestparams.lastname")); - out.println(" = " + HTMLFilter.filter(lastName)); - } else { - out.println(RB.getString("requestparams.no-params")); - } - out.println("

"); - out.print("

"); - out.println(RB.getString("requestparams.firstname")); - out.println(""); - out.println("
"); - out.println(RB.getString("requestparams.lastname")); - out.println(""); - out.println("
"); - out.println(""); - out.println("
"); - - out.println(""); - out.println(""); - } - - @Override - public void doPost(HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException - { - doGet(request, response); - } - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/ServletToJsp.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/ServletToJsp.java deleted file mode 100644 index 53faba2e5f470776cb60e43e26f7ab2838b31656..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/ServletToJsp.java +++ /dev/null @@ -1,39 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -public class ServletToJsp extends HttpServlet { - - private static final long serialVersionUID = 1L; - - @Override - public void doGet (HttpServletRequest request, - HttpServletResponse response) { - - try { - // Set the attribute and Forward to hello.jsp - request.setAttribute ("servletName", "servletToJsp"); - getServletConfig().getServletContext().getRequestDispatcher( - "/jsp/jsptoserv/hello.jsp").forward(request, response); - } catch (Exception ex) { - ex.printStackTrace (); - } - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/SessionExample.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/SessionExample.java deleted file mode 100644 index 471b66bd68fc1f647c9cce760ff7301088d16afd..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/SessionExample.java +++ /dev/null @@ -1,147 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Date; -import java.util.Enumeration; -import java.util.ResourceBundle; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import util.HTMLFilter; - -/** - * Example servlet showing request headers - * - * @author James Duncan Davidson - */ - -public class SessionExample extends HttpServlet { - - private static final long serialVersionUID = 1L; - - private static final ResourceBundle RB = ResourceBundle.getBundle("LocalStrings"); - - @Override - public void doGet(HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException - { - response.setContentType("text/html"); - response.setCharacterEncoding("UTF-8"); - - PrintWriter out = response.getWriter(); - out.println(""); - out.println(""); - out.println(""); - - - String title = RB.getString("sessions.title"); - out.println("" + title + ""); - out.println(""); - out.println(""); - - // img stuff not req'd for source code html showing - // relative links everywhere! - - // XXX - // making these absolute till we work out the - // addition of a PathInfo issue - - out.println(""); - out.println("\"view"); - out.println(""); - out.println("\"return\""); - - out.println("

" + title + "

"); - - HttpSession session = request.getSession(true); - out.println(RB.getString("sessions.id") + " " + session.getId()); - out.println("
"); - out.println(RB.getString("sessions.created") + " "); - out.println(new Date(session.getCreationTime()) + "
"); - out.println(RB.getString("sessions.lastaccessed") + " "); - out.println(new Date(session.getLastAccessedTime())); - - String dataName = request.getParameter("dataname"); - String dataValue = request.getParameter("datavalue"); - if (dataName != null && dataValue != null) { - session.setAttribute(dataName, dataValue); - } - - out.println("

"); - out.println(RB.getString("sessions.data") + "
"); - Enumeration names = session.getAttributeNames(); - while (names.hasMoreElements()) { - String name = names.nextElement(); - String value = session.getAttribute(name).toString(); - out.println(HTMLFilter.filter(name) + " = " - + HTMLFilter.filter(value) + "
"); - } - - out.println("

"); - out.print("

"); - out.println(RB.getString("sessions.dataname")); - out.println(""); - out.println("
"); - out.println(RB.getString("sessions.datavalue")); - out.println(""); - out.println("
"); - out.println(""); - out.println("
"); - - out.println("

GET based form:
"); - out.print("

"); - out.println(RB.getString("sessions.dataname")); - out.println(""); - out.println("
"); - out.println(RB.getString("sessions.datavalue")); - out.println(""); - out.println("
"); - out.println(""); - out.println("
"); - - out.print("

URL encoded "); - - out.println(""); - out.println(""); - } - - @Override - public void doPost(HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException - { - doGet(request, response); - } - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/Async0.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/Async0.java deleted file mode 100644 index 5bc0ee49acbe8fb92d2e105d512e516580f9ee3e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/Async0.java +++ /dev/null @@ -1,71 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package async; - -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Date; - -import javax.servlet.AsyncContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.juli.logging.Log; -import org.apache.juli.logging.LogFactory; - -public class Async0 extends HttpServlet { - - private static final long serialVersionUID = 1L; - - private static final Log log = LogFactory.getLog(Async0.class); - - @Override - protected void service(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException { - if (Boolean.TRUE.equals(req.getAttribute("dispatch"))) { - log.info("Received dispatch, completing on the worker thread."); - log.info("After complete called started:"+req.isAsyncStarted()); - Date date = new Date(System.currentTimeMillis()); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z"); - resp.getWriter().write("Async dispatch worked: " + sdf.format(date) + "\n"); - } else { - resp.setContentType("text/plain"); - final AsyncContext actx = req.startAsync(); - actx.setTimeout(Long.MAX_VALUE); - Runnable run = new Runnable() { - @Override - public void run() { - try { - req.setAttribute("dispatch", Boolean.TRUE); - Thread.currentThread().setName("Async0-Thread"); - log.info("Putting AsyncThread to sleep"); - Thread.sleep(2*1000); - log.info("Dispatching"); - actx.dispatch(); - }catch (InterruptedException x) { - log.error("Async1",x); - }catch (IllegalStateException x) { - log.error("Async1",x); - } - } - }; - Thread t = new Thread(run); - t.start(); - } - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/Async1.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/Async1.java deleted file mode 100644 index dc0dc5912e881bd0ddb15de5d1b0df6a1d6cd0b9..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/Async1.java +++ /dev/null @@ -1,62 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package async; - -import java.io.IOException; - -import javax.servlet.AsyncContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.juli.logging.Log; -import org.apache.juli.logging.LogFactory; - -public class Async1 extends HttpServlet { - - private static final long serialVersionUID = 1L; - - private static final Log log = LogFactory.getLog(Async1.class); - - @Override - protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - final AsyncContext actx = req.startAsync(); - actx.setTimeout(30*1000); - Runnable run = new Runnable() { - @Override - public void run() { - try { - String path = "/jsp/async/async1.jsp"; - Thread.currentThread().setName("Async1-Thread"); - log.info("Putting AsyncThread to sleep"); - Thread.sleep(2*1000); - log.info("Dispatching to "+path); - actx.dispatch(path); - }catch (InterruptedException x) { - log.error("Async1",x); - }catch (IllegalStateException x) { - log.error("Async1",x); - } - } - }; - Thread t = new Thread(run); - t.start(); - } - - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/Async2.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/Async2.java deleted file mode 100644 index 0682d62116ab49713f18e01c6f570b43b3eccea2..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/Async2.java +++ /dev/null @@ -1,70 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package async; - -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Date; - -import javax.servlet.AsyncContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.juli.logging.Log; -import org.apache.juli.logging.LogFactory; - -public class Async2 extends HttpServlet { - - private static final long serialVersionUID = 1L; - - private static final Log log = LogFactory.getLog(Async2.class); - - @Override - protected void service(HttpServletRequest req, HttpServletResponse resp) - throws ServletException, IOException { - final AsyncContext actx = req.startAsync(); - actx.setTimeout(30*1000); - Runnable run = new Runnable() { - @Override - public void run() { - try { - Thread.currentThread().setName("Async2-Thread"); - log.info("Putting AsyncThread to sleep"); - Thread.sleep(2*1000); - log.info("Writing data."); - Date date = new Date(System.currentTimeMillis()); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z"); - actx.getResponse().getWriter().write( - "Output from background thread. Time: " + sdf.format(date) + "\n"); - actx.complete(); - }catch (InterruptedException x) { - log.error("Async2",x); - }catch (IllegalStateException x) { - log.error("Async2",x); - }catch (IOException x) { - log.error("Async2",x); - } - } - }; - Thread t = new Thread(run); - t.start(); - } - - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/Async3.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/Async3.java deleted file mode 100644 index e1ff5e0411b48259d50bb74cb13ca1b6100eaa65..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/Async3.java +++ /dev/null @@ -1,39 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package async; - -import java.io.IOException; - -import javax.servlet.AsyncContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -public class Async3 extends HttpServlet { - - private static final long serialVersionUID = 1L; - - @Override - protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - final AsyncContext actx = req.startAsync(); - actx.setTimeout(30*1000); - actx.dispatch("/jsp/async/async3.jsp"); - } - - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/AsyncStockContextListener.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/AsyncStockContextListener.java deleted file mode 100644 index 685ac239fb2822c24ff184ff5724d108f4ded2c4..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/AsyncStockContextListener.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package async; - -import javax.servlet.ServletContext; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; - -/* - * Ensures the Stockticker is shut down cleanly when the context stops. This - * also covers the case when the server shuts down. - */ -public class AsyncStockContextListener implements ServletContextListener { - - public static final String STOCK_TICKER_KEY = "StockTicker"; - - @Override - public void contextInitialized(ServletContextEvent sce) { - Stockticker stockticker = new Stockticker(); - ServletContext sc = sce.getServletContext(); - sc.setAttribute(STOCK_TICKER_KEY, stockticker); - } - - @Override - public void contextDestroyed(ServletContextEvent sce) { - ServletContext sc = sce.getServletContext(); - Stockticker stockticker = (Stockticker) sc.getAttribute(STOCK_TICKER_KEY); - stockticker.shutdown(); - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java deleted file mode 100644 index 8b3ac152a1ebfe7d384064addf00f84e62e97719..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package async; - -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Iterator; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.atomic.AtomicInteger; - -import javax.servlet.AsyncContext; -import javax.servlet.AsyncEvent; -import javax.servlet.AsyncListener; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.juli.logging.Log; -import org.apache.juli.logging.LogFactory; - -import async.Stockticker.Stock; -import async.Stockticker.TickListener; - -public class AsyncStockServlet extends HttpServlet implements TickListener, AsyncListener{ - - private static final long serialVersionUID = 1L; - - private static final Log log = LogFactory.getLog(AsyncStockServlet.class); - - private static final ConcurrentLinkedQueue clients = - new ConcurrentLinkedQueue<>(); - private static final AtomicInteger clientcount = new AtomicInteger(0); - - public AsyncStockServlet() { - log.info("AsyncStockServlet created"); - } - - - @Override - protected void service(HttpServletRequest req, HttpServletResponse resp) - throws ServletException, IOException { - if (req.isAsyncStarted()) { - req.getAsyncContext().complete(); - } else if (req.isAsyncSupported()) { - AsyncContext actx = req.startAsync(); - actx.addListener(this); - resp.setContentType("text/plain"); - clients.add(actx); - if (clientcount.incrementAndGet()==1) { - Stockticker ticker = (Stockticker) req.getServletContext().getAttribute( - AsyncStockContextListener.STOCK_TICKER_KEY); - ticker.addTickListener(this); - } - } else { - new Exception("Async Not Supported").printStackTrace(); - resp.sendError(400,"Async is not supported."); - } - } - - - @Override - public void tick(Stock stock) { - Iterator it = clients.iterator(); - while (it.hasNext()) { - AsyncContext actx = it.next(); - try { - writeStock(actx, stock); - } catch (Exception e) { - // Ignore. The async error handling will deal with this. - } - } - } - - - public void writeStock(AsyncContext actx, Stock stock) throws IOException { - HttpServletResponse response = (HttpServletResponse)actx.getResponse(); - PrintWriter writer = response.getWriter(); - writer.write("STOCK#");//make client parsing easier - writer.write(stock.getSymbol()); - writer.write("#"); - writer.write(stock.getValueAsString()); - writer.write("#"); - writer.write(stock.getLastChangeAsString()); - writer.write("#"); - writer.write(String.valueOf(stock.getCnt())); - writer.write("\n"); - writer.flush(); - response.flushBuffer(); - } - - - @Override - public void shutdown() { - // The web application is shutting down. Complete any AsyncContexts - // associated with an active client. - Iterator it = clients.iterator(); - while (it.hasNext()) { - AsyncContext actx = it.next(); - try { - actx.complete(); - } catch (Exception e) { - // Ignore. The async error handling will deal with this. - } - } - } - - - @Override - public void onComplete(AsyncEvent event) throws IOException { - if (clients.remove(event.getAsyncContext()) && clientcount.decrementAndGet()==0) { - ServletContext sc = event.getAsyncContext().getRequest().getServletContext(); - Stockticker ticker = (Stockticker) sc.getAttribute( - AsyncStockContextListener.STOCK_TICKER_KEY); - ticker.removeTickListener(this); - } - } - - @Override - public void onError(AsyncEvent event) throws IOException { - event.getAsyncContext().complete(); - } - - @Override - public void onTimeout(AsyncEvent event) throws IOException { - event.getAsyncContext().complete(); - } - - - @Override - public void onStartAsync(AsyncEvent event) throws IOException { - // NOOP - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/Stockticker.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/Stockticker.java deleted file mode 100644 index e87744e357e43025795c2172f9c3c48a99dc02a4..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/async/Stockticker.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package async; - -import java.text.DecimalFormat; -import java.util.List; -import java.util.Random; -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.concurrent.atomic.AtomicInteger; - -public class Stockticker implements Runnable { - public volatile boolean run = true; - protected final AtomicInteger counter = new AtomicInteger(0); - final List listeners = new CopyOnWriteArrayList<>(); - protected volatile Thread ticker = null; - protected volatile int ticknr = 0; - - public synchronized void start() { - run = true; - ticker = new Thread(this); - ticker.setName("Ticker Thread"); - ticker.start(); - } - - public synchronized void stop() { - // On context stop this can be called multiple times. - // NO-OP is the ticker thread is not set - // (i.e. stop() has already completed) - if (ticker == null) { - return; - } - run = false; - try { - ticker.join(); - }catch (InterruptedException x) { - Thread.interrupted(); - } - - ticker = null; - } - - public void shutdown() { - // Notify each listener of the shutdown. This enables them to - // trigger any necessary clean-up. - for (TickListener l : listeners) { - l.shutdown(); - } - // Wait for the thread to stop. This prevents warnings in the logs - // that the thread is still active when the context stops. - stop(); - } - - public void addTickListener(TickListener listener) { - if (listeners.add(listener)) { - if (counter.incrementAndGet()==1) start(); - } - - } - - public void removeTickListener(TickListener listener) { - if (listeners.remove(listener)) { - if (counter.decrementAndGet()==0) stop(); - } - } - - @Override - public void run() { - try { - - Stock[] stocks = new Stock[] { new Stock("GOOG", 435.43), - new Stock("YHOO", 27.88), new Stock("ASF", 1015.55), }; - Random r = new Random(System.currentTimeMillis()); - while (run) { - for (int j = 0; j < 1; j++) { - int i = r.nextInt() % 3; - if (i < 0) - i = i * (-1); - Stock stock = stocks[i]; - double change = r.nextDouble(); - boolean plus = r.nextBoolean(); - if (plus) { - stock.setValue(stock.getValue() + change); - } else { - stock.setValue(stock.getValue() - change); - } - stock.setCnt(++ticknr); - for (TickListener l : listeners) { - l.tick(stock); - } - - } - Thread.sleep(850); - } - } catch (InterruptedException ix) { - // Ignore - } catch (Exception x) { - x.printStackTrace(); - } - } - - - public static interface TickListener { - public void tick(Stock stock); - public void shutdown(); - } - - public static final class Stock implements Cloneable { - protected static final DecimalFormat df = new DecimalFormat("0.00"); - protected final String symbol; - protected double value = 0.0d; - protected double lastchange = 0.0d; - protected int cnt = 0; - - public Stock(String symbol, double initvalue) { - this.symbol = symbol; - this.value = initvalue; - } - - public void setCnt(int c) { - this.cnt = c; - } - - public int getCnt() { - return cnt; - } - - public String getSymbol() { - return symbol; - } - - public double getValue() { - return value; - } - - public void setValue(double value) { - double old = this.value; - this.value = value; - this.lastchange = value - old; - } - - public String getValueAsString() { - return df.format(value); - } - - public double getLastChange() { - return this.lastchange; - } - - public void setLastChange(double lastchange) { - this.lastchange = lastchange; - } - - public String getLastChangeAsString() { - return df.format(lastchange); - } - - @Override - public int hashCode() { - return symbol.hashCode(); - } - - @Override - public boolean equals(Object other) { - if (other instanceof Stock) { - return this.symbol.equals(((Stock) other).symbol); - } - - return false; - } - - @Override - public String toString() { - StringBuilder buf = new StringBuilder("STOCK#"); - buf.append(getSymbol()); - buf.append("#"); - buf.append(getValueAsString()); - buf.append("#"); - buf.append(getLastChangeAsString()); - buf.append("#"); - buf.append(String.valueOf(getCnt())); - return buf.toString(); - - } - - @Override - public Object clone() { - Stock s = new Stock(this.getSymbol(), this.getValue()); - s.setLastChange(this.getLastChange()); - s.setCnt(this.cnt); - return s; - } - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/cal/Entries.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/cal/Entries.java deleted file mode 100644 index 02860195e1c3a455a1f605899c444e9ba6f85c99..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/cal/Entries.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package cal; - -import java.util.Hashtable; - -import javax.servlet.http.HttpServletRequest; - -public class Entries { - - private final Hashtable entries; - private static final String[] time = { "8am", "9am", "10am", "11am", - "12pm", "1pm", "2pm", "3pm", "4pm", "5pm", "6pm", "7pm", "8pm" }; - public static final int rows = 12; - - public Entries() { - entries = new Hashtable<>(rows); - for (int i = 0; i < rows; i++) { - entries.put(time[i], new Entry(time[i])); - } - } - - public int getRows() { - return rows; - } - - public Entry getEntry(int index) { - return this.entries.get(time[index]); - } - - public int getIndex(String tm) { - for (int i = 0; i < rows; i++) - if (tm.equals(time[i])) - return i; - return -1; - } - - public void processRequest(HttpServletRequest request, String tm) { - int index = getIndex(tm); - if (index >= 0) { - String descr = request.getParameter("description"); - entries.get(time[index]).setDescription(descr); - } - } - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/cal/Entry.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/cal/Entry.java deleted file mode 100644 index 68e7fdf0fd67359d1a3cf6e52383a2c011fde197..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/cal/Entry.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package cal; - -public class Entry { - - final String hour; - String description; - - public Entry(String hour) { - this.hour = hour; - this.description = ""; - - } - - public String getHour() { - return this.hour; - } - - public String getColor() { - if (description.equals("")) { - return "lightblue"; - } - return "red"; - } - - public String getDescription() { - if (description.equals("")) { - return "None"; - } - return this.description; - } - - public void setDescription(String descr) { - description = descr; - } - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/cal/JspCalendar.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/cal/JspCalendar.java deleted file mode 100644 index f9cf20f05cb933c707c12f96b093661da27e5cd3..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/cal/JspCalendar.java +++ /dev/null @@ -1,151 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package cal; - -import java.util.Calendar; -import java.util.Date; - -public class JspCalendar { - final Calendar calendar; - - public JspCalendar() { - calendar = Calendar.getInstance(); - Date trialTime = new Date(); - calendar.setTime(trialTime); - } - - - public int getYear() { - return calendar.get(Calendar.YEAR); - } - - public String getMonth() { - int m = getMonthInt(); - String[] months = new String [] { "January", "February", "March", - "April", "May", "June", - "July", "August", "September", - "October", "November", "December" }; - if (m > 12) - return "Unknown to Man"; - - return months[m - 1]; - - } - - public String getDay() { - int x = getDayOfWeek(); - String[] days = new String[] {"Sunday", "Monday", "Tuesday", "Wednesday", - "Thursday", "Friday", "Saturday"}; - - if (x > 7) - return "Unknown to Man"; - - return days[x - 1]; - - } - - public int getMonthInt() { - return 1 + calendar.get(Calendar.MONTH); - } - - public String getDate() { - return getMonthInt() + "/" + getDayOfMonth() + "/" + getYear(); - } - - public String getCurrentDate() { - Date dt = new Date (); - calendar.setTime (dt); - return getMonthInt() + "/" + getDayOfMonth() + "/" + getYear(); - - } - - public String getNextDate() { - calendar.set (Calendar.DAY_OF_MONTH, getDayOfMonth() + 1); - return getDate (); - } - - public String getPrevDate() { - calendar.set (Calendar.DAY_OF_MONTH, getDayOfMonth() - 1); - return getDate (); - } - - public String getTime() { - return getHour() + ":" + getMinute() + ":" + getSecond(); - } - - public int getDayOfMonth() { - return calendar.get(Calendar.DAY_OF_MONTH); - } - - public int getDayOfYear() { - return calendar.get(Calendar.DAY_OF_YEAR); - } - - public int getWeekOfYear() { - return calendar.get(Calendar.WEEK_OF_YEAR); - } - - public int getWeekOfMonth() { - return calendar.get(Calendar.WEEK_OF_MONTH); - } - - public int getDayOfWeek() { - return calendar.get(Calendar.DAY_OF_WEEK); - } - - public int getHour() { - return calendar.get(Calendar.HOUR_OF_DAY); - } - - public int getMinute() { - return calendar.get(Calendar.MINUTE); - } - - - public int getSecond() { - return calendar.get(Calendar.SECOND); - } - - - public int getEra() { - return calendar.get(Calendar.ERA); - } - - public String getUSTimeZone() { - String[] zones = new String[] {"Hawaii", "Alaskan", "Pacific", - "Mountain", "Central", "Eastern"}; - - return zones[10 + getZoneOffset()]; - } - - public int getZoneOffset() { - return calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000); - } - - - public int getDSTOffset() { - return calendar.get(Calendar.DST_OFFSET)/(60*60*1000); - } - - - public int getAMPM() { - return calendar.get(Calendar.AM_PM); - } -} - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/cal/TableBean.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/cal/TableBean.java deleted file mode 100644 index 483bd93dd77f1d0ac4bac9c00b298544c2d98fa7..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/cal/TableBean.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package cal; - -import java.util.Hashtable; - -import javax.servlet.http.HttpServletRequest; - -public class TableBean { - - final Hashtable table; - final JspCalendar JspCal; - Entries entries; - String date; - String name = null; - String email = null; - boolean processError = false; - - public TableBean() { - this.table = new Hashtable<>(10); - this.JspCal = new JspCalendar(); - this.date = JspCal.getCurrentDate(); - } - - public void setName(String nm) { - this.name = nm; - } - - public String getName() { - return this.name; - } - - public void setEmail(String mail) { - this.email = mail; - } - - public String getEmail() { - return this.email; - } - - public String getDate() { - return this.date; - } - - public Entries getEntries() { - return this.entries; - } - - public void processRequest(HttpServletRequest request) { - - // Get the name and e-mail. - this.processError = false; - if (name == null || name.equals("")) - setName(request.getParameter("name")); - if (email == null || email.equals("")) - setEmail(request.getParameter("email")); - if (name == null || email == null || name.equals("") - || email.equals("")) { - this.processError = true; - return; - } - - // Get the date. - String dateR = request.getParameter("date"); - if (dateR == null) - date = JspCal.getCurrentDate(); - else if (dateR.equalsIgnoreCase("next")) - date = JspCal.getNextDate(); - else if (dateR.equalsIgnoreCase("prev")) - date = JspCal.getPrevDate(); - - entries = table.get(date); - if (entries == null) { - entries = new Entries(); - table.put(date, entries); - } - - // If time is provided add the event. - String time = request.getParameter("time"); - if (time != null) - entries.processRequest(request, time); - } - - public boolean getProcessError() { - return this.processError; - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/checkbox/CheckTest.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/checkbox/CheckTest.java deleted file mode 100644 index e38269c95af5832888efaaa4f2ecae9fab013000..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/checkbox/CheckTest.java +++ /dev/null @@ -1,31 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package checkbox; - -public class CheckTest { - - String b[] = new String[] { "1", "2", "3", "4" }; - - public String[] getFruit() { - return b; - } - - public void setFruit(String [] b) { - this.b = b; - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/colors/ColorGameBean.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/colors/ColorGameBean.java deleted file mode 100644 index 7c64d94c3b9aefc6ac4ba48fab794e117d597807..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/colors/ColorGameBean.java +++ /dev/null @@ -1,113 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package colors; - -public class ColorGameBean { - - private String background = "yellow"; - private String foreground = "red"; - private String color1 = foreground; - private String color2 = background; - private String hint = "no"; - private int attempts = 0; - private int intval = 0; - private boolean tookHints = false; - - public void processRequest() { - - // background = "yellow"; - // foreground = "red"; - - if (! color1.equals(foreground)) { - if (color1.equalsIgnoreCase("black") || - color1.equalsIgnoreCase("cyan")) { - background = color1; - } - } - - if (! color2.equals(background)) { - if (color2.equalsIgnoreCase("black") || - color2.equalsIgnoreCase("cyan")) { - foreground = color2; - } - } - - attempts++; - } - - public void setColor2(String x) { - color2 = x; - } - - public void setColor1(String x) { - color1 = x; - } - - public void setAction(String x) { - if (!tookHints) - tookHints = x.equalsIgnoreCase("Hint"); - hint = x; - } - - public String getColor2() { - return background; - } - - public String getColor1() { - return foreground; - } - - public int getAttempts() { - return attempts; - } - - public boolean getHint() { - return hint.equalsIgnoreCase("Hint"); - } - - public boolean getSuccess() { - if (background.equalsIgnoreCase("black") || - background.equalsIgnoreCase("cyan")) { - - if (foreground.equalsIgnoreCase("black") || - foreground.equalsIgnoreCase("cyan")) { - return true; - } - return false; - } - - return false; - } - - public boolean getHintTaken() { - return tookHints; - } - - public void reset() { - foreground = "red"; - background = "yellow"; - } - - public void setIntval(int value) { - intval = value; - } - - public int getIntval() { - return intval; - } -} - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.java deleted file mode 100644 index 4ffe92ba2b5fae3ac720b98c097bcd1de721cc4d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.java +++ /dev/null @@ -1,240 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package compressionFilters; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Enumeration; -import java.util.List; -import java.util.StringTokenizer; - -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * Implementation of javax.servlet.Filter used to compress - * the ServletResponse if it is bigger than a threshold. - * - * @author Amy Roh - * @author Dmitri Valdin - */ -public class CompressionFilter implements Filter { - - /** - * Minimal reasonable threshold. - */ - private static final int MIN_THRESHOLD = 128; - - /** - * Minimal reasonable buffer. - */ - // 8KB is what tomcat would use by default anyway - private static final int MIN_BUFFER = 8192; - - /** - * The threshold number to compress. - */ - protected int compressionThreshold = 0; - - /** - * The compression buffer size to avoid chunking. - */ - protected int compressionBuffer = 0; - - /** - * The mime types to compress. - */ - protected String[] compressionMimeTypes = {"text/html", "text/xml", "text/plain"}; - - /** - * Debug level for this filter. - */ - private int debug = 0; - - /** - * Place this filter into service. - * - * @param filterConfig The filter configuration object - */ - @Override - public void init(FilterConfig filterConfig) { - - if (filterConfig != null) { - String value = filterConfig.getInitParameter("debug"); - if (value!=null) { - debug = Integer.parseInt(value); - } - - String str = filterConfig.getInitParameter("compressionThreshold"); - if (str != null) { - compressionThreshold = Integer.parseInt(str); - if (compressionThreshold != 0 && compressionThreshold < MIN_THRESHOLD) { - if (debug > 0) { - System.out.println("compressionThreshold should be either 0 - no compression or >= " + MIN_THRESHOLD); - System.out.println("compressionThreshold set to " + MIN_THRESHOLD); - } - compressionThreshold = MIN_THRESHOLD; - } - } - - str = filterConfig.getInitParameter("compressionBuffer"); - if (str != null) { - compressionBuffer = Integer.parseInt(str); - if (compressionBuffer < MIN_BUFFER) { - if (debug > 0) { - System.out.println("compressionBuffer should be >= " + MIN_BUFFER); - System.out.println("compressionBuffer set to " + MIN_BUFFER); - } - compressionBuffer = MIN_BUFFER; - } - } - - str = filterConfig.getInitParameter("compressionMimeTypes"); - if (str != null) { - List values = new ArrayList<>(); - StringTokenizer st = new StringTokenizer(str, ","); - - while (st.hasMoreTokens()) { - String token = st.nextToken().trim(); - if (token.length() > 0) { - values.add(token); - } - } - - if (values.size() > 0) { - compressionMimeTypes = values.toArray( - new String[values.size()]); - } else { - compressionMimeTypes = null; - } - - if (debug > 0) { - System.out.println("compressionMimeTypes set to " + - Arrays.toString(compressionMimeTypes)); - } - } - } - - } - - /** - * Take this filter out of service. - */ - @Override - public void destroy() { - } - - /** - * The doFilter method of the Filter is called by the container - * each time a request/response pair is passed through the chain due - * to a client request for a resource at the end of the chain. - * The FilterChain passed into this method allows the Filter to pass on the - * request and response to the next entity in the chain.

- * This method first examines the request to check whether the client support - * compression.
- * It simply just pass the request and response if there is no support for - * compression.
- * If the compression support is available, it creates a - * CompressionServletResponseWrapper object which compresses the content and - * modifies the header if the content length is big enough. - * It then invokes the next entity in the chain using the FilterChain object - * (chain.doFilter()),
- **/ - @Override - public void doFilter (ServletRequest request, ServletResponse response, FilterChain chain ) - throws IOException, ServletException { - - if (debug > 0) { - System.out.println("@doFilter"); - } - - if (compressionThreshold == 0) { - if (debug > 0) { - System.out.println("doFilter got called, but compressionThreshold is set to 0 - no compression"); - } - chain.doFilter(request, response); - return; - } - - boolean supportCompression = false; - if (request instanceof HttpServletRequest) { - if (debug > 1) { - System.out.println("requestURI = " + ((HttpServletRequest)request).getRequestURI()); - } - - // Are we allowed to compress ? - String s = ((HttpServletRequest)request).getParameter("gzip"); - if ("false".equals(s)) { - if (debug > 0) { - System.out.println("got parameter gzip=false --> don't compress, just chain filter"); - } - chain.doFilter(request, response); - return; - } - - Enumeration e = - ((HttpServletRequest)request).getHeaders("Accept-Encoding"); - while (e.hasMoreElements()) { - String name = e.nextElement(); - if (name.indexOf("gzip") != -1) { - if (debug > 0) { - System.out.println("supports compression"); - } - supportCompression = true; - } else { - if (debug > 0) { - System.out.println("no support for compression"); - } - } - } - } - - if (supportCompression) { - if (response instanceof HttpServletResponse) { - CompressionServletResponseWrapper wrappedResponse = - new CompressionServletResponseWrapper((HttpServletResponse)response); - wrappedResponse.setDebugLevel(debug); - wrappedResponse.setCompressionThreshold(compressionThreshold); - wrappedResponse.setCompressionBuffer(compressionBuffer); - wrappedResponse.setCompressionMimeTypes(compressionMimeTypes); - if (debug > 0) { - System.out.println("doFilter gets called with compression"); - } - try { - chain.doFilter(request, wrappedResponse); - } finally { - wrappedResponse.finishResponse(); - } - return; - } - } else { - if (debug > 0) { - System.out.println("doFilter gets called w/o compression"); - } - chain.doFilter(request, response); - return; - } - } -} - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java deleted file mode 100644 index af1a0b9798a8f06bdf5d048c60987b641fcee296..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java +++ /dev/null @@ -1,66 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package compressionFilters; - -import java.io.IOException; -import java.util.Enumeration; - -import javax.servlet.ServletException; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * Very Simple test servlet to test compression filter - * @author Amy Roh - */ -public class CompressionFilterTestServlet extends HttpServlet { - - private static final long serialVersionUID = 1L; - - @Override - public void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - - ServletOutputStream out = response.getOutputStream(); - response.setContentType("text/plain"); - - Enumeration e = request.getHeaders("Accept-Encoding"); - while (e.hasMoreElements()) { - String name = e.nextElement(); - out.println(name); - if (name.indexOf("gzip") != -1) { - out.println("gzip supported -- able to compress"); - } - else { - out.println("gzip not supported"); - } - } - - - out.println("Compression Filter Test Servlet"); - out.println("Minimum content length for compression is 128 bytes"); - out.println("********** 32 bytes **********"); - out.println("********** 32 bytes **********"); - out.println("********** 32 bytes **********"); - out.println("********** 32 bytes **********"); - out.close(); - } - -} - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java deleted file mode 100644 index ccc66073ad4fb54a427eeef0a77d4d6a8d5b8f4e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java +++ /dev/null @@ -1,435 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package compressionFilters; - -import java.io.IOException; -import java.io.OutputStream; -import java.util.Arrays; -import java.util.zip.GZIPOutputStream; - -import javax.servlet.ServletOutputStream; -import javax.servlet.WriteListener; - -/** - * Implementation of ServletOutputStream that works with - * the CompressionServletResponseWrapper implementation. - * - * @author Amy Roh - * @author Dmitri Valdin - */ -public class CompressionResponseStream extends ServletOutputStream { - - // ----------------------------------------------------------- Constructors - - /** - * Construct a servlet output stream associated with the specified Response. - * - * @param responseWrapper The associated response wrapper - * @param originalOutput the output stream - */ - public CompressionResponseStream( - CompressionServletResponseWrapper responseWrapper, - ServletOutputStream originalOutput) { - - super(); - closed = false; - this.response = responseWrapper; - this.output = originalOutput; - } - - - // ----------------------------------------------------- Instance Variables - - - /** - * The threshold number which decides to compress or not. - * Users can configure in web.xml to set it to fit their needs. - */ - protected int compressionThreshold = 0; - - /** - * The compression buffer size to avoid chunking - */ - protected int compressionBuffer = 0; - - /** - * The mime types to compress - */ - protected String[] compressionMimeTypes = {"text/html", "text/xml", "text/plain"}; - - /** - * Debug level - */ - private int debug = 0; - - /** - * The buffer through which all of our output bytes are passed. - */ - protected byte[] buffer = null; - - /** - * The number of data bytes currently in the buffer. - */ - protected int bufferCount = 0; - - /** - * The underlying gzip output stream to which we should write data. - */ - protected OutputStream gzipstream = null; - - /** - * Has this stream been closed? - */ - protected boolean closed = false; - - /** - * The response with which this servlet output stream is associated. - */ - protected final CompressionServletResponseWrapper response; - - /** - * The underlying servlet output stream to which we should write data. - */ - protected final ServletOutputStream output; - - - // --------------------------------------------------------- Public Methods - - /** - * Set debug level. - * - * @param debug The higher the number, the more detail shown. Currently the - * range 0 (none) to 3 (everything) is used. - */ - public void setDebugLevel(int debug) { - this.debug = debug; - } - - - /** - * Set the compressionThreshold number and create buffer for this size - */ - protected void setCompressionThreshold(int compressionThreshold) { - this.compressionThreshold = compressionThreshold; - buffer = new byte[this.compressionThreshold]; - if (debug > 1) { - System.out.println("compressionThreshold is set to "+ this.compressionThreshold); - } - } - - /** - * The compression buffer size to avoid chunking - */ - protected void setCompressionBuffer(int compressionBuffer) { - this.compressionBuffer = compressionBuffer; - if (debug > 1) { - System.out.println("compressionBuffer is set to "+ this.compressionBuffer); - } - } - - /** - * Set supported mime types. - * - * @param compressionMimeTypes The mimetypes that will be compressed. - */ - public void setCompressionMimeTypes(String[] compressionMimeTypes) { - this.compressionMimeTypes = compressionMimeTypes; - if (debug > 1) { - System.out.println("compressionMimeTypes is set to " + - Arrays.toString(this.compressionMimeTypes)); - } - } - - /** - * Close this output stream, causing any buffered data to be flushed and - * any further output data to throw an IOException. - */ - @Override - public void close() throws IOException { - - if (debug > 1) { - System.out.println("close() @ CompressionResponseStream"); - } - if (closed) - throw new IOException("This output stream has already been closed"); - - if (gzipstream != null) { - flushToGZip(); - gzipstream.close(); - gzipstream = null; - } else { - if (bufferCount > 0) { - if (debug > 2) { - System.out.print("output.write("); - System.out.write(buffer, 0, bufferCount); - System.out.println(")"); - } - output.write(buffer, 0, bufferCount); - bufferCount = 0; - } - } - - output.close(); - closed = true; - - } - - - /** - * Flush any buffered data for this output stream, which also causes the - * response to be committed. - */ - @Override - public void flush() throws IOException { - - if (debug > 1) { - System.out.println("flush() @ CompressionResponseStream"); - } - if (closed) { - throw new IOException("Cannot flush a closed output stream"); - } - - if (gzipstream != null) { - gzipstream.flush(); - } - - } - - public void flushToGZip() throws IOException { - - if (debug > 1) { - System.out.println("flushToGZip() @ CompressionResponseStream"); - } - if (bufferCount > 0) { - if (debug > 1) { - System.out.println("flushing out to GZipStream, bufferCount = " + bufferCount); - } - writeToGZip(buffer, 0, bufferCount); - bufferCount = 0; - } - - } - - /** - * Write the specified byte to our output stream. - * - * @param b The byte to be written - * - * @exception IOException if an input/output error occurs - */ - @Override - public void write(int b) throws IOException { - - if (debug > 1) { - System.out.println("write "+b+" in CompressionResponseStream "); - } - if (closed) - throw new IOException("Cannot write to a closed output stream"); - - if (bufferCount >= buffer.length) { - flushToGZip(); - } - - buffer[bufferCount++] = (byte) b; - - } - - - /** - * Write b.length bytes from the specified byte array - * to our output stream. - * - * @param b The byte array to be written - * - * @exception IOException if an input/output error occurs - */ - @Override - public void write(byte b[]) throws IOException { - - write(b, 0, b.length); - - } - - - - /** - * TODO SERVLET 3.1 - */ - @Override - public boolean isReady() { - // TODO Auto-generated method stub - return false; - } - - - /** - * TODO SERVLET 3.1 - */ - @Override - public void setWriteListener(WriteListener listener) { - // TODO Auto-generated method stub - - } - - - /** - * Write len bytes from the specified byte array, starting - * at the specified offset, to our output stream. - * - * @param b The byte array containing the bytes to be written - * @param off Zero-relative starting offset of the bytes to be written - * @param len The number of bytes to be written - * - * @exception IOException if an input/output error occurs - */ - @Override - public void write(byte b[], int off, int len) throws IOException { - - if (debug > 1) { - System.out.println("write, bufferCount = " + bufferCount + " len = " + len + " off = " + off); - } - if (debug > 2) { - System.out.print("write("); - System.out.write(b, off, len); - System.out.println(")"); - } - - if (closed) - throw new IOException("Cannot write to a closed output stream"); - - if (len == 0) - return; - - // Can we write into buffer ? - if (len <= (buffer.length - bufferCount)) { - System.arraycopy(b, off, buffer, bufferCount, len); - bufferCount += len; - return; - } - - // There is not enough space in buffer. Flush it ... - flushToGZip(); - - // ... and try again. Note, that bufferCount = 0 here ! - if (len <= (buffer.length - bufferCount)) { - System.arraycopy(b, off, buffer, bufferCount, len); - bufferCount += len; - return; - } - - // write direct to gzip - writeToGZip(b, off, len); - } - - public void writeToGZip(byte b[], int off, int len) throws IOException { - - if (debug > 1) { - System.out.println("writeToGZip, len = " + len); - } - if (debug > 2) { - System.out.print("writeToGZip("); - System.out.write(b, off, len); - System.out.println(")"); - } - if (gzipstream == null) { - if (debug > 1) { - System.out.println("new GZIPOutputStream"); - } - - boolean alreadyCompressed = false; - String contentEncoding = response.getHeader("Content-Encoding"); - if (contentEncoding != null) { - if (contentEncoding.contains("gzip")) { - alreadyCompressed = true; - if (debug > 0) { - System.out.println("content is already compressed"); - } - } else { - if (debug > 0) { - System.out.println("content is not compressed yet"); - } - } - } - - boolean compressibleMimeType = false; - // Check for compatible MIME-TYPE - if (compressionMimeTypes != null) { - if (startsWithStringArray(compressionMimeTypes, response.getContentType())) { - compressibleMimeType = true; - if (debug > 0) { - System.out.println("mime type " + response.getContentType() + " is compressible"); - } - } else { - if (debug > 0) { - System.out.println("mime type " + response.getContentType() + " is not compressible"); - } - } - } - - if (response.isCommitted()) { - if (debug > 1) - System.out.print("Response already committed. Using original output stream"); - gzipstream = output; - } else if (alreadyCompressed) { - if (debug > 1) - System.out.print("Response already compressed. Using original output stream"); - gzipstream = output; - } else if (!compressibleMimeType) { - if (debug > 1) - System.out.print("Response mime type is not compressible. Using original output stream"); - gzipstream = output; - } else { - response.addHeader("Content-Encoding", "gzip"); - response.setContentLength(-1); // don't use any preset content-length as it will be wrong after gzipping - response.setBufferSize(compressionBuffer); - gzipstream = new GZIPOutputStream(output); - } - } - gzipstream.write(b, off, len); - - } - - - // -------------------------------------------------------- Package Methods - - /** - * Has this response stream been closed? - * - * @return true if the stream has been closed, otherwise false. - */ - public boolean closed() { - return closed; - } - - - /** - * Checks if any entry in the string array starts with the specified value - * - * @param sArray the StringArray - * @param value string - */ - private boolean startsWithStringArray(String sArray[], String value) { - if (value == null) - return false; - for (int i = 0; i < sArray.length; i++) { - if (value.startsWith(sArray[i])) { - return true; - } - } - return false; - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java deleted file mode 100644 index 60413c5441a183568973b20d3b9f54b7f701751b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java +++ /dev/null @@ -1,292 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package compressionFilters; - -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; - -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpServletResponseWrapper; - -/** - * Implementation of HttpServletResponseWrapper that works with - * the CompressionServletResponseStream implementation.. - * - * @author Amy Roh - * @author Dmitri Valdin - */ -public class CompressionServletResponseWrapper - extends HttpServletResponseWrapper { - - // ----------------------------------------------------- Constructor - - /** - * Calls the parent constructor which creates a ServletResponse adaptor - * wrapping the given response object. - * - * @param response The response object to be wrapped. - */ - public CompressionServletResponseWrapper(HttpServletResponse response) { - super(response); - origResponse = response; - if (debug > 1) { - System.out.println("CompressionServletResponseWrapper constructor gets called"); - } - } - - - // ----------------------------------------------------- Instance Variables - - /** - * Original response - */ - protected final HttpServletResponse origResponse; - - /** - * The ServletOutputStream that has been returned by - * getOutputStream(), if any. - */ - protected ServletOutputStream stream = null; - - - /** - * The PrintWriter that has been returned by - * getWriter(), if any. - */ - protected PrintWriter writer = null; - - /** - * The threshold number to compress - */ - protected int compressionThreshold = 0; - - /** - * The compression buffer size - */ - protected int compressionBuffer = 8192; // 8KB default - - /** - * The mime types to compress - */ - protected String[] compressionMimeTypes = {"text/html", "text/xml", "text/plain"}; - - /** - * Debug level - */ - protected int debug = 0; - - /** - * keeps a copy of all headers set - */ - private final Map headerCopies = new HashMap<>(); - - - // --------------------------------------------------------- Public Methods - - - /** - * Set threshold number. - * - * @param threshold The new compression threshold - */ - public void setCompressionThreshold(int threshold) { - if (debug > 1) { - System.out.println("setCompressionThreshold to " + threshold); - } - this.compressionThreshold = threshold; - } - - /** - * Set compression buffer. - * - * @param buffer New size of buffer to use for compressed output - */ - public void setCompressionBuffer(int buffer) { - if (debug > 1) { - System.out.println("setCompressionBuffer to " + buffer); - } - this.compressionBuffer = buffer; - } - - /** - * Set compressible mime types. - * - * @param mimeTypes The new list of mime types that will be considered for - * compression - */ - public void setCompressionMimeTypes(String[] mimeTypes) { - if (debug > 1) { - System.out.println("setCompressionMimeTypes to " + - Arrays.toString(mimeTypes)); - } - this.compressionMimeTypes = mimeTypes; - } - - /** - * Set debug level. - * - * @param debug The new debug level - */ - public void setDebugLevel(int debug) { - this.debug = debug; - } - - - /** - * Create and return a ServletOutputStream to write the content - * associated with this Response. - * - * @exception IOException if an input/output error occurs - * - * @return A new servlet output stream that compressed any data written to - * it - */ - protected ServletOutputStream createOutputStream() throws IOException { - if (debug > 1) { - System.out.println("createOutputStream gets called"); - } - - CompressionResponseStream stream = new CompressionResponseStream( - this, origResponse.getOutputStream()); - stream.setDebugLevel(debug); - stream.setCompressionThreshold(compressionThreshold); - stream.setCompressionBuffer(compressionBuffer); - stream.setCompressionMimeTypes(compressionMimeTypes); - - return stream; - } - - - /** - * Finish a response. - */ - public void finishResponse() { - try { - if (writer != null) { - writer.close(); - } else { - if (stream != null) - stream.close(); - } - } catch (IOException e) { - // Ignore - } - } - - - // ------------------------------------------------ ServletResponse Methods - - - /** - * Flush the buffer and commit this response. - * - * @exception IOException if an input/output error occurs - */ - @Override - public void flushBuffer() throws IOException { - if (debug > 1) { - System.out.println("flush buffer @ GZipServletResponseWrapper"); - } - ((CompressionResponseStream)stream).flush(); - - } - - /** - * Return the servlet output stream associated with this Response. - * - * @exception IllegalStateException if getWriter has - * already been called for this response - * @exception IOException if an input/output error occurs - */ - @Override - public ServletOutputStream getOutputStream() throws IOException { - - if (writer != null) - throw new IllegalStateException("getWriter() has already been called for this response"); - - if (stream == null) - stream = createOutputStream(); - if (debug > 1) { - System.out.println("stream is set to "+stream+" in getOutputStream"); - } - - return (stream); - - } - - /** - * Return the writer associated with this Response. - * - * @exception IllegalStateException if getOutputStream has - * already been called for this response - * @exception IOException if an input/output error occurs - */ - @Override - public PrintWriter getWriter() throws IOException { - - if (writer != null) - return (writer); - - if (stream != null) - throw new IllegalStateException("getOutputStream() has already been called for this response"); - - stream = createOutputStream(); - if (debug > 1) { - System.out.println("stream is set to "+stream+" in getWriter"); - } - String charEnc = origResponse.getCharacterEncoding(); - if (debug > 1) { - System.out.println("character encoding is " + charEnc); - } - // HttpServletResponse.getCharacterEncoding() shouldn't return null - // according the spec, so feel free to remove that "if" - if (charEnc != null) { - writer = new PrintWriter(new OutputStreamWriter(stream, charEnc)); - } else { - writer = new PrintWriter(stream); - } - - return (writer); - } - - @Override - public String getHeader(String name) { - return headerCopies.get(name); - } - - @Override - public void addHeader(String name, String value) { - if (headerCopies.containsKey(name)) { - String existingValue = headerCopies.get(name); - if ((existingValue != null) && (existingValue.length() > 0)) headerCopies.put(name, existingValue + "," + value); - else headerCopies.put(name, value); - } else headerCopies.put(name, value); - super.addHeader(name, value); - } - - - @Override - public void setHeader(String name, String value) { - headerCopies.put(name, value); - super.setHeader(name, value); - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/dates/JspCalendar.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/dates/JspCalendar.java deleted file mode 100644 index 759edee10f2c15e77ef6d2b8a18c0f3daf2795d6..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/dates/JspCalendar.java +++ /dev/null @@ -1,153 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package dates; - -import java.util.Calendar; -import java.util.Date; - -public class JspCalendar { - final Calendar calendar; - - public JspCalendar() { - calendar = Calendar.getInstance(); - Date trialTime = new Date(); - calendar.setTime(trialTime); - } - - public int getYear() { - return calendar.get(Calendar.YEAR); - } - - public String getMonth() { - int m = getMonthInt(); - String[] months = new String [] { "January", "February", "March", - "April", "May", "June", - "July", "August", "September", - "October", "November", "December" }; - if (m > 12) - return "Unknown to Man"; - - return months[m - 1]; - - } - - public String getDay() { - int x = getDayOfWeek(); - String[] days = new String[] {"Sunday", "Monday", "Tuesday", "Wednesday", - "Thursday", "Friday", "Saturday"}; - - if (x > 7) - return "Unknown to Man"; - - return days[x - 1]; - - } - - public int getMonthInt() { - return 1 + calendar.get(Calendar.MONTH); - } - - public String getDate() { - return getMonthInt() + "/" + getDayOfMonth() + "/" + getYear(); - - } - - public String getTime() { - return getHour() + ":" + getMinute() + ":" + getSecond(); - } - - public int getDayOfMonth() { - return calendar.get(Calendar.DAY_OF_MONTH); - } - - public int getDayOfYear() { - return calendar.get(Calendar.DAY_OF_YEAR); - } - - public int getWeekOfYear() { - return calendar.get(Calendar.WEEK_OF_YEAR); - } - - public int getWeekOfMonth() { - return calendar.get(Calendar.WEEK_OF_MONTH); - } - - public int getDayOfWeek() { - return calendar.get(Calendar.DAY_OF_WEEK); - } - - public int getHour() { - return calendar.get(Calendar.HOUR_OF_DAY); - } - - public int getMinute() { - return calendar.get(Calendar.MINUTE); - } - - - public int getSecond() { - return calendar.get(Calendar.SECOND); - } - - public static void main(String args[]) { - JspCalendar db = new JspCalendar(); - p("date: " + db.getDayOfMonth()); - p("year: " + db.getYear()); - p("month: " + db.getMonth()); - p("time: " + db.getTime()); - p("date: " + db.getDate()); - p("Day: " + db.getDay()); - p("DayOfYear: " + db.getDayOfYear()); - p("WeekOfYear: " + db.getWeekOfYear()); - p("era: " + db.getEra()); - p("ampm: " + db.getAMPM()); - p("DST: " + db.getDSTOffset()); - p("ZONE Offset: " + db.getZoneOffset()); - p("TIMEZONE: " + db.getUSTimeZone()); - } - - private static void p(String x) { - System.out.println(x); - } - - - public int getEra() { - return calendar.get(Calendar.ERA); - } - - public String getUSTimeZone() { - String[] zones = new String[] {"Hawaii", "Alaskan", "Pacific", - "Mountain", "Central", "Eastern"}; - - return zones[10 + getZoneOffset()]; - } - - public int getZoneOffset() { - return calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000); - } - - - public int getDSTOffset() { - return calendar.get(Calendar.DST_OFFSET)/(60*60*1000); - } - - - public int getAMPM() { - return calendar.get(Calendar.AM_PM); - } -} - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/error/Smart.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/error/Smart.java deleted file mode 100644 index 82c22f6f5218c26b6933fb038b5dc80dbb9c60be..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/error/Smart.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package error; - -public class Smart { - - String name = "JSP"; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.java deleted file mode 100644 index 127eddf655b7eab96c9bdf3a28533192e55bed04..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.java +++ /dev/null @@ -1,74 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package examples; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.tagext.BodyContent; -import javax.servlet.jsp.tagext.BodyTagSupport; -import javax.servlet.jsp.tagext.Tag; - -public abstract class ExampleTagBase extends BodyTagSupport { - - private static final long serialVersionUID = 1L; - - @Override - public void setParent(Tag parent) { - this.parent = parent; - } - - @Override - public void setBodyContent(BodyContent bodyOut) { - this.bodyOut = bodyOut; - } - - @Override - public Tag getParent() { - return this.parent; - } - - @Override - public int doStartTag() throws JspException { - return SKIP_BODY; - } - - @Override - public int doEndTag() throws JspException { - return EVAL_PAGE; - } - - - @Override - public void doInitBody() throws JspException { - // Default implementations for BodyTag methods as well - // just in case a tag decides to implement BodyTag. - } - - @Override - public int doAfterBody() throws JspException { - return SKIP_BODY; - } - - @Override - public void release() { - bodyOut = null; - pageContext = null; - parent = null; - } - - protected BodyContent bodyOut; - protected Tag parent; -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/FooTag.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/FooTag.java deleted file mode 100644 index f4f3050efd85f0bbd1552ab6631181d5b7784339..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/FooTag.java +++ /dev/null @@ -1,87 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package examples; - -import java.io.IOException; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspTagException; - -/** - * Example1: the simplest tag - * Collect attributes and call into some actions - * - * - */ - -public class FooTag extends ExampleTagBase { - - private static final long serialVersionUID = 1L; - - private final String atts[] = new String[3]; - int i = 0; - - private final void setAtt(int index, String value) { - atts[index] = value; - } - - public void setAtt1(String value) { - setAtt(0, value); - } - - public void setAtt2(String value) { - setAtt(1, value); - } - - public void setAtt3(String value) { - setAtt(2, value); - } - - /** - * Process start tag - * - * @return EVAL_BODY_INCLUDE - */ - @Override - public int doStartTag() throws JspException { - i = 0; - return EVAL_BODY_BUFFERED; - } - - @Override - public void doInitBody() throws JspException { - pageContext.setAttribute("member", atts[i]); - i++; - } - - @Override - public int doAfterBody() throws JspException { - try { - if (i == 3) { - bodyOut.writeOut(bodyOut.getEnclosingWriter()); - return SKIP_BODY; - } - - pageContext.setAttribute("member", atts[i]); - i++; - return EVAL_BODY_BUFFERED; - } catch (IOException ex) { - throw new JspTagException(ex.toString()); - } - } -} - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.java deleted file mode 100644 index e3fe37118b90b88b10e9c4c2a29ad9006969f67b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.java +++ /dev/null @@ -1,36 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package examples; - -import javax.servlet.jsp.tagext.TagData; -import javax.servlet.jsp.tagext.TagExtraInfo; -import javax.servlet.jsp.tagext.VariableInfo; - -public class FooTagExtraInfo extends TagExtraInfo { - @Override - public VariableInfo[] getVariableInfo(TagData data) { - return new VariableInfo[] - { - new VariableInfo("member", - "String", - true, - VariableInfo.NESTED) - }; - } -} - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/LogTag.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/LogTag.java deleted file mode 100644 index 0f382804f32b52952972feac641ebb570096321c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/LogTag.java +++ /dev/null @@ -1,61 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package examples; - -import java.io.IOException; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspTagException; - -/** - * Log the contents of the body. Could be used to handle errors etc. - */ -public class LogTag extends ExampleTagBase { - - private static final long serialVersionUID = 1L; - - boolean toBrowser = false; - - public void setToBrowser(String value) { - if (value == null) - toBrowser = false; - else if (value.equalsIgnoreCase("true")) - toBrowser = true; - else - toBrowser = false; - } - - @Override - public int doStartTag() throws JspException { - return EVAL_BODY_BUFFERED; - } - - @Override - public int doAfterBody() throws JspException { - try { - String s = bodyOut.getString(); - System.err.println(s); - if (toBrowser) - bodyOut.writeOut(bodyOut.getEnclosingWriter()); - return SKIP_BODY; - } catch (IOException ex) { - throw new JspTagException(ex.toString()); - } - } -} - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/ShowSource.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/ShowSource.java deleted file mode 100644 index 2337d7c2f892ff09b88222cf8cfd5f3a7e655e09..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/ShowSource.java +++ /dev/null @@ -1,76 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package examples; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Locale; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspTagException; -import javax.servlet.jsp.JspWriter; -import javax.servlet.jsp.tagext.TagSupport; - -/** - * Display the sources of the JSP file. - */ -public class ShowSource extends TagSupport { - - private static final long serialVersionUID = 1L; - - String jspFile; - - public void setJspFile(String jspFile) { - this.jspFile = jspFile; - } - - @Override - public int doEndTag() throws JspException { - if ((jspFile.indexOf( ".." ) >= 0) || - (jspFile.toUpperCase(Locale.ENGLISH).indexOf("/WEB-INF/") != 0) || - (jspFile.toUpperCase(Locale.ENGLISH).indexOf("/META-INF/") != 0)) - throw new JspTagException("Invalid JSP file " + jspFile); - - try (InputStream in - = pageContext.getServletContext().getResourceAsStream(jspFile)) { - - if (in == null) - throw new JspTagException("Unable to find JSP file: " + jspFile); - - JspWriter out = pageContext.getOut(); - - try { - out.println(""); - out.println("

");
-                for (int ch = in.read(); ch != -1; ch = in.read())
-                    if (ch == '<')
-                        out.print("<");
-                    else
-                        out.print((char) ch);
-                out.println("
"); - out.println(""); - } catch (IOException ex) { - throw new JspTagException("IOException: " + ex.toString()); - } - } catch (IOException ex2) { - throw new JspTagException("IOException: " + ex2.toString()); - } - return super.doEndTag(); - } -} - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/ValuesTag.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/ValuesTag.java deleted file mode 100644 index b33586059d78d1b0dadeb03560f407b5b63b5435..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/examples/ValuesTag.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package examples; - -import java.io.IOException; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspTagException; -import javax.servlet.jsp.JspWriter; -import javax.servlet.jsp.tagext.TagSupport; - -/** - * Accept and display a value. - */ -public class ValuesTag extends TagSupport { - - private static final long serialVersionUID = 1L; - - // Using "-1" as the default value, - // in the assumption that it won't be used as the value. - // Cannot use null here, because null is an important case - // that should be present in the tests. - private Object objectValue = "-1"; - private String stringValue = "-1"; - private long longValue = -1; - private double doubleValue = -1; - - public void setObject(Object objectValue) { - this.objectValue = objectValue; - } - - public void setString(String stringValue) { - this.stringValue = stringValue; - } - - public void setLong(long longValue) { - this.longValue = longValue; - } - - public void setDouble(double doubleValue) { - this.doubleValue = doubleValue; - } - - @Override - public int doEndTag() throws JspException { - JspWriter out = pageContext.getOut(); - - try { - if (!"-1".equals(objectValue)) { - out.print(objectValue); - } else if (!"-1".equals(stringValue)) { - out.print(stringValue); - } else if (longValue != -1) { - out.print(longValue); - } else if (doubleValue != -1) { - out.print(doubleValue); - } else { - out.print("-1"); - } - } catch (IOException ex) { - throw new JspTagException("IOException: " + ex.toString(), ex); - } - return super.doEndTag(); - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/filters/ExampleFilter.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/filters/ExampleFilter.java deleted file mode 100644 index 3809ed638f288d2193388b4c3aaf8c211c7af1ca..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/filters/ExampleFilter.java +++ /dev/null @@ -1,137 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package filters; - - -import java.io.IOException; - -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - - -/** - * Example filter that can be attached to either an individual servlet - * or to a URL pattern. This filter performs the following functions: - *
    - *
  • Attaches itself as a request attribute, under the attribute name - * defined by the value of the attribute initialization - * parameter.
  • - *
  • Calculates the number of milliseconds required to perform the - * servlet processing required by this request, including any - * subsequently defined filters, and logs the result to the servlet - * context log for this application. - *
- * - * @author Craig McClanahan - */ -public final class ExampleFilter implements Filter { - - - // ----------------------------------------------------- Instance Variables - - - /** - * The request attribute name under which we store a reference to ourself. - */ - private String attribute = null; - - - /** - * The filter configuration object we are associated with. If this value - * is null, this filter instance is not currently configured. - */ - private FilterConfig filterConfig = null; - - - // --------------------------------------------------------- Public Methods - - - /** - * Take this filter out of service. - */ - @Override - public void destroy() { - - this.attribute = null; - this.filterConfig = null; - - } - - - /** - * Time the processing that is performed by all subsequent filters in the - * current filter stack, including the ultimately invoked servlet. - * - * @param request The servlet request we are processing - * @param response The servlet response we are creating - * @param chain The filter chain we are processing - * - * @exception IOException if an input/output error occurs - * @exception ServletException if a servlet error occurs - */ - @Override - public void doFilter(ServletRequest request, ServletResponse response, - FilterChain chain) - throws IOException, ServletException { - - // Store ourselves as a request attribute (if requested) - if (attribute != null) - request.setAttribute(attribute, this); - - // Time and log the subsequent processing - long startTime = System.currentTimeMillis(); - chain.doFilter(request, response); - long stopTime = System.currentTimeMillis(); - filterConfig.getServletContext().log - (this.toString() + ": " + (stopTime - startTime) + - " milliseconds"); - } - - - /** - * Place this filter into service. - * - * @param fConfig The filter configuration object - */ - @Override - public void init(FilterConfig fConfig) throws ServletException { - - this.filterConfig = fConfig; - this.attribute = fConfig.getInitParameter("attribute"); - } - - - /** - * Return a String representation of this object. - */ - @Override - public String toString() { - - if (filterConfig == null) - return ("TimingFilter()"); - StringBuilder sb = new StringBuilder("TimingFilter("); - sb.append(filterConfig); - sb.append(")"); - return (sb.toString()); - } -} - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.java deleted file mode 100644 index ff6a55de1a8fe038a63d16a12b53b45fb2afc09c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.java +++ /dev/null @@ -1,44 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - - -package jsp2.examples; - -public class BookBean { - private final String title; - private final String author; - private final String isbn; - - public BookBean( String title, String author, String isbn ) { - this.title = title; - this.author = author; - this.isbn = isbn; - } - - public String getTitle() { - return this.title; - } - - public String getAuthor() { - return this.author; - } - - public String getIsbn() { - return this.isbn; - } - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.java deleted file mode 100644 index 4dc0a780306b286af6f4929f19d31eef93cc6034..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.java +++ /dev/null @@ -1,36 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - - -package jsp2.examples; - -public class FooBean { - private String bar; - - public FooBean() { - bar = "Initial value"; - } - - public String getBar() { - return this.bar; - } - - public void setBar(String bar) { - this.bar = bar; - } - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.java deleted file mode 100644 index 686039c7d7fd7c1d3f220f3eb57dd4970d958baf..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.java +++ /dev/null @@ -1,52 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - - -package jsp2.examples; - -/** - * Accept and display a value. - */ -public class ValuesBean { - private String string; - private double doubleValue; - private long longValue; - - public String getStringValue() { - return this.string; - } - - public void setStringValue(String string) { - this.string = string; - } - - public double getDoubleValue() { - return doubleValue; - } - - public void setDoubleValue(double doubleValue) { - this.doubleValue = doubleValue; - } - - public long getLongValue() { - return longValue; - } - - public void setLongValue(long longValue) { - this.longValue = longValue; - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.java deleted file mode 100644 index 77fdb9cff71a84542e1bdcc62bd87497bf006118..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.java +++ /dev/null @@ -1,45 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package jsp2.examples.el; - -import java.util.Locale; - -/** - * Defines the functions for the jsp2 example tag library. - * - *

Each function is defined as a static method.

- */ -public class Functions { - public static String reverse( String text ) { - return new StringBuilder( text ).reverse().toString(); - } - - public static int numVowels( String text ) { - String vowels = "aeiouAEIOU"; - int result = 0; - for( int i = 0; i < text.length(); i++ ) { - if( vowels.indexOf( text.charAt( i ) ) != -1 ) { - result++; - } - } - return result; - } - - public static String caps( String text ) { - return text.toUpperCase(Locale.ENGLISH); - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.java deleted file mode 100644 index 8cdd48cb7f45db1023f15438159bdc1285a20fc7..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.java +++ /dev/null @@ -1,57 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - - -package jsp2.examples.simpletag; - -import java.io.IOException; -import java.util.ArrayList; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.JspWriter; -import javax.servlet.jsp.tagext.DynamicAttributes; -import javax.servlet.jsp.tagext.SimpleTagSupport; - -/** - * SimpleTag handler that echoes all its attributes - */ -public class EchoAttributesTag - extends SimpleTagSupport - implements DynamicAttributes -{ - private final ArrayList keys = new ArrayList<>(); - private final ArrayList values = new ArrayList<>(); - - @Override - public void doTag() throws JspException, IOException { - JspWriter out = getJspContext().getOut(); - for( int i = 0; i < keys.size(); i++ ) { - String key = keys.get( i ); - Object value = values.get( i ); - out.println( "
  • " + key + " = " + value + "
  • " ); - } - } - - @Override - public void setDynamicAttribute( String uri, String localName, - Object value ) - throws JspException - { - keys.add( localName ); - values.add( value ); - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.java deleted file mode 100644 index e44d4e2fd8dee1552d5849c3f97fd80b64b8e6ea..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.java +++ /dev/null @@ -1,46 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - - -package jsp2.examples.simpletag; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.tagext.SimpleTagSupport; - -import jsp2.examples.BookBean; - -/** - * SimpleTag handler that pretends to search for a book, and stores - * the result in a scoped variable. - */ -public class FindBookSimpleTag extends SimpleTagSupport { - private String var; - - private static final String BOOK_TITLE = "The Lord of the Rings"; - private static final String BOOK_AUTHOR = "J. R. R. Tolkein"; - private static final String BOOK_ISBN = "0618002251"; - - @Override - public void doTag() throws JspException { - BookBean book = new BookBean( BOOK_TITLE, BOOK_AUTHOR, BOOK_ISBN ); - getJspContext().setAttribute( this.var, book ); - } - - public void setVar( String var ) { - this.var = var; - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.java deleted file mode 100644 index f87736f9b7690620c39ecaf443a9d5b16d247f57..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.java +++ /dev/null @@ -1,34 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - - -package jsp2.examples.simpletag; - -import java.io.IOException; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.tagext.SimpleTagSupport; - -/** - * SimpleTag handler that prints "Hello, world!" - */ -public class HelloWorldSimpleTag extends SimpleTagSupport { - @Override - public void doTag() throws JspException, IOException { - getJspContext().getOut().write( "Hello, world!" ); - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.java deleted file mode 100644 index 41a9f3c72a6a5fb8b31dea8e63d4fe90cf8b279b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.java +++ /dev/null @@ -1,44 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - - -package jsp2.examples.simpletag; - -import java.io.IOException; - -import javax.servlet.jsp.JspException; -import javax.servlet.jsp.tagext.SimpleTagSupport; - -/** - * SimpleTag handler that accepts a num attribute and - * invokes its body 'num' times. - */ -public class RepeatSimpleTag extends SimpleTagSupport { - private int num; - - @Override - public void doTag() throws JspException, IOException { - for (int i=0; i
    " + this.label + - "
    " ); - } - - public void setColor( String color ) { - this.color = color; - } - - public void setLabel( String label ) { - this.label = label; - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/listeners/ContextListener.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/listeners/ContextListener.java deleted file mode 100644 index 31f55452f96a830fcae154f69a19ed2f2416bafb..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/listeners/ContextListener.java +++ /dev/null @@ -1,138 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package listeners; - - -import javax.servlet.ServletContext; -import javax.servlet.ServletContextAttributeEvent; -import javax.servlet.ServletContextAttributeListener; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; - - -/** - * Example listener for context-related application events, which were - * introduced in the 2.3 version of the Servlet API. This listener - * merely documents the occurrence of such events in the application log - * associated with our servlet context. - * - * @author Craig R. McClanahan - */ -public final class ContextListener - implements ServletContextAttributeListener, ServletContextListener { - - - // ----------------------------------------------------- Instance Variables - - - /** - * The servlet context with which we are associated. - */ - private ServletContext context = null; - - - // --------------------------------------------------------- Public Methods - - - /** - * Record the fact that a servlet context attribute was added. - * - * @param event The servlet context attribute event - */ - @Override - public void attributeAdded(ServletContextAttributeEvent event) { - - log("attributeAdded('" + event.getName() + "', '" + - event.getValue() + "')"); - - } - - - /** - * Record the fact that a servlet context attribute was removed. - * - * @param event The servlet context attribute event - */ - @Override - public void attributeRemoved(ServletContextAttributeEvent event) { - - log("attributeRemoved('" + event.getName() + "', '" + - event.getValue() + "')"); - - } - - - /** - * Record the fact that a servlet context attribute was replaced. - * - * @param event The servlet context attribute event - */ - @Override - public void attributeReplaced(ServletContextAttributeEvent event) { - - log("attributeReplaced('" + event.getName() + "', '" + - event.getValue() + "')"); - - } - - - /** - * Record the fact that this web application has been destroyed. - * - * @param event The servlet context event - */ - @Override - public void contextDestroyed(ServletContextEvent event) { - - log("contextDestroyed()"); - this.context = null; - - } - - - /** - * Record the fact that this web application has been initialized. - * - * @param event The servlet context event - */ - @Override - public void contextInitialized(ServletContextEvent event) { - - this.context = event.getServletContext(); - log("contextInitialized()"); - - } - - - // -------------------------------------------------------- Private Methods - - - /** - * Log a message to the servlet context application log. - * - * @param message Message to be logged - */ - private void log(String message) { - - if (context != null) - context.log("ContextListener: " + message); - else - System.out.println("ContextListener: " + message); - - } - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/listeners/SessionListener.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/listeners/SessionListener.java deleted file mode 100644 index f03e48fcb2cdcc7b830624a7deb964fbba37e95b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/listeners/SessionListener.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package listeners; - -import javax.servlet.ServletContext; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; -import javax.servlet.http.HttpSessionAttributeListener; -import javax.servlet.http.HttpSessionBindingEvent; -import javax.servlet.http.HttpSessionEvent; -import javax.servlet.http.HttpSessionListener; - -/** - * Example listener for context-related application events, which were - * introduced in the 2.3 version of the Servlet API. This listener merely - * documents the occurrence of such events in the application log associated - * with our servlet context. - * - * @author Craig R. McClanahan - */ -public final class SessionListener implements ServletContextListener, - HttpSessionAttributeListener, HttpSessionListener { - - // ----------------------------------------------------- Instance Variables - - /** - * The servlet context with which we are associated. - */ - private ServletContext context = null; - - // --------------------------------------------------------- Public Methods - - /** - * Record the fact that a servlet context attribute was added. - * - * @param event - * The session attribute event - */ - @Override - public void attributeAdded(HttpSessionBindingEvent event) { - - log("attributeAdded('" + event.getSession().getId() + "', '" - + event.getName() + "', '" + event.getValue() + "')"); - - } - - /** - * Record the fact that a servlet context attribute was removed. - * - * @param event - * The session attribute event - */ - @Override - public void attributeRemoved(HttpSessionBindingEvent event) { - - log("attributeRemoved('" + event.getSession().getId() + "', '" - + event.getName() + "', '" + event.getValue() + "')"); - - } - - /** - * Record the fact that a servlet context attribute was replaced. - * - * @param event - * The session attribute event - */ - @Override - public void attributeReplaced(HttpSessionBindingEvent event) { - - log("attributeReplaced('" + event.getSession().getId() + "', '" - + event.getName() + "', '" + event.getValue() + "')"); - - } - - /** - * Record the fact that this web application has been destroyed. - * - * @param event - * The servlet context event - */ - @Override - public void contextDestroyed(ServletContextEvent event) { - - log("contextDestroyed()"); - this.context = null; - - } - - /** - * Record the fact that this web application has been initialized. - * - * @param event - * The servlet context event - */ - @Override - public void contextInitialized(ServletContextEvent event) { - - this.context = event.getServletContext(); - log("contextInitialized()"); - - } - - /** - * Record the fact that a session has been created. - * - * @param event - * The session event - */ - @Override - public void sessionCreated(HttpSessionEvent event) { - - log("sessionCreated('" + event.getSession().getId() + "')"); - - } - - /** - * Record the fact that a session has been destroyed. - * - * @param event - * The session event - */ - @Override - public void sessionDestroyed(HttpSessionEvent event) { - - log("sessionDestroyed('" + event.getSession().getId() + "')"); - - } - - // -------------------------------------------------------- Private Methods - - /** - * Log a message to the servlet context application log. - * - * @param message - * Message to be logged - */ - private void log(String message) { - - if (context != null) - context.log("SessionListener: " + message); - else - System.out.println("SessionListener: " + message); - - } - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/nonblocking/ByteCounter.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/nonblocking/ByteCounter.java deleted file mode 100644 index 3923780216ef0a5a8b644320798ad29296c5313f..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/nonblocking/ByteCounter.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package nonblocking; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; - -import javax.servlet.AsyncContext; -import javax.servlet.ReadListener; -import javax.servlet.ServletException; -import javax.servlet.ServletInputStream; -import javax.servlet.ServletOutputStream; -import javax.servlet.WriteListener; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * This doesn't do anything particularly useful - it just counts the total - * number of bytes in a request body while demonstrating how to perform - * non-blocking reads. - */ -public class ByteCounter extends HttpServlet { - - private static final long serialVersionUID = 1L; - - @Override - protected void doGet(HttpServletRequest req, HttpServletResponse resp) - throws ServletException, IOException { - - resp.setContentType("text/plain"); - resp.setCharacterEncoding("UTF-8"); - - resp.getWriter().println("Try again using a POST request."); - } - - @Override - protected void doPost(HttpServletRequest req, HttpServletResponse resp) - throws ServletException, IOException { - - resp.setContentType("text/plain"); - resp.setCharacterEncoding("UTF-8"); - - // Non-blocking IO requires async - AsyncContext ac = req.startAsync(); - - // Use a single listener for read and write. Listeners often need to - // share state to coordinate reads and writes and this is much easier as - // a single object. - @SuppressWarnings("unused") - CounterListener listener = new CounterListener( - ac, req.getInputStream(), resp.getOutputStream()); - } - - - /** - * Keep in mind that each call may well be on a different thread to the - * previous call. Ensure that changes in values will be visible across - * threads. There should only ever be one container thread at a time calling - * the listener. - */ - private static class CounterListener implements ReadListener, WriteListener { - - private final AsyncContext ac; - private final ServletInputStream sis; - private final ServletOutputStream sos; - - private volatile boolean readFinished = false; - private volatile long totalBytesRead = 0; - private byte[] buffer = new byte[8192]; - - private CounterListener(AsyncContext ac, ServletInputStream sis, - ServletOutputStream sos) { - this.ac = ac; - this.sis = sis; - this.sos = sos; - - // In Tomcat, the order the listeners are set controls the order - // that the first calls are made. In this case, the read listener - // will be called before the write listener. - sis.setReadListener(this); - sos.setWriteListener(this); - } - - @Override - public void onDataAvailable() throws IOException { - int read = 0; - // Loop as long as there is data to read. If isReady() returns false - // the socket will be added to the poller and onDataAvailable() will - // be called again as soon as there is more data to read. - while (sis.isReady() && read > -1) { - read = sis.read(buffer); - if (read > 0) { - totalBytesRead += read; - } - } - } - - @Override - public void onAllDataRead() throws IOException { - readFinished = true; - - // If sos is not ready to write data, the call to isReady() will - // register the socket with the poller which will trigger a call to - // onWritePossible() when the socket is ready to have data written - // to it. - if (sos.isReady()) { - onWritePossible(); - } - } - - @Override - public void onWritePossible() throws IOException { - if (readFinished) { - // Must be ready to write data if onWritePossible was called - String msg = "Total bytes written = [" + totalBytesRead + "]"; - sos.write(msg.getBytes(StandardCharsets.UTF_8)); - ac.complete(); - } - } - - @Override - public void onError(Throwable throwable) { - // Should probably log the throwable - ac.complete(); - } - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/nonblocking/NumberWriter.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/nonblocking/NumberWriter.java deleted file mode 100644 index d7a6680a58441bc8c13e55b5c0262a9df2db3c76..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/nonblocking/NumberWriter.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package nonblocking; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.concurrent.atomic.AtomicInteger; - -import javax.servlet.AsyncContext; -import javax.servlet.ReadListener; -import javax.servlet.ServletException; -import javax.servlet.ServletInputStream; -import javax.servlet.ServletOutputStream; -import javax.servlet.WriteListener; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * This doesn't do anything particularly useful - it just writes a series of - * numbers to the response body while demonstrating how to perform non-blocking - * writes. - */ -public class NumberWriter extends HttpServlet { - - private static final long serialVersionUID = 1L; - - @Override - protected void doGet(HttpServletRequest req, HttpServletResponse resp) - throws ServletException, IOException { - - resp.setContentType("text/plain"); - resp.setCharacterEncoding("UTF-8"); - - // Non-blocking IO requires async - AsyncContext ac = req.startAsync(); - - // Use a single listener for read and write. Listeners often need to - // share state to coordinate reads and writes and this is much easier as - // a single object. - @SuppressWarnings("unused") - NumberWriterListener listener = new NumberWriterListener( - ac, req.getInputStream(), resp.getOutputStream()); - - } - - - /** - * Keep in mind that each call may well be on a different thread to the - * previous call. Ensure that changes in values will be visible across - * threads. There should only ever be one container thread at a time calling - * the listener. - */ - private static class NumberWriterListener implements ReadListener, - WriteListener { - - private static final int LIMIT = 10000; - - private final AsyncContext ac; - private final ServletInputStream sis; - private final ServletOutputStream sos; - private final AtomicInteger counter = new AtomicInteger(0); - - private volatile boolean readFinished = false; - private byte[] buffer = new byte[8192]; - - private NumberWriterListener(AsyncContext ac, ServletInputStream sis, - ServletOutputStream sos) { - this.ac = ac; - this.sis = sis; - this.sos = sos; - - // In Tomcat, the order the listeners are set controls the order - // that the first calls are made. In this case, the read listener - // will be called before the write listener. - sis.setReadListener(this); - sos.setWriteListener(this); - } - - @Override - public void onDataAvailable() throws IOException { - - // There should be no data to read - - int read = 0; - // Loop as long as there is data to read. If isReady() returns false - // the socket will be added to the poller and onDataAvailable() will - // be called again as soon as there is more data to read. - while (sis.isReady() && read > -1) { - read = sis.read(buffer); - if (read > 0) { - throw new IOException("Data was present in input stream"); - } - } - } - - @Override - public void onAllDataRead() throws IOException { - readFinished = true; - - // If sos is not ready to write data, the call to isReady() will - // register the socket with the poller which will trigger a call to - // onWritePossible() when the socket is ready to have data written - // to it. - if (sos.isReady()) { - onWritePossible(); - } - } - - @Override - public void onWritePossible() throws IOException { - if (readFinished) { - int i = counter.get(); - boolean ready = true; - while (i < LIMIT && ready) { - i = counter.incrementAndGet(); - String msg = String.format("%1$020d\n", Integer.valueOf(i)); - sos.write(msg.getBytes(StandardCharsets.UTF_8)); - ready = sos.isReady(); - } - - if (i == LIMIT) { - ac.complete(); - } - } - } - - @Override - public void onError(Throwable throwable) { - // Should probably log the throwable - ac.complete(); - } - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/num/NumberGuessBean.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/num/NumberGuessBean.java deleted file mode 100644 index b78bd0535827f93df8beb6ba0a381222466e9efb..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/num/NumberGuessBean.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Originally written by Jason Hunter, http://www.servlets.com. - */ - -package num; - -import java.io.Serializable; -import java.util.Random; - -public class NumberGuessBean implements Serializable { - - private static final long serialVersionUID = 1L; - - private int answer; - private String hint; - private int numGuesses; - private boolean success; - private final Random random = new Random(); - - public NumberGuessBean() { - reset(); - } - - public int getAnswer() { - return answer; - } - - public void setAnswer(int answer) { - this.answer = answer; - } - - public String getHint() { - return "" + hint; - } - - public void setHint(String hint) { - this.hint = hint; - } - - public void setNumGuesses(int numGuesses) { - this.numGuesses = numGuesses; - } - - public int getNumGuesses() { - return numGuesses; - } - - public boolean getSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public void setGuess(String guess) { - numGuesses++; - - int g; - try { - g = Integer.parseInt(guess); - } catch (NumberFormatException e) { - g = -1; - } - - if (g == answer) { - success = true; - } else if (g == -1) { - hint = "a number next time"; - } else if (g < answer) { - hint = "higher"; - } else if (g > answer) { - hint = "lower"; - } - } - - public void reset() { - answer = Math.abs(random.nextInt() % 100) + 1; - success = false; - numGuesses = 0; - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/sessions/DummyCart.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/sessions/DummyCart.java deleted file mode 100644 index bad0cb9c2bb744000b0e9186b899c564b18b00ea..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/sessions/DummyCart.java +++ /dev/null @@ -1,65 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package sessions; - -import java.util.Vector; - -public class DummyCart { - final Vector v = new Vector<>(); - String submit = null; - String item = null; - - private void addItem(String name) { - v.addElement(name); - } - - private void removeItem(String name) { - v.removeElement(name); - } - - public void setItem(String name) { - item = name; - } - - public void setSubmit(String s) { - submit = s; - } - - public String[] getItems() { - String[] s = new String[v.size()]; - v.copyInto(s); - return s; - } - - public void processRequest() { - // null value for submit - user hit enter instead of clicking on - // "add" or "remove" - if (submit == null || submit.equals("add")) - addItem(item); - else if (submit.equals("remove")) - removeItem(item); - - // reset at the end of the request - reset(); - } - - // reset - private void reset() { - submit = null; - item = null; - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/util/CookieFilter.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/util/CookieFilter.java deleted file mode 100644 index 19243eeb636ecad55830de54484b02dc7a39834c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/util/CookieFilter.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package util; - -import java.util.Locale; -import java.util.StringTokenizer; - -/** - * Processes a cookie header and attempts to obfuscate any cookie values that - * represent session IDs from other web applications. Since session cookie names - * are configurable, as are session ID lengths, this filter is not expected to - * be 100% effective. - * - * It is required that the examples web application is removed in security - * conscious environments as documented in the Security How-To. This filter is - * intended to reduce the impact of failing to follow that advice. A failure by - * this filter to obfuscate a session ID or similar value is not a security - * vulnerability. In such instances the vulnerability is the failure to remove - * the examples web application. - */ -public class CookieFilter { - - private static final String OBFUSCATED = "[obfuscated]"; - - private CookieFilter() { - // Hide default constructor - } - - public static String filter(String cookieHeader, String sessionId) { - - StringBuilder sb = new StringBuilder(cookieHeader.length()); - - // Cookie name value pairs are ';' separated. - // Session IDs don't use ; in the value so don't worry about quoted - // values that contain ; - StringTokenizer st = new StringTokenizer(cookieHeader, ";"); - - boolean first = true; - while (st.hasMoreTokens()) { - if (first) { - first = false; - } else { - sb.append(';'); - } - sb.append(filterNameValuePair(st.nextToken(), sessionId)); - } - - - return sb.toString(); - } - - private static String filterNameValuePair(String input, String sessionId) { - int i = input.indexOf('='); - if (i == -1) { - return input; - } - String name = input.substring(0, i); - String value = input.substring(i + 1, input.length()); - - return name + "=" + filter(name, value, sessionId); - } - - public static String filter(String cookieName, String cookieValue, String sessionId) { - if (cookieName.toLowerCase(Locale.ENGLISH).contains("jsessionid") && - (sessionId == null || !cookieValue.contains(sessionId))) { - cookieValue = OBFUSCATED; - } - - return cookieValue; - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/util/HTMLFilter.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/util/HTMLFilter.java deleted file mode 100644 index 9bc8cfff3fb06643f6b832a985c41dc03473ea1c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/util/HTMLFilter.java +++ /dev/null @@ -1,69 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package util; - -/** - * HTML filter utility. - * - * @author Craig R. McClanahan - * @author Tim Tye - */ -public final class HTMLFilter { - - - /** - * Filter the specified message string for characters that are sensitive - * in HTML. This avoids potential attacks caused by including JavaScript - * codes in the request URL that is often reported in error messages. - * - * @param message The message string to be filtered - * - * @return the filtered version of the message - */ - public static String filter(String message) { - - if (message == null) - return (null); - - char content[] = new char[message.length()]; - message.getChars(0, message.length(), content, 0); - StringBuilder result = new StringBuilder(content.length + 50); - for (int i = 0; i < content.length; i++) { - switch (content[i]) { - case '<': - result.append("<"); - break; - case '>': - result.append(">"); - break; - case '&': - result.append("&"); - break; - case '"': - result.append("""); - break; - default: - result.append(content[i]); - } - } - return (result.toString()); - - } - - -} - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/validators/DebugValidator.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/validators/DebugValidator.java deleted file mode 100644 index d0ac758f36a74a465586eef37348283229528a7f..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/validators/DebugValidator.java +++ /dev/null @@ -1,84 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - - -package validators; - - -import java.io.IOException; -import java.io.InputStream; - -import javax.servlet.jsp.tagext.PageData; -import javax.servlet.jsp.tagext.TagLibraryValidator; -import javax.servlet.jsp.tagext.ValidationMessage; - - -/** - * Example tag library validator that simply dumps the XML version of each - * page to standard output (which will typically be sent to the file - * $CATALINA_HOME/logs/catalina.out). To utilize it, simply - * include a taglib directive for this tag library at the top - * of your JSP page. - * - * @author Craig McClanahan - */ -public class DebugValidator extends TagLibraryValidator { - - - // ----------------------------------------------------- Instance Variables - - - // --------------------------------------------------------- Public Methods - - - /** - * Validate a JSP page. This will get invoked once per directive in the - * JSP page. This method will return null if the page is - * valid; otherwise the method should return an array of - * ValidationMessage objects. An array of length zero is - * also interpreted as no errors. - * - * @param prefix The value of the prefix argument in this directive - * @param uri The value of the URI argument in this directive - * @param page The page data for this page - */ - @Override - public ValidationMessage[] validate(String prefix, String uri, - PageData page) { - - System.out.println("---------- Prefix=" + prefix + " URI=" + uri + - "----------"); - - InputStream is = page.getInputStream(); - while (true) { - try { - int ch = is.read(); - if (ch < 0) - break; - System.out.print((char) ch); - } catch (IOException e) { - break; - } - } - System.out.println(); - System.out.println("-----------------------------------------------"); - return (null); - - } - - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/ExamplesConfig.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/ExamplesConfig.java deleted file mode 100644 index ba8c60bda32ebb8b31adbd3b7cf63d59eb07dd70..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/ExamplesConfig.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket; - -import java.util.HashSet; -import java.util.Set; - -import javax.websocket.Endpoint; -import javax.websocket.server.ServerApplicationConfig; -import javax.websocket.server.ServerEndpointConfig; - -import websocket.drawboard.DrawboardEndpoint; -import websocket.echo.EchoEndpoint; - -public class ExamplesConfig implements ServerApplicationConfig { - - @Override - public Set getEndpointConfigs( - Set> scanned) { - - Set result = new HashSet<>(); - - if (scanned.contains(EchoEndpoint.class)) { - result.add(ServerEndpointConfig.Builder.create( - EchoEndpoint.class, - "/websocket/echoProgrammatic").build()); - } - - if (scanned.contains(DrawboardEndpoint.class)) { - result.add(ServerEndpointConfig.Builder.create( - DrawboardEndpoint.class, - "/websocket/drawboard").build()); - } - - return result; - } - - - @Override - public Set> getAnnotatedEndpointClasses(Set> scanned) { - // Deploy all WebSocket endpoints defined by annotations in the examples - // web application. Filter out all others to avoid issues when running - // tests on Gump - Set> results = new HashSet<>(); - for (Class clazz : scanned) { - if (clazz.getPackage().getName().startsWith("websocket.")) { - results.add(clazz); - } - } - return results; - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/chat/ChatAnnotation.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/chat/ChatAnnotation.java deleted file mode 100644 index d1d55234da871e234ee89c608989616690527dc9..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/chat/ChatAnnotation.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.chat; - -import java.io.IOException; -import java.util.Set; -import java.util.concurrent.CopyOnWriteArraySet; -import java.util.concurrent.atomic.AtomicInteger; - -import javax.websocket.OnClose; -import javax.websocket.OnError; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.ServerEndpoint; - -import org.apache.juli.logging.Log; -import org.apache.juli.logging.LogFactory; - -import util.HTMLFilter; - -@ServerEndpoint(value = "/websocket/chat") -public class ChatAnnotation { - - private static final Log log = LogFactory.getLog(ChatAnnotation.class); - - private static final String GUEST_PREFIX = "Guest"; - private static final AtomicInteger connectionIds = new AtomicInteger(0); - private static final Set connections = - new CopyOnWriteArraySet<>(); - - private final String nickname; - private Session session; - - public ChatAnnotation() { - nickname = GUEST_PREFIX + connectionIds.getAndIncrement(); - } - - - @OnOpen - public void start(Session session) { - this.session = session; - connections.add(this); - String message = String.format("* %s %s", nickname, "has joined."); - broadcast(message); - } - - - @OnClose - public void end() { - connections.remove(this); - String message = String.format("* %s %s", - nickname, "has disconnected."); - broadcast(message); - } - - - @OnMessage - public void incoming(String message) { - // Never trust the client - String filteredMessage = String.format("%s: %s", - nickname, HTMLFilter.filter(message.toString())); - broadcast(filteredMessage); - } - - - - - @OnError - public void onError(Throwable t) throws Throwable { - log.error("Chat Error: " + t.toString(), t); - } - - - private static void broadcast(String msg) { - for (ChatAnnotation client : connections) { - try { - synchronized (client) { - client.session.getBasicRemote().sendText(msg); - } - } catch (IOException e) { - log.debug("Chat Error: Failed to send message to client", e); - connections.remove(client); - try { - client.session.close(); - } catch (IOException e1) { - // Ignore - } - String message = String.format("* %s %s", - client.nickname, "has been disconnected."); - broadcast(message); - } - } - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/Client.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/Client.java deleted file mode 100644 index 8026bf2957deb190942f49bba779d99c289d466e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/Client.java +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.drawboard; - -import java.io.IOException; -import java.util.LinkedList; - -import javax.websocket.CloseReason; -import javax.websocket.CloseReason.CloseCodes; -import javax.websocket.RemoteEndpoint.Async; -import javax.websocket.SendHandler; -import javax.websocket.SendResult; -import javax.websocket.Session; - -import websocket.drawboard.wsmessages.AbstractWebsocketMessage; -import websocket.drawboard.wsmessages.BinaryWebsocketMessage; -import websocket.drawboard.wsmessages.CloseWebsocketMessage; -import websocket.drawboard.wsmessages.StringWebsocketMessage; - -/** - * Represents a client with methods to send messages asynchronously. - */ -public class Client { - - private final Session session; - private final Async async; - - /** - * Contains the messages wich are buffered until the previous - * send operation has finished. - */ - private final LinkedList messagesToSend = - new LinkedList<>(); - /** - * If this client is currently sending a messages asynchronously. - */ - private volatile boolean isSendingMessage = false; - /** - * If this client is closing. If true, new messages to - * send will be ignored. - */ - private volatile boolean isClosing = false; - /** - * The length of all current buffered messages, to avoid iterating - * over a linked list. - */ - private volatile long messagesToSendLength = 0; - - public Client(Session session) { - this.session = session; - this.async = session.getAsyncRemote(); - } - - /** - * Asynchronously closes the Websocket session. This will wait until all - * remaining messages have been sent to the Client and then close - * the Websocket session. - */ - public void close() { - sendMessage(new CloseWebsocketMessage()); - } - - /** - * Sends the given message asynchronously to the client. - * If there is already a async sending in progress, then the message - * will be buffered and sent when possible.

    - * - * This method can be called from multiple threads. - * - * @param msg The message to send - */ - public void sendMessage(AbstractWebsocketMessage msg) { - synchronized (messagesToSend) { - if (!isClosing) { - // Check if we have a Close message - if (msg instanceof CloseWebsocketMessage) { - isClosing = true; - } - - if (isSendingMessage) { - // Check if the buffered messages exceed - // a specific amount - in that case, disconnect the client - // to prevent DoS. - // In this case we check if there are >= 1000 messages - // or length(of all messages) >= 1000000 bytes. - if (messagesToSend.size() >= 1000 - || messagesToSendLength >= 1000000) { - isClosing = true; - - // Discard the new message and close the session immediately. - CloseReason cr = new CloseReason( - CloseCodes.VIOLATED_POLICY, - "Send Buffer exceeded"); - try { - // TODO: close() may block if the remote endpoint doesn't read the data - // (eventually there will be a TimeoutException). However, this method - // (sendMessage) is intended to run asynchronous code and shouldn't - // block. Otherwise it would temporarily stop processing of messages - // from other clients. - // Maybe call this method on another thread. - // Note that when this method is called, the RemoteEndpoint.Async - // is still in the process of sending data, so there probably should - // be another way to abort the Websocket connection. - // Ideally, there should be some abort() method that cancels the - // connection immediately... - session.close(cr); - } catch (IOException e) { - // Ignore - } - - } else { - - // Check if the last message and the new message are - // String messages - in that case we concatenate them - // to reduce TCP overhead (using ";" as separator). - if (msg instanceof StringWebsocketMessage - && !messagesToSend.isEmpty() - && messagesToSend.getLast() - instanceof StringWebsocketMessage) { - - StringWebsocketMessage ms = - (StringWebsocketMessage) messagesToSend.removeLast(); - messagesToSendLength -= calculateMessageLength(ms); - - String concatenated = ms.getString() + ";" + - ((StringWebsocketMessage) msg).getString(); - msg = new StringWebsocketMessage(concatenated); - } - - messagesToSend.add(msg); - messagesToSendLength += calculateMessageLength(msg); - } - } else { - isSendingMessage = true; - internalSendMessageAsync(msg); - } - } - - } - } - - private long calculateMessageLength(AbstractWebsocketMessage msg) { - if (msg instanceof BinaryWebsocketMessage) { - return ((BinaryWebsocketMessage) msg).getBytes().capacity(); - } else if (msg instanceof StringWebsocketMessage) { - return ((StringWebsocketMessage) msg).getString().length() * 2; - } - - return 0; - } - - /** - * Internally sends the messages asynchronously. - * @param msg - */ - private void internalSendMessageAsync(AbstractWebsocketMessage msg) { - try { - if (msg instanceof StringWebsocketMessage) { - StringWebsocketMessage sMsg = (StringWebsocketMessage) msg; - async.sendText(sMsg.getString(), sendHandler); - - } else if (msg instanceof BinaryWebsocketMessage) { - BinaryWebsocketMessage bMsg = (BinaryWebsocketMessage) msg; - async.sendBinary(bMsg.getBytes(), sendHandler); - - } else if (msg instanceof CloseWebsocketMessage) { - // Close the session. - session.close(); - } - } catch (IllegalStateException|IOException ex) { - // Trying to write to the client when the session has - // already been closed. - // Ignore - } - } - - - - /** - * SendHandler that will continue to send buffered messages. - */ - private final SendHandler sendHandler = new SendHandler() { - @Override - public void onResult(SendResult result) { - if (!result.isOK()) { - // Message could not be sent. In this case, we don't - // set isSendingMessage to false because we must assume the connection - // broke (and onClose will be called), so we don't try to send - // other messages. - // As a precaution, we close the session (e.g. if a send timeout occured). - // TODO: session.close() blocks, while this handler shouldn't block. - // Ideally, there should be some abort() method that cancels the - // connection immediately... - try { - session.close(); - } catch (IOException ex) { - // Ignore - } - } - synchronized (messagesToSend) { - - if (!messagesToSend.isEmpty()) { - AbstractWebsocketMessage msg = messagesToSend.remove(); - messagesToSendLength -= calculateMessageLength(msg); - - internalSendMessageAsync(msg); - - } else { - isSendingMessage = false; - } - - } - } - }; - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawMessage.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawMessage.java deleted file mode 100644 index 8dceabae078b1bc283faea8a800e30728ecc7c37..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawMessage.java +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.drawboard; - -import java.awt.BasicStroke; -import java.awt.Color; -import java.awt.Graphics2D; -import java.awt.geom.Arc2D; -import java.awt.geom.Line2D; -import java.awt.geom.Rectangle2D; - -/** - * A message that represents a drawing action. - * Note that we use primitive types instead of Point, Color etc. - * to reduce object allocation.

    - * - * TODO: But a Color objects needs to be created anyway for drawing this - * onto a Graphics2D object, so this probably does not save much. - */ -public final class DrawMessage { - - private int type; - private byte colorR, colorG, colorB, colorA; - private double thickness; - private double x1, y1, x2, y2; - - /** - * The type. - * - * @return 1: Brush
    2: Line
    3: Rectangle
    4: Ellipse - */ - public int getType() { - return type; - } - public void setType(int type) { - this.type = type; - } - - public double getThickness() { - return thickness; - } - public void setThickness(double thickness) { - this.thickness = thickness; - } - - public byte getColorR() { - return colorR; - } - public void setColorR(byte colorR) { - this.colorR = colorR; - } - public byte getColorG() { - return colorG; - } - public void setColorG(byte colorG) { - this.colorG = colorG; - } - public byte getColorB() { - return colorB; - } - public void setColorB(byte colorB) { - this.colorB = colorB; - } - public byte getColorA() { - return colorA; - } - public void setColorA(byte colorA) { - this.colorA = colorA; - } - - public double getX1() { - return x1; - } - public void setX1(double x1) { - this.x1 = x1; - } - public double getX2() { - return x2; - } - public void setX2(double x2) { - this.x2 = x2; - } - public double getY1() { - return y1; - } - public void setY1(double y1) { - this.y1 = y1; - } - public double getY2() { - return y2; - } - public void setY2(double y2) { - this.y2 = y2; - } - - - public DrawMessage(int type, byte colorR, byte colorG, byte colorB, - byte colorA, double thickness, double x1, double x2, double y1, - double y2) { - - this.type = type; - this.colorR = colorR; - this.colorG = colorG; - this.colorB = colorB; - this.colorA = colorA; - this.thickness = thickness; - this.x1 = x1; - this.x2 = x2; - this.y1 = y1; - this.y2 = y2; - } - - - /** - * Draws this DrawMessage onto the given Graphics2D. - * - * @param g The target for the DrawMessage - */ - public void draw(Graphics2D g) { - - g.setStroke(new BasicStroke((float) thickness, - BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)); - g.setColor(new Color(colorR & 0xFF, colorG & 0xFF, colorB & 0xFF, - colorA & 0xFF)); - - if (x1 == x2 && y1 == y2) { - // Always draw as arc to meet the behavior in the HTML5 Canvas. - Arc2D arc = new Arc2D.Double(x1, y1, 0, 0, - 0d, 360d, Arc2D.OPEN); - g.draw(arc); - - } else if (type == 1 || type == 2) { - // Draw a line. - Line2D line = new Line2D.Double(x1, y1, x2, y2); - g.draw(line); - - } else if (type == 3 || type == 4) { - double x1 = this.x1, x2 = this.x2, - y1 = this.y1, y2 = this.y2; - if (x1 > x2) { - x1 = this.x2; - x2 = this.x1; - } - if (y1 > y2) { - y1 = this.y2; - y2 = this.y1; - } - - // TODO: If (x1 == x2 || y1 == y2) draw as line. - - if (type == 3) { - // Draw a rectangle. - Rectangle2D rect = new Rectangle2D.Double(x1, y1, - x2 - x1, y2 - y1); - g.draw(rect); - - } else if (type == 4) { - // Draw an ellipse. - Arc2D arc = new Arc2D.Double(x1, y1, x2 - x1, y2 - y1, - 0d, 360d, Arc2D.OPEN); - g.draw(arc); - - } - } - } - - /** - * Converts this message into a String representation that - * can be sent over WebSocket.
    - * Since a DrawMessage consists only of numbers, - * we concatenate those numbers with a ",". - */ - @Override - public String toString() { - - return type + "," + (colorR & 0xFF) + "," + (colorG & 0xFF) + "," - + (colorB & 0xFF) + "," + (colorA & 0xFF) + "," + thickness - + "," + x1 + "," + y1 + "," + x2 + "," + y2; - } - - public static DrawMessage parseFromString(String str) - throws ParseException { - - int type; - byte[] colors = new byte[4]; - double thickness; - double[] coords = new double[4]; - - try { - String[] elements = str.split(","); - - type = Integer.parseInt(elements[0]); - if (!(type >= 1 && type <= 4)) - throw new ParseException("Invalid type: " + type); - - for (int i = 0; i < colors.length; i++) { - colors[i] = (byte) Integer.parseInt(elements[1 + i]); - } - - thickness = Double.parseDouble(elements[5]); - if (Double.isNaN(thickness) || thickness < 0 || thickness > 100) - throw new ParseException("Invalid thickness: " + thickness); - - for (int i = 0; i < coords.length; i++) { - coords[i] = Double.parseDouble(elements[6 + i]); - if (Double.isNaN(coords[i])) - throw new ParseException("Invalid coordinate: " - + coords[i]); - } - - } catch (RuntimeException ex) { - throw new ParseException(ex); - } - - DrawMessage m = new DrawMessage(type, colors[0], colors[1], - colors[2], colors[3], thickness, coords[0], coords[2], - coords[1], coords[3]); - - return m; - } - - public static class ParseException extends Exception { - private static final long serialVersionUID = -6651972769789842960L; - - public ParseException(Throwable root) { - super(root); - } - - public ParseException(String message) { - super(message); - } - } - - - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardContextListener.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardContextListener.java deleted file mode 100644 index dd022ba6e7c491365dfdd57056cde153571a1a2b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardContextListener.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.drawboard; - -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; - -public final class DrawboardContextListener implements ServletContextListener { - - @Override - public void contextInitialized(ServletContextEvent sce) { - // NO-OP - } - - @Override - public void contextDestroyed(ServletContextEvent sce) { - // Shutdown our room. - Room room = DrawboardEndpoint.getRoom(false); - if (room != null) { - room.shutdown(); - } - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint.java deleted file mode 100644 index cd99f495761bb015ae215e614ebf29ec9eecf83c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint.java +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.drawboard; - -import java.io.EOFException; -import java.io.IOException; - -import javax.websocket.CloseReason; -import javax.websocket.Endpoint; -import javax.websocket.EndpointConfig; -import javax.websocket.MessageHandler; -import javax.websocket.Session; - -import org.apache.juli.logging.Log; -import org.apache.juli.logging.LogFactory; - -import websocket.drawboard.DrawMessage.ParseException; -import websocket.drawboard.wsmessages.StringWebsocketMessage; - - -public final class DrawboardEndpoint extends Endpoint { - - private static final Log log = - LogFactory.getLog(DrawboardEndpoint.class); - - - /** - * Our room where players can join. - */ - private static volatile Room room = null; - private static final Object roomLock = new Object(); - - public static Room getRoom(boolean create) { - if (create) { - if (room == null) { - synchronized (roomLock) { - if (room == null) { - room = new Room(); - } - } - } - return room; - } else { - return room; - } - } - - /** - * The player that is associated with this Endpoint and the current room. - * Note that this variable is only accessed from the Room Thread.

    - * - * TODO: Currently, Tomcat uses an Endpoint instance once - however - * the java doc of endpoint says: - * "Each instance of a websocket endpoint is guaranteed not to be called by - * more than one thread at a time per active connection." - * This could mean that after calling onClose(), the instance - * could be reused for another connection so onOpen() will get called - * (possibly from another thread).
    - * If this is the case, we would need a variable holder for the variables - * that are accessed by the Room thread, and read the reference to the holder - * at the beginning of onOpen, onMessage, onClose methods to ensure the room - * thread always gets the correct instance of the variable holder. - */ - private Room.Player player; - - - @Override - public void onOpen(Session session, EndpointConfig config) { - // Set maximum messages size to 10.000 bytes. - session.setMaxTextMessageBufferSize(10000); - session.addMessageHandler(stringHandler); - final Client client = new Client(session); - - final Room room = getRoom(true); - room.invokeAndWait(new Runnable() { - @Override - public void run() { - try { - - // Create a new Player and add it to the room. - try { - player = room.createAndAddPlayer(client); - } catch (IllegalStateException ex) { - // Probably the max. number of players has been - // reached. - client.sendMessage(new StringWebsocketMessage( - "0" + ex.getLocalizedMessage())); - // Close the connection. - client.close(); - } - - } catch (RuntimeException ex) { - log.error("Unexpected exception: " + ex.toString(), ex); - } - } - }); - - } - - - @Override - public void onClose(Session session, CloseReason closeReason) { - Room room = getRoom(false); - if (room != null) { - room.invokeAndWait(new Runnable() { - @Override - public void run() { - try { - // Player can be null if it couldn't enter the room - if (player != null) { - // Remove this player from the room. - player.removeFromRoom(); - - // Set player to null to prevent NPEs when onMessage events - // are processed (from other threads) after onClose has been - // called from different thread which closed the Websocket session. - player = null; - } - } catch (RuntimeException ex) { - log.error("Unexpected exception: " + ex.toString(), ex); - } - } - }); - } - } - - - - @Override - public void onError(Session session, Throwable t) { - // Most likely cause is a user closing their browser. Check to see if - // the root cause is EOF and if it is ignore it. - // Protect against infinite loops. - int count = 0; - Throwable root = t; - while (root.getCause() != null && count < 20) { - root = root.getCause(); - count ++; - } - if (root instanceof EOFException) { - // Assume this is triggered by the user closing their browser and - // ignore it. - } else if (!session.isOpen() && root instanceof IOException) { - // IOException after close. Assume this is a variation of the user - // closing their browser (or refreshing very quickly) and ignore it. - } else { - log.error("onError: " + t.toString(), t); - } - } - - - - private final MessageHandler.Whole stringHandler = - new MessageHandler.Whole() { - - @Override - public void onMessage(final String message) { - // Invoke handling of the message in the room. - room.invokeAndWait(new Runnable() { - @Override - public void run() { - try { - - // Currently, the only types of messages the client will send - // are draw messages prefixed by a Message ID - // (starting with char '1'), and pong messages (starting - // with char '0'). - // Draw messages should look like this: - // ID|type,colR,colB,colG,colA,thickness,x1,y1,x2,y2,lastInChain - - boolean dontSwallowException = false; - try { - char messageType = message.charAt(0); - String messageContent = message.substring(1); - switch (messageType) { - case '0': - // Pong message. - // Do nothing. - break; - - case '1': - // Draw message - int indexOfChar = messageContent.indexOf('|'); - long msgId = Long.parseLong( - messageContent.substring(0, indexOfChar)); - - DrawMessage msg = DrawMessage.parseFromString( - messageContent.substring(indexOfChar + 1)); - - // Don't ignore RuntimeExceptions thrown by - // this method - // TODO: Find a better solution than this variable - dontSwallowException = true; - if (player != null) { - player.handleDrawMessage(msg, msgId); - } - dontSwallowException = false; - - break; - } - } catch (ParseException e) { - // Client sent invalid data - // Ignore, TODO: maybe close connection - } catch (RuntimeException e) { - // Client sent invalid data. - // Ignore, TODO: maybe close connection - if (dontSwallowException) { - throw e; - } - } - - } catch (RuntimeException ex) { - log.error("Unexpected exception: " + ex.toString(), ex); - } - } - }); - - } - }; - - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.java deleted file mode 100644 index 558273f841006bafc74ef19c46e1a879958ce162..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.java +++ /dev/null @@ -1,496 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.drawboard; - -import java.awt.Color; -import java.awt.Graphics2D; -import java.awt.RenderingHints; -import java.awt.image.BufferedImage; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Timer; -import java.util.TimerTask; -import java.util.concurrent.locks.ReentrantLock; - -import javax.imageio.ImageIO; - -import websocket.drawboard.wsmessages.BinaryWebsocketMessage; -import websocket.drawboard.wsmessages.StringWebsocketMessage; - -/** - * A Room represents a drawboard where a number of - * users participate.

    - * - * Note: Instance methods should only be invoked by calling - * {@link #invokeAndWait(Runnable)} to ensure access is correctly synchronized. - */ -public final class Room { - - /** - * Specifies the type of a room message that is sent to a client.
    - * Note: Currently we are sending simple string messages - for production - * apps, a JSON lib should be used for object-level messages.

    - * - * The number (single char) will be prefixed to the string when sending - * the message. - */ - public static enum MessageType { - /** - * '0': Error: contains error message. - */ - ERROR('0'), - /** - * '1': DrawMessage: contains serialized DrawMessage(s) prefixed - * with the current Player's {@link Player#lastReceivedMessageId} - * and ",".
    - * Multiple draw messages are concatenated with "|" as separator. - */ - DRAW_MESSAGE('1'), - /** - * '2': ImageMessage: Contains number of current players in this room. - * After this message a Binary Websocket message will follow, - * containing the current Room image as PNG.
    - * This is the first message that a Room sends to a new Player. - */ - IMAGE_MESSAGE('2'), - /** - * '3': PlayerChanged: contains "+" or "-" which indicate a player - * was added or removed to this Room. - */ - PLAYER_CHANGED('3'); - - private final char flag; - - private MessageType(char flag) { - this.flag = flag; - } - - } - - - /** - * The lock used to synchronize access to this Room. - */ - private final ReentrantLock roomLock = new ReentrantLock(); - - /** - * Indicates if this room has already been shutdown. - */ - private volatile boolean closed = false; - - /** - * If true, outgoing DrawMessages will be buffered until the - * drawmessageBroadcastTimer ticks. Otherwise they will be sent - * immediately. - */ - private static final boolean BUFFER_DRAW_MESSAGES = true; - - /** - * A timer which sends buffered drawmessages to the client at once - * at a regular interval, to avoid sending a lot of very small - * messages which would cause TCP overhead and high CPU usage. - */ - private final Timer drawmessageBroadcastTimer = new Timer(); - - private static final int TIMER_DELAY = 30; - - /** - * The current active broadcast timer task. If null, then no Broadcast task is scheduled. - * The Task will be scheduled if the first player enters the Room, and - * cancelled if the last player exits the Room, to avoid unnecessary timer executions. - */ - private TimerTask activeBroadcastTimerTask; - - - /** - * The current image of the room drawboard. DrawMessages that are - * received from Players will be drawn onto this image. - */ - private final BufferedImage roomImage = - new BufferedImage(900, 600, BufferedImage.TYPE_INT_RGB); - private final Graphics2D roomGraphics = roomImage.createGraphics(); - - - /** - * The maximum number of players that can join this room. - */ - private static final int MAX_PLAYER_COUNT = 100; - - /** - * List of all currently joined players. - */ - private final List players = new ArrayList<>(); - - - - public Room() { - roomGraphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, - RenderingHints.VALUE_ANTIALIAS_ON); - - // Clear the image with white background. - roomGraphics.setBackground(Color.WHITE); - roomGraphics.clearRect(0, 0, roomImage.getWidth(), - roomImage.getHeight()); - } - - private TimerTask createBroadcastTimerTask() { - return new TimerTask() { - @Override - public void run() { - invokeAndWait(new Runnable() { - @Override - public void run() { - broadcastTimerTick(); - } - }); - } - }; - } - - /** - * Creates a Player from the given Client and adds it to this room. - * - * @param client the client - * - * @return The newly created player - */ - public Player createAndAddPlayer(Client client) { - if (players.size() >= MAX_PLAYER_COUNT) { - throw new IllegalStateException("Maximum player count (" - + MAX_PLAYER_COUNT + ") has been reached."); - } - - Player p = new Player(this, client); - - // Broadcast to the other players that one player joined. - broadcastRoomMessage(MessageType.PLAYER_CHANGED, "+"); - - // Add the new player to the list. - players.add(p); - - // If currently no Broadcast Timer Task is scheduled, then we need to create one. - if (activeBroadcastTimerTask == null) { - activeBroadcastTimerTask = createBroadcastTimerTask(); - drawmessageBroadcastTimer.schedule(activeBroadcastTimerTask, - TIMER_DELAY, TIMER_DELAY); - } - - // Send him the current number of players and the current room image. - String content = String.valueOf(players.size()); - p.sendRoomMessage(MessageType.IMAGE_MESSAGE, content); - - // Store image as PNG - ByteArrayOutputStream bout = new ByteArrayOutputStream(); - try { - ImageIO.write(roomImage, "PNG", bout); - } catch (IOException e) { /* Should never happen */ } - - - // Send the image as binary message. - BinaryWebsocketMessage msg = new BinaryWebsocketMessage( - ByteBuffer.wrap(bout.toByteArray())); - p.getClient().sendMessage(msg); - - return p; - - } - - /** - * @see Player#removeFromRoom() - * @param p - */ - private void internalRemovePlayer(Player p) { - boolean removed = players.remove(p); - assert removed; - - // If the last player left the Room, we need to cancel the Broadcast Timer Task. - if (players.size() == 0) { - // Cancel the task. - // Note that it can happen that the TimerTask is just about to execute (from - // the Timer thread) but waits until all players are gone (or even until a new - // player is added to the list), and then executes. This is OK. To prevent it, - // a TimerTask subclass would need to have some boolean "cancel" instance variable and - // query it in the invocation of Room#invokeAndWait. - activeBroadcastTimerTask.cancel(); - activeBroadcastTimerTask = null; - } - - // Broadcast that one player is removed. - broadcastRoomMessage(MessageType.PLAYER_CHANGED, "-"); - } - - /** - * @see Player#handleDrawMessage(DrawMessage, long) - * @param p - * @param msg - * @param msgId - */ - private void internalHandleDrawMessage(Player p, DrawMessage msg, - long msgId) { - p.setLastReceivedMessageId(msgId); - - // Draw the RoomMessage onto our Room Image. - msg.draw(roomGraphics); - - // Broadcast the Draw Message. - broadcastDrawMessage(msg); - } - - - /** - * Broadcasts the given drawboard message to all connected players.
    - * Note: For DrawMessages, please use - * {@link #broadcastDrawMessage(DrawMessage)} - * as this method will buffer them and prefix them with the correct - * last received Message ID. - * @param type - * @param content - */ - private void broadcastRoomMessage(MessageType type, String content) { - for (Player p : players) { - p.sendRoomMessage(type, content); - } - } - - - /** - * Broadcast the given DrawMessage. This will buffer the message - * and the {@link #drawmessageBroadcastTimer} will broadcast them - * at a regular interval, prefixing them with the player's current - * {@link Player#lastReceivedMessageId}. - * @param msg - */ - private void broadcastDrawMessage(DrawMessage msg) { - if (!BUFFER_DRAW_MESSAGES) { - String msgStr = msg.toString(); - - for (Player p : players) { - String s = String.valueOf(p.getLastReceivedMessageId()) - + "," + msgStr; - p.sendRoomMessage(MessageType.DRAW_MESSAGE, s); - } - } else { - for (Player p : players) { - p.getBufferedDrawMessages().add(msg); - } - } - } - - - /** - * Tick handler for the broadcastTimer. - */ - private void broadcastTimerTick() { - // For each Player, send all per Player buffered - // DrawMessages, prefixing each DrawMessage with the player's - // lastReceivedMessageId. - // Multiple messages are concatenated with "|". - - for (Player p : players) { - - StringBuilder sb = new StringBuilder(); - List drawMessages = p.getBufferedDrawMessages(); - - if (drawMessages.size() > 0) { - for (int i = 0; i < drawMessages.size(); i++) { - DrawMessage msg = drawMessages.get(i); - - String s = String.valueOf(p.getLastReceivedMessageId()) - + "," + msg.toString(); - if (i > 0) - sb.append("|"); - - sb.append(s); - } - drawMessages.clear(); - - p.sendRoomMessage(MessageType.DRAW_MESSAGE, sb.toString()); - } - } - } - - /** - * A list of cached {@link Runnable}s to prevent recursive invocation of Runnables - * by one thread. This variable is only used by one thread at a time and then - * set to null. - */ - private List cachedRunnables = null; - - /** - * Submits the given Runnable to the Room Executor and waits until it - * has been executed. Currently, this simply means that the Runnable - * will be run directly inside of a synchronized() block.
    - * Note that if a runnable recursively calls invokeAndWait() with another - * runnable on this Room, it will not be executed recursively, but instead - * cached until the original runnable is finished, to keep the behavior of - * using a Executor. - * - * @param task The task to be executed - */ - public void invokeAndWait(Runnable task) { - - // Check if the current thread already holds a lock on this room. - // If yes, then we must not directly execute the Runnable but instead - // cache it until the original invokeAndWait() has finished. - if (roomLock.isHeldByCurrentThread()) { - - if (cachedRunnables == null) { - cachedRunnables = new ArrayList<>(); - } - cachedRunnables.add(task); - - } else { - - roomLock.lock(); - try { - // Explicitly overwrite value to ensure data consistency in - // current thread - cachedRunnables = null; - - if (!closed) { - task.run(); - } - - // Run the cached runnables. - if (cachedRunnables != null) { - for (int i = 0; i < cachedRunnables.size(); i++) { - if (!closed) { - cachedRunnables.get(i).run(); - } - } - cachedRunnables = null; - } - - } finally { - roomLock.unlock(); - } - - } - - } - - /** - * Shuts down the roomExecutor and the drawmessageBroadcastTimer. - */ - public void shutdown() { - invokeAndWait(new Runnable() { - @Override - public void run() { - closed = true; - drawmessageBroadcastTimer.cancel(); - roomGraphics.dispose(); - } - }); - } - - - /** - * A Player participates in a Room. It is the interface between the - * {@link Room} and the {@link Client}.

    - * - * Note: This means a player object is actually a join between Room and - * Client. - */ - public final class Player { - - /** - * The room to which this player belongs. - */ - private Room room; - - /** - * The room buffers the last draw message ID that was received from - * this player. - */ - private long lastReceivedMessageId = 0; - - private final Client client; - - /** - * Buffered DrawMessages that will be sent by a Timer. - */ - private final List bufferedDrawMessages = - new ArrayList<>(); - - private List getBufferedDrawMessages() { - return bufferedDrawMessages; - } - - private Player(Room room, Client client) { - this.room = room; - this.client = client; - } - - public Room getRoom() { - return room; - } - - public Client getClient() { - return client; - } - - /** - * Removes this player from its room, e.g. when - * the client disconnects. - */ - public void removeFromRoom() { - if (room != null) { - room.internalRemovePlayer(this); - room = null; - } - } - - - private long getLastReceivedMessageId() { - return lastReceivedMessageId; - } - private void setLastReceivedMessageId(long value) { - lastReceivedMessageId = value; - } - - - /** - * Handles the given DrawMessage by drawing it onto this Room's - * image and by broadcasting it to the connected players. - * - * @param msg The draw message received - * @param msgId The ID for the draw message received - */ - public void handleDrawMessage(DrawMessage msg, long msgId) { - room.internalHandleDrawMessage(this, msg, msgId); - } - - - /** - * Sends the given room message. - * @param type - * @param content - */ - private void sendRoomMessage(MessageType type, String content) { - Objects.requireNonNull(content); - Objects.requireNonNull(type); - - String completeMsg = String.valueOf(type.flag) + content; - - client.sendMessage(new StringWebsocketMessage(completeMsg)); - } - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/AbstractWebsocketMessage.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/AbstractWebsocketMessage.java deleted file mode 100644 index d42539372f4cb33143ee9f3a796623cba4fc2331..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/AbstractWebsocketMessage.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.drawboard.wsmessages; - -/** - * Abstract base class for Websocket Messages (binary or string) - * that can be buffered. - */ -public abstract class AbstractWebsocketMessage { - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/BinaryWebsocketMessage.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/BinaryWebsocketMessage.java deleted file mode 100644 index b16e1aede6de633ed48ebedc3c84d732465f4ffa..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/BinaryWebsocketMessage.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.drawboard.wsmessages; - -import java.nio.ByteBuffer; - -/** - * Represents a binary websocket message. - */ -public final class BinaryWebsocketMessage extends AbstractWebsocketMessage { - private final ByteBuffer bytes; - - public BinaryWebsocketMessage(ByteBuffer bytes) { - this.bytes = bytes; - } - - public ByteBuffer getBytes() { - return bytes; - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/CloseWebsocketMessage.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/CloseWebsocketMessage.java deleted file mode 100644 index 44f48adb748dd51253a3cb73cf461dc5778c0213..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/CloseWebsocketMessage.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.drawboard.wsmessages; - -/** - * Represents a "close" message that closes the session. - */ -public class CloseWebsocketMessage extends AbstractWebsocketMessage { - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/StringWebsocketMessage.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/StringWebsocketMessage.java deleted file mode 100644 index 49be36935b20eae995149fe27b95d849cf82aefc..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/StringWebsocketMessage.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.drawboard.wsmessages; - -/** - * Represents a string websocket message. - * - */ -public final class StringWebsocketMessage extends AbstractWebsocketMessage { - private final String string; - - public StringWebsocketMessage(String string) { - this.string = string; - } - - public String getString() { - return string; - } - -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.java deleted file mode 100644 index 34f0de2c1b410226ca40574fd9ce1eb145a937e1..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.echo; - -import java.io.IOException; -import java.nio.ByteBuffer; - -import javax.websocket.OnMessage; -import javax.websocket.PongMessage; -import javax.websocket.Session; -import javax.websocket.server.ServerEndpoint; - -/** - * The three annotated echo endpoints can be used to test with Autobahn and - * the following command "wstest -m fuzzingclient -s servers.json". See the - * Autobahn documentation for setup and general information. - */ -@ServerEndpoint("/websocket/echoAnnotation") -public class EchoAnnotation { - - @OnMessage - public void echoTextMessage(Session session, String msg, boolean last) { - try { - if (session.isOpen()) { - session.getBasicRemote().sendText(msg, last); - } - } catch (IOException e) { - try { - session.close(); - } catch (IOException e1) { - // Ignore - } - } - } - - @OnMessage - public void echoBinaryMessage(Session session, ByteBuffer bb, - boolean last) { - try { - if (session.isOpen()) { - session.getBasicRemote().sendBinary(bb, last); - } - } catch (IOException e) { - try { - session.close(); - } catch (IOException e1) { - // Ignore - } - } - } - - /** - * Process a received pong. This is a NO-OP. - * - * @param pm Ignored. - */ - @OnMessage - public void echoPongMessage(PongMessage pm) { - // NO-OP - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/echo/EchoAsyncAnnotation.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/echo/EchoAsyncAnnotation.java deleted file mode 100644 index 39df783b721e0bc23aa70f9fdf8e8aa6951ddd99..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/echo/EchoAsyncAnnotation.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.echo; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -import javax.websocket.OnMessage; -import javax.websocket.PongMessage; -import javax.websocket.Session; - -/** - * The three annotated echo endpoints can be used to test with Autobahn and - * the following command "wstest -m fuzzingclient -s servers.json". See the - * Autobahn documentation for setup and general information. - * - * Note: This one is disabled by default since it allocates memory, and needs - * to be enabled back. - */ -//@javax.websocket.server.ServerEndpoint("/websocket/echoAsyncAnnotation") -public class EchoAsyncAnnotation { - - private static final Future COMPLETED = new CompletedFuture(); - - Future f = COMPLETED; - StringBuilder sb = null; - ByteArrayOutputStream bytes = null; - - @OnMessage - public void echoTextMessage(Session session, String msg, boolean last) { - if (sb == null) { - sb = new StringBuilder(); - } - sb.append(msg); - if (last) { - // Before we send the next message, have to wait for the previous - // message to complete - try { - f.get(); - } catch (InterruptedException | ExecutionException e) { - // Let the container deal with it - throw new RuntimeException(e); - } - f = session.getAsyncRemote().sendText(sb.toString()); - sb = null; - } - } - - @OnMessage - public void echoBinaryMessage(byte[] msg, Session session, boolean last) - throws IOException { - if (bytes == null) { - bytes = new ByteArrayOutputStream(); - } - bytes.write(msg); - if (last) { - // Before we send the next message, have to wait for the previous - // message to complete - try { - f.get(); - } catch (InterruptedException | ExecutionException e) { - // Let the container deal with it - throw new RuntimeException(e); - } - f = session.getAsyncRemote().sendBinary(ByteBuffer.wrap(bytes.toByteArray())); - bytes = null; - } - } - - /** - * Process a received pong. This is a NO-OP. - * - * @param pm Ignored. - */ - @OnMessage - public void echoPongMessage(PongMessage pm) { - // NO-OP - } - - private static class CompletedFuture implements Future { - - @Override - public boolean cancel(boolean mayInterruptIfRunning) { - return false; - } - - @Override - public boolean isCancelled() { - return false; - } - - @Override - public boolean isDone() { - return true; - } - - @Override - public Void get() throws InterruptedException, ExecutionException { - return null; - } - - @Override - public Void get(long timeout, TimeUnit unit) - throws InterruptedException, ExecutionException, - TimeoutException { - return null; - } - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint.java deleted file mode 100644 index 362023829825b06df934ae0afa0b95101eced649..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.echo; - -import java.io.IOException; -import java.nio.ByteBuffer; - -import javax.websocket.Endpoint; -import javax.websocket.EndpointConfig; -import javax.websocket.MessageHandler; -import javax.websocket.RemoteEndpoint; -import javax.websocket.Session; - -public class EchoEndpoint extends Endpoint { - - @Override - public void onOpen(Session session, EndpointConfig endpointConfig) { - RemoteEndpoint.Basic remoteEndpointBasic = session.getBasicRemote(); - session.addMessageHandler(new EchoMessageHandlerText(remoteEndpointBasic)); - session.addMessageHandler(new EchoMessageHandlerBinary(remoteEndpointBasic)); - } - - private static class EchoMessageHandlerText - implements MessageHandler.Partial { - - private final RemoteEndpoint.Basic remoteEndpointBasic; - - private EchoMessageHandlerText(RemoteEndpoint.Basic remoteEndpointBasic) { - this.remoteEndpointBasic = remoteEndpointBasic; - } - - @Override - public void onMessage(String message, boolean last) { - try { - if (remoteEndpointBasic != null) { - remoteEndpointBasic.sendText(message, last); - } - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } - - private static class EchoMessageHandlerBinary - implements MessageHandler.Partial { - - private final RemoteEndpoint.Basic remoteEndpointBasic; - - private EchoMessageHandlerBinary(RemoteEndpoint.Basic remoteEndpointBasic) { - this.remoteEndpointBasic = remoteEndpointBasic; - } - - @Override - public void onMessage(ByteBuffer message, boolean last) { - try { - if (remoteEndpointBasic != null) { - remoteEndpointBasic.sendBinary(message, last); - } - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/echo/EchoStreamAnnotation.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/echo/EchoStreamAnnotation.java deleted file mode 100644 index 7aef82110cf8bc5b698c02ecd8cc36755e420fa4..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/echo/EchoStreamAnnotation.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.echo; - -import java.io.IOException; -import java.io.OutputStream; -import java.io.Writer; - -import javax.websocket.OnMessage; -import javax.websocket.PongMessage; -import javax.websocket.Session; -import javax.websocket.server.ServerEndpoint; - -/** - * The three annotated echo endpoints can be used to test with Autobahn and - * the following command "wstest -m fuzzingclient -s servers.json". See the - * Autobahn documentation for setup and general information. - */ -@ServerEndpoint("/websocket/echoStreamAnnotation") -public class EchoStreamAnnotation { - - Writer writer; - OutputStream stream; - - @OnMessage - public void echoTextMessage(Session session, String msg, boolean last) - throws IOException { - if (writer == null) { - writer = session.getBasicRemote().getSendWriter(); - } - writer.write(msg); - if (last) { - writer.close(); - writer = null; - } - } - - @OnMessage - public void echoBinaryMessage(byte[] msg, Session session, boolean last) - throws IOException { - if (stream == null) { - stream = session.getBasicRemote().getSendStream(); - } - stream.write(msg); - stream.flush(); - if (last) { - stream.close(); - stream = null; - } - } - - /** - * Process a received pong. This is a NO-OP. - * - * @param pm Ignored. - */ - @OnMessage - public void echoPongMessage(PongMessage pm) { - // NO-OP - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/echo/servers.json b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/echo/servers.json deleted file mode 100644 index c816a7d9e82b059221664164f5f39cafb6d9e57b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/echo/servers.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "options": {"failByDrop": false}, - "outdir": "./reports/servers", - - "servers": [ - {"agent": "Basic", - "url": "ws://localhost:8080/examples/websocket/echoAnnotation", - "options": {"version": 18}}, - {"agent": "Stream", - "url": "ws://localhost:8080/examples/websocket/echoStreamAnnotation", - "options": {"version": 18}}, - {"agent": "Async", - "url": "ws://localhost:8080/examples/websocket/echoAsyncAnnotation", - "options": {"version": 18}} - ], - - "cases": ["*"], - "exclude-cases": [], - "exclude-agent-cases": {} -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/snake/Direction.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/snake/Direction.java deleted file mode 100644 index 4440c9ded517728e3d332883fb4d450bdcfe5892..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/snake/Direction.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.snake; - -public enum Direction { - NONE, NORTH, SOUTH, EAST, WEST -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/snake/Location.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/snake/Location.java deleted file mode 100644 index acbfeb779ea2df8b070d14ee6a388bd51b5a4cf9..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/snake/Location.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.snake; - -public class Location { - - public int x; - public int y; - - public Location(int x, int y) { - this.x = x; - this.y = y; - } - - public Location getAdjacentLocation(Direction direction) { - switch (direction) { - case NORTH: - return new Location(x, y - SnakeAnnotation.GRID_SIZE); - case SOUTH: - return new Location(x, y + SnakeAnnotation.GRID_SIZE); - case EAST: - return new Location(x + SnakeAnnotation.GRID_SIZE, y); - case WEST: - return new Location(x - SnakeAnnotation.GRID_SIZE, y); - case NONE: - // fall through - default: - return this; - } - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - Location location = (Location) o; - - if (x != location.x) return false; - if (y != location.y) return false; - - return true; - } - - @Override - public int hashCode() { - int result = x; - result = 31 * result + y; - return result; - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/snake/Snake.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/snake/Snake.java deleted file mode 100644 index 7a112220c57d573b59c9654bd0f1819d7b52a055..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/snake/Snake.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.snake; - -import java.io.IOException; -import java.util.ArrayDeque; -import java.util.Collection; -import java.util.Deque; - -import javax.websocket.CloseReason; -import javax.websocket.CloseReason.CloseCodes; -import javax.websocket.Session; - -public class Snake { - - private static final int DEFAULT_LENGTH = 5; - - private final int id; - private final Session session; - - private Direction direction; - private int length = DEFAULT_LENGTH; - private Location head; - private final Deque tail = new ArrayDeque<>(); - private final String hexColor; - - public Snake(int id, Session session) { - this.id = id; - this.session = session; - this.hexColor = SnakeAnnotation.getRandomHexColor(); - resetState(); - } - - private void resetState() { - this.direction = Direction.NONE; - this.head = SnakeAnnotation.getRandomLocation(); - this.tail.clear(); - this.length = DEFAULT_LENGTH; - } - - private synchronized void kill() { - resetState(); - sendMessage("{\"type\": \"dead\"}"); - } - - private synchronized void reward() { - length++; - sendMessage("{\"type\": \"kill\"}"); - } - - - protected void sendMessage(String msg) { - try { - session.getBasicRemote().sendText(msg); - } catch (IOException ioe) { - CloseReason cr = - new CloseReason(CloseCodes.CLOSED_ABNORMALLY, ioe.getMessage()); - try { - session.close(cr); - } catch (IOException ioe2) { - // Ignore - } - } - } - - public synchronized void update(Collection snakes) { - Location nextLocation = head.getAdjacentLocation(direction); - if (nextLocation.x >= SnakeAnnotation.PLAYFIELD_WIDTH) { - nextLocation.x = 0; - } - if (nextLocation.y >= SnakeAnnotation.PLAYFIELD_HEIGHT) { - nextLocation.y = 0; - } - if (nextLocation.x < 0) { - nextLocation.x = SnakeAnnotation.PLAYFIELD_WIDTH; - } - if (nextLocation.y < 0) { - nextLocation.y = SnakeAnnotation.PLAYFIELD_HEIGHT; - } - if (direction != Direction.NONE) { - tail.addFirst(head); - if (tail.size() > length) { - tail.removeLast(); - } - head = nextLocation; - } - - handleCollisions(snakes); - } - - private void handleCollisions(Collection snakes) { - for (Snake snake : snakes) { - boolean headCollision = id != snake.id && snake.getHead().equals(head); - boolean tailCollision = snake.getTail().contains(head); - if (headCollision || tailCollision) { - kill(); - if (id != snake.id) { - snake.reward(); - } - } - } - } - - public synchronized Location getHead() { - return head; - } - - public synchronized Collection getTail() { - return tail; - } - - public synchronized void setDirection(Direction direction) { - this.direction = direction; - } - - public synchronized String getLocationsJson() { - StringBuilder sb = new StringBuilder(); - sb.append(String.format("{\"x\": %d, \"y\": %d}", - Integer.valueOf(head.x), Integer.valueOf(head.y))); - for (Location location : tail) { - sb.append(','); - sb.append(String.format("{\"x\": %d, \"y\": %d}", - Integer.valueOf(location.x), Integer.valueOf(location.y))); - } - return String.format("{\"id\":%d,\"body\":[%s]}", - Integer.valueOf(id), sb.toString()); - } - - public int getId() { - return id; - } - - public String getHexColor() { - return hexColor; - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/snake/SnakeAnnotation.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/snake/SnakeAnnotation.java deleted file mode 100644 index c030dbcabe04ef0c92b14809fede9db1bc2b927c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/snake/SnakeAnnotation.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.snake; - -import java.awt.Color; -import java.io.EOFException; -import java.util.Iterator; -import java.util.Random; -import java.util.concurrent.atomic.AtomicInteger; - -import javax.websocket.OnClose; -import javax.websocket.OnError; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.ServerEndpoint; - -@ServerEndpoint(value = "/websocket/snake") -public class SnakeAnnotation { - - public static final int PLAYFIELD_WIDTH = 640; - public static final int PLAYFIELD_HEIGHT = 480; - public static final int GRID_SIZE = 10; - - private static final AtomicInteger snakeIds = new AtomicInteger(0); - private static final Random random = new Random(); - - - private final int id; - private Snake snake; - - public static String getRandomHexColor() { - float hue = random.nextFloat(); - // sat between 0.1 and 0.3 - float saturation = (random.nextInt(2000) + 1000) / 10000f; - float luminance = 0.9f; - Color color = Color.getHSBColor(hue, saturation, luminance); - return '#' + Integer.toHexString( - (color.getRGB() & 0xffffff) | 0x1000000).substring(1); - } - - - public static Location getRandomLocation() { - int x = roundByGridSize(random.nextInt(PLAYFIELD_WIDTH)); - int y = roundByGridSize(random.nextInt(PLAYFIELD_HEIGHT)); - return new Location(x, y); - } - - - private static int roundByGridSize(int value) { - value = value + (GRID_SIZE / 2); - value = value / GRID_SIZE; - value = value * GRID_SIZE; - return value; - } - - public SnakeAnnotation() { - this.id = snakeIds.getAndIncrement(); - } - - - @OnOpen - public void onOpen(Session session) { - this.snake = new Snake(id, session); - SnakeTimer.addSnake(snake); - StringBuilder sb = new StringBuilder(); - for (Iterator iterator = SnakeTimer.getSnakes().iterator(); - iterator.hasNext();) { - Snake snake = iterator.next(); - sb.append(String.format("{\"id\": %d, \"color\": \"%s\"}", - Integer.valueOf(snake.getId()), snake.getHexColor())); - if (iterator.hasNext()) { - sb.append(','); - } - } - SnakeTimer.broadcast(String.format("{\"type\": \"join\",\"data\":[%s]}", - sb.toString())); - } - - - @OnMessage - public void onTextMessage(String message) { - if ("west".equals(message)) { - snake.setDirection(Direction.WEST); - } else if ("north".equals(message)) { - snake.setDirection(Direction.NORTH); - } else if ("east".equals(message)) { - snake.setDirection(Direction.EAST); - } else if ("south".equals(message)) { - snake.setDirection(Direction.SOUTH); - } - } - - - @OnClose - public void onClose() { - SnakeTimer.removeSnake(snake); - SnakeTimer.broadcast(String.format("{\"type\": \"leave\", \"id\": %d}", - Integer.valueOf(id))); - } - - - @OnError - public void onError(Throwable t) throws Throwable { - // Most likely cause is a user closing their browser. Check to see if - // the root cause is EOF and if it is ignore it. - // Protect against infinite loops. - int count = 0; - Throwable root = t; - while (root.getCause() != null && count < 20) { - root = root.getCause(); - count ++; - } - if (root instanceof EOFException) { - // Assume this is triggered by the user closing their browser and - // ignore it. - } else { - throw t; - } - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/snake/SnakeTimer.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/snake/SnakeTimer.java deleted file mode 100644 index 011541399e1962e485dee873a5f3d60af017ba29..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/classes/websocket/snake/SnakeTimer.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package websocket.snake; - -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.Timer; -import java.util.TimerTask; -import java.util.concurrent.ConcurrentHashMap; - -import org.apache.juli.logging.Log; -import org.apache.juli.logging.LogFactory; - -/** - * Sets up the timer for the multi-player snake game WebSocket example. - */ -public class SnakeTimer { - - private static final Log log = - LogFactory.getLog(SnakeTimer.class); - - private static Timer gameTimer = null; - - private static final long TICK_DELAY = 100; - - private static final ConcurrentHashMap snakes = - new ConcurrentHashMap<>(); - - protected static synchronized void addSnake(Snake snake) { - if (snakes.size() == 0) { - startTimer(); - } - snakes.put(Integer.valueOf(snake.getId()), snake); - } - - - protected static Collection getSnakes() { - return Collections.unmodifiableCollection(snakes.values()); - } - - - protected static synchronized void removeSnake(Snake snake) { - snakes.remove(Integer.valueOf(snake.getId())); - if (snakes.size() == 0) { - stopTimer(); - } - } - - - protected static void tick() { - StringBuilder sb = new StringBuilder(); - for (Iterator iterator = SnakeTimer.getSnakes().iterator(); - iterator.hasNext();) { - Snake snake = iterator.next(); - snake.update(SnakeTimer.getSnakes()); - sb.append(snake.getLocationsJson()); - if (iterator.hasNext()) { - sb.append(','); - } - } - broadcast(String.format("{\"type\": \"update\", \"data\" : [%s]}", - sb.toString())); - } - - protected static void broadcast(String message) { - for (Snake snake : SnakeTimer.getSnakes()) { - try { - snake.sendMessage(message); - } catch (IllegalStateException ise) { - // An ISE can occur if an attempt is made to write to a - // WebSocket connection after it has been closed. The - // alternative to catching this exception is to synchronise - // the writes to the clients along with the addSnake() and - // removeSnake() methods that are already synchronised. - } - } - } - - - public static void startTimer() { - gameTimer = new Timer(SnakeTimer.class.getSimpleName() + " Timer"); - gameTimer.scheduleAtFixedRate(new TimerTask() { - @Override - public void run() { - try { - tick(); - } catch (RuntimeException e) { - log.error("Caught to prevent timer from shutting down", e); - } - } - }, TICK_DELAY, TICK_DELAY); - } - - - public static void stopTimer() { - if (gameTimer != null) { - gameTimer.cancel(); - } - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/jsp/applet/Clock2.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/jsp/applet/Clock2.java deleted file mode 100644 index c745815601441b27a7626a1b3b039f6d0f8058a8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/jsp/applet/Clock2.java +++ /dev/null @@ -1,230 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import java.applet.Applet; -import java.awt.Color; -import java.awt.Font; -import java.awt.Graphics; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; - -/** - * Time! - * - * @author Rachel Gollub - */ - -public class Clock2 extends Applet implements Runnable { - private static final long serialVersionUID = 1L; - Thread timer; // The thread that displays clock - int lastxs, lastys, lastxm, - lastym, lastxh, lastyh; // Dimensions used to draw hands - SimpleDateFormat formatter; // Formats the date displayed - String lastdate; // String to hold date displayed - Font clockFaceFont; // Font for number display on clock - Date currentDate; // Used to get date to display - Color handColor; // Color of main hands and dial - Color numberColor; // Color of second hand and numbers - - @Override - public void init() { - lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0; - formatter = new SimpleDateFormat ("EEE MMM dd hh:mm:ss yyyy", Locale.getDefault()); - currentDate = new Date(); - lastdate = formatter.format(currentDate); - clockFaceFont = new Font("Serif", Font.PLAIN, 14); - handColor = Color.blue; - numberColor = Color.darkGray; - - try { - setBackground(new Color(Integer.parseInt(getParameter("bgcolor"),16))); - } catch (Exception e) { - // Ignore - } - try { - handColor = new Color(Integer.parseInt(getParameter("fgcolor1"),16)); - } catch (Exception e) { - // Ignore - } - try { - numberColor = new Color(Integer.parseInt(getParameter("fgcolor2"),16)); - } catch (Exception e) { - // Ignore - } - resize(300,300); // Set clock window size - } - - // Plotpoints allows calculation to only cover 45 degrees of the circle, - // and then mirror - public void plotpoints(int x0, int y0, int x, int y, Graphics g) { - g.drawLine(x0+x,y0+y,x0+x,y0+y); - g.drawLine(x0+y,y0+x,x0+y,y0+x); - g.drawLine(x0+y,y0-x,x0+y,y0-x); - g.drawLine(x0+x,y0-y,x0+x,y0-y); - g.drawLine(x0-x,y0-y,x0-x,y0-y); - g.drawLine(x0-y,y0-x,x0-y,y0-x); - g.drawLine(x0-y,y0+x,x0-y,y0+x); - g.drawLine(x0-x,y0+y,x0-x,y0+y); - } - - // Circle is just Bresenham's algorithm for a scan converted circle - public void circle(int x0, int y0, int r, Graphics g) { - int x,y; - float d; - x=0; - y=r; - d=5/4-r; - plotpoints(x0,y0,x,y,g); - - while (y>x){ - if (d<0) { - d=d+2*x+3; - x++; - } - else { - d=d+2*(x-y)+5; - x++; - y--; - } - plotpoints(x0,y0,x,y,g); - } - } - - // Paint is the main part of the program - @Override - public void paint(Graphics g) { - int xh, yh, xm, ym, xs, ys, s = 0, m = 10, h = 10, xcenter, ycenter; - String today; - - currentDate = new Date(); - SimpleDateFormat formatter = new SimpleDateFormat("s",Locale.getDefault()); - try { - s = Integer.parseInt(formatter.format(currentDate)); - } catch (NumberFormatException n) { - s = 0; - } - formatter.applyPattern("m"); - try { - m = Integer.parseInt(formatter.format(currentDate)); - } catch (NumberFormatException n) { - m = 10; - } - formatter.applyPattern("h"); - try { - h = Integer.parseInt(formatter.format(currentDate)); - } catch (NumberFormatException n) { - h = 10; - } - formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy"); - today = formatter.format(currentDate); - xcenter=80; - ycenter=55; - - // a= s* pi/2 - pi/2 (to switch 0,0 from 3:00 to 12:00) - // x = r(cos a) + xcenter, y = r(sin a) + ycenter - - xs = (int)(Math.cos(s * Math.PI/30 - Math.PI/2) * 45 + xcenter); - ys = (int)(Math.sin(s * Math.PI/30 - Math.PI/2) * 45 + ycenter); - xm = (int)(Math.cos(m * Math.PI/30 - Math.PI/2) * 40 + xcenter); - ym = (int)(Math.sin(m * Math.PI/30 - Math.PI/2) * 40 + ycenter); - xh = (int)(Math.cos((h*30 + m/2) * Math.PI/180 - Math.PI/2) * 30 + xcenter); - yh = (int)(Math.sin((h*30 + m/2) * Math.PI/180 - Math.PI/2) * 30 + ycenter); - - // Draw the circle and numbers - - g.setFont(clockFaceFont); - g.setColor(handColor); - circle(xcenter,ycenter,50,g); - g.setColor(numberColor); - g.drawString("9",xcenter-45,ycenter+3); - g.drawString("3",xcenter+40,ycenter+3); - g.drawString("12",xcenter-5,ycenter-37); - g.drawString("6",xcenter-3,ycenter+45); - - // Erase if necessary, and redraw - - g.setColor(getBackground()); - if (xs != lastxs || ys != lastys) { - g.drawLine(xcenter, ycenter, lastxs, lastys); - g.drawString(lastdate, 5, 125); - } - if (xm != lastxm || ym != lastym) { - g.drawLine(xcenter, ycenter-1, lastxm, lastym); - g.drawLine(xcenter-1, ycenter, lastxm, lastym); } - if (xh != lastxh || yh != lastyh) { - g.drawLine(xcenter, ycenter-1, lastxh, lastyh); - g.drawLine(xcenter-1, ycenter, lastxh, lastyh); } - g.setColor(numberColor); - g.drawString("", 5, 125); - g.drawString(today, 5, 125); - g.drawLine(xcenter, ycenter, xs, ys); - g.setColor(handColor); - g.drawLine(xcenter, ycenter-1, xm, ym); - g.drawLine(xcenter-1, ycenter, xm, ym); - g.drawLine(xcenter, ycenter-1, xh, yh); - g.drawLine(xcenter-1, ycenter, xh, yh); - lastxs=xs; lastys=ys; - lastxm=xm; lastym=ym; - lastxh=xh; lastyh=yh; - lastdate = today; - currentDate=null; - } - - @Override - public void start() { - timer = new Thread(this); - timer.start(); - } - - @Override - public void stop() { - timer = null; - } - - @Override - public void run() { - Thread me = Thread.currentThread(); - while (timer == me) { - try { - Thread.sleep(100); - } catch (InterruptedException e) { - } - repaint(); - } - } - - @Override - public void update(Graphics g) { - paint(g); - } - - @Override - public String getAppletInfo() { - return "Title: A Clock \nAuthor: Rachel Gollub, 1995 \nAn analog clock."; - } - - @Override - public String[][] getParameterInfo() { - String[][] info = { - {"bgcolor", "hexadecimal RGB number", "The background color. Default is the color of your browser."}, - {"fgcolor1", "hexadecimal RGB number", "The color of the hands and dial. Default is blue."}, - {"fgcolor2", "hexadecimal RGB number", "The color of the seconds hand and numbers. Default is dark gray."} - }; - return info; - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/jsp/debug-taglib.tld b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/jsp/debug-taglib.tld deleted file mode 100644 index 8f082d310350eeca5bd9b5f824a4947622a4f6c1..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/jsp/debug-taglib.tld +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - 1.0 - 1.2 - debug - http://tomcat.apache.org/debug-taglib - - This tag library defines no tags. Instead, its purpose is encapsulated - in the TagLibraryValidator implementation that simply outputs the XML - version of a JSP page to standard output, whenever this tag library is - referenced in a "taglib" directive in a JSP page. - - - validators.DebugValidator - - - - - log - examples.LogTag - TAGDEPENDENT - - Perform a server side action; Log the message. - - - toBrowser - false - - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/jsp/example-taglib.tld b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/jsp/example-taglib.tld deleted file mode 100644 index 442868ef939235f1c8e60865322d32e649a47d33..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/jsp/example-taglib.tld +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - 1.0 - 1.2 - simple - http://tomcat.apache.org/example-taglib - - A simple tab library for the examples - - - - ShowSource - examples.ShowSource - Display JSP sources - - jspFile - true - true - - - - - - - foo - examples.FooTag - examples.FooTagExtraInfo - JSP - - Perform a server side action; uses 3 mandatory attributes - - - - att1 - true - - - att2 - true - - - att3 - true - - - - - - - log - examples.LogTag - TAGDEPENDENT - - Perform a server side action; Log the message. - - - toBrowser - false - - - - - - - values - examples.ValuesTag - empty - - Accept and return values of different types. This tag is used - to illustrate type coercions. - - - object - false - true - java.lang.Object - - - string - false - true - java.lang.String - - - long - false - true - long - - - double - false - true - double - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/jsp2/jsp2-example-taglib.tld b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/jsp2/jsp2-example-taglib.tld deleted file mode 100644 index 73173bdafd292911c4334ff505eb7f2c811fe56d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/jsp2/jsp2-example-taglib.tld +++ /dev/null @@ -1,124 +0,0 @@ - - - - - A tag library exercising SimpleTag handlers. - 1.0 - SimpleTagLibrary - http://tomcat.apache.org/jsp2-example-taglib - - Outputs Hello, World - helloWorld - jsp2.examples.simpletag.HelloWorldSimpleTag - empty - - - Repeats the body of the tag 'num' times - repeat - jsp2.examples.simpletag.RepeatSimpleTag - scriptless - - Current invocation count (1 to num) - count - - - num - true - true - - - - Populates the page context with a BookBean - findBook - jsp2.examples.simpletag.FindBookSimpleTag - empty - - var - true - true - - - - - Takes 3 fragments and invokes them in a random order - - shuffle - jsp2.examples.simpletag.ShuffleSimpleTag - empty - - fragment1 - true - true - - - fragment2 - true - true - - - fragment3 - true - true - - - - Outputs a colored tile - tile - jsp2.examples.simpletag.TileSimpleTag - empty - - color - true - - - label - true - - - - - Tag that echoes all its attributes and body content - - echoAttributes - jsp2.examples.simpletag.EchoAttributesTag - empty - true - - - Reverses the characters in the given String - reverse - jsp2.examples.el.Functions - java.lang.String reverse( java.lang.String ) - - - Counts the number of vowels (a,e,i,o,u) in the given String - countVowels - jsp2.examples.el.Functions - java.lang.String numVowels( java.lang.String ) - - - Converts the string to all caps - caps - jsp2.examples.el.Functions - java.lang.String caps( java.lang.String ) - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/tags/displayProducts.tag b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/tags/displayProducts.tag deleted file mode 100644 index 41e8c353db7040ad5124f7613a1f0e64a2cd95f8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/tags/displayProducts.tag +++ /dev/null @@ -1,55 +0,0 @@ - -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -<%@ attribute name="normalPrice" fragment="true" %> -<%@ attribute name="onSale" fragment="true" %> -<%@ variable name-given="name" %> -<%@ variable name-given="price" %> -<%@ variable name-given="origPrice" %> -<%@ variable name-given="salePrice" %> - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - -
    diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/tags/helloWorld.tag b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/tags/helloWorld.tag deleted file mode 100644 index 192bf53cc466c1df947aae17efc304e535c26c39..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/tags/helloWorld.tag +++ /dev/null @@ -1,17 +0,0 @@ - -Hello, world! diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/tags/panel.tag b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/tags/panel.tag deleted file mode 100644 index f4f30d0244e425dad93f90cf240c4e979d2f65e4..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/tags/panel.tag +++ /dev/null @@ -1,29 +0,0 @@ - -<%@ attribute name="color" %> -<%@ attribute name="bgcolor" %> -<%@ attribute name="title" %> - - - - - - - -
    ${title}
    - -
    diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/web.xml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/web.xml deleted file mode 100644 index e1b6e2527b7c5c211d2ac5d24de54e4d9d3a0f45..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/WEB-INF/web.xml +++ /dev/null @@ -1,399 +0,0 @@ - - - - - - Servlet and JSP Examples. - - Servlet and JSP Examples - - - - Timing Filter - filters.ExampleFilter - - attribute - filters.ExampleFilter - - - - - Request Dumper Filter - org.apache.catalina.filters.RequestDumperFilter - - - - - Set Character Encoding - org.apache.catalina.filters.SetCharacterEncodingFilter - true - - encoding - UTF-8 - - - ignore - false - - - - - Compression Filter - compressionFilters.CompressionFilter - - compressionThreshold - 128 - - - compressionBuffer - 8192 - - - compressionMimeTypes - text/html,text/plain,text/xml - - - debug - 0 - - - - - - - - - Set Character Encoding - /* - - - - - - - - - listeners.ContextListener - - - listeners.SessionListener - - - - - async.AsyncStockContextListener - - - - - - ServletToJsp - ServletToJsp - - - CompressionFilterTestServlet - compressionFilters.CompressionFilterTestServlet - - - HelloWorldExample - HelloWorldExample - - - RequestInfoExample - RequestInfoExample - - - RequestHeaderExample - RequestHeaderExample - - - RequestParamExample - RequestParamExample - - - CookieExample - CookieExample - - - SessionExample - SessionExample - - - - CompressionFilterTestServlet - /CompressionTest - - - HelloWorldExample - /servlets/servlet/HelloWorldExample - - - RequestInfoExample - /servlets/servlet/RequestInfoExample/* - - - RequestHeaderExample - /servlets/servlet/RequestHeaderExample - - - RequestParamExample - /servlets/servlet/RequestParamExample - - - CookieExample - /servlets/servlet/CookieExample - - - SessionExample - /servlets/servlet/SessionExample - - - ServletToJsp - /servletToJsp - - - - - - http://tomcat.apache.org/debug-taglib - - - /WEB-INF/jsp/debug-taglib.tld - - - - - - http://tomcat.apache.org/example-taglib - - - /WEB-INF/jsp/example-taglib.tld - - - - - - http://tomcat.apache.org/jsp2-example-taglib - - - /WEB-INF/jsp2/jsp2-example-taglib.tld - - - - - - Special property group for JSP Configuration JSP example. - - JSPConfiguration - /jsp/jsp2/misc/config.jsp - true - ISO-8859-1 - true - /jsp/jsp2/misc/prelude.jspf - /jsp/jsp2/misc/coda.jspf - - - - - Example Security Constraint - part 1 - - Protected Area - Allow methods - - /jsp/security/protected/* - - - DELETE - GET - POST - PUT - - - - tomcat - role1 - - - - Example Security Constraint - part 2 - - Protected Area - Deny methods - - /jsp/security/protected/* - DELETE - GET - POST - PUT - - - - - - - - FORM - Example Form-Based Authentication Area - - /jsp/security/protected/login.jsp - /jsp/security/protected/error.jsp - - - - - - role1 - - - tomcat - - - - - - minExemptions - java.lang.Integer - 1 - - - foo/name1 - java.lang.String - value1 - - - foo/bar/name2 - java.lang.Boolean - true - - - name3 - java.lang.Integer - 1 - - - foo/name4 - java.lang.Integer - 10 - - - - - async0 - async.Async0 - true - - - async0 - /async/async0 - - - async1 - async.Async1 - true - - - async1 - /async/async1 - - - async2 - async.Async2 - true - - - async2 - /async/async2 - - - async3 - async.Async3 - true - - - async3 - /async/async3 - - - stock - async.AsyncStockServlet - true - - - stock - /async/stockticker - - - - - bytecounter - nonblocking.ByteCounter - true - - - bytecounter - /servlets/nonblocking/bytecounter - - - numberwriter - nonblocking.NumberWriter - true - - - numberwriter - /servlets/nonblocking/numberwriter - - - - index.html - index.xhtml - index.htm - index.jsp - - - - - websocket.drawboard.DrawboardContextListener - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/index.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/index.html deleted file mode 100644 index 0799e10f7227885c731264ffe11c9bcafee11901..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - -Apache Tomcat Examples - - -

    -

    Apache Tomcat Examples

    -

    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/async1.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/async1.jsp deleted file mode 100644 index af88869eaca2839ee55f644a87aab3e4cf856e28..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/async1.jsp +++ /dev/null @@ -1,28 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@page session="false" import="java.util.Date,java.text.SimpleDateFormat"%> -Output from async1.jsp -Type is <%=request.getDispatcherType()%> -<% - System.out.println("Inside Async 1"); - if (request.isAsyncStarted()) { - request.getAsyncContext().complete(); - } - Date date = new Date(System.currentTimeMillis()); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z"); -%> -Completed async request at <%=sdf.format(date)%> \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/async1.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/async1.jsp.html deleted file mode 100644 index 2244765eb11302def78d84b25b580e9061874ef6..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/async1.jsp.html +++ /dev/null @@ -1,29 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@page session="false" import="java.util.Date,java.text.SimpleDateFormat"%>
    -Output from async1.jsp
    -Type is <%=request.getDispatcherType()%>
    -<%
    -  System.out.println("Inside Async 1");
    -  if (request.isAsyncStarted()) {
    -    request.getAsyncContext().complete();
    -  }
    -  Date date = new Date(System.currentTimeMillis());
    -  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
    -%>
    -Completed async request at <%=sdf.format(date)%>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/async3.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/async3.jsp deleted file mode 100644 index 9d24e60194e246f537fed0dea425e35e97ba632a..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/async3.jsp +++ /dev/null @@ -1,25 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@page session="false" import="java.util.Date,java.text.SimpleDateFormat"%> -Output from async3.jsp -Type is <%=request.getDispatcherType()%> -<% - Date date = new Date(System.currentTimeMillis()); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z"); -%> - -Completed async 3 request at <%=sdf.format(date)%> \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/async3.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/async3.jsp.html deleted file mode 100644 index 6deced8523f2a2bdf2575ba10525533e90348c27..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/async3.jsp.html +++ /dev/null @@ -1,26 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@page session="false" import="java.util.Date,java.text.SimpleDateFormat"%>
    -Output from async3.jsp
    -Type is <%=request.getDispatcherType()%>
    -<%
    -  Date date = new Date(System.currentTimeMillis());
    -  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
    -%>
    -
    -Completed async 3 request at <%=sdf.format(date)%>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/index.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/index.jsp deleted file mode 100644 index be2d713639153d9146ca268bdd4bebc604973b6b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/index.jsp +++ /dev/null @@ -1,69 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@page session="false"%> - -
    -Use cases:
    -
    -1. Simple dispatch
    - - servlet does startAsync()
    - - background thread calls ctx.dispatch()
    -   "> Async 0 
    -
    -2. Simple dispatch
    - - servlet does startAsync()
    - - background thread calls dispatch(/path/to/jsp)
    -   "> Async 1 
    -
    -3. Simple dispatch
    - - servlet does startAsync()
    - - background thread calls writes and calls complete()
    -   "> Async 2 
    -
    -4. Simple dispatch
    - - servlet does a startAsync()
    - - servlet calls dispatch(/path/to/jsp)
    - - servlet calls complete()
    -   "> Async 3 
    -
    -3. Timeout s1
    - - servlet does a startAsync()
    - - servlet does a setAsyncTimeout
    - - returns - waits for timeout to happen should return error page
    -
    -4. Timeout s2
    - - servlet does a startAsync()
    - - servlet does a setAsyncTimeout
    - - servlet does a addAsyncListener
    - - returns - waits for timeout to happen and listener invoked
    -
    -5. Dispatch to asyncSupported=false servlet
    - - servlet1 does a startAsync()
    - - servlet1 dispatches to dispatch(/servlet2)
    - - the container calls complete() after servlet2 is complete
    - - TODO
    -
    -6. Chained dispatch
    - - servlet1 does a startAsync
    - - servlet1 does a dispatch to servlet2 (asyncsupported=true)
    - - servlet2 does a dispatch to servlet3 (asyncsupported=true)
    - - servlet3 does a dispatch to servlet4 (asyncsupported=false)
    -
    -
    -7. Stock ticker
    -   "> StockTicker 
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/index.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/index.jsp.html deleted file mode 100644 index 778b6434faedb339f99b2f2e3230bf5bd8bb5222..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/async/index.jsp.html +++ /dev/null @@ -1,70 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@page session="false"%>
    -
    -<pre>
    -Use cases:
    -
    -1. Simple dispatch
    - - servlet does startAsync()
    - - background thread calls ctx.dispatch()
    -   <a href="<%=response.encodeURL("/examples/async/async0")%>"> Async 0 </a>
    -
    -2. Simple dispatch
    - - servlet does startAsync()
    - - background thread calls dispatch(/path/to/jsp)
    -   <a href="<%=response.encodeURL("/examples/async/async1")%>"> Async 1 </a>
    -
    -3. Simple dispatch
    - - servlet does startAsync()
    - - background thread calls writes and calls complete()
    -   <a href="<%=response.encodeURL("/examples/async/async2")%>"> Async 2 </a>
    -
    -4. Simple dispatch
    - - servlet does a startAsync()
    - - servlet calls dispatch(/path/to/jsp)
    - - servlet calls complete()
    -   <a href="<%=response.encodeURL("/examples/async/async3")%>"> Async 3 </a>
    -
    -3. Timeout s1
    - - servlet does a startAsync()
    - - servlet does a setAsyncTimeout
    - - returns - waits for timeout to happen should return error page
    -
    -4. Timeout s2
    - - servlet does a startAsync()
    - - servlet does a setAsyncTimeout
    - - servlet does a addAsyncListener
    - - returns - waits for timeout to happen and listener invoked
    -
    -5. Dispatch to asyncSupported=false servlet
    - - servlet1 does a startAsync()
    - - servlet1 dispatches to dispatch(/servlet2)
    - - the container calls complete() after servlet2 is complete
    - - TODO
    -
    -6. Chained dispatch
    - - servlet1 does a startAsync
    - - servlet1 does a dispatch to servlet2 (asyncsupported=true)
    - - servlet2 does a dispatch to servlet3 (asyncsupported=true)
    - - servlet3 does a dispatch to servlet4 (asyncsupported=false)
    -
    -
    -7. Stock ticker
    -   <a href="<%=response.encodeURL("/examples/async/stockticker")%>"> StockTicker </a>
    -</pre>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/Entries.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/Entries.java.html deleted file mode 100644 index 03f9a0c16dc0f8bc940a2283f34cadf58ca18e38..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/Entries.java.html +++ /dev/null @@ -1,61 +0,0 @@ -Source Code
    /*
    - * Licensed to the Apache Software Foundation (ASF) under one or more
    - * contributor license agreements.  See the NOTICE file distributed with
    - * this work for additional information regarding copyright ownership.
    - * The ASF licenses this file to You under the Apache License, Version 2.0
    - * (the "License"); you may not use this file except in compliance with
    - * the License.  You may obtain a copy of the License at
    - *
    - *     http://www.apache.org/licenses/LICENSE-2.0
    - *
    - * Unless required by applicable law or agreed to in writing, software
    - * distributed under the License is distributed on an "AS IS" BASIS,
    - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    - * See the License for the specific language governing permissions and
    - * limitations under the License.
    - */
    -package cal;
    -
    -import java.util.Hashtable;
    -
    -import javax.servlet.http.HttpServletRequest;
    -
    -public class Entries {
    -
    -    private final Hashtable<String, Entry> entries;
    -    private static final String[] time = { "8am", "9am", "10am", "11am",
    -            "12pm", "1pm", "2pm", "3pm", "4pm", "5pm", "6pm", "7pm", "8pm" };
    -    public static final int rows = 12;
    -
    -    public Entries() {
    -        entries = new Hashtable<>(rows);
    -        for (int i = 0; i < rows; i++) {
    -            entries.put(time[i], new Entry(time[i]));
    -        }
    -    }
    -
    -    public int getRows() {
    -        return rows;
    -    }
    -
    -    public Entry getEntry(int index) {
    -        return this.entries.get(time[index]);
    -    }
    -
    -    public int getIndex(String tm) {
    -        for (int i = 0; i < rows; i++)
    -            if (tm.equals(time[i]))
    -                return i;
    -        return -1;
    -    }
    -
    -    public void processRequest(HttpServletRequest request, String tm) {
    -        int index = getIndex(tm);
    -        if (index >= 0) {
    -            String descr = request.getParameter("description");
    -            entries.get(time[index]).setDescription(descr);
    -        }
    -    }
    -
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/Entry.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/Entry.java.html deleted file mode 100644 index 7183a0ac26a5ca868126805a26f1c45ea1cf39a8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/Entry.java.html +++ /dev/null @@ -1,54 +0,0 @@ -Source Code
    /*
    - * Licensed to the Apache Software Foundation (ASF) under one or more
    - * contributor license agreements.  See the NOTICE file distributed with
    - * this work for additional information regarding copyright ownership.
    - * The ASF licenses this file to You under the Apache License, Version 2.0
    - * (the "License"); you may not use this file except in compliance with
    - * the License.  You may obtain a copy of the License at
    - *
    - *     http://www.apache.org/licenses/LICENSE-2.0
    - *
    - * Unless required by applicable law or agreed to in writing, software
    - * distributed under the License is distributed on an "AS IS" BASIS,
    - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    - * See the License for the specific language governing permissions and
    - * limitations under the License.
    - */
    -
    -package cal;
    -
    -public class Entry {
    -
    -    final String hour;
    -    String description;
    -
    -    public Entry(String hour) {
    -        this.hour = hour;
    -        this.description = "";
    -
    -    }
    -
    -    public String getHour() {
    -        return this.hour;
    -    }
    -
    -    public String getColor() {
    -        if (description.equals("")) {
    -            return "lightblue";
    -        }
    -        return "red";
    -    }
    -
    -    public String getDescription() {
    -        if (description.equals("")) {
    -            return "None";
    -        }
    -        return this.description;
    -    }
    -
    -    public void setDescription(String descr) {
    -        description = descr;
    -    }
    -
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/JspCalendar.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/JspCalendar.java.html deleted file mode 100644 index 118996ee4f9278c2b89c84918728d5f0eefcfda0..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/JspCalendar.java.html +++ /dev/null @@ -1,152 +0,0 @@ -Source Code
    /*
    -* Licensed to the Apache Software Foundation (ASF) under one or more
    -* contributor license agreements.  See the NOTICE file distributed with
    -* this work for additional information regarding copyright ownership.
    -* The ASF licenses this file to You under the Apache License, Version 2.0
    -* (the "License"); you may not use this file except in compliance with
    -* the License.  You may obtain a copy of the License at
    -*
    -*     http://www.apache.org/licenses/LICENSE-2.0
    -*
    -* Unless required by applicable law or agreed to in writing, software
    -* distributed under the License is distributed on an "AS IS" BASIS,
    -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -* See the License for the specific language governing permissions and
    -* limitations under the License.
    -*/
    -
    -package cal;
    -
    -import java.util.Calendar;
    -import java.util.Date;
    -
    -public class JspCalendar {
    -    final Calendar  calendar;
    -
    -    public JspCalendar() {
    -        calendar = Calendar.getInstance();
    -        Date trialTime = new Date();
    -        calendar.setTime(trialTime);
    -    }
    -
    -
    -    public int getYear() {
    -        return calendar.get(Calendar.YEAR);
    -    }
    -
    -    public String getMonth() {
    -        int m = getMonthInt();
    -        String[] months = new String [] { "January", "February", "March",
    -                                        "April", "May", "June",
    -                                        "July", "August", "September",
    -                                        "October", "November", "December" };
    -        if (m > 12)
    -            return "Unknown to Man";
    -
    -        return months[m - 1];
    -
    -    }
    -
    -    public String getDay() {
    -        int x = getDayOfWeek();
    -        String[] days = new String[] {"Sunday", "Monday", "Tuesday", "Wednesday",
    -                                      "Thursday", "Friday", "Saturday"};
    -
    -        if (x > 7)
    -            return "Unknown to Man";
    -
    -        return days[x - 1];
    -
    -    }
    -
    -    public int getMonthInt() {
    -        return 1 + calendar.get(Calendar.MONTH);
    -    }
    -
    -    public String getDate() {
    -        return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();
    -    }
    -
    -    public String getCurrentDate() {
    -        Date dt = new Date ();
    -        calendar.setTime (dt);
    -        return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();
    -
    -    }
    -
    -    public String getNextDate() {
    -        calendar.set (Calendar.DAY_OF_MONTH, getDayOfMonth() + 1);
    -        return getDate ();
    -    }
    -
    -    public String getPrevDate() {
    -        calendar.set (Calendar.DAY_OF_MONTH, getDayOfMonth() - 1);
    -        return getDate ();
    -    }
    -
    -    public String getTime() {
    -        return getHour() + ":" + getMinute() + ":" + getSecond();
    -    }
    -
    -    public int getDayOfMonth() {
    -        return calendar.get(Calendar.DAY_OF_MONTH);
    -    }
    -
    -    public int getDayOfYear() {
    -        return calendar.get(Calendar.DAY_OF_YEAR);
    -    }
    -
    -    public int getWeekOfYear() {
    -        return calendar.get(Calendar.WEEK_OF_YEAR);
    -    }
    -
    -    public int getWeekOfMonth() {
    -        return calendar.get(Calendar.WEEK_OF_MONTH);
    -    }
    -
    -    public int getDayOfWeek() {
    -        return calendar.get(Calendar.DAY_OF_WEEK);
    -    }
    -
    -    public int getHour() {
    -        return calendar.get(Calendar.HOUR_OF_DAY);
    -    }
    -
    -    public int getMinute() {
    -        return calendar.get(Calendar.MINUTE);
    -    }
    -
    -
    -    public int getSecond() {
    -        return calendar.get(Calendar.SECOND);
    -    }
    -
    -
    -    public int getEra() {
    -        return calendar.get(Calendar.ERA);
    -    }
    -
    -    public String getUSTimeZone() {
    -        String[] zones = new String[] {"Hawaii", "Alaskan", "Pacific",
    -                                       "Mountain", "Central", "Eastern"};
    -
    -        return zones[10 + getZoneOffset()];
    -    }
    -
    -    public int getZoneOffset() {
    -        return calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000);
    -    }
    -
    -
    -    public int getDSTOffset() {
    -        return calendar.get(Calendar.DST_OFFSET)/(60*60*1000);
    -    }
    -
    -
    -    public int getAMPM() {
    -        return calendar.get(Calendar.AM_PM);
    -    }
    -}
    -
    -
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/TableBean.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/TableBean.java.html deleted file mode 100644 index 00a8a04a184e4a4f6d85ec316ce0ec455a1ca19f..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/TableBean.java.html +++ /dev/null @@ -1,102 +0,0 @@ -Source Code
    /*
    - * Licensed to the Apache Software Foundation (ASF) under one or more
    - * contributor license agreements.  See the NOTICE file distributed with
    - * this work for additional information regarding copyright ownership.
    - * The ASF licenses this file to You under the Apache License, Version 2.0
    - * (the "License"); you may not use this file except in compliance with
    - * the License.  You may obtain a copy of the License at
    - *
    - *     http://www.apache.org/licenses/LICENSE-2.0
    - *
    - * Unless required by applicable law or agreed to in writing, software
    - * distributed under the License is distributed on an "AS IS" BASIS,
    - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    - * See the License for the specific language governing permissions and
    - * limitations under the License.
    - */
    -package cal;
    -
    -import java.util.Hashtable;
    -
    -import javax.servlet.http.HttpServletRequest;
    -
    -public class TableBean {
    -
    -    final Hashtable<String, Entries> table;
    -    final JspCalendar JspCal;
    -    Entries entries;
    -    String date;
    -    String name = null;
    -    String email = null;
    -    boolean processError = false;
    -
    -    public TableBean() {
    -        this.table = new Hashtable<>(10);
    -        this.JspCal = new JspCalendar();
    -        this.date = JspCal.getCurrentDate();
    -    }
    -
    -    public void setName(String nm) {
    -        this.name = nm;
    -    }
    -
    -    public String getName() {
    -        return this.name;
    -    }
    -
    -    public void setEmail(String mail) {
    -        this.email = mail;
    -    }
    -
    -    public String getEmail() {
    -        return this.email;
    -    }
    -
    -    public String getDate() {
    -        return this.date;
    -    }
    -
    -    public Entries getEntries() {
    -        return this.entries;
    -    }
    -
    -    public void processRequest(HttpServletRequest request) {
    -
    -        // Get the name and e-mail.
    -        this.processError = false;
    -        if (name == null || name.equals(""))
    -            setName(request.getParameter("name"));
    -        if (email == null || email.equals(""))
    -            setEmail(request.getParameter("email"));
    -        if (name == null || email == null || name.equals("")
    -                || email.equals("")) {
    -            this.processError = true;
    -            return;
    -        }
    -
    -        // Get the date.
    -        String dateR = request.getParameter("date");
    -        if (dateR == null)
    -            date = JspCal.getCurrentDate();
    -        else if (dateR.equalsIgnoreCase("next"))
    -            date = JspCal.getNextDate();
    -        else if (dateR.equalsIgnoreCase("prev"))
    -            date = JspCal.getPrevDate();
    -
    -        entries = table.get(date);
    -        if (entries == null) {
    -            entries = new Entries();
    -            table.put(date, entries);
    -        }
    -
    -        // If time is provided add the event.
    -        String time = request.getParameter("time");
    -        if (time != null)
    -            entries.processRequest(request, time);
    -    }
    -
    -    public boolean getProcessError() {
    -        return this.processError;
    -    }
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/cal1.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/cal1.jsp deleted file mode 100644 index e6b8a49d0c9eb169f8a46735f87d7680b6da9140..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/cal1.jsp +++ /dev/null @@ -1,94 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@page contentType="text/html; charset=UTF-8" %> - - - Calendar: A JSP APPLICATION - - - - - -<%@ page language="java" import="cal.*" %> - - -<% - table.processRequest(request); - if (table.getProcessError() == false) { -%> - - -
    - - - - -
    prev - Calendar:<%= table.getDate() %> next -
    - - - - - - - - -<% - for(int i=0; i - - - - -<% - } -%> - -
    Time Appointment
    - > - <%= entr.getHour() %> - > - <% out.print(util.HTMLFilter.filter(entr.getDescription())); %> -
    -
    - - - - - - -
    <% out.print(util.HTMLFilter.filter(table.getName())); %> : - <% out.print(util.HTMLFilter.filter(table.getEmail())); %>
    -
    - -<% - } else { -%> - - You must enter your name and email address correctly. - -<% - } -%> - - - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/cal1.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/cal1.jsp.html deleted file mode 100644 index 7daddf010de3652aca82e2e7888ae5dcd17283b3..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/cal1.jsp.html +++ /dev/null @@ -1,95 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@page contentType="text/html; charset=UTF-8" %>
    -<HTML>
    -<HEAD><TITLE>
    -    Calendar: A JSP APPLICATION
    -</TITLE></HEAD>
    -
    -
    -<BODY BGCOLOR="white">
    -
    -<%@ page language="java" import="cal.*" %>
    -<jsp:useBean id="table" scope="session" class="cal.TableBean" />
    -
    -<%
    -    table.processRequest(request);
    -    if (table.getProcessError() == false) {
    -%>
    -
    -<!-- html table goes here -->
    -<CENTER>
    -<TABLE WIDTH=60% BGCOLOR=yellow CELLPADDING=15>
    -<TR>
    -<TD ALIGN=CENTER> <A HREF=cal1.jsp?date=prev> prev </A>
    -<TD ALIGN=CENTER> Calendar:<%= table.getDate() %></TD>
    -<TD ALIGN=CENTER> <A HREF=cal1.jsp?date=next> next </A>
    -</TR>
    -</TABLE>
    -
    -<!-- the main table -->
    -<TABLE WIDTH=60% BGCOLOR=lightblue BORDER=1 CELLPADDING=10>
    -<TR>
    -<TH> Time </TH>
    -<TH> Appointment </TH>
    -</TR>
    -<FORM METHOD=POST ACTION=cal1.jsp>
    -<%
    -    for(int i=0; i<table.getEntries().getRows(); i++) {
    -       cal.Entry entr = table.getEntries().getEntry(i);
    -%>
    -    <TR>
    -    <TD>
    -    <A HREF=cal2.jsp?time=<%= entr.getHour() %>>
    -        <%= entr.getHour() %> </A>
    -    </TD>
    -    <TD BGCOLOR=<%= entr.getColor() %>>
    -    <% out.print(util.HTMLFilter.filter(entr.getDescription())); %>
    -    </TD>
    -    </TR>
    -<%
    -    }
    -%>
    -</FORM>
    -</TABLE>
    -<BR>
    -
    -<!-- footer -->
    -<TABLE WIDTH=60% BGCOLOR=yellow CELLPADDING=15>
    -<TR>
    -<TD ALIGN=CENTER>  <% out.print(util.HTMLFilter.filter(table.getName())); %> :
    -             <% out.print(util.HTMLFilter.filter(table.getEmail())); %> </TD>
    -</TR>
    -</TABLE>
    -</CENTER>
    -
    -<%
    -    } else {
    -%>
    -<font size=5>
    -    You must enter your name and email address correctly.
    -</font>
    -<%
    -    }
    -%>
    -
    -
    -</BODY>
    -</HTML>
    -
    -
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/cal2.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/cal2.jsp deleted file mode 100644 index e7e14d8e0468825cc23b95a8c332c8990acfd873..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/cal2.jsp +++ /dev/null @@ -1,45 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@page contentType="text/html; charset=UTF-8" %> - - - Calendar: A JSP APPLICATION - - - - - - -<% - String time = request.getParameter ("time"); -%> - - Please add the following event: -

    Date <%= table.getDate() %> -
    Time <%= util.HTMLFilter.filter(time) %>

    -
    -
    -
    -
    -
    -

    Description of the event

    -
    -
    - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/cal2.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/cal2.jsp.html deleted file mode 100644 index 2cc191bc35ba4f09dcbfa770e25cc50bd8191a8f..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/cal2.jsp.html +++ /dev/null @@ -1,46 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@page contentType="text/html; charset=UTF-8" %>
    -<HTML>
    -<HEAD><TITLE>
    -    Calendar: A JSP APPLICATION
    -</TITLE></HEAD>
    -
    -
    -<BODY BGCOLOR="white">
    -<jsp:useBean id="table" scope="session" class="cal.TableBean" />
    -
    -<%
    -    String time = request.getParameter ("time");
    -%>
    -
    -<FONT SIZE=5> Please add the following event:
    -<BR> <h3> Date <%= table.getDate() %>
    -<BR> Time <%= util.HTMLFilter.filter(time) %> </h3>
    -</FONT>
    -<FORM METHOD=POST ACTION=cal1.jsp>
    -<BR>
    -<BR> <INPUT NAME="date" TYPE=HIDDEN VALUE="current">
    -<BR> <INPUT NAME="time" TYPE=HIDDEN VALUE="<%= util.HTMLFilter.filter(time) %>">
    -<BR> <h2> Description of the event <INPUT NAME="description" TYPE=TEXT SIZE=20> </h2>
    -<BR> <INPUT TYPE=SUBMIT VALUE="submit">
    -</FORM>
    -
    -</BODY>
    -</HTML>
    -
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/calendar.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/calendar.html deleted file mode 100644 index a0a3ea1841341fbd612d633dc5bed3f0171b1c36..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/calendar.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - -Untitled Document - - - - -

    - -

    Source Code for Calendar Example.
    -

    cal1.jsp -

    -

    cal2.jsp -

    - -
    -

    Beans. -

    TableBean -

    -

    Entries -

    -

    Entry -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/login.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/login.html deleted file mode 100644 index 2c4aa55e0f7c4db170cf4586cc107a523cdc2942..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/cal/login.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - Login page for the calendar. - - - -
    - - Please Enter the following information: - -
    -
    - - Name - -
    - Email - -
    - - -
    -
    - Note: This application does not implement the complete -functionality of a typical calendar application. It demonstrates a way JSP can -be used with html tables and forms. - -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/checkbox/CheckTest.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/checkbox/CheckTest.html deleted file mode 100644 index 284d9ec3bce21f36e67d6eb2691c73eb22aa55e6..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/checkbox/CheckTest.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - -checkbox.CheckTest Bean Properties - - -

    -checkbox.CheckTest Bean Properties -

    -
    -
    -
    public class CheckTest
    extends Object
    - -

    -


    - -

    - - - - - - - - - -
    -Properties Summary
    - -String -CheckTest:fruit -
    -
    - -Multi -
    -


    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/checkbox/check.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/checkbox/check.html deleted file mode 100644 index b6d6b3bc1b3c09d8db7c8474c24861eb6fdd8cf7..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/checkbox/check.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - -
    -
    - -Check all Favorite fruits:
    - - Apples
    - Grapes
    - Oranges
    - Melons
    - - -
    - -
    -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/checkbox/checkresult.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/checkbox/checkresult.jsp deleted file mode 100644 index a8400e9944032f870559a81ae01f9c05262b4269..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/checkbox/checkresult.jsp +++ /dev/null @@ -1,63 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - - -<%! String[] fruits; %> - - - -
    -The checked fruits (got using request) are:
    -<% - fruits = request.getParameterValues("fruit"); -%> -
      -<% - if (fruits != null) { - for (int i = 0; i < fruits.length; i++) { -%> -
    • -<% - out.println (util.HTMLFilter.filter(fruits[i])); - } - } else out.println ("none selected"); -%> -
    -
    -
    - -The checked fruits (got using beans) are
    - -<% - fruits = foo.getFruit(); -%> -
      -<% - if (!fruits[0].equals("1")) { - for (int i = 0; i < fruits.length; i++) { -%> -
    • -<% - out.println (util.HTMLFilter.filter(fruits[i])); - } - } else out.println ("none selected"); -%> -
    -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/checkbox/checkresult.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/checkbox/checkresult.jsp.html deleted file mode 100644 index 4dd0d9ba0e9b4b372823b7e4f8b4fa5fd2ce11aa..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/checkbox/checkresult.jsp.html +++ /dev/null @@ -1,64 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -<body bgcolor="white">
    -<font size=5 color="red">
    -<%! String[] fruits; %>
    -<jsp:useBean id="foo" scope="page" class="checkbox.CheckTest" />
    -
    -<jsp:setProperty name="foo" property="fruit" param="fruit" />
    -<hr>
    -The checked fruits (got using request) are: <br>
    -<%
    -    fruits = request.getParameterValues("fruit");
    -%>
    -<ul>
    -<%
    -    if (fruits != null) {
    -      for (int i = 0; i < fruits.length; i++) {
    -%>
    -<li>
    -<%
    -          out.println (util.HTMLFilter.filter(fruits[i]));
    -      }
    -    } else out.println ("none selected");
    -%>
    -</ul>
    -<br>
    -<hr>
    -
    -The checked fruits (got using beans) are <br>
    -
    -<%
    -        fruits = foo.getFruit();
    -%>
    -<ul>
    -<%
    -    if (!fruits[0].equals("1")) {
    -      for (int i = 0; i < fruits.length; i++) {
    -%>
    -<li>
    -<%
    -          out.println (util.HTMLFilter.filter(fruits[i]));
    -      }
    -    } else out.println ("none selected");
    -%>
    -</ul>
    -</font>
    -</body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/checkbox/cresult.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/checkbox/cresult.html deleted file mode 100644 index b6a28d6645fcbaedc7666e9e88d068fbd1fdaa09..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/checkbox/cresult.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - -Untitled Document - - - - -

    - -

    Source Code for Checkbox Example -

    - -

    Property Sheet for CheckTest -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/colors/ColorGameBean.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/colors/ColorGameBean.html deleted file mode 100644 index 172bc6646b2664e88fdce6c17607d4acede0a6ca..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/colors/ColorGameBean.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - -colors.ColorGameBean Bean Properties - - -

    -colors.ColorGameBean Bean Properties -

    -
    -
    -
    public class ColorGameBean
    extends Object
    - -

    -


    - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -Properties Summary
    - -String -ColorGameBean:color2 -
    -
    - -Single -
    - -String -ColorGameBean:color1 -
    -
    - -Single -
    - -int -ColorGameBean:attempts -
    -
    - -Single -
    - -boolean -ColorGameBean:hint -
    -
    - -Single -
    - -boolean -ColorGameBean:success -
    -
    - -Single -
    - -boolean -ColorGameBean:hintTaken -
    -
    - -Single -
    -


    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/colors/clr.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/colors/clr.html deleted file mode 100644 index e411f597d22d86c6d9919ab19ebddef30da7cbee..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/colors/clr.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - -Untitled Document - - - - -

    - -

    Source Code for Color Example -

    - -

    Property Sheet for ColorGameBean -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/colors/colors.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/colors/colors.html deleted file mode 100644 index 900651e2c6db1a40892cad4562404b37f60167c1..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/colors/colors.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - -
    -This web page is an example using JSP and BEANs. -

    -Guess my favorite two colors - -

    If you fail to guess both of them - you get yellow on red. - -

    If you guess one of them right, either your foreground or - your background will change to the color that was guessed right. - -

    Guess them both right and your browser foreground/background - will change to my two favorite colors to display this page. - -


    -
    -Color #1: -
    -Color #2: -

    - - -

    - -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/colors/colrs.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/colors/colrs.jsp deleted file mode 100644 index ec3af887c4fd3f744c6c99f48caf250621855b5d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/colors/colrs.jsp +++ /dev/null @@ -1,70 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - - - - -<% - cb.processRequest(); -%> - -> -> -

    - -<% if (cb.getHint()==true) { %> - -

    Hint #1: Vampires prey at night! -

    Hint #2: Nancy without the n. - -<% } %> - -<% if (cb.getSuccess()==true) { %> - -

    CONGRATULATIONS!! - <% if (cb.getHintTaken()==true) { %> - -

    ( although I know you cheated and peeked into the hints) - - <% } %> - -<% } %> - -

    Total attempts so far: <%= cb.getAttempts() %> -

    - -

    - -

    - -Color #1: - -
    - -Color #2: - -

    - - - - -

    - -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/colors/colrs.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/colors/colrs.jsp.html deleted file mode 100644 index 7ef38aecfd57850129d9e469d2943ab001e0424b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/colors/colrs.jsp.html +++ /dev/null @@ -1,71 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -
    -<jsp:useBean id="cb" scope="session" class="colors.ColorGameBean" />
    -<jsp:setProperty name="cb" property="*" />
    -
    -<%
    -    cb.processRequest();
    -%>
    -
    -<body bgcolor=<%= cb.getColor1() %>>
    -<font size=6 color=<%= cb.getColor2() %>>
    -<p>
    -
    -<% if (cb.getHint()==true) { %>
    -
    -    <p> Hint #1: Vampires prey at night!
    -    <p>  <p> Hint #2: Nancy without the n.
    -
    -<% } %>
    -
    -<% if  (cb.getSuccess()==true) { %>
    -
    -    <p> CONGRATULATIONS!!
    -    <% if  (cb.getHintTaken()==true) { %>
    -
    -        <p> ( although I know you cheated and peeked into the hints)
    -
    -    <% } %>
    -
    -<% } %>
    -
    -<p> Total attempts so far: <%= cb.getAttempts() %>
    -<p>
    -
    -<p>
    -
    -<form method=POST action=colrs.jsp>
    -
    -Color #1: <input type=text name= color1 size=16>
    -
    -<br>
    -
    -Color #2: <input type=text name= color2 size=16>
    -
    -<p>
    -
    -<input type=submit name=action value="Submit">
    -<input type=submit name=action value="Hint">
    -
    -</form>
    -
    -</font>
    -</body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/dates/date.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/dates/date.html deleted file mode 100644 index 683ab4d2a06a2f57a0b7e04d5b664bda562e4116..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/dates/date.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - -Untitled Document - - - - -

    - -

    Source Code for Date Example -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/dates/date.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/dates/date.jsp deleted file mode 100644 index d6c6b8664ce35671e5e9ad0867b5a0b2e34b065f..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/dates/date.jsp +++ /dev/null @@ -1,41 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - -<%@ page session="false"%> - - - - - -
      -
    • Day of month: is -
    • Year: is -
    • Month: is -
    • Time: is -
    • Date: is -
    • Day: is -
    • Day Of Year: is -
    • Week Of Year: is -
    • era: is -
    • DST Offset: is -
    • Zone Offset: is -
    -
    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/dates/date.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/dates/date.jsp.html deleted file mode 100644 index 3f2abfc4c7596d8d5484e43b22127420473896af..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/dates/date.jsp.html +++ /dev/null @@ -1,42 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -
    -<%@ page session="false"%>
    -
    -<body bgcolor="white">
    -<jsp:useBean id='clock' scope='page' class='dates.JspCalendar' type="dates.JspCalendar" />
    -
    -<font size=4>
    -<ul>
    -<li>    Day of month: is  <jsp:getProperty name="clock" property="dayOfMonth"/>
    -<li>    Year: is  <jsp:getProperty name="clock" property="year"/>
    -<li>    Month: is  <jsp:getProperty name="clock" property="month"/>
    -<li>    Time: is  <jsp:getProperty name="clock" property="time"/>
    -<li>    Date: is  <jsp:getProperty name="clock" property="date"/>
    -<li>    Day: is  <jsp:getProperty name="clock" property="day"/>
    -<li>    Day Of Year: is  <jsp:getProperty name="clock" property="dayOfYear"/>
    -<li>    Week Of Year: is  <jsp:getProperty name="clock" property="weekOfYear"/>
    -<li>    era: is  <jsp:getProperty name="clock" property="era"/>
    -<li>    DST Offset: is  <jsp:getProperty name="clock" property="DSTOffset"/>
    -<li>    Zone Offset: is  <jsp:getProperty name="clock" property="zoneOffset"/>
    -</ul>
    -</font>
    -
    -</body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/er.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/er.html deleted file mode 100644 index af78159dda604e48e62fc803f324ca8b787fd7d9..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/er.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - -Untitled Document - - - - -

    - -

    Source Code for Error Example -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/err.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/err.jsp deleted file mode 100644 index d188456b30403024e670b3e125d4446afdfda22e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/err.jsp +++ /dev/null @@ -1,44 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - - - <%@ page errorPage="errorpge.jsp" %> - - <% - String name = null; - - if (request.getParameter("name") == null) { - %> - <%@ include file="error.html" %> - <% - } else { - foo.setName(request.getParameter("name")); - if (foo.getName().equalsIgnoreCase("integra")) - name = "acura"; - if (name.equalsIgnoreCase("acura")) { - %> - -

    Yes!!! Acura is my favorite car. - - <% - } - } - %> - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/err.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/err.jsp.html deleted file mode 100644 index 3d607a5c90131afc389176e59a0071aab68fdf5c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/err.jsp.html +++ /dev/null @@ -1,45 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -<body bgcolor="lightblue">
    -
    -    <%@ page errorPage="errorpge.jsp" %>
    -    <jsp:useBean id="foo" scope="request" class="error.Smart" />
    -    <%
    -        String name = null;
    -
    -        if (request.getParameter("name") == null) {
    -    %>
    -    <%@ include file="error.html" %>
    -    <%
    -        } else {
    -          foo.setName(request.getParameter("name"));
    -          if (foo.getName().equalsIgnoreCase("integra"))
    -              name = "acura";
    -          if (name.equalsIgnoreCase("acura")) {
    -    %>
    -
    -    <H1> Yes!!! <a href="http://www.acura.com">Acura</a> is my favorite car.
    -
    -    <%
    -          }
    -        }
    -    %>
    -</body>
    -</html>
    -
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/error.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/error.html deleted file mode 100644 index b1b029c90a8ac8fdeb4d4353a02012b052f727ae..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/error.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - -

    This example uses errorpage directive

    -
    -

    Select my favourite car.

    -
    - - -
    -
    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/errorpge.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/errorpge.jsp deleted file mode 100644 index 5c6eb0a38718b7eb4e2b359fbc0e19d4f1cb069a..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/errorpge.jsp +++ /dev/null @@ -1,25 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - - - - <%@ page isErrorPage="true" %> -

    The exception <%= exception.getMessage() %> tells me you - made a wrong choice. - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/errorpge.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/errorpge.jsp.html deleted file mode 100644 index 3d690dc96df6098eeebfd05878d0f736822fee59..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/error/errorpge.jsp.html +++ /dev/null @@ -1,26 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -
    -<body bgcolor="red">
    -
    -    <%@ page isErrorPage="true" %>
    -    <h1> The exception <%= exception.getMessage() %> tells me you
    -         made a wrong choice.
    -</body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/forward.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/forward.jsp deleted file mode 100644 index 092d9b4c73a29de06f023d5c66fff343862494cd..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/forward.jsp +++ /dev/null @@ -1,33 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - -<% - double freeMem = Runtime.getRuntime().freeMemory(); - double totlMem = Runtime.getRuntime().totalMemory(); - double percent = freeMem/totlMem; - if (percent < 0.5) { -%> - - - -<% } else { %> - - - -<% } %> - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/forward.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/forward.jsp.html deleted file mode 100644 index 32f8bf72903c9a6657eeda670da4d93f5d03bbdc..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/forward.jsp.html +++ /dev/null @@ -1,34 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -<%
    -   double freeMem = Runtime.getRuntime().freeMemory();
    -   double totlMem = Runtime.getRuntime().totalMemory();
    -   double percent = freeMem/totlMem;
    -   if (percent < 0.5) {
    -%>
    -
    -<jsp:forward page="one.jsp"/>
    -
    -<% } else { %>
    -
    -<jsp:forward page="two.html"/>
    -
    -<% } %>
    -
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/fwd.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/fwd.html deleted file mode 100644 index b3b0219fc903c6fc9423b5c32bc89b38cdf92b26..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/fwd.html +++ /dev/null @@ -1,30 +0,0 @@ - - - -Untitled Document - - - - -

    - -

    Source Code for Forward Example -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/one.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/one.jsp deleted file mode 100644 index c7f0004aa6f9164429ee276cbaf7892705a59777..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/one.jsp +++ /dev/null @@ -1,23 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - - - - -VM Memory usage < 50%. - \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/one.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/one.jsp.html deleted file mode 100644 index af185012c332fdfa180b218ddfa3db08eea22b4a..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/one.jsp.html +++ /dev/null @@ -1,24 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -
    -<body bgcolor="white">
    -<font color="red">
    -
    -VM Memory usage &lt; 50%.
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/two.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/two.html deleted file mode 100644 index 24f4c08f041e57b6b94fff0603edb7e32b0c3581..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/forward/two.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -VM Memory usage > 50%. - \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/images/code.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/images/code.gif deleted file mode 100644 index 93af2cd130aa61cb2f235cdd6f0e75ab444819ef..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/images/code.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/images/execute.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/images/execute.gif deleted file mode 100644 index f64d70fd233d6fb3fcbdeedc02061871984f8fb5..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/images/execute.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/images/read.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/images/read.gif deleted file mode 100644 index 66cb4e9232ed295bba1347e92828d5f974536fc3..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/images/read.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/images/return.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/images/return.gif deleted file mode 100644 index af4f68f4a3a13e0ef1dc0045b04c2c93354cdf40..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/images/return.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/foo.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/foo.html deleted file mode 100644 index 168c8c852f19cb367ec37e05a41c34dfee6ae293..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/foo.html +++ /dev/null @@ -1,17 +0,0 @@ - -To get the current time in ms diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/foo.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/foo.jsp deleted file mode 100644 index bb476c78e9341fa292c27b00157d93ae6a1092b0..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/foo.jsp +++ /dev/null @@ -1,17 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - ---%><%= System.currentTimeMillis() %> diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/foo.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/foo.jsp.html deleted file mode 100644 index 2a1ac7b04ba8b20b7f9b6f345244b959572db9cb..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/foo.jsp.html +++ /dev/null @@ -1,18 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    -
    ---%><%= System.currentTimeMillis() %>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/inc.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/inc.html deleted file mode 100644 index fedaed0918e41fecca0b2b69823cf31bf7d8bcbe..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/inc.html +++ /dev/null @@ -1,30 +0,0 @@ - - - -Untitled Document - - - - -

    - -

    Source Code for Include Example -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/include.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/include.jsp deleted file mode 100644 index 62a8c2247177c00b63c9beadee74d39db38fadbb..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/include.jsp +++ /dev/null @@ -1,30 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - - - - - -<%@ page buffer="5kb" autoFlush="false" %> - -

    In place evaluation of another JSP which gives you the current time: <%@ include file="foo.jsp" %> - -

    by including the output of another JSP: -:-) - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/include.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/include.jsp.html deleted file mode 100644 index 4f529c16d8f0bb4cca3cb20e6b39c6505891d677..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/include/include.jsp.html +++ /dev/null @@ -1,31 +0,0 @@ -Source Code

    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -
    -<body bgcolor="white">
    -
    -<font color="red">
    -
    -<%@ page buffer="5kb" autoFlush="false" %>
    -
    -<p>In place evaluation of another JSP which gives you the current time: <%@ include file="foo.jsp" %>
    -
    -<p> <jsp:include page="foo.html" flush="true"/> by including the output of another JSP: <jsp:include page="foo.jsp" flush="true"/>
    -:-)
    -
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/index.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/index.html deleted file mode 100644 index b62e6ec74658264c126fe15886c68ade61bc373d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/index.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - JSP Examples - - - -

    JSP -Samples

    -

    This is a collection of samples demonstrating the usage of different -parts of the Java Server Pages (JSP) specification. Both JSP 2.0 and -JSP 1.2 examples are presented below. -

    These examples will only work when these pages are being served by a -servlet engine; of course, we recommend -Tomcat. -They will not work if you are viewing these pages via a -"file://..." URL. -

    To navigate your way through the examples, the following icons will -help:

    -
      -
    • Execute the example
    • -
    • Look at the source code for the example
    • - -
    • Return to this screen
    • -
    - -

    Tip: For session scoped beans to work, the cookies must be enabled. -This can be done using browser options.

    -

    JSP 2.0 Examples

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Expression Language
    Basic ArithmeticExecuteSource
    Basic ComparisonsExecuteSource
    Implicit ObjectsExecuteSource
    FunctionsExecuteSource
    Composite ExpressionsExecuteSource

    SimpleTag Handlers and JSP Fragments
    Hello World TagExecuteSource
    Repeat TagExecuteSource
    Book ExampleExecuteSource

    Tag Files
    Hello World Tag FileExecuteSource
    Panel Tag FileExecuteSource
    Display Products ExampleExecuteSource

    New JSP XML Syntax (.jspx)
    XHTML Basic ExampleExecuteSource
    SVG (Scalable Vector Graphics)ExecuteSource

    Other JSP 2.0 Features
    <jsp:attribute> and <jsp:body>ExecuteSource
    Shuffle ExampleExecuteSource
    Attributes With Dynamic NamesExecuteSource
    JSP ConfigurationExecuteSource
    - -

    JSP 1.2 Examples

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NumberguessExecuteSource
    DateExecuteSource
    SnoopExecuteSource
    ErrorPageExecuteSource
    CartsExecuteSource
    CheckboxExecuteSource
    ColorExecuteSource
    CalendarExecuteSource
    IncludeExecuteSource
    ForwardExecuteSource
    PluginExecuteSource
    JSP-Servlet-JSPExecuteSource
    Custom tag exampleExecuteSource
    XML syntax exampleExecuteSource
    - -

    Tag Plugins

    - - - - - - - - - - - - - - - - - - - - -
    If - - Execute - - - Source -
    ForEach - - Execute - - - Source -
    Choose - - Execute - - - Source -
    - -

    Other Examples

    - - - - - - - - - - - -
    FORM Authentication - Execute -
    Example that demonstrates protecting a resource and - using Form-Based authentication. To access the page the user must - have role of either "tomcat" or "role1". By default no user - is configured to have these roles.
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/Functions.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/Functions.java.html deleted file mode 100644 index aa84cccc46dd097cad8b43b9f1e8e1b2398e847c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/Functions.java.html +++ /dev/null @@ -1,46 +0,0 @@ -Source Code
    /*
    -* Licensed to the Apache Software Foundation (ASF) under one or more
    -* contributor license agreements.  See the NOTICE file distributed with
    -* this work for additional information regarding copyright ownership.
    -* The ASF licenses this file to You under the Apache License, Version 2.0
    -* (the "License"); you may not use this file except in compliance with
    -* the License.  You may obtain a copy of the License at
    -*
    -*     http://www.apache.org/licenses/LICENSE-2.0
    -*
    -* Unless required by applicable law or agreed to in writing, software
    -* distributed under the License is distributed on an "AS IS" BASIS,
    -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -* See the License for the specific language governing permissions and
    -* limitations under the License.
    -*/
    -package jsp2.examples.el;
    -
    -import java.util.Locale;
    -
    -/**
    - * Defines the functions for the jsp2 example tag library.
    - *
    - * <p>Each function is defined as a static method.</p>
    - */
    -public class Functions {
    -    public static String reverse( String text ) {
    -        return new StringBuilder( text ).reverse().toString();
    -    }
    -
    -    public static int numVowels( String text ) {
    -        String vowels = "aeiouAEIOU";
    -        int result = 0;
    -        for( int i = 0; i < text.length(); i++ ) {
    -            if( vowels.indexOf( text.charAt( i ) ) != -1 ) {
    -                result++;
    -            }
    -        }
    -        return result;
    -    }
    -
    -    public static String caps( String text ) {
    -        return text.toUpperCase(Locale.ENGLISH);
    -    }
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/ValuesBean.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/ValuesBean.java.html deleted file mode 100644 index 3744236491f837aaaa856d7282ce51257cb0b02d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/ValuesBean.java.html +++ /dev/null @@ -1,53 +0,0 @@ -Source Code
    /*
    -* Licensed to the Apache Software Foundation (ASF) under one or more
    -* contributor license agreements.  See the NOTICE file distributed with
    -* this work for additional information regarding copyright ownership.
    -* The ASF licenses this file to You under the Apache License, Version 2.0
    -* (the "License"); you may not use this file except in compliance with
    -* the License.  You may obtain a copy of the License at
    -*
    -*     http://www.apache.org/licenses/LICENSE-2.0
    -*
    -* Unless required by applicable law or agreed to in writing, software
    -* distributed under the License is distributed on an "AS IS" BASIS,
    -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -* See the License for the specific language governing permissions and
    -* limitations under the License.
    -*/
    -
    -
    -package jsp2.examples;
    -
    -/**
    - * Accept and display a value.
    - */
    -public class ValuesBean {
    -    private String string;
    -    private double doubleValue;
    -    private long longValue;
    -
    -    public String getStringValue() {
    -        return this.string;
    -    }
    -
    -    public void setStringValue(String string) {
    -        this.string = string;
    -    }
    -
    -    public double getDoubleValue() {
    -        return doubleValue;
    -    }
    -
    -    public void setDoubleValue(double doubleValue) {
    -        this.doubleValue = doubleValue;
    -    }
    -
    -    public long getLongValue() {
    -        return longValue;
    -    }
    -
    -    public void setLongValue(long longValue) {
    -        this.longValue = longValue;
    -    }
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/ValuesTag.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/ValuesTag.java.html deleted file mode 100644 index 490d2123be7995778694fab07fe51352fb114ad4..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/ValuesTag.java.html +++ /dev/null @@ -1,80 +0,0 @@ -Source Code
    /*
    - * Licensed to the Apache Software Foundation (ASF) under one or more
    - * contributor license agreements.  See the NOTICE file distributed with
    - * this work for additional information regarding copyright ownership.
    - * The ASF licenses this file to You under the Apache License, Version 2.0
    - * (the "License"); you may not use this file except in compliance with
    - * the License.  You may obtain a copy of the License at
    - *
    - *     http://www.apache.org/licenses/LICENSE-2.0
    - *
    - * Unless required by applicable law or agreed to in writing, software
    - * distributed under the License is distributed on an "AS IS" BASIS,
    - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    - * See the License for the specific language governing permissions and
    - * limitations under the License.
    - */
    -package examples;
    -
    -import java.io.IOException;
    -
    -import javax.servlet.jsp.JspException;
    -import javax.servlet.jsp.JspTagException;
    -import javax.servlet.jsp.JspWriter;
    -import javax.servlet.jsp.tagext.TagSupport;
    -
    -/**
    - * Accept and display a value.
    - */
    -public class ValuesTag extends TagSupport {
    -
    -    private static final long serialVersionUID = 1L;
    -
    -    // Using "-1" as the default value,
    -    // in the assumption that it won't be used as the value.
    -    // Cannot use null here, because null is an important case
    -    // that should be present in the tests.
    -    private Object objectValue = "-1";
    -    private String stringValue = "-1";
    -    private long longValue = -1;
    -    private double doubleValue = -1;
    -
    -    public void setObject(Object objectValue) {
    -        this.objectValue = objectValue;
    -    }
    -
    -    public void setString(String stringValue) {
    -        this.stringValue = stringValue;
    -    }
    -
    -    public void setLong(long longValue) {
    -        this.longValue = longValue;
    -    }
    -
    -    public void setDouble(double doubleValue) {
    -        this.doubleValue = doubleValue;
    -    }
    -
    -    @Override
    -    public int doEndTag() throws JspException {
    -        JspWriter out = pageContext.getOut();
    -
    -        try {
    -            if (!"-1".equals(objectValue)) {
    -                out.print(objectValue);
    -            } else if (!"-1".equals(stringValue)) {
    -                out.print(stringValue);
    -            } else if (longValue != -1) {
    -                out.print(longValue);
    -            } else if (doubleValue != -1) {
    -                out.print(doubleValue);
    -            } else {
    -                out.print("-1");
    -            }
    -        } catch (IOException ex) {
    -            throw new JspTagException("IOException: " + ex.toString(), ex);
    -        }
    -        return super.doEndTag();
    -    }
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-arithmetic.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-arithmetic.html deleted file mode 100644 index 8a2f0a61dbb02b070dd63d7a3df501cd980f2432..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-arithmetic.html +++ /dev/null @@ -1,30 +0,0 @@ - - - -View Source Code - - - - -

    - -

    Source Code for Basic Arithmetic Example -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp deleted file mode 100644 index 757e809f15a3d0a8d030f94632ae221474560e7d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp +++ /dev/null @@ -1,88 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - - JSP 2.0 Expression Language - Basic Arithmetic - - -

    JSP 2.0 Expression Language - Basic Arithmetic

    -
    - This example illustrates basic Expression Language arithmetic. - Addition (+), subtraction (-), multiplication (*), division (/ or div), - and modulus (% or mod) are all supported. Error conditions, like - division by zero, are handled gracefully. -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    EL ExpressionResult
    \${1}${1}
    \${1 + 2}${1 + 2}
    \${1.2 + 2.3}${1.2 + 2.3}
    \${1.2E4 + 1.4}${1.2E4 + 1.4}
    \${-4 - 2}${-4 - 2}
    \${21 * 2}${21 * 2}
    \${3/4}${3/4}
    \${3 div 4}${3 div 4}
    \${3/0}${3/0}
    \${10%4}${10%4}
    \${10 mod 4}${10 mod 4}
    \${(1==2) ? 3 : 4}${(1==2) ? 3 : 4}
    -
    -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp.html deleted file mode 100644 index b8e1a69635856731752a70dde2f4570dd9c00a9c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp.html +++ /dev/null @@ -1,89 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -  <head>
    -    <title>JSP 2.0 Expression Language - Basic Arithmetic</title>
    -  </head>
    -  <body>
    -    <h1>JSP 2.0 Expression Language - Basic Arithmetic</h1>
    -    <hr>
    -    This example illustrates basic Expression Language arithmetic.
    -    Addition (+), subtraction (-), multiplication (*), division (/ or div),
    -    and modulus (% or mod) are all supported.  Error conditions, like
    -    division by zero, are handled gracefully.
    -    <br>
    -    <blockquote>
    -      <code>
    -        <table border="1">
    -          <thead>
    -        <td><b>EL Expression</b></td>
    -        <td><b>Result</b></td>
    -      </thead>
    -      <tr>
    -        <td>\${1}</td>
    -        <td>${1}</td>
    -      </tr>
    -      <tr>
    -        <td>\${1 + 2}</td>
    -        <td>${1 + 2}</td>
    -      </tr>
    -      <tr>
    -        <td>\${1.2 + 2.3}</td>
    -        <td>${1.2 + 2.3}</td>
    -      </tr>
    -      <tr>
    -        <td>\${1.2E4 + 1.4}</td>
    -        <td>${1.2E4 + 1.4}</td>
    -      </tr>
    -      <tr>
    -        <td>\${-4 - 2}</td>
    -        <td>${-4 - 2}</td>
    -      </tr>
    -      <tr>
    -        <td>\${21 * 2}</td>
    -        <td>${21 * 2}</td>
    -      </tr>
    -      <tr>
    -        <td>\${3/4}</td>
    -        <td>${3/4}</td>
    -      </tr>
    -      <tr>
    -        <td>\${3 div 4}</td>
    -        <td>${3 div 4}</td>
    -      </tr>
    -      <tr>
    -        <td>\${3/0}</td>
    -        <td>${3/0}</td>
    -      </tr>
    -      <tr>
    -        <td>\${10%4}</td>
    -        <td>${10%4}</td>
    -      </tr>
    -      <tr>
    -        <td>\${10 mod 4}</td>
    -        <td>${10 mod 4}</td>
    -      </tr>
    -    <tr>
    -      <td>\${(1==2) ? 3 : 4}</td>
    -      <td>${(1==2) ? 3 : 4}</td>
    -    </tr>
    -    </table>
    -      </code>
    -    </blockquote>
    -  </body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-comparisons.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-comparisons.html deleted file mode 100644 index 60fb40a3bbf90ab293d065a36ebe01dec9a34849..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-comparisons.html +++ /dev/null @@ -1,30 +0,0 @@ - - - -View Source Code - - - - -

    - -

    Source Code for Basic Comparisons Example -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp deleted file mode 100644 index d72f7245f8cd2fe21be00024f78d6fe5deed5ca0..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp +++ /dev/null @@ -1,116 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - - JSP 2.0 Expression Language - Basic Comparisons - - -

    JSP 2.0 Expression Language - Basic Comparisons

    -
    - This example illustrates basic Expression Language comparisons. - The following comparison operators are supported: -
      -
    • Less-than (< or lt)
    • -
    • Greater-than (> or gt)
    • -
    • Less-than-or-equal (<= or le)
    • -
    • Greater-than-or-equal (>= or ge)
    • -
    • Equal (== or eq)
    • -
    • Not Equal (!= or ne)
    • -
    -
    - Numeric - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    EL ExpressionResult
    \${1 < 2}${1 < 2}
    \${1 lt 2}${1 lt 2}
    \${1 > (4/2)}${1 > (4/2)}
    \${1 gt (4/2)}${1 gt (4/2)}
    \${4.0 >= 3}${4.0 >= 3}
    \${4.0 ge 3}${4.0 ge 3}
    \${4 <= 3}${4 <= 3}
    \${4 le 3}${4 le 3}
    \${100.0 == 100}${100.0 == 100}
    \${100.0 eq 100}${100.0 eq 100}
    \${(10*10) != 100}${(10*10) != 100}
    \${(10*10) ne 100}${(10*10) ne 100}
    -
    -
    - Alphabetic - - - - - - - - - - - - - - - - - - -
    EL ExpressionResult
    \${'a' < 'b'}${'a' < 'b'}
    \${'hip' > 'hit'}${'hip' > 'hit'}
    \${'4' > 3}${'4' > 3}
    -
    -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp.html deleted file mode 100644 index d20471e2070488597d0bf7c7d10e0e21c06a144e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp.html +++ /dev/null @@ -1,117 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -  <head>
    -    <title>JSP 2.0 Expression Language - Basic Comparisons</title>
    -  </head>
    -  <body>
    -    <h1>JSP 2.0 Expression Language - Basic Comparisons</h1>
    -    <hr>
    -    This example illustrates basic Expression Language comparisons.
    -    The following comparison operators are supported:
    -    <ul>
    -      <li>Less-than (&lt; or lt)</li>
    -      <li>Greater-than (&gt; or gt)</li>
    -      <li>Less-than-or-equal (&lt;= or le)</li>
    -      <li>Greater-than-or-equal (&gt;= or ge)</li>
    -      <li>Equal (== or eq)</li>
    -      <li>Not Equal (!= or ne)</li>
    -    </ul>
    -    <blockquote>
    -      <u><b>Numeric</b></u>
    -      <code>
    -        <table border="1">
    -          <thead>
    -        <td><b>EL Expression</b></td>
    -        <td><b>Result</b></td>
    -      </thead>
    -      <tr>
    -        <td>\${1 &lt; 2}</td>
    -        <td>${1 < 2}</td>
    -      </tr>
    -      <tr>
    -        <td>\${1 lt 2}</td>
    -        <td>${1 lt 2}</td>
    -      </tr>
    -      <tr>
    -        <td>\${1 &gt; (4/2)}</td>
    -        <td>${1 > (4/2)}</td>
    -      </tr>
    -      <tr>
    -        <td>\${1 gt (4/2)}</td>
    -        <td>${1 gt (4/2)}</td>
    -      </tr>
    -      <tr>
    -        <td>\${4.0 &gt;= 3}</td>
    -        <td>${4.0 >= 3}</td>
    -      </tr>
    -      <tr>
    -        <td>\${4.0 ge 3}</td>
    -        <td>${4.0 ge 3}</td>
    -      </tr>
    -      <tr>
    -        <td>\${4 &lt;= 3}</td>
    -        <td>${4 <= 3}</td>
    -      </tr>
    -      <tr>
    -        <td>\${4 le 3}</td>
    -        <td>${4 le 3}</td>
    -      </tr>
    -      <tr>
    -        <td>\${100.0 == 100}</td>
    -        <td>${100.0 == 100}</td>
    -      </tr>
    -      <tr>
    -        <td>\${100.0 eq 100}</td>
    -        <td>${100.0 eq 100}</td>
    -      </tr>
    -      <tr>
    -        <td>\${(10*10) != 100}</td>
    -        <td>${(10*10) != 100}</td>
    -      </tr>
    -      <tr>
    -        <td>\${(10*10) ne 100}</td>
    -        <td>${(10*10) ne 100}</td>
    -      </tr>
    -    </table>
    -      </code>
    -      <br>
    -      <u><b>Alphabetic</b></u>
    -      <code>
    -        <table border="1">
    -          <thead>
    -            <td><b>EL Expression</b></td>
    -            <td><b>Result</b></td>
    -          </thead>
    -          <tr>
    -            <td>\${'a' &lt; 'b'}</td>
    -            <td>${'a' < 'b'}</td>
    -          </tr>
    -          <tr>
    -            <td>\${'hip' &gt; 'hit'}</td>
    -            <td>${'hip' > 'hit'}</td>
    -          </tr>
    -          <tr>
    -            <td>\${'4' &gt; 3}</td>
    -            <td>${'4' > 3}</td>
    -          </tr>
    -        </table>
    -      </code>
    -    </blockquote>
    -  </body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/composite.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/composite.html deleted file mode 100644 index 5900008e2dacc5cb0e8ae5917e53432a906492b6..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/composite.html +++ /dev/null @@ -1,31 +0,0 @@ - - - -View Source Code - - - - -

    - -

    Source Code for composite.jsp

    -

    Source Code for ValuesTag.java

    -

    Source Code for ValuesBean.java

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/composite.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/composite.jsp deleted file mode 100644 index ae671d48a78e1fde9e5b7dc584ab007d3b85553c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/composite.jsp +++ /dev/null @@ -1,110 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ taglib prefix="my" uri="http://tomcat.apache.org/example-taglib" %> - - - - JSP 2.0 Expression Language - Composite Expressions - - -

    JSP 2.0 Expression Language - Composite Expressions

    -
    - This example illustrates EL composite expressions. Composite expressions - are formed by grouping together multiple EL expressions. Each of them is - evaluated from left to right, coerced to String, all those strings are - concatenated, and the result is coerced to the expected type. - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    EL ExpressionTypeResult
    \${'hello'} wo\${'rld'}String${values.stringValue}
    \${'hello'} wo\${'rld'}String
    \${1+2}.\${220}Double${values.doubleValue}
    \${1+2}.\${220}Double
    000\${1}\${7}Long${values.longValue}
    000\${1}\${7}Long
    \${undefinedFoo}hello world\${undefinedBar}String${values.stringValue}
    \${undefinedFoo}hello world\${undefinedBar}String
    \${undefinedFoo}\${undefinedBar}Double${values.doubleValue}
    \${undefinedFoo}\${undefinedBar}Double
    \${undefinedFoo}\${undefinedBar}Long${values.longValue}
    \${undefinedFoo}\${undefinedBar}Long
    -
    -
    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/composite.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/composite.jsp.html deleted file mode 100644 index 375555f8e6fdf9c32b9748b75ef3f8c9a20331db..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/composite.jsp.html +++ /dev/null @@ -1,111 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@ taglib prefix="my" uri="http://tomcat.apache.org/example-taglib" %>
    -
    -<html>
    -  <head>
    -    <title>JSP 2.0 Expression Language - Composite Expressions</title>
    -  </head>
    -  <body>
    -    <h1>JSP 2.0 Expression Language - Composite Expressions</h1>
    -    <hr>
    -    This example illustrates EL composite expressions. Composite expressions
    -    are formed by grouping together multiple EL expressions. Each of them is
    -    evaluated from left to right, coerced to String, all those strings are
    -    concatenated, and the result is coerced to the expected type.
    -
    -    <jsp:useBean id="values" class="jsp2.examples.ValuesBean" />
    -
    -    <blockquote>
    -      <code>
    -        <table border="1">
    -          <thead>
    -        <td><b>EL Expression</b></td>
    -        <td><b>Type</b></td>
    -        <td><b>Result</b></td>
    -      </thead>
    -      <tr>
    -        <td>\${'hello'} wo\${'rld'}</td>
    -        <td>String</td>
    -        <td><jsp:setProperty name="values" property="stringValue" value="${'hello'} wo${'rld'}"/>${values.stringValue}</td>
    -      </tr>
    -      <tr>
    -        <td>\${'hello'} wo\${'rld'}</td>
    -        <td>String</td>
    -        <td><my:values string="${'hello'} wo${'rld'}"/></td>
    -      </tr>
    -      <tr>
    -        <td>\${1+2}.\${220}</td>
    -        <td>Double</td>
    -        <td><jsp:setProperty name="values" property="doubleValue" value="${1+2}.${220}"/>${values.doubleValue}</td>
    -      </tr>
    -      <tr>
    -        <td>\${1+2}.\${220}</td>
    -        <td>Double</td>
    -        <td><my:values double="${1+2}.${220}"/></td>
    -      </tr>
    -      <tr>
    -        <td>000\${1}\${7}</td>
    -        <td>Long</td>
    -        <td><jsp:setProperty name="values" property="longValue" value="000${1}${7}"/>${values.longValue}</td>
    -      </tr>
    -      <tr>
    -        <td>000\${1}\${7}</td>
    -        <td>Long</td>
    -        <td><my:values long="000${1}${7}"/></td>
    -      </tr>
    -      <!--
    -         Undefined values are to be coerced to String, to be "",
    -         https://bz.apache.org/bugzilla/show_bug.cgi?id=47413
    -       -->
    -      <tr>
    -        <td>\${undefinedFoo}hello world\${undefinedBar}</td>
    -        <td>String</td>
    -        <td><jsp:setProperty name="values" property="stringValue" value="${undefinedFoo}hello world${undefinedBar}"/>${values.stringValue}</td>
    -      </tr>
    -      <tr>
    -        <td>\${undefinedFoo}hello world\${undefinedBar}</td>
    -        <td>String</td>
    -        <td><my:values string="${undefinedFoo}hello world${undefinedBar}"/></td>
    -      </tr>
    -      <tr>
    -        <td>\${undefinedFoo}\${undefinedBar}</td>
    -        <td>Double</td>
    -        <td><jsp:setProperty name="values" property="doubleValue" value="${undefinedFoo}${undefinedBar}"/>${values.doubleValue}</td>
    -      </tr>
    -      <tr>
    -        <td>\${undefinedFoo}\${undefinedBar}</td>
    -        <td>Double</td>
    -        <td><my:values double="${undefinedFoo}${undefinedBar}"/></td>
    -      </tr>
    -      <tr>
    -        <td>\${undefinedFoo}\${undefinedBar}</td>
    -        <td>Long</td>
    -        <td><jsp:setProperty name="values" property="longValue" value="${undefinedFoo}${undefinedBar}"/>${values.longValue}</td>
    -      </tr>
    -      <tr>
    -        <td>\${undefinedFoo}\${undefinedBar}</td>
    -        <td>Long</td>
    -        <td><my:values long="${undefinedFoo}${undefinedBar}"/></td>
    -      </tr>
    -    </table>
    -      </code>
    -    </blockquote>
    -  </body>
    -</html>
    -
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/functions.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/functions.html deleted file mode 100644 index 726dda3661cccb3d543c67598742c5b4ee667c72..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/functions.html +++ /dev/null @@ -1,32 +0,0 @@ - - - -View Source Code - - - - -

    - -

    Source Code for functions.jsp -

    -

    Source Code for Functions.java -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/functions.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/functions.jsp deleted file mode 100644 index 12b3fa97d7c5c6256fd42e25a799864a7e3fa6dc..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/functions.jsp +++ /dev/null @@ -1,67 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> -<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%> - - - - JSP 2.0 Expression Language - Functions - - -

    JSP 2.0 Expression Language - Functions

    -
    - An upgrade from the JSTL expression language, the JSP 2.0 EL also - allows for simple function invocation. Functions are defined - by tag libraries and are implemented by a Java programmer as - static methods. - -
    - Change Parameter -
    - foo = - -
    -
    - - - - - - - - - - - - - - - - - - - - - - -
    EL ExpressionResult
    \${param["foo"]}${fn:escapeXml(param["foo"])} 
    \${my:reverse(param["foo"])}${my:reverse(fn:escapeXml(param["foo"]))} 
    \${my:reverse(my:reverse(param["foo"]))}${my:reverse(my:reverse(fn:escapeXml(param["foo"])))} 
    \${my:countVowels(param["foo"])}${my:countVowels(fn:escapeXml(param["foo"]))} 
    -
    -
    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/functions.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/functions.jsp.html deleted file mode 100644 index 1a3cdb4043c44a172967ea4b454cefb0cd217398..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/functions.jsp.html +++ /dev/null @@ -1,68 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@page contentType="text/html; charset=UTF-8" %>
    -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
    -<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>
    -
    -<html>
    -  <head>
    -    <title>JSP 2.0 Expression Language - Functions</title>
    -  </head>
    -  <body>
    -    <h1>JSP 2.0 Expression Language - Functions</h1>
    -    <hr>
    -    An upgrade from the JSTL expression language, the JSP 2.0 EL also
    -    allows for simple function invocation.  Functions are defined
    -    by tag libraries and are implemented by a Java programmer as
    -    static methods.
    -
    -    <blockquote>
    -      <u><b>Change Parameter</b></u>
    -      <form action="functions.jsp" method="GET">
    -          foo = <input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">
    -          <input type="submit">
    -      </form>
    -      <br>
    -      <code>
    -        <table border="1">
    -          <thead>
    -            <td><b>EL Expression</b></td>
    -            <td><b>Result</b></td>
    -          </thead>
    -          <tr>
    -            <td>\${param["foo"]}</td>
    -            <td>${fn:escapeXml(param["foo"])}&nbsp;</td>
    -          </tr>
    -          <tr>
    -            <td>\${my:reverse(param["foo"])}</td>
    -            <td>${my:reverse(fn:escapeXml(param["foo"]))}&nbsp;</td>
    -          </tr>
    -          <tr>
    -            <td>\${my:reverse(my:reverse(param["foo"]))}</td>
    -            <td>${my:reverse(my:reverse(fn:escapeXml(param["foo"])))}&nbsp;</td>
    -          </tr>
    -          <tr>
    -            <td>\${my:countVowels(param["foo"])}</td>
    -            <td>${my:countVowels(fn:escapeXml(param["foo"]))}&nbsp;</td>
    -          </tr>
    -        </table>
    -      </code>
    -    </blockquote>
    -  </body>
    -</html>
    -
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/implicit-objects.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/implicit-objects.html deleted file mode 100644 index 15268db59abc8a756e678c50d68368a71137d128..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/implicit-objects.html +++ /dev/null @@ -1,31 +0,0 @@ - - - -View Source Code - - - - -

    -

    - -

    Source Code for Implicit Objects Example -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/implicit-objects.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/implicit-objects.jsp deleted file mode 100644 index b5577142189aec9be3b8d09ce9a4372a3dcc0210..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/implicit-objects.jsp +++ /dev/null @@ -1,90 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@page contentType="text/html; charset=UTF-8" %> -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> - - - - JSP 2.0 Expression Language - Implicit Objects - - -

    JSP 2.0 Expression Language - Implicit Objects

    -
    - This example illustrates some of the implicit objects available - in the Expression Language. The following implicit objects are - available (not all illustrated here): -
      -
    • pageContext - the PageContext object
    • -
    • pageScope - a Map that maps page-scoped attribute names to - their values
    • -
    • requestScope - a Map that maps request-scoped attribute names - to their values
    • -
    • sessionScope - a Map that maps session-scoped attribute names - to their values
    • -
    • applicationScope - a Map that maps application-scoped attribute - names to their values
    • -
    • param - a Map that maps parameter names to a single String - parameter value
    • -
    • paramValues - a Map that maps parameter names to a String[] of - all values for that parameter
    • -
    • header - a Map that maps header names to a single String - header value
    • -
    • headerValues - a Map that maps header names to a String[] of - all values for that header
    • -
    • initParam - a Map that maps context initialization parameter - names to their String parameter value
    • -
    • cookie - a Map that maps cookie names to a single Cookie object.
    • -
    - -
    - Change Parameter -
    - foo = - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    EL ExpressionResult
    \${param.foo}${fn:escapeXml(param["foo"])} 
    \${param["foo"]}${fn:escapeXml(param["foo"])} 
    \${header["host"]}${fn:escapeXml(header["host"])} 
    \${header["accept"]}${fn:escapeXml(header["accept"])} 
    \${header["user-agent"]}${fn:escapeXml(header["user-agent"])} 
    -
    -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/implicit-objects.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/implicit-objects.jsp.html deleted file mode 100644 index db967e7a91e32752152b38d0dadbe783eb7fe736..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/el/implicit-objects.jsp.html +++ /dev/null @@ -1,91 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@page contentType="text/html; charset=UTF-8" %>
    -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
    -
    -<html>
    -  <head>
    -    <title>JSP 2.0 Expression Language - Implicit Objects</title>
    -  </head>
    -  <body>
    -    <h1>JSP 2.0 Expression Language - Implicit Objects</h1>
    -    <hr>
    -    This example illustrates some of the implicit objects available
    -    in the Expression Language.  The following implicit objects are
    -    available (not all illustrated here):
    -    <ul>
    -      <li>pageContext - the PageContext object</li>
    -      <li>pageScope - a Map that maps page-scoped attribute names to
    -          their values</li>
    -      <li>requestScope - a Map that maps request-scoped attribute names
    -          to their values</li>
    -      <li>sessionScope - a Map that maps session-scoped attribute names
    -          to their values</li>
    -      <li>applicationScope - a Map that maps application-scoped attribute
    -          names to their values</li>
    -      <li>param - a Map that maps parameter names to a single String
    -          parameter value</li>
    -      <li>paramValues - a Map that maps parameter names to a String[] of
    -          all values for that parameter</li>
    -      <li>header - a Map that maps header names to a single String
    -          header value</li>
    -      <li>headerValues - a Map that maps header names to a String[] of
    -          all values for that header</li>
    -      <li>initParam - a Map that maps context initialization parameter
    -          names to their String parameter value</li>
    -      <li>cookie - a Map that maps cookie names to a single Cookie object.</li>
    -    </ul>
    -
    -    <blockquote>
    -      <u><b>Change Parameter</b></u>
    -      <form action="implicit-objects.jsp" method="GET">
    -          foo = <input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">
    -          <input type="submit">
    -      </form>
    -      <br>
    -      <code>
    -        <table border="1">
    -          <thead>
    -            <td><b>EL Expression</b></td>
    -            <td><b>Result</b></td>
    -          </thead>
    -          <tr>
    -            <td>\${param.foo}</td>
    -            <td>${fn:escapeXml(param["foo"])}&nbsp;</td>
    -          </tr>
    -          <tr>
    -            <td>\${param["foo"]}</td>
    -            <td>${fn:escapeXml(param["foo"])}&nbsp;</td>
    -          </tr>
    -          <tr>
    -            <td>\${header["host"]}</td>
    -            <td>${fn:escapeXml(header["host"])}&nbsp;</td>
    -          </tr>
    -          <tr>
    -            <td>\${header["accept"]}</td>
    -            <td>${fn:escapeXml(header["accept"])}&nbsp;</td>
    -          </tr>
    -          <tr>
    -            <td>\${header["user-agent"]}</td>
    -            <td>${fn:escapeXml(header["user-agent"])}&nbsp;</td>
    -          </tr>
    -        </table>
    -      </code>
    -    </blockquote>
    -  </body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/FooBean.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/FooBean.java.html deleted file mode 100644 index a5ddf411b8060f6b495e120efdb6f8a2a33f5000..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/FooBean.java.html +++ /dev/null @@ -1,37 +0,0 @@ -Source Code
    /*
    -* Licensed to the Apache Software Foundation (ASF) under one or more
    -* contributor license agreements.  See the NOTICE file distributed with
    -* this work for additional information regarding copyright ownership.
    -* The ASF licenses this file to You under the Apache License, Version 2.0
    -* (the "License"); you may not use this file except in compliance with
    -* the License.  You may obtain a copy of the License at
    -*
    -*     http://www.apache.org/licenses/LICENSE-2.0
    -*
    -* Unless required by applicable law or agreed to in writing, software
    -* distributed under the License is distributed on an "AS IS" BASIS,
    -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -* See the License for the specific language governing permissions and
    -* limitations under the License.
    -*/
    -
    -
    -package jsp2.examples;
    -
    -public class FooBean {
    -    private String bar;
    -
    -    public FooBean() {
    -        bar = "Initial value";
    -    }
    -
    -    public String getBar() {
    -        return this.bar;
    -    }
    -
    -    public void setBar(String bar) {
    -        this.bar = bar;
    -    }
    -
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/HelloWorldSimpleTag.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/HelloWorldSimpleTag.java.html deleted file mode 100644 index 8c0bd4dc49c18e67a7a750bd46312cb633d3ca72..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/HelloWorldSimpleTag.java.html +++ /dev/null @@ -1,35 +0,0 @@ -Source Code
    /*
    -* Licensed to the Apache Software Foundation (ASF) under one or more
    -* contributor license agreements.  See the NOTICE file distributed with
    -* this work for additional information regarding copyright ownership.
    -* The ASF licenses this file to You under the Apache License, Version 2.0
    -* (the "License"); you may not use this file except in compliance with
    -* the License.  You may obtain a copy of the License at
    -*
    -*     http://www.apache.org/licenses/LICENSE-2.0
    -*
    -* Unless required by applicable law or agreed to in writing, software
    -* distributed under the License is distributed on an "AS IS" BASIS,
    -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -* See the License for the specific language governing permissions and
    -* limitations under the License.
    -*/
    -
    -
    -package jsp2.examples.simpletag;
    -
    -import java.io.IOException;
    -
    -import javax.servlet.jsp.JspException;
    -import javax.servlet.jsp.tagext.SimpleTagSupport;
    -
    -/**
    - * SimpleTag handler that prints "Hello, world!"
    - */
    -public class HelloWorldSimpleTag extends SimpleTagSupport {
    -    @Override
    -    public void doTag() throws JspException, IOException {
    -        getJspContext().getOut().write( "Hello, world!" );
    -    }
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/ShuffleSimpleTag.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/ShuffleSimpleTag.java.html deleted file mode 100644 index 8d360841325be70cb735a4ba8b36319d401c0a68..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/ShuffleSimpleTag.java.html +++ /dev/null @@ -1,88 +0,0 @@ -Source Code
    /*
    -* Licensed to the Apache Software Foundation (ASF) under one or more
    -* contributor license agreements.  See the NOTICE file distributed with
    -* this work for additional information regarding copyright ownership.
    -* The ASF licenses this file to You under the Apache License, Version 2.0
    -* (the "License"); you may not use this file except in compliance with
    -* the License.  You may obtain a copy of the License at
    -*
    -*     http://www.apache.org/licenses/LICENSE-2.0
    -*
    -* Unless required by applicable law or agreed to in writing, software
    -* distributed under the License is distributed on an "AS IS" BASIS,
    -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -* See the License for the specific language governing permissions and
    -* limitations under the License.
    -*/
    -
    -
    -package jsp2.examples.simpletag;
    -
    -import java.io.IOException;
    -import java.util.Random;
    -
    -import javax.servlet.jsp.JspException;
    -import javax.servlet.jsp.tagext.JspFragment;
    -import javax.servlet.jsp.tagext.SimpleTagSupport;
    -
    -/**
    - * SimpleTag handler that accepts takes three attributes of type
    - * JspFragment and invokes then in a random order.
    - */
    -public class ShuffleSimpleTag extends SimpleTagSupport {
    -    // No need for this to use SecureRandom
    -    private static final Random random = new Random();
    -
    -    private JspFragment fragment1;
    -    private JspFragment fragment2;
    -    private JspFragment fragment3;
    -
    -    @Override
    -    public void doTag() throws JspException, IOException {
    -        switch(random.nextInt(6)) {
    -            case 0:
    -                fragment1.invoke( null );
    -                fragment2.invoke( null );
    -                fragment3.invoke( null );
    -                break;
    -            case 1:
    -                fragment1.invoke( null );
    -                fragment3.invoke( null );
    -                fragment2.invoke( null );
    -                break;
    -            case 2:
    -                fragment2.invoke( null );
    -                fragment1.invoke( null );
    -                fragment3.invoke( null );
    -                break;
    -            case 3:
    -                fragment2.invoke( null );
    -                fragment3.invoke( null );
    -                fragment1.invoke( null );
    -                break;
    -            case 4:
    -                fragment3.invoke( null );
    -                fragment1.invoke( null );
    -                fragment2.invoke( null );
    -                break;
    -            case 5:
    -                fragment3.invoke( null );
    -                fragment2.invoke( null );
    -                fragment1.invoke( null );
    -                break;
    -        }
    -    }
    -
    -    public void setFragment1( JspFragment fragment1 ) {
    -        this.fragment1 = fragment1;
    -    }
    -
    -    public void setFragment2( JspFragment fragment2 ) {
    -        this.fragment2 = fragment2;
    -    }
    -
    -    public void setFragment3( JspFragment fragment3 ) {
    -        this.fragment3 = fragment3;
    -    }
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/TileSimpleTag.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/TileSimpleTag.java.html deleted file mode 100644 index 75d6daf8d4a3bf0360eb024a042f1eab3c2230a9..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/TileSimpleTag.java.html +++ /dev/null @@ -1,49 +0,0 @@ -Source Code
    /*
    -* Licensed to the Apache Software Foundation (ASF) under one or more
    -* contributor license agreements.  See the NOTICE file distributed with
    -* this work for additional information regarding copyright ownership.
    -* The ASF licenses this file to You under the Apache License, Version 2.0
    -* (the "License"); you may not use this file except in compliance with
    -* the License.  You may obtain a copy of the License at
    -*
    -*     http://www.apache.org/licenses/LICENSE-2.0
    -*
    -* Unless required by applicable law or agreed to in writing, software
    -* distributed under the License is distributed on an "AS IS" BASIS,
    -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -* See the License for the specific language governing permissions and
    -* limitations under the License.
    -*/
    -
    -
    -package jsp2.examples.simpletag;
    -
    -import java.io.IOException;
    -
    -import javax.servlet.jsp.JspException;
    -import javax.servlet.jsp.tagext.SimpleTagSupport;
    -
    -/**
    - * Displays a tile as a single cell in a table.
    - */
    -public class TileSimpleTag extends SimpleTagSupport {
    -    private String color;
    -    private String label;
    -
    -    @Override
    -    public void doTag() throws JspException, IOException {
    -        getJspContext().getOut().write(
    -                "<td width=\"32\" height=\"32\" bgcolor=\"" + this.color +
    -                "\"><font color=\"#ffffff\"><center>" + this.label +
    -                "</center></font></td>" );
    -    }
    -
    -    public void setColor( String color ) {
    -        this.color = color;
    -    }
    -
    -    public void setLabel( String label ) {
    -        this.label = label;
    -    }
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/jspattribute.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/jspattribute.html deleted file mode 100644 index df1b6e68c6dd88c1e9e883a46abd9c5227059a06..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/jspattribute.html +++ /dev/null @@ -1,37 +0,0 @@ - - - -View Source Code - - - - -

    -

    - -

    Source Code for jspattribute.jsp -

    - -

    Source Code for HelloWorldSimpleTag.java -

    - -

    Source Code for FooBean.java -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp deleted file mode 100644 index 8050b3420b028404499211be42d88dc637fea819..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp +++ /dev/null @@ -1,46 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%> - - - - JSP 2.0 Examples - jsp:attribute and jsp:body - - -

    JSP 2.0 Examples - jsp:attribute and jsp:body

    -
    -

    The new <jsp:attribute> and <jsp:body> - standard actions can be used to specify the value of any standard - action or custom action attribute.

    -

    This example uses the <jsp:attribute> - standard action to use the output of a custom action invocation - (one that simply outputs "Hello, World!") to set the value of a - bean property. This would normally require an intermediary - step, such as using JSTL's <c:set> action.

    -
    - - Bean created! Setting foo.bar...
    - - - - - -
    -
    - Result: ${foo.bar} - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp.html deleted file mode 100644 index 959699792169d7e4f758fad04d3dbc4879b0afa8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp.html +++ /dev/null @@ -1,47 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>
    -
    -<html>
    -  <head>
    -    <title>JSP 2.0 Examples - jsp:attribute and jsp:body</title>
    -  </head>
    -  <body>
    -    <h1>JSP 2.0 Examples - jsp:attribute and jsp:body</h1>
    -    <hr>
    -    <p>The new &lt;jsp:attribute&gt; and &lt;jsp:body&gt;
    -    standard actions can be used to specify the value of any standard
    -    action or custom action attribute.</p>
    -    <p>This example uses the &lt;jsp:attribute&gt;
    -    standard action to use the output of a custom action invocation
    -    (one that simply outputs "Hello, World!") to set the value of a
    -    bean property.  This would normally require an intermediary
    -    step, such as using JSTL's &lt;c:set&gt; action.</p>
    -    <br>
    -    <jsp:useBean id="foo" class="jsp2.examples.FooBean">
    -      Bean created!  Setting foo.bar...<br>
    -      <jsp:setProperty name="foo" property="bar">
    -        <jsp:attribute name="value">
    -          <my:helloWorld/>
    -        </jsp:attribute>
    -      </jsp:setProperty>
    -    </jsp:useBean>
    -    <br>
    -    Result: ${foo.bar}
    -  </body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/shuffle.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/shuffle.html deleted file mode 100644 index 5711860afe55facdaddfaab9e212855cbb5f48b6..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/shuffle.html +++ /dev/null @@ -1,37 +0,0 @@ - - - -View Source Code - - - - -

    -

    - -

    Source Code for shuffle.jsp -

    - -

    Source Code for ShuffleSimpleTag.java -

    - -

    Source Code for TileSimpleTag.java -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp deleted file mode 100644 index 737ff657aff04f5cf13c3692d5051a22d6ed0060..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp +++ /dev/null @@ -1,90 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%> - - - - JSP 2.0 Examples - Shuffle Example - - -

    JSP 2.0 Examples - Shuffle Example

    -
    -

    Try reloading the page a few times. Both the rows and the columns - are shuffled and appear different each time.

    -

    Here's how the code works. The SimpleTag handler called - <my:shuffle> accepts three attributes. Each attribute is a - JSP Fragment, meaning it is a fragment of JSP code that can be - dynamically executed by the shuffle tag handler on demand. The - shuffle tag handler executes the three fragments in a random order. - To shuffle both the rows and the columns, the shuffle tag is used - with itself as a parameter.

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp.html deleted file mode 100644 index dcb137d22625d69503633357217fa776fe4fae9d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp.html +++ /dev/null @@ -1,91 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>
    -
    -<html>
    -  <head>
    -    <title>JSP 2.0 Examples - Shuffle Example</title>
    -  </head>
    -  <body>
    -    <h1>JSP 2.0 Examples - Shuffle Example</h1>
    -    <hr>
    -    <p>Try reloading the page a few times.  Both the rows and the columns
    -    are shuffled and appear different each time.</p>
    -    <p>Here's how the code works.  The SimpleTag handler called
    -    &lt;my:shuffle&gt; accepts three attributes.  Each attribute is a
    -    JSP Fragment, meaning it is a fragment of JSP code that can be
    -    dynamically executed by the shuffle tag handler on demand.  The
    -    shuffle tag handler executes the three fragments in a random order.
    -    To shuffle both the rows and the columns, the shuffle tag is used
    -    with itself as a parameter.</p>
    -    <hr>
    -    <blockquote>
    -     <font color="#ffffff">
    -      <table>
    -        <my:shuffle>
    -          <jsp:attribute name="fragment1">
    -            <tr>
    -              <my:shuffle>
    -                <jsp:attribute name="fragment1">
    -                  <my:tile color="#ff0000" label="A"/>
    -                </jsp:attribute>
    -                <jsp:attribute name="fragment2">
    -                  <my:tile color="#00ff00" label="B"/>
    -                </jsp:attribute>
    -                <jsp:attribute name="fragment3">
    -                  <my:tile color="#0000ff" label="C"/>
    -                </jsp:attribute>
    -              </my:shuffle>
    -            </tr>
    -          </jsp:attribute>
    -          <jsp:attribute name="fragment2">
    -            <tr>
    -              <my:shuffle>
    -                <jsp:attribute name="fragment1">
    -                  <my:tile color="#ff0000" label="1"/>
    -                </jsp:attribute>
    -                <jsp:attribute name="fragment2">
    -                  <my:tile color="#00ff00" label="2"/>
    -                </jsp:attribute>
    -                <jsp:attribute name="fragment3">
    -                  <my:tile color="#0000ff" label="3"/>
    -                </jsp:attribute>
    -              </my:shuffle>
    -            </tr>
    -          </jsp:attribute>
    -          <jsp:attribute name="fragment3">
    -            <tr>
    -              <my:shuffle>
    -                <jsp:attribute name="fragment1">
    -                  <my:tile color="#ff0000" label="!"/>
    -                </jsp:attribute>
    -                <jsp:attribute name="fragment2">
    -                  <my:tile color="#00ff00" label="@"/>
    -                </jsp:attribute>
    -                <jsp:attribute name="fragment3">
    -                  <my:tile color="#0000ff" label="#"/>
    -                </jsp:attribute>
    -              </my:shuffle>
    -            </tr>
    -          </jsp:attribute>
    -        </my:shuffle>
    -      </table>
    -     </font>
    -    </blockquote>
    -  </body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/basic.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/basic.html deleted file mode 100644 index f9df6a4a2015cb5eede40fe3e6ddae9d78a683be..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/basic.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - -View Source Code - - - -

    ExecuteReturn

    - -

    Source Code for XHTML Basic Example

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/basic.jspx b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/basic.jspx deleted file mode 100644 index fc1e45f923b48fce4ec05c0030877d800d1d24f0..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/basic.jspx +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - JSPX - XHTML Basic Example - - -

    JSPX - XHTML Basic Example

    - This example illustrates how to use JSPX to produce an XHTML basic - document suitable for use with mobile phones, televisions, - PDAs, vending machines, pagers, car navigation systems, - mobile game machines, digital book readers, smart watches, etc. -

    - JSPX lets you create dynamic documents in a pure XML syntax compatible - with existing XML tools. The XML syntax in JSP 1.2 was awkward and - required &lt;jsp:root&gt; to be the root element of the document. - This is no longer the case in JSP 2.0. -

    - This particular example uses - namespace declarations to make the output of this page a valid XHTML - document. -

    - Just to prove this is live, here's some dynamic content: - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/basic.jspx.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/basic.jspx.html deleted file mode 100644 index 6b38336ba3c485251916c20cc813898132922543..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/basic.jspx.html +++ /dev/null @@ -1,49 +0,0 @@ -Source Code

    <?xml version="1.0" encoding="UTF-8"?>
    -<!--
    -  Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    --->
    -<html xmlns:jsp="http://java.sun.com/JSP/Page"
    -      xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
    -      xmlns="http://www.w3.org/1999/xhtml">
    -  <jsp:output doctype-root-element="html"
    -              doctype-public="-//W3C//DTD XHTML Basic 1.0//EN"
    -              doctype-system="http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"/>
    -  <jsp:directive.page contentType="application/xhtml+xml" />
    -  <head>
    -    <title>JSPX - XHTML Basic Example</title>
    -  </head>
    -  <body>
    -    <h1>JSPX - XHTML Basic Example</h1>
    -    This example illustrates how to use JSPX to produce an XHTML basic
    -    document suitable for use with mobile phones, televisions,
    -    PDAs, vending machines, pagers, car navigation systems,
    -    mobile game machines, digital book readers, smart watches, etc.
    -    <p/>
    -    JSPX lets you create dynamic documents in a pure XML syntax compatible
    -    with existing XML tools.  The XML syntax in JSP 1.2 was awkward and
    -    required &amp;lt;jsp:root&amp;gt; to be the root element of the document.
    -    This is no longer the case in JSP 2.0.
    -    <p/>
    -    This particular example uses
    -    namespace declarations to make the output of this page a valid XHTML
    -    document.
    -    <p/>
    -    Just to prove this is live, here's some dynamic content:
    -    <jsp:useBean id="now" class="java.util.Date" />
    -    <fmt:formatDate value="${now}" pattern="MMMM d, yyyy, H:mm:ss"/>
    -  </body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/svgexample.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/svgexample.html deleted file mode 100644 index f7d591a58370bc4a2002132444db94373c8e6ef1..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/svgexample.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - JSP 2.0 SVG Example - - -

    JSP 2.0 SVG Example

    - This example uses JSP 2.0's new, simplified JSPX syntax to render a - Scalable Vector Graphics (SVG) document. When you view the source, - notice the lack of a <jsp:root> element! The text to be rendered - can be modified by changing the value of the name parameter. -

    - SVG has many potential uses, such as searchable images, or images - customized with the name of your site's visitor (e.g. a "Susan's Store" - tab image). JSPX is a natural fit for generating dynamic XML content - such as SVG. -

    - To execute this example you will need a browser with basic SVG support. Any - remotely recent browser should have this. -

      -
    1. Use this URL: - textRotate.jspx?name=JSPX
    2. -
    3. Customize by changing the name=JSPX parameter
    4. -
    -

    - The following is a screenshot of the resulting image, for those using a - browser without SVG support:
    - [Screenshot image] - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/textRotate.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/textRotate.html deleted file mode 100644 index 5b3befe2e048a379085e2f381a3a23b35a7ab2ea..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/textRotate.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - -View Source Code - - - -

    Execute Return

    - -

    Source Code for SVG (Scalable Vector Graphics) -Example

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/textRotate.jpg b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/textRotate.jpg deleted file mode 100644 index 9e987367bc83c25aedf1c7afd76f34de4a229f82..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/textRotate.jpg and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/textRotate.jspx b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/textRotate.jspx deleted file mode 100644 index c543887e6688f863e1382a588d8aa996ed1cef16..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/textRotate.jspx +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - JSP 2.0 JSPX - - - - - JSP 2.0 XML Syntax (.jspx) Demo - - Try changing the name parameter! - - - - <g opacity="0.95" transform="scale(1.05) rotate(15)"> - - ${name} - - - </g> - - ${name} - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/textRotate.jspx.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/textRotate.jspx.html deleted file mode 100644 index 0e6c8208f7189c088af0325e5e8bf527b72ee9a9..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/jspx/textRotate.jspx.html +++ /dev/null @@ -1,54 +0,0 @@ -Source Code
    <?xml version="1.0" encoding="UTF-8"?>
    -<!--
    -  Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    --->
    -<!--
    -  - This example is based off the textRotate.svg example that comes
    -  - with Apache Batik.  The original example was written by Bill Haneman.
    -  - This version by Mark Roth.
    -  -->
    -<svg xmlns="http://www.w3.org/2000/svg"
    -     width="450" height="500" viewBox="0 0 450 500"
    -     xmlns:c="http://java.sun.com/jsp/jstl/core"
    -     xmlns:fn="http://java.sun.com/jsp/jstl/functions"
    -     xmlns:jsp="http://java.sun.com/JSP/Page">
    -  <jsp:directive.page contentType="image/svg+xml" />
    -  <title>JSP 2.0 JSPX</title>
    -  <!-- select name parameter, or default to JSPX -->
    -  <c:set var="name" value='${empty fn:escapeXml(param["name"]) ? "JSPX" : fn:escapeXml(param["name"])}'/>
    -  <g id="testContent">
    -    <text class="title" x="50%" y="10%" font-size="15" text-anchor="middle" >
    -            JSP 2.0 XML Syntax (.jspx) Demo</text>
    -    <text class="title" x="50%" y="15%" font-size="15" text-anchor="middle" >
    -            Try changing the name parameter!</text>
    -    <g opacity="1.0" transform="translate(225, 250)" id="rotatedText">
    -      <c:forEach var="i" begin="1" end="24">
    -        <jsp:text>
    -          <![CDATA[<g opacity="0.95" transform="scale(1.05) rotate(15)">]]>
    -        </jsp:text>
    -        <text x="0" y="0" transform="scale(1.6, 1.6)" fill="DarkSlateBlue"
    -              text-anchor="middle" font-size="40" font-family="Serif"
    -              id="words">${name}</text>
    -      </c:forEach>
    -      <c:forEach var="i" begin="1" end="24">
    -        <jsp:text><![CDATA[</g>]]></jsp:text>
    -      </c:forEach>
    -      <text style="font-size:75;font-family:Serif;fill:white"
    -            text-anchor="middle">${name}</text>
    -    </g>
    -  </g>
    -</svg>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/EchoAttributesTag.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/EchoAttributesTag.java.html deleted file mode 100644 index aa053c7570762db85d1317ae0767551dd23690c9..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/EchoAttributesTag.java.html +++ /dev/null @@ -1,58 +0,0 @@ -Source Code
    /*
    -* Licensed to the Apache Software Foundation (ASF) under one or more
    -* contributor license agreements.  See the NOTICE file distributed with
    -* this work for additional information regarding copyright ownership.
    -* The ASF licenses this file to You under the Apache License, Version 2.0
    -* (the "License"); you may not use this file except in compliance with
    -* the License.  You may obtain a copy of the License at
    -*
    -*     http://www.apache.org/licenses/LICENSE-2.0
    -*
    -* Unless required by applicable law or agreed to in writing, software
    -* distributed under the License is distributed on an "AS IS" BASIS,
    -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -* See the License for the specific language governing permissions and
    -* limitations under the License.
    -*/
    -
    -
    -package jsp2.examples.simpletag;
    -
    -import java.io.IOException;
    -import java.util.ArrayList;
    -
    -import javax.servlet.jsp.JspException;
    -import javax.servlet.jsp.JspWriter;
    -import javax.servlet.jsp.tagext.DynamicAttributes;
    -import javax.servlet.jsp.tagext.SimpleTagSupport;
    -
    -/**
    - * SimpleTag handler that echoes all its attributes
    - */
    -public class EchoAttributesTag
    -    extends SimpleTagSupport
    -    implements DynamicAttributes
    -{
    -    private final ArrayList<String> keys = new ArrayList<>();
    -    private final ArrayList<Object> values = new ArrayList<>();
    -
    -    @Override
    -    public void doTag() throws JspException, IOException {
    -        JspWriter out = getJspContext().getOut();
    -        for( int i = 0; i < keys.size(); i++ ) {
    -            String key = keys.get( i );
    -            Object value = values.get( i );
    -            out.println( "<li>" + key + " = " + value + "</li>" );
    -        }
    -    }
    -
    -    @Override
    -    public void setDynamicAttribute( String uri, String localName,
    -        Object value )
    -        throws JspException
    -    {
    -        keys.add( localName );
    -        values.add( value );
    -    }
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/coda.jspf b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/coda.jspf deleted file mode 100644 index d767de506b8de5aa838bbeb9727c936acc66abd6..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/coda.jspf +++ /dev/null @@ -1,21 +0,0 @@ - -
    -
    -This banner included with <include-coda> -
    -
    diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/coda.jspf.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/coda.jspf.html deleted file mode 100644 index 3a82576c0e6371c1b64f74ab03e21e7d31c0acb4..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/coda.jspf.html +++ /dev/null @@ -1,22 +0,0 @@ -Source Code
    <!--
    -  Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    --->
    -<hr>
    -<center>
    -This banner included with &lt;include-coda&gt;
    -</center>
    -<hr>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/config.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/config.html deleted file mode 100644 index 707d68faf1c71fe57b54d858438da3a2d8531bef..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/config.html +++ /dev/null @@ -1,35 +0,0 @@ - - - -View Source Code - - - - -

    -

    - -

    Source Code for config.jsp -

    -

    Source Code for prelude.jspf -

    -

    Source Code for coda.jspf -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/config.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/config.jsp deleted file mode 100644 index 0372889615a9f3fe0ca93918d1df16b6c2cab8a2..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/config.jsp +++ /dev/null @@ -1,32 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%> -

    JSP 2.0 Examples - JSP Configuration

    -
    -

    Using a <jsp-property-group> element in the web.xml - deployment descriptor, this JSP page has been configured in the - following ways:

    -
      -
    • Uses <include-prelude> to include the top banner.
    • -
    • Uses <include-coda> to include the bottom banner.
    • -
    • Uses <scripting-invalid> true to disable - <% scripting %> elements
    • -
    • Uses <el-ignored> true to disable ${EL} elements
    • -
    • Uses <page-encoding> ISO-8859-1 to set the page encoding (though this is the default anyway)
    • -
    - There are various other configuration options that can be used. - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/config.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/config.jsp.html deleted file mode 100644 index 6ce33ff5e32b0869758daed41b97501d0457b87e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/config.jsp.html +++ /dev/null @@ -1,33 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>
    -    <h1>JSP 2.0 Examples - JSP Configuration</h1>
    -    <hr>
    -    <p>Using a &lt;jsp-property-group&gt; element in the web.xml
    -    deployment descriptor, this JSP page has been configured in the
    -    following ways:</p>
    -    <ul>
    -      <li>Uses &lt;include-prelude&gt; to include the top banner.</li>
    -      <li>Uses &lt;include-coda&gt; to include the bottom banner.</li>
    -      <li>Uses &lt;scripting-invalid&gt; true to disable
    -          &lt;% scripting %&gt; elements</li>
    -      <li>Uses &lt;el-ignored&gt; true to disable ${EL} elements</li>
    -      <li>Uses &lt;page-encoding&gt; ISO-8859-1 to set the page encoding (though this is the default anyway)</li>
    -    </ul>
    -    There are various other configuration options that can be used.
    -
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/dynamicattrs.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/dynamicattrs.html deleted file mode 100644 index 4fa1bf14e6f834a350d07253b6f7d74f01238fe8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/dynamicattrs.html +++ /dev/null @@ -1,33 +0,0 @@ - - - -View Source Code - - - - -

    -

    - -

    Source Code for dynamicattrs.jsp -

    -

    Source Code for EchoAttributesTag.java -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp deleted file mode 100644 index 251c49dbc8e89c6e4b1d45957b3ddbeda1cedb78..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp +++ /dev/null @@ -1,44 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%> - - - JSP 2.0 Examples - Dynamic Attributes - - -

    JSP 2.0 Examples - Dynamic Attributes

    -
    -

    This JSP page invokes a custom tag that accepts a dynamic set - of attributes. The tag echoes the name and value of all attributes - passed to it.

    -
    -

    Invocation 1 (six attributes)

    -
      - -
    -

    Invocation 2 (zero attributes)

    -
      - -
    -

    Invocation 3 (three attributes)

    -
      - -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp.html deleted file mode 100644 index 8f5ee18e7c30e018f1373175c0c9c683a403699f..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp.html +++ /dev/null @@ -1,45 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>
    -<html>
    -  <head>
    -    <title>JSP 2.0 Examples - Dynamic Attributes</title>
    -  </head>
    -  <body>
    -    <h1>JSP 2.0 Examples - Dynamic Attributes</h1>
    -    <hr>
    -    <p>This JSP page invokes a custom tag that accepts a dynamic set
    -    of attributes.  The tag echoes the name and value of all attributes
    -    passed to it.</p>
    -    <hr>
    -    <h2>Invocation 1 (six attributes)</h2>
    -    <ul>
    -      <my:echoAttributes x="1" y="2" z="3" r="red" g="green" b="blue"/>
    -    </ul>
    -    <h2>Invocation 2 (zero attributes)</h2>
    -    <ul>
    -      <my:echoAttributes/>
    -    </ul>
    -    <h2>Invocation 3 (three attributes)</h2>
    -    <ul>
    -      <my:echoAttributes dogName="Scruffy"
    -                         catName="Fluffy"
    -                         blowfishName="Puffy"/>
    -    </ul>
    -  </body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/prelude.jspf b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/prelude.jspf deleted file mode 100644 index 05f7c845a1084ee0c9eeb98fad625509bdf87477..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/prelude.jspf +++ /dev/null @@ -1,21 +0,0 @@ - -
    -
    -This banner included with <include-prelude> -
    -
    diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/prelude.jspf.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/prelude.jspf.html deleted file mode 100644 index 8b2bcd056eb3338a80d1549bebc6c1900fd0254e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/misc/prelude.jspf.html +++ /dev/null @@ -1,22 +0,0 @@ -Source Code
    <!--
    -  Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    --->
    -<hr>
    -<center>
    -This banner included with &lt;include-prelude&gt;
    -</center>
    -<hr>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/BookBean.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/BookBean.java.html deleted file mode 100644 index 5c99dad403f3655d956e59452ba87462aa5f1adf..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/BookBean.java.html +++ /dev/null @@ -1,45 +0,0 @@ -Source Code
    /*
    -* Licensed to the Apache Software Foundation (ASF) under one or more
    -* contributor license agreements.  See the NOTICE file distributed with
    -* this work for additional information regarding copyright ownership.
    -* The ASF licenses this file to You under the Apache License, Version 2.0
    -* (the "License"); you may not use this file except in compliance with
    -* the License.  You may obtain a copy of the License at
    -*
    -*     http://www.apache.org/licenses/LICENSE-2.0
    -*
    -* Unless required by applicable law or agreed to in writing, software
    -* distributed under the License is distributed on an "AS IS" BASIS,
    -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -* See the License for the specific language governing permissions and
    -* limitations under the License.
    -*/
    -
    -
    -package jsp2.examples;
    -
    -public class BookBean {
    -    private final String title;
    -    private final String author;
    -    private final String isbn;
    -
    -    public BookBean( String title, String author, String isbn ) {
    -        this.title = title;
    -        this.author = author;
    -        this.isbn = isbn;
    -    }
    -
    -    public String getTitle() {
    -        return this.title;
    -    }
    -
    -    public String getAuthor() {
    -        return this.author;
    -    }
    -
    -    public String getIsbn() {
    -        return this.isbn;
    -    }
    -
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/FindBookSimpleTag.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/FindBookSimpleTag.java.html deleted file mode 100644 index 4deafca9fd79dbff589b71ee95a69cd1262a10d2..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/FindBookSimpleTag.java.html +++ /dev/null @@ -1,47 +0,0 @@ -Source Code
    /*
    -* Licensed to the Apache Software Foundation (ASF) under one or more
    -* contributor license agreements.  See the NOTICE file distributed with
    -* this work for additional information regarding copyright ownership.
    -* The ASF licenses this file to You under the Apache License, Version 2.0
    -* (the "License"); you may not use this file except in compliance with
    -* the License.  You may obtain a copy of the License at
    -*
    -*     http://www.apache.org/licenses/LICENSE-2.0
    -*
    -* Unless required by applicable law or agreed to in writing, software
    -* distributed under the License is distributed on an "AS IS" BASIS,
    -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -* See the License for the specific language governing permissions and
    -* limitations under the License.
    -*/
    -
    -
    -package jsp2.examples.simpletag;
    -
    -import javax.servlet.jsp.JspException;
    -import javax.servlet.jsp.tagext.SimpleTagSupport;
    -
    -import jsp2.examples.BookBean;
    -
    -/**
    - * SimpleTag handler that pretends to search for a book, and stores
    - * the result in a scoped variable.
    - */
    -public class FindBookSimpleTag extends SimpleTagSupport {
    -    private String var;
    -
    -    private static final String BOOK_TITLE = "The Lord of the Rings";
    -    private static final String BOOK_AUTHOR = "J. R. R. Tolkein";
    -    private static final String BOOK_ISBN = "0618002251";
    -
    -    @Override
    -    public void doTag() throws JspException {
    -        BookBean book = new BookBean( BOOK_TITLE, BOOK_AUTHOR, BOOK_ISBN );
    -        getJspContext().setAttribute( this.var, book );
    -    }
    -
    -    public void setVar( String var ) {
    -        this.var = var;
    -    }
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/Functions.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/Functions.java.html deleted file mode 100644 index aa84cccc46dd097cad8b43b9f1e8e1b2398e847c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/Functions.java.html +++ /dev/null @@ -1,46 +0,0 @@ -Source Code
    /*
    -* Licensed to the Apache Software Foundation (ASF) under one or more
    -* contributor license agreements.  See the NOTICE file distributed with
    -* this work for additional information regarding copyright ownership.
    -* The ASF licenses this file to You under the Apache License, Version 2.0
    -* (the "License"); you may not use this file except in compliance with
    -* the License.  You may obtain a copy of the License at
    -*
    -*     http://www.apache.org/licenses/LICENSE-2.0
    -*
    -* Unless required by applicable law or agreed to in writing, software
    -* distributed under the License is distributed on an "AS IS" BASIS,
    -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -* See the License for the specific language governing permissions and
    -* limitations under the License.
    -*/
    -package jsp2.examples.el;
    -
    -import java.util.Locale;
    -
    -/**
    - * Defines the functions for the jsp2 example tag library.
    - *
    - * <p>Each function is defined as a static method.</p>
    - */
    -public class Functions {
    -    public static String reverse( String text ) {
    -        return new StringBuilder( text ).reverse().toString();
    -    }
    -
    -    public static int numVowels( String text ) {
    -        String vowels = "aeiouAEIOU";
    -        int result = 0;
    -        for( int i = 0; i < text.length(); i++ ) {
    -            if( vowels.indexOf( text.charAt( i ) ) != -1 ) {
    -                result++;
    -            }
    -        }
    -        return result;
    -    }
    -
    -    public static String caps( String text ) {
    -        return text.toUpperCase(Locale.ENGLISH);
    -    }
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/HelloWorldSimpleTag.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/HelloWorldSimpleTag.java.html deleted file mode 100644 index 8c0bd4dc49c18e67a7a750bd46312cb633d3ca72..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/HelloWorldSimpleTag.java.html +++ /dev/null @@ -1,35 +0,0 @@ -Source Code
    /*
    -* Licensed to the Apache Software Foundation (ASF) under one or more
    -* contributor license agreements.  See the NOTICE file distributed with
    -* this work for additional information regarding copyright ownership.
    -* The ASF licenses this file to You under the Apache License, Version 2.0
    -* (the "License"); you may not use this file except in compliance with
    -* the License.  You may obtain a copy of the License at
    -*
    -*     http://www.apache.org/licenses/LICENSE-2.0
    -*
    -* Unless required by applicable law or agreed to in writing, software
    -* distributed under the License is distributed on an "AS IS" BASIS,
    -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -* See the License for the specific language governing permissions and
    -* limitations under the License.
    -*/
    -
    -
    -package jsp2.examples.simpletag;
    -
    -import java.io.IOException;
    -
    -import javax.servlet.jsp.JspException;
    -import javax.servlet.jsp.tagext.SimpleTagSupport;
    -
    -/**
    - * SimpleTag handler that prints "Hello, world!"
    - */
    -public class HelloWorldSimpleTag extends SimpleTagSupport {
    -    @Override
    -    public void doTag() throws JspException, IOException {
    -        getJspContext().getOut().write( "Hello, world!" );
    -    }
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/RepeatSimpleTag.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/RepeatSimpleTag.java.html deleted file mode 100644 index 12913fcdae1d4d38aac6d976b7b47e4cbf5bef27..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/RepeatSimpleTag.java.html +++ /dev/null @@ -1,45 +0,0 @@ -Source Code
    /*
    -* Licensed to the Apache Software Foundation (ASF) under one or more
    -* contributor license agreements.  See the NOTICE file distributed with
    -* this work for additional information regarding copyright ownership.
    -* The ASF licenses this file to You under the Apache License, Version 2.0
    -* (the "License"); you may not use this file except in compliance with
    -* the License.  You may obtain a copy of the License at
    -*
    -*     http://www.apache.org/licenses/LICENSE-2.0
    -*
    -* Unless required by applicable law or agreed to in writing, software
    -* distributed under the License is distributed on an "AS IS" BASIS,
    -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -* See the License for the specific language governing permissions and
    -* limitations under the License.
    -*/
    -
    -
    -package jsp2.examples.simpletag;
    -
    -import java.io.IOException;
    -
    -import javax.servlet.jsp.JspException;
    -import javax.servlet.jsp.tagext.SimpleTagSupport;
    -
    -/**
    - * SimpleTag handler that accepts a num attribute and
    - * invokes its body 'num' times.
    - */
    -public class RepeatSimpleTag extends SimpleTagSupport {
    -    private int num;
    -
    -    @Override
    -    public void doTag() throws JspException, IOException {
    -        for (int i=0; i<num; i++) {
    -            getJspContext().setAttribute("count", String.valueOf( i + 1 ) );
    -            getJspBody().invoke(null);
    -        }
    -    }
    -
    -    public void setNum(int num) {
    -        this.num = num;
    -    }
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/book.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/book.html deleted file mode 100644 index 2841acf17f8b06afaaa12b1848eb99b71f34b5c8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/book.html +++ /dev/null @@ -1,37 +0,0 @@ - - - -View Source Code - - - - -

    -

    - -

    Source Code for the Book Example JSP -

    -

    Source Code for the FindBook SimpleTag Handler -

    -

    Source Code for BookBean -

    -

    Source Code for the EL Functions -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/book.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/book.jsp deleted file mode 100644 index ba07cfb64ace92524a587ea9336320e3f1c3b0d0..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/book.jsp +++ /dev/null @@ -1,55 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ taglib prefix="my" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %> - - - JSP 2.0 Examples - Book SimpleTag Handler - - -

    JSP 2.0 Examples - Book SimpleTag Handler

    -
    -

    Illustrates a semi-realistic use of SimpleTag and the Expression - Language. First, a <my:findBook> tag is invoked to populate - the page context with a BookBean. Then, the books fields are printed - in all caps.

    -
    - Result:
    - - - - - - - - - - - - - - - - - - - - - - -
    FieldValueCapitalized
    Title${book.title}${my:caps(book.title)}
    Author${book.author}${my:caps(book.author)}
    ISBN${book.isbn}${my:caps(book.isbn)}
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/book.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/book.jsp.html deleted file mode 100644 index 51c27a0bd3c357fc3a7fb91549058c58f47bebf0..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/book.jsp.html +++ /dev/null @@ -1,56 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@ taglib prefix="my" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>
    -<html>
    -  <head>
    -    <title>JSP 2.0 Examples - Book SimpleTag Handler</title>
    -  </head>
    -  <body>
    -    <h1>JSP 2.0 Examples - Book SimpleTag Handler</h1>
    -    <hr>
    -    <p>Illustrates a semi-realistic use of SimpleTag and the Expression
    -    Language.  First, a &lt;my:findBook&gt; tag is invoked to populate
    -    the page context with a BookBean.  Then, the books fields are printed
    -    in all caps.</p>
    -    <br>
    -    <b><u>Result:</u></b><br>
    -    <my:findBook var="book"/>
    -    <table border="1">
    -        <thead>
    -        <td><b>Field</b></td>
    -        <td><b>Value</b></td>
    -        <td><b>Capitalized</b></td>
    -    </thead>
    -    <tr>
    -        <td>Title</td>
    -        <td>${book.title}</td>
    -        <td>${my:caps(book.title)}</td>
    -    </tr>
    -    <tr>
    -        <td>Author</td>
    -        <td>${book.author}</td>
    -        <td>${my:caps(book.author)}</td>
    -    </tr>
    -    <tr>
    -        <td>ISBN</td>
    -        <td>${book.isbn}</td>
    -        <td>${my:caps(book.isbn)}</td>
    -    </tr>
    -    </table>
    -  </body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/hello.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/hello.html deleted file mode 100644 index 20cadf877c32f2466e53a31fd9d839db7c99d37f..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/hello.html +++ /dev/null @@ -1,33 +0,0 @@ - - - -View Source Code - - - - -

    -

    - -

    Source Code for the Hello World Tag Example JSP -

    -

    Source Code for the Hello World SimpleTag Handler -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/hello.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/hello.jsp deleted file mode 100644 index d9f22a281a431ee4e00ec4f8fbf0c2cad03aa234..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/hello.jsp +++ /dev/null @@ -1,31 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %> - - - JSP 2.0 Examples - Hello World SimpleTag Handler - - -

    JSP 2.0 Examples - Hello World SimpleTag Handler

    -
    -

    This tag handler simply echos "Hello, World!" It's an example of - a very basic SimpleTag handler with no body.

    -
    - Result: - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/hello.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/hello.jsp.html deleted file mode 100644 index 76f39739560d521670628c991a7e7b2445be562d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/hello.jsp.html +++ /dev/null @@ -1,32 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>
    -<html>
    -  <head>
    -    <title>JSP 2.0 Examples - Hello World SimpleTag Handler</title>
    -  </head>
    -  <body>
    -    <h1>JSP 2.0 Examples - Hello World SimpleTag Handler</h1>
    -    <hr>
    -    <p>This tag handler simply echos "Hello, World!"  It's an example of
    -    a very basic SimpleTag handler with no body.</p>
    -    <br>
    -    <b><u>Result:</u></b>
    -    <mytag:helloWorld/>
    -  </body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/repeat.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/repeat.html deleted file mode 100644 index a56bfcd2e70013cbca35d9b4413fc8033c7160a7..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/repeat.html +++ /dev/null @@ -1,33 +0,0 @@ - - - -View Source Code - - - - -

    -

    - -

    Source Code for the Repeat Tag Example JSP -

    -

    Source Code for the Repeat SimpleTag Handler -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/repeat.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/repeat.jsp deleted file mode 100644 index b12d0a91d75c51d98a7f04b4d85adb49e628d079..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/repeat.jsp +++ /dev/null @@ -1,39 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %> - - - JSP 2.0 Examples - Repeat SimpleTag Handler - - -

    JSP 2.0 Examples - Repeat SimpleTag Handler

    -
    -

    This tag handler accepts a "num" parameter and repeats the body of the - tag "num" times. It's a simple example, but the implementation of - such a tag in JSP 2.0 is substantially simpler than the equivalent - JSP 1.2-style classic tag handler.

    -

    The body of the tag is encapsulated in a "JSP Fragment" and passed - to the tag handler, which then executes it five times, inside a - for loop. The tag handler passes in the current invocation in a - scoped variable called count, which can be accessed using the EL.

    -
    - Result:
    - - Invocation ${count} of 5
    -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/repeat.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/repeat.jsp.html deleted file mode 100644 index bd40cab6af4fc043de4105c6e30ee9fb45b2ce98..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/simpletag/repeat.jsp.html +++ /dev/null @@ -1,40 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>
    -<html>
    -  <head>
    -    <title>JSP 2.0 Examples - Repeat SimpleTag Handler</title>
    -  </head>
    -  <body>
    -    <h1>JSP 2.0 Examples - Repeat SimpleTag Handler</h1>
    -    <hr>
    -    <p>This tag handler accepts a "num" parameter and repeats the body of the
    -    tag "num" times.  It's a simple example, but the implementation of
    -    such a tag in JSP 2.0 is substantially simpler than the equivalent
    -    JSP 1.2-style classic tag handler.</p>
    -    <p>The body of the tag is encapsulated in a "JSP Fragment" and passed
    -    to the tag handler, which then executes it five times, inside a
    -    for loop.  The tag handler passes in the current invocation in a
    -    scoped variable called count, which can be accessed using the EL.</p>
    -    <br>
    -    <b><u>Result:</u></b><br>
    -    <mytag:repeat num="5">
    -      Invocation ${count} of 5<br>
    -    </mytag:repeat>
    -  </body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/displayProducts.tag.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/displayProducts.tag.html deleted file mode 100644 index dd488f22ca62f1986516bb604ad727e7d99dd6d4..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/displayProducts.tag.html +++ /dev/null @@ -1,56 +0,0 @@ -Source Code
    <!--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    --->
    -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    -<%@ attribute name="normalPrice" fragment="true" %>
    -<%@ attribute name="onSale" fragment="true" %>
    -<%@ variable name-given="name" %>
    -<%@ variable name-given="price" %>
    -<%@ variable name-given="origPrice" %>
    -<%@ variable name-given="salePrice" %>
    -
    -<table border="1">
    -  <tr>
    -    <td>
    -      <c:set var="name" value="Hand-held Color PDA"/>
    -      <c:set var="price" value="$298.86"/>
    -      <jsp:invoke fragment="normalPrice"/>
    -    </td>
    -    <td>
    -      <c:set var="name" value="4-Pack 150 Watt Light Bulbs"/>
    -      <c:set var="origPrice" value="$2.98"/>
    -      <c:set var="salePrice" value="$2.32"/>
    -      <jsp:invoke fragment="onSale"/>
    -    </td>
    -    <td>
    -      <c:set var="name" value="Digital Cellular Phone"/>
    -      <c:set var="price" value="$68.74"/>
    -      <jsp:invoke fragment="normalPrice"/>
    -    </td>
    -    <td>
    -      <c:set var="name" value="Baby Grand Piano"/>
    -      <c:set var="price" value="$10,800.00"/>
    -      <jsp:invoke fragment="normalPrice"/>
    -    </td>
    -    <td>
    -      <c:set var="name" value="Luxury Car w/ Leather Seats"/>
    -      <c:set var="origPrice" value="$23,980.00"/>
    -      <c:set var="salePrice" value="$21,070.00"/>
    -      <jsp:invoke fragment="onSale"/>
    -    </td>
    -  </tr>
    -</table>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/hello.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/hello.html deleted file mode 100644 index f29a37969b2e4368b1e536d543447a56792f22d4..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/hello.html +++ /dev/null @@ -1,33 +0,0 @@ - - - -View Source Code - - - - -

    -

    - -

    Source Code for hello.jsp -

    -

    Source Code for helloWorld.tag -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/hello.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/hello.jsp deleted file mode 100644 index 9b260f5f2d1bb9e78cb4e9c9e537ac8a66736de8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/hello.jsp +++ /dev/null @@ -1,35 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %> - - - JSP 2.0 Examples - Hello World Using a Tag File - - -

    JSP 2.0 Examples - Hello World Using a Tag File

    -
    -

    This JSP page invokes a custom tag that simply echos "Hello, World!" - The custom tag is generated from a tag file in the /WEB-INF/tags - directory.

    -

    Notice that we did not need to write a TLD for this tag. We just - created /WEB-INF/tags/helloWorld.tag, imported it using the taglib - directive, and used it!

    -
    - Result: - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/hello.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/hello.jsp.html deleted file mode 100644 index b431f30245ead6ddd153df3a2e7cdad68b80e355..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/hello.jsp.html +++ /dev/null @@ -1,36 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
    -<html>
    -  <head>
    -    <title>JSP 2.0 Examples - Hello World Using a Tag File</title>
    -  </head>
    -  <body>
    -    <h1>JSP 2.0 Examples - Hello World Using a Tag File</h1>
    -    <hr>
    -    <p>This JSP page invokes a custom tag that simply echos "Hello, World!"
    -    The custom tag is generated from a tag file in the /WEB-INF/tags
    -    directory.</p>
    -    <p>Notice that we did not need to write a TLD for this tag.  We just
    -    created /WEB-INF/tags/helloWorld.tag, imported it using the taglib
    -    directive, and used it!</p>
    -    <br>
    -    <b><u>Result:</u></b>
    -    <tags:helloWorld/>
    -  </body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/helloWorld.tag.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/helloWorld.tag.html deleted file mode 100644 index f29726f43fcd7a40a87fc4d168308c92dfec9fd8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/helloWorld.tag.html +++ /dev/null @@ -1,18 +0,0 @@ -Source Code
    <!--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    --->
    -Hello, world!
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/panel.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/panel.html deleted file mode 100644 index 1f03b9cab7b29b8faef3aed2cafc1476cc82cb8a..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/panel.html +++ /dev/null @@ -1,33 +0,0 @@ - - - -View Source Code - - - - -

    -

    - -

    Source Code for panel.jsp -

    -

    Source Code for panel.tag -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/panel.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/panel.jsp deleted file mode 100644 index d96387789ce1b38ab8397dd628761a2f46b2ceeb..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/panel.jsp +++ /dev/null @@ -1,58 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %> - - - JSP 2.0 Examples - Panels using Tag Files - - -

    JSP 2.0 Examples - Panels using Tag Files

    -
    -

    This JSP page invokes a custom tag that draws a - panel around the contents of the tag body. Normally, such a tag - implementation would require a Java class with many println() statements, - outputting HTML. Instead, we can use a .tag file as a template, - and we don't need to write a single line of Java or even a TLD!

    -
    - - - - - - -
    - - First panel.
    -
    -
    - - Second panel.
    - Second panel.
    - Second panel.
    - Second panel.
    -
    -
    - - Third panel.
    - - A panel in a panel. - - Third panel.
    -
    -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/panel.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/panel.jsp.html deleted file mode 100644 index 584393de2c99d26e0fc10676ff9f6354d350521d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/panel.jsp.html +++ /dev/null @@ -1,59 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
    -<html>
    -  <head>
    -    <title>JSP 2.0 Examples - Panels using Tag Files</title>
    -  </head>
    -  <body>
    -    <h1>JSP 2.0 Examples - Panels using Tag Files</h1>
    -    <hr>
    -    <p>This JSP page invokes a custom tag that draws a
    -    panel around the contents of the tag body.  Normally, such a tag
    -    implementation would require a Java class with many println() statements,
    -    outputting HTML.  Instead, we can use a .tag file as a template,
    -    and we don't need to write a single line of Java or even a TLD!</p>
    -    <hr>
    -    <table border="0">
    -      <tr valign="top">
    -        <td>
    -          <tags:panel color="#ff8080" bgcolor="#ffc0c0" title="Panel 1">
    -            First panel.<br/>
    -          </tags:panel>
    -        </td>
    -        <td>
    -          <tags:panel color="#80ff80" bgcolor="#c0ffc0" title="Panel 2">
    -            Second panel.<br/>
    -            Second panel.<br/>
    -            Second panel.<br/>
    -            Second panel.<br/>
    -          </tags:panel>
    -        </td>
    -        <td>
    -          <tags:panel color="#8080ff" bgcolor="#c0c0ff" title="Panel 3">
    -            Third panel.<br/>
    -            <tags:panel color="#ff80ff" bgcolor="#ffc0ff" title="Inner">
    -              A panel in a panel.
    -            </tags:panel>
    -            Third panel.<br/>
    -          </tags:panel>
    -        </td>
    -      </tr>
    -    </table>
    -  </body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/panel.tag.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/panel.tag.html deleted file mode 100644 index aec91c306f06e10f89a2eafee0e6bdaa1606d2aa..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/panel.tag.html +++ /dev/null @@ -1,30 +0,0 @@ -Source Code
    <!--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    --->
    -<%@ attribute name="color" %>
    -<%@ attribute name="bgcolor" %>
    -<%@ attribute name="title" %>
    -<table border="1" bgcolor="${color}">
    -  <tr>
    -    <td><b>${title}</b></td>
    -  </tr>
    -  <tr>
    -    <td bgcolor="${bgcolor}">
    -      <jsp:doBody/>
    -    </td>
    -  </tr>
    -</table>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/products.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/products.html deleted file mode 100644 index 72ae49ff2c63139391393119047cfacd2a0b4934..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/products.html +++ /dev/null @@ -1,33 +0,0 @@ - - - -View Source Code - - - - -

    -

    - -

    Source Code for products.jsp -

    -

    Source Code for displayProducts.tag -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/products.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/products.jsp deleted file mode 100644 index 7f32ffb4d6b53c40edfd81f1e7ce485e5afba755..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/products.jsp +++ /dev/null @@ -1,54 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %> - - - JSP 2.0 Examples - Display Products Tag File - - -

    JSP 2.0 Examples - Display Products Tag File

    -
    -

    This JSP page invokes a tag file that displays a listing of - products. The custom tag accepts two fragments that enable - customization of appearance. One for when the product is on sale - and one for normal price.

    -

    The tag is invoked twice, using different styles

    -
    -

    Products

    - - - Item: ${name}
    - Price: ${price} -
    - - Item: ${name}
    - Was: ${origPrice}
    - Now: ${salePrice} -
    -
    -
    -

    Products (Same tag, alternate style)

    - - - ${name} @ ${price} ea. - - - ${name} @ ${salePrice} ea. (was: ${origPrice}) - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/products.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/products.jsp.html deleted file mode 100644 index 6d6fc10389d954111c43ca7783198b2edac1cd5c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsp2/tagfiles/products.jsp.html +++ /dev/null @@ -1,55 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
    -<html>
    -  <head>
    -    <title>JSP 2.0 Examples - Display Products Tag File</title>
    -  </head>
    -  <body>
    -    <h1>JSP 2.0 Examples - Display Products Tag File</h1>
    -    <hr>
    -    <p>This JSP page invokes a tag file that displays a listing of
    -    products.  The custom tag accepts two fragments that enable
    -    customization of appearance.  One for when the product is on sale
    -    and one for normal price.</p>
    -    <p>The tag is invoked twice, using different styles</p>
    -    <hr>
    -    <h2>Products</h2>
    -    <tags:displayProducts>
    -      <jsp:attribute name="normalPrice">
    -        Item: ${name}<br/>
    -        Price: ${price}
    -      </jsp:attribute>
    -      <jsp:attribute name="onSale">
    -        Item: ${name}<br/>
    -        <font color="red"><strike>Was: ${origPrice}</strike></font><br/>
    -        <b>Now: ${salePrice}</b>
    -      </jsp:attribute>
    -    </tags:displayProducts>
    -    <hr>
    -    <h2>Products (Same tag, alternate style)</h2>
    -    <tags:displayProducts>
    -      <jsp:attribute name="normalPrice">
    -        <b>${name}</b> @ ${price} ea.
    -      </jsp:attribute>
    -      <jsp:attribute name="onSale">
    -        <b>${name}</b> @ ${salePrice} ea. (was: ${origPrice})
    -      </jsp:attribute>
    -    </tags:displayProducts>
    -  </body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/ServletToJsp.java.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/ServletToJsp.java.html deleted file mode 100644 index 0a3803705e880323c791ae3b806988c0cf4b7bc0..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/ServletToJsp.java.html +++ /dev/null @@ -1,40 +0,0 @@ -Source Code
    /*
    -* Licensed to the Apache Software Foundation (ASF) under one or more
    -* contributor license agreements.  See the NOTICE file distributed with
    -* this work for additional information regarding copyright ownership.
    -* The ASF licenses this file to You under the Apache License, Version 2.0
    -* (the "License"); you may not use this file except in compliance with
    -* the License.  You may obtain a copy of the License at
    -*
    -*     http://www.apache.org/licenses/LICENSE-2.0
    -*
    -* Unless required by applicable law or agreed to in writing, software
    -* distributed under the License is distributed on an "AS IS" BASIS,
    -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -* See the License for the specific language governing permissions and
    -* limitations under the License.
    -*/
    -
    -import javax.servlet.http.HttpServlet;
    -import javax.servlet.http.HttpServletRequest;
    -import javax.servlet.http.HttpServletResponse;
    -
    -public class ServletToJsp extends HttpServlet {
    -
    -    private static final long serialVersionUID = 1L;
    -
    -    @Override
    -    public void doGet (HttpServletRequest request,
    -            HttpServletResponse response) {
    -
    -       try {
    -           // Set the attribute and Forward to hello.jsp
    -           request.setAttribute ("servletName", "servletToJsp");
    -           getServletConfig().getServletContext().getRequestDispatcher(
    -                   "/jsp/jsptoserv/hello.jsp").forward(request, response);
    -       } catch (Exception ex) {
    -           ex.printStackTrace ();
    -       }
    -    }
    -}
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/hello.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/hello.jsp deleted file mode 100644 index 8b2a43f555eef356cefeda6074fd810077aa0197..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/hello.jsp +++ /dev/null @@ -1,26 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - - -

    -I have been invoked by -<% out.print (request.getAttribute("servletName").toString()); %> -Servlet. -

    - - \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/hello.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/hello.jsp.html deleted file mode 100644 index 6ed71761689ffdbff96bb3b6d3e8d8f509fb07fa..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/hello.jsp.html +++ /dev/null @@ -1,27 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -<body bgcolor="white">
    -
    -<h1>
    -I have been invoked by
    -<% out.print (request.getAttribute("servletName").toString()); %>
    -Servlet.
    -</h1>
    -
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp deleted file mode 100644 index db68a6ff07b33c57e7a7ae67325d06dfcbb4f393..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp +++ /dev/null @@ -1,23 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - - - - - - \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp.html deleted file mode 100644 index a5dc22cca5217808b55342b1208dc2fe28c3b0f8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp.html +++ /dev/null @@ -1,24 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -<body bgcolor="white">
    -
    -<!-- Forward to a servlet -->
    -<jsp:forward page="/servletToJsp" />
    -
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/jts.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/jts.html deleted file mode 100644 index a4e16794a3af66037a69bbfce717d7efec891800..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/jsptoserv/jts.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - -Untitled Document - - - - -

    Execute
    - Return

    - -

    Source Code for JSP calling servlet

    - -

    Source Code for Servlet calling JSP

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/num/numguess.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/num/numguess.html deleted file mode 100644 index 1c5a4844aa17f4019c1e12d4e427bbe51c54626c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/num/numguess.html +++ /dev/null @@ -1,34 +0,0 @@ - - - -Untitled Document - - - - -

    - -

    Source Code for Numguess Example -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/num/numguess.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/num/numguess.jsp deleted file mode 100644 index d9c61b912db5e251c9c467bb065b9dc6612e830c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/num/numguess.jsp +++ /dev/null @@ -1,69 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - Number Guess Game - Written by Jason Hunter, CTO, K&A Software - http://www.servlets.com ---%> - -<%@ page import = "num.NumberGuessBean" %> - - - - - -Number Guess - - - -<% if (numguess.getSuccess()) { %> - - Congratulations! You got it. - And after just <%= numguess.getNumGuesses() %> tries.

    - - <% numguess.reset(); %> - - Care to try again? - -<% } else if (numguess.getNumGuesses() == 0) { %> - - Welcome to the Number Guess game.

    - - I'm thinking of a number between 1 and 100.

    - -

    - What's your guess? - -
    - -<% } else { %> - - Good guess, but nope. Try <%= numguess.getHint() %>. - - You have made <%= numguess.getNumGuesses() %> guesses.

    - - I'm thinking of a number between 1 and 100.

    - -

    - What's your guess? - -
    - -<% } %> - -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/num/numguess.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/num/numguess.jsp.html deleted file mode 100644 index e7640419ae74ab90aab4d4ccff996265f8772f5e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/num/numguess.jsp.html +++ /dev/null @@ -1,70 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    -
    -  Number Guess Game
    -  Written by Jason Hunter, CTO, K&A Software
    -  http://www.servlets.com
    ---%>
    -
    -<%@ page import = "num.NumberGuessBean" %>
    -
    -<jsp:useBean id="numguess" class="num.NumberGuessBean" scope="session"/>
    -<jsp:setProperty name="numguess" property="*"/>
    -
    -<html>
    -<head><title>Number Guess</title></head>
    -<body bgcolor="white">
    -<font size=4>
    -
    -<% if (numguess.getSuccess()) { %>
    -
    -  Congratulations!  You got it.
    -  And after just <%= numguess.getNumGuesses() %> tries.<p>
    -
    -  <% numguess.reset(); %>
    -
    -  Care to <a href="numguess.jsp">try again</a>?
    -
    -<% } else if (numguess.getNumGuesses() == 0) { %>
    -
    -  Welcome to the Number Guess game.<p>
    -
    -  I'm thinking of a number between 1 and 100.<p>
    -
    -  <form method=get>
    -  What's your guess? <input type=text name=guess>
    -  <input type=submit value="Submit">
    -  </form>
    -
    -<% } else { %>
    -
    -  Good guess, but nope.  Try <b><%= numguess.getHint() %></b>.
    -
    -  You have made <%= numguess.getNumGuesses() %> guesses.<p>
    -
    -  I'm thinking of a number between 1 and 100.<p>
    -
    -  <form method=get>
    -  What's your guess? <input type=text name=guess>
    -  <input type=submit value="Submit">
    -  </form>
    -
    -<% } %>
    -
    -</font>
    -</body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/plugin/applet/Clock2.java b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/plugin/applet/Clock2.java deleted file mode 100644 index 4ea737a735275e5efb94519ed09477ea7c87987a..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/plugin/applet/Clock2.java +++ /dev/null @@ -1,230 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import java.applet.Applet; -import java.awt.Color; -import java.awt.Font; -import java.awt.Graphics; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; - -/** - * Time! - * - * @author Rachel Gollub - */ - -public class Clock2 extends Applet implements Runnable { - private static final long serialVersionUID = 1L; - Thread timer; // The thread that displays clock - int lastxs, lastys, lastxm, - lastym, lastxh, lastyh; // Dimensions used to draw hands - SimpleDateFormat formatter; // Formats the date displayed - String lastdate; // String to hold date displayed - Font clockFaceFont; // Font for number display on clock - Date currentDate; // Used to get date to display - Color handColor; // Color of main hands and dial - Color numberColor; // Color of second hand and numbers - - @Override - public void init() { - lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0; - formatter = new SimpleDateFormat ("EEE MMM dd hh:mm:ss yyyy", Locale.getDefault()); - currentDate = new Date(); - lastdate = formatter.format(currentDate); - clockFaceFont = new Font("Serif", Font.PLAIN, 14); - handColor = Color.blue; - numberColor = Color.darkGray; - - try { - setBackground(new Color(Integer.parseInt(getParameter("bgcolor"),16))); - } catch (Exception e) { - // Ignored - } - try { - handColor = new Color(Integer.parseInt(getParameter("fgcolor1"),16)); - } catch (Exception e) { - // Ignored - } - try { - numberColor = new Color(Integer.parseInt(getParameter("fgcolor2"),16)); - } catch (Exception e) { - // Ignored - } - resize(300,300); // Set clock window size - } - - // Plotpoints allows calculation to only cover 45 degrees of the circle, - // and then mirror - public void plotpoints(int x0, int y0, int x, int y, Graphics g) { - g.drawLine(x0+x,y0+y,x0+x,y0+y); - g.drawLine(x0+y,y0+x,x0+y,y0+x); - g.drawLine(x0+y,y0-x,x0+y,y0-x); - g.drawLine(x0+x,y0-y,x0+x,y0-y); - g.drawLine(x0-x,y0-y,x0-x,y0-y); - g.drawLine(x0-y,y0-x,x0-y,y0-x); - g.drawLine(x0-y,y0+x,x0-y,y0+x); - g.drawLine(x0-x,y0+y,x0-x,y0+y); - } - - // Circle is just Bresenham's algorithm for a scan converted circle - public void circle(int x0, int y0, int r, Graphics g) { - int x,y; - float d; - x=0; - y=r; - d=5/4-r; - plotpoints(x0,y0,x,y,g); - - while (y>x){ - if (d<0) { - d=d+2*x+3; - x++; - } - else { - d=d+2*(x-y)+5; - x++; - y--; - } - plotpoints(x0,y0,x,y,g); - } - } - - // Paint is the main part of the program - @Override - public void paint(Graphics g) { - int xh, yh, xm, ym, xs, ys, s = 0, m = 10, h = 10, xcenter, ycenter; - String today; - - currentDate = new Date(); - SimpleDateFormat formatter = new SimpleDateFormat("s",Locale.getDefault()); - try { - s = Integer.parseInt(formatter.format(currentDate)); - } catch (NumberFormatException n) { - s = 0; - } - formatter.applyPattern("m"); - try { - m = Integer.parseInt(formatter.format(currentDate)); - } catch (NumberFormatException n) { - m = 10; - } - formatter.applyPattern("h"); - try { - h = Integer.parseInt(formatter.format(currentDate)); - } catch (NumberFormatException n) { - h = 10; - } - formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy"); - today = formatter.format(currentDate); - xcenter=80; - ycenter=55; - - // a= s* pi/2 - pi/2 (to switch 0,0 from 3:00 to 12:00) - // x = r(cos a) + xcenter, y = r(sin a) + ycenter - - xs = (int)(Math.cos(s * 3.14f/30 - 3.14f/2) * 45 + xcenter); - ys = (int)(Math.sin(s * 3.14f/30 - 3.14f/2) * 45 + ycenter); - xm = (int)(Math.cos(m * 3.14f/30 - 3.14f/2) * 40 + xcenter); - ym = (int)(Math.sin(m * 3.14f/30 - 3.14f/2) * 40 + ycenter); - xh = (int)(Math.cos((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + xcenter); - yh = (int)(Math.sin((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + ycenter); - - // Draw the circle and numbers - - g.setFont(clockFaceFont); - g.setColor(handColor); - circle(xcenter,ycenter,50,g); - g.setColor(numberColor); - g.drawString("9",xcenter-45,ycenter+3); - g.drawString("3",xcenter+40,ycenter+3); - g.drawString("12",xcenter-5,ycenter-37); - g.drawString("6",xcenter-3,ycenter+45); - - // Erase if necessary, and redraw - - g.setColor(getBackground()); - if (xs != lastxs || ys != lastys) { - g.drawLine(xcenter, ycenter, lastxs, lastys); - g.drawString(lastdate, 5, 125); - } - if (xm != lastxm || ym != lastym) { - g.drawLine(xcenter, ycenter-1, lastxm, lastym); - g.drawLine(xcenter-1, ycenter, lastxm, lastym); } - if (xh != lastxh || yh != lastyh) { - g.drawLine(xcenter, ycenter-1, lastxh, lastyh); - g.drawLine(xcenter-1, ycenter, lastxh, lastyh); } - g.setColor(numberColor); - g.drawString("", 5, 125); - g.drawString(today, 5, 125); - g.drawLine(xcenter, ycenter, xs, ys); - g.setColor(handColor); - g.drawLine(xcenter, ycenter-1, xm, ym); - g.drawLine(xcenter-1, ycenter, xm, ym); - g.drawLine(xcenter, ycenter-1, xh, yh); - g.drawLine(xcenter-1, ycenter, xh, yh); - lastxs=xs; lastys=ys; - lastxm=xm; lastym=ym; - lastxh=xh; lastyh=yh; - lastdate = today; - currentDate=null; - } - - @Override - public void start() { - timer = new Thread(this); - timer.start(); - } - - @Override - public void stop() { - timer = null; - } - - @Override - public void run() { - Thread me = Thread.currentThread(); - while (timer == me) { - try { - Thread.sleep(100); - } catch (InterruptedException e) { - } - repaint(); - } - } - - @Override - public void update(Graphics g) { - paint(g); - } - - @Override - public String getAppletInfo() { - return "Title: A Clock \nAuthor: Rachel Gollub, 1995 \nAn analog clock."; - } - - @Override - public String[][] getParameterInfo() { - String[][] info = { - {"bgcolor", "hexadecimal RGB number", "The background color. Default is the color of your browser."}, - {"fgcolor1", "hexadecimal RGB number", "The color of the hands and dial. Default is blue."}, - {"fgcolor2", "hexadecimal RGB number", "The color of the seconds hand and numbers. Default is dark gray."} - }; - return info; - } -} diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/plugin/plugin.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/plugin/plugin.html deleted file mode 100644 index 27bc51b131ff9de2f0503557803b7c5488af1f7b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/plugin/plugin.html +++ /dev/null @@ -1,30 +0,0 @@ - - - -Untitled Document - - - - -

    - -

    Source Code for Plugin Example -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/plugin/plugin.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/plugin/plugin.jsp deleted file mode 100644 index a07dda3af5815125dfd50303a838fe015dec310b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/plugin/plugin.jsp +++ /dev/null @@ -1,34 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - Plugin example - -

    Current time is :

    - - - Plugin tag OBJECT or EMBED not supported by browser. - - -

    -

    - -The above applet is loaded using the Java Plugin from a jsp page using the -plugin tag. - -

    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/plugin/plugin.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/plugin/plugin.jsp.html deleted file mode 100644 index 710bda762841580b802b8cc55d84bf444d4f25fa..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/plugin/plugin.jsp.html +++ /dev/null @@ -1,35 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -<title> Plugin example </title>
    -<body bgcolor="white">
    -<h3> Current time is : </h3>
    -<jsp:plugin type="applet" code="Clock2.class" codebase="applet" jreversion="1.2" width="160" height="150" >
    -    <jsp:fallback>
    -        Plugin tag OBJECT or EMBED not supported by browser.
    -    </jsp:fallback>
    -</jsp:plugin>
    -<p>
    -<h4>
    -<font color=red>
    -The above applet is loaded using the Java Plugin from a jsp page using the
    -plugin tag.
    -</font>
    -</h4>
    -</body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/error.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/error.jsp deleted file mode 100644 index 3ef57434161a94bc32eb8408308832b85adcf787..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/error.jsp +++ /dev/null @@ -1,25 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - -Error Page For Examples - - -Invalid username and/or password, please try -again. - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/error.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/error.jsp.html deleted file mode 100644 index 50ec895acf1fb73aef22b0a01c317b08ea0e9f6a..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/error.jsp.html +++ /dev/null @@ -1,26 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -<head>
    -<title>Error Page For Examples</title>
    -</head>
    -<body bgcolor="white">
    -Invalid username and/or password, please try
    -<a href='<%= response.encodeURL("index.jsp") %>'>again</a>.
    -</body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/index.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/index.jsp deleted file mode 100644 index eacf27acbc33a46d538609817fe1ca941e51e873..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/index.jsp +++ /dev/null @@ -1,82 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<% - if (request.getParameter("logoff") != null) { - session.invalidate(); - response.sendRedirect("index.jsp"); - return; - } -%> - - -Protected Page for Examples - - - -You are logged in as remote user -<%= util.HTMLFilter.filter(request.getRemoteUser()) %> -in session <%= session.getId() %>

    - -<% - if (request.getUserPrincipal() != null) { -%> - Your user principal name is - <%= util.HTMLFilter.filter(request.getUserPrincipal().getName()) %> -

    -<% - } else { -%> - No user principal could be identified.

    -<% - } -%> - -<% - String role = request.getParameter("role"); - if (role == null) - role = ""; - if (role.length() > 0) { - if (request.isUserInRole(role)) { -%> - You have been granted role - <%= util.HTMLFilter.filter(role) %>

    -<% - } else { -%> - You have not been granted role - <%= util.HTMLFilter.filter(role) %>

    -<% - } - } -%> - -To check whether your user name has been granted a particular role, -enter it here: -
    - - -
    -

    - -If you have configured this application for form-based authentication, you can -log off by clicking -here. -This should cause you to be returned to the login page after the redirect -that is performed. - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/index.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/index.jsp.html deleted file mode 100644 index cadf810cf888cb4b0b38eb06b0455dfca89a1a44..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/index.jsp.html +++ /dev/null @@ -1,83 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%
    -  if (request.getParameter("logoff") != null) {
    -    session.invalidate();
    -    response.sendRedirect("index.jsp");
    -    return;
    -  }
    -%>
    -<html>
    -<head>
    -<title>Protected Page for Examples</title>
    -</head>
    -<body bgcolor="white">
    -
    -You are logged in as remote user
    -<b><%= util.HTMLFilter.filter(request.getRemoteUser()) %></b>
    -in session <b><%= session.getId() %></b><br><br>
    -
    -<%
    -  if (request.getUserPrincipal() != null) {
    -%>
    -    Your user principal name is
    -    <b><%= util.HTMLFilter.filter(request.getUserPrincipal().getName()) %></b>
    -    <br><br>
    -<%
    -  } else {
    -%>
    -    No user principal could be identified.<br><br>
    -<%
    -  }
    -%>
    -
    -<%
    -  String role = request.getParameter("role");
    -  if (role == null)
    -    role = "";
    -  if (role.length() > 0) {
    -    if (request.isUserInRole(role)) {
    -%>
    -      You have been granted role
    -      <b><%= util.HTMLFilter.filter(role) %></b><br><br>
    -<%
    -    } else {
    -%>
    -      You have <i>not</i> been granted role
    -      <b><%= util.HTMLFilter.filter(role) %></b><br><br>
    -<%
    -    }
    -  }
    -%>
    -
    -To check whether your user name has been granted a particular role,
    -enter it here:
    -<form method="GET" action='<%= response.encodeURL("index.jsp") %>'>
    -<input type="text" name="role" value="<%= util.HTMLFilter.filter(role) %>">
    -<input type="submit" >
    -</form>
    -<br><br>
    -
    -If you have configured this application for form-based authentication, you can
    -log off by clicking
    -<a href='<%= response.encodeURL("index.jsp?logoff=true") %>'>here</a>.
    -This should cause you to be returned to the login page after the redirect
    -that is performed.
    -
    -</body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/login.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/login.jsp deleted file mode 100644 index e11a898c7dbfa8ca8ce4551a786fccf3ec08374c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/login.jsp +++ /dev/null @@ -1,38 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - -Login Page for Examples - -
    - - - - - - - - - - - - - -
    Username:
    Password:
    -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/login.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/login.jsp.html deleted file mode 100644 index 5726e3207fb217202658a8eb2efa5aa2df431217..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/security/protected/login.jsp.html +++ /dev/null @@ -1,39 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -<head>
    -<title>Login Page for Examples</title>
    -<body bgcolor="white">
    -<form method="POST" action='<%= response.encodeURL("j_security_check") %>' >
    -  <table border="0" cellspacing="5">
    -    <tr>
    -      <th align="right">Username:</th>
    -      <td align="left"><input type="text" name="j_username"></td>
    -    </tr>
    -    <tr>
    -      <th align="right">Password:</th>
    -      <td align="left"><input type="password" name="j_password"></td>
    -    </tr>
    -    <tr>
    -      <td align="right"><input type="submit" value="Log In"></td>
    -      <td align="left"><input type="reset"></td>
    -    </tr>
    -  </table>
    -</form>
    -</body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/sessions/DummyCart.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/sessions/DummyCart.html deleted file mode 100644 index d953fa9209762862c415d10d53337384ec0bb61b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/sessions/DummyCart.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - -sessions.DummyCart Bean Properties - - -

    -sessions.DummyCart Bean Properties -

    -
    -
    -
    public class DummyCart
    extends Object
    - -

    -


    - -

    - - - - - - - - - -
    -Properties Summary
    - -String -DummyCart:items -
    -
    - -Multi -
    -


    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/sessions/carts.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/sessions/carts.html deleted file mode 100644 index 834ee0a594fd5b2c623a8adc0c5e3af304772a52..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/sessions/carts.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - carts - - - - - -
    -
    -Please enter item to add or remove: -
    -Add Item: - - - - -

    - - - -
    - -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/sessions/carts.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/sessions/carts.jsp deleted file mode 100644 index 6fba47d9fb50d61e20371136c7aefa8ad350e5af..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/sessions/carts.jsp +++ /dev/null @@ -1,43 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - - - -<% - cart.processRequest(); -%> - - - -
    You have the following items in your cart: -
      -<% - String[] items = cart.getItems(); - for (int i=0; i -
    1. <% out.print(util.HTMLFilter.filter(items[i])); %> -<% - } -%> -
    - -
    - -
    -<%@ include file ="carts.html" %> - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/sessions/carts.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/sessions/carts.jsp.html deleted file mode 100644 index cb2325ffa4b90dbddb7738e4a7cf65cd24e713e6..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/sessions/carts.jsp.html +++ /dev/null @@ -1,44 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -<jsp:useBean id="cart" scope="session" class="sessions.DummyCart" />
    -
    -<jsp:setProperty name="cart" property="*" />
    -<%
    -    cart.processRequest();
    -%>
    -
    -
    -<FONT size = 5 COLOR="#CC0000">
    -<br> You have the following items in your cart:
    -<ol>
    -<%
    -    String[] items = cart.getItems();
    -    for (int i=0; i<items.length; i++) {
    -%>
    -<li> <% out.print(util.HTMLFilter.filter(items[i])); %>
    -<%
    -    }
    -%>
    -</ol>
    -
    -</FONT>
    -
    -<hr>
    -<%@ include file ="carts.html" %>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/sessions/crt.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/sessions/crt.html deleted file mode 100644 index 11e6edafe0e9167a5f573763a888736cedb8310e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/sessions/crt.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - -Untitled Document - - - - -

    - -

    Source Code for Cart Example -

    - -

    Property Sheet for DummyCart -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/simpletag/foo.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/simpletag/foo.html deleted file mode 100644 index e20f840b7b9786e64c52c8fcfa33be70b1fd0a4b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/simpletag/foo.html +++ /dev/null @@ -1,30 +0,0 @@ - - - -Untitled Document - - - - -

    - -

    Source Code for the Simple Tag Example -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/simpletag/foo.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/simpletag/foo.jsp deleted file mode 100644 index 2489146033af4be8d36a1c46f032a10da35783a2..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/simpletag/foo.jsp +++ /dev/null @@ -1,38 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - -<%@ taglib uri="http://tomcat.apache.org/example-taglib" prefix="eg"%> - -Radio stations that rock: - -
      - -
    • <%= member %>
    • -
      -
    - - -Did you see me on the stderr window? - - - -Did you see me on the browser window as well? - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/simpletag/foo.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/simpletag/foo.jsp.html deleted file mode 100644 index 02693c89c20f3486fac8ec552954c4d6541f013b..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/simpletag/foo.jsp.html +++ /dev/null @@ -1,39 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -<body>
    -<%@ taglib uri="http://tomcat.apache.org/example-taglib" prefix="eg"%>
    -
    -Radio stations that rock:
    -
    -<ul>
    -<eg:foo att1="98.5" att2="92.3" att3="107.7">
    -<li><%= member %></li>
    -</eg:foo>
    -</ul>
    -
    -<eg:log>
    -Did you see me on the stderr window?
    -</eg:log>
    -
    -<eg:log toBrowser="true">
    -Did you see me on the browser window as well?
    -</eg:log>
    -
    -</body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/snp/snoop.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/snp/snoop.html deleted file mode 100644 index e48355b4351d6064ce9e4d882653d8d299c197eb..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/snp/snoop.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - -Untitled Document - - - - -

    - -

    Source Code for Request Parameters Example -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/snp/snoop.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/snp/snoop.jsp deleted file mode 100644 index 9bb57a85f119ef20a77109f739470f9ccb5764ea..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/snp/snoop.jsp +++ /dev/null @@ -1,56 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - -

    Request Information

    - -JSP Request Method: <%= util.HTMLFilter.filter(request.getMethod()) %> -
    -Request URI: <%= util.HTMLFilter.filter(request.getRequestURI()) %> -
    -Request Protocol: <%= util.HTMLFilter.filter(request.getProtocol()) %> -
    -Servlet path: <%= util.HTMLFilter.filter(request.getServletPath()) %> -
    -Path info: <%= util.HTMLFilter.filter(request.getPathInfo()) %> -
    -Query string: <%= util.HTMLFilter.filter(request.getQueryString()) %> -
    -Content length: <%= request.getContentLength() %> -
    -Content type: <%= util.HTMLFilter.filter(request.getContentType()) %> -
    -Server name: <%= util.HTMLFilter.filter(request.getServerName()) %> -
    -Server port: <%= request.getServerPort() %> -
    -Remote user: <%= util.HTMLFilter.filter(request.getRemoteUser()) %> -
    -Remote address: <%= util.HTMLFilter.filter(request.getRemoteAddr()) %> -
    -Remote host: <%= util.HTMLFilter.filter(request.getRemoteHost()) %> -
    -Authorization scheme: <%= util.HTMLFilter.filter(request.getAuthType()) %> -
    -Locale: <%= request.getLocale() %> -
    -The browser you are using is -<%= util.HTMLFilter.filter(request.getHeader("User-Agent")) %> -
    -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/snp/snoop.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/snp/snoop.jsp.html deleted file mode 100644 index 00bf89b4954634dbc302e45634e872e21f035bdf..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/snp/snoop.jsp.html +++ /dev/null @@ -1,57 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -<body bgcolor="white">
    -<h1> Request Information </h1>
    -<font size="4">
    -JSP Request Method: <%= util.HTMLFilter.filter(request.getMethod()) %>
    -<br>
    -Request URI: <%= util.HTMLFilter.filter(request.getRequestURI()) %>
    -<br>
    -Request Protocol: <%= util.HTMLFilter.filter(request.getProtocol()) %>
    -<br>
    -Servlet path: <%= util.HTMLFilter.filter(request.getServletPath()) %>
    -<br>
    -Path info: <%= util.HTMLFilter.filter(request.getPathInfo()) %>
    -<br>
    -Query string: <%= util.HTMLFilter.filter(request.getQueryString()) %>
    -<br>
    -Content length: <%= request.getContentLength() %>
    -<br>
    -Content type: <%= util.HTMLFilter.filter(request.getContentType()) %>
    -<br>
    -Server name: <%= util.HTMLFilter.filter(request.getServerName()) %>
    -<br>
    -Server port: <%= request.getServerPort() %>
    -<br>
    -Remote user: <%= util.HTMLFilter.filter(request.getRemoteUser()) %>
    -<br>
    -Remote address: <%= util.HTMLFilter.filter(request.getRemoteAddr()) %>
    -<br>
    -Remote host: <%= util.HTMLFilter.filter(request.getRemoteHost()) %>
    -<br>
    -Authorization scheme: <%= util.HTMLFilter.filter(request.getAuthType()) %>
    -<br>
    -Locale: <%= request.getLocale() %>
    -<hr>
    -The browser you are using is
    -<%= util.HTMLFilter.filter(request.getHeader("User-Agent")) %>
    -<hr>
    -</font>
    -</body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/source.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/source.jsp deleted file mode 100644 index fb75b588eb196f06c8e13c05d544ebf8dd71db55..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/source.jsp +++ /dev/null @@ -1,20 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ taglib uri="http://tomcat.apache.org/example-taglib" - prefix="eg" %> - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/source.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/source.jsp.html deleted file mode 100644 index 66d5a2024f01c9cf501af16762cd3d63d3cf772e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/source.jsp.html +++ /dev/null @@ -1,21 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<%@ taglib uri="http://tomcat.apache.org/example-taglib"
    -        prefix="eg" %>
    -
    -<eg:ShowSource jspFile="<%= util.HTMLFilter.filter(request.getQueryString()) %>"/>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/choose.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/choose.html deleted file mode 100644 index afe90b2f42ef319e870f2c2600e3eed1a90a714d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/choose.html +++ /dev/null @@ -1,36 +0,0 @@ - - - -View Source Code - - - -

    - - - - - -

    - -

    - Source Code for choose.jsp -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/choose.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/choose.jsp deleted file mode 100644 index 745e5f538d6cdb8b368f0a26cd297c239be78872..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/choose.jsp +++ /dev/null @@ -1,54 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - - Tag Examples - choose - - -

    Tag Plugin Examples - <c:choose>

    - -
    -
    - Plugin Introductory Notes -
    - Brief Instructions for Writing Plugins -

    -
    - -
    - - <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> - - - # ${index}: - - - One!
    -
    - - Four!
    -
    - - Three!
    -
    - - Huh?
    -
    -
    -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/choose.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/choose.jsp.html deleted file mode 100644 index 3f3b7e43d4f2425b0afcefbef1f51247fcdd4c05..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/choose.jsp.html +++ /dev/null @@ -1,55 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -  <head>
    -    <title>Tag Examples - choose</title>
    -  </head>
    -  <body>
    -    <h1>Tag Plugin Examples - &lt;c:choose></h1>
    -
    -    <hr/>
    -    <br/>
    -    <a href="notes.html">Plugin Introductory Notes</a>
    -    <br/>
    -    <a href="howto.html">Brief Instructions for Writing Plugins</a>
    -    <br/> <br/>
    -    <hr/>
    -
    -    <br/>
    -
    -    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    -
    -    <c:forEach var="index" begin="0" end="4">
    -      # ${index}:
    -      <c:choose>
    -        <c:when test="${index == 1}">
    -          One!<br/>
    -        </c:when>
    -        <c:when test="${index == 4}">
    -          Four!<br/>
    -        </c:when>
    -        <c:when test="${index == 3}">
    -          Three!<br/>
    -        </c:when>
    -        <c:otherwise>
    -          Huh?<br/>
    -        </c:otherwise>
    -      </c:choose>
    -    </c:forEach>
    -  </body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/foreach.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/foreach.html deleted file mode 100644 index 3d2e6082daa0a152f7985994728066b67c3a2a76..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/foreach.html +++ /dev/null @@ -1,36 +0,0 @@ - - - -View Source Code - - - -

    - - - - - -

    - -

    - Source Code for foreach.jsp -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/foreach.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/foreach.jsp deleted file mode 100644 index 81621cc665e11f97a5a729cbde077b7e35f6d2e3..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/foreach.jsp +++ /dev/null @@ -1,54 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - - Tag Plugin Examples: forEach - - -

    Tag Plugin Examples - <c:forEach>

    - -
    -
    - Plugin Introductory Notes -
    - Brief Instructions for Writing Plugins -

    -
    - -
    - - <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> - <%@ page import="java.util.Vector" %> - -

    Iterating over a range

    - - ${item} - - - <% Vector v = new Vector(); - v.add("One"); v.add("Two"); v.add("Three"); v.add("Four"); - - pageContext.setAttribute("vector", v); - %> - -

    Iterating over a Vector

    - - - ${item} - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/foreach.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/foreach.jsp.html deleted file mode 100644 index de4eca916e3e7379ded8a4a28f5cef60a2374225..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/foreach.jsp.html +++ /dev/null @@ -1,55 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -  <head>
    -    <title>Tag Plugin Examples: forEach</title>
    -  </head>
    -  <body>
    -    <h1>Tag Plugin Examples - &lt;c:forEach></h1>
    -
    -    <hr/>
    -    <br/>
    -    <a href="notes.html">Plugin Introductory Notes</a>
    -    <br/>
    -    <a href="howto.html">Brief Instructions for Writing Plugins</a>
    -    <br/> <br/>
    -    <hr/>
    -
    -    <br/>
    -
    -    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    -    <%@ page import="java.util.Vector" %>
    -
    -    <h3>Iterating over a range</h3>
    -    <c:forEach var="item" begin="1" end="10">
    -        ${item}
    -    </c:forEach>
    -
    -    <% Vector v = new Vector();
    -        v.add("One"); v.add("Two"); v.add("Three"); v.add("Four");
    -
    -        pageContext.setAttribute("vector", v);
    -    %>
    -
    -    <h3>Iterating over a Vector</h3>
    -
    -    <c:forEach items="${vector}" var="item" >
    -        ${item}
    -    </c:forEach>
    -  </body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/howto.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/howto.html deleted file mode 100644 index 5f1d2234ab8e37f444f0bd04cd237e1da87a2c99..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/howto.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - Tag Plugin Implementation - - -

    How to write tag plugins

    -

    - To write a plugin, you'll need to download the source for Tomcat. - There are two steps: -

      -
    1. - Implement the plugin class.

      - This class, which implements - org.apache.jasper.compiler.tagplugin.TagPlugin - instructs Jasper what Java codes to generate in place of the tag - handler calls. - See Javadoc for org.apache.jasper.compiler.tagplugin.TagPlugin - for details. -

    2. - -
    3. - Create the plugin descriptor file WEB-INF/tagPlugins.xml

      - This file - specifies the plugin classes and their corresponding tag handler - classes. -

    4. -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/if.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/if.html deleted file mode 100644 index b04ac592b9bc8b0a5acb8fdef1785514df053ab8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/if.html +++ /dev/null @@ -1,36 +0,0 @@ - - - -View Source Code - - - -

    - - - - - -

    - -

    - Source Code for if.jsp -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/if.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/if.jsp deleted file mode 100644 index af627bf360340ed32f2ae861d0b437c81cff7366..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/if.jsp +++ /dev/null @@ -1,47 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> - - - Tag Plugin Examples: if - - -

    Tag Plugin Examples - <c:if>

    - -
    -
    - Plugin Introductory Notes -
    - Brief Instructions for Writing Plugins -

    -
    - -
    - <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> - -

    Set the test result to a variable

    - - The result of testing for (1==1) is: ${theTruth} - -

    Conditionally execute the body

    - -

    It's true that (2>0)! Working.

    -
    - -

    It's not true that (0>2)! Failed.

    -
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/if.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/if.jsp.html deleted file mode 100644 index ee126c3eb398adf26f2feb5444a60f6bcad53e78..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/if.jsp.html +++ /dev/null @@ -1,48 +0,0 @@ -Source Code
    <%--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    ---%>
    -<html>
    -  <head>
    -    <title>Tag Plugin Examples: if</title>
    -  </head>
    -  <body>
    -    <h1>Tag Plugin Examples - &lt;c:if></h1>
    -
    -    <hr/>
    -    <br/>
    -    <a href="notes.html">Plugin Introductory Notes</a>
    -    <br/>
    -    <a href="howto.html">Brief Instructions for Writing Plugins</a>
    -    <br/> <br/>
    -    <hr/>
    -
    -    <br/>
    -    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    -
    -    <h3>Set the test result to a variable</h3>
    -    <c:if test="${1==1}" var="theTruth" scope="page"/>
    -    The result of testing for (1==1) is: ${theTruth}
    -
    -    <h3>Conditionally execute the body</h3>
    -    <c:if test="${2>0}">
    -        <p>It's true that (2>0)! Working.</p>
    -    </c:if>
    -    <c:if test="${0>2}">
    -        <p>It's not true that (0>2)! Failed.</p>
    -    </c:if>
    -  </body>
    -</html>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/notes.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/notes.html deleted file mode 100644 index cd326fc2df9befece4d9c46d7cb447f4067bf922..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/tagplugin/notes.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - Tag Plugin Introduction - - -

    Tag Plugins: Introductory Notes

    -

    - Tomcat provides a framework for implementing tag plugins. The - plugins instruct Jasper, at translation time, to replace tag handler - calls with Java scriptlets. - The framework allows tag library authors to implement plugins for - their tags. -

    -

    - Tomcat is released with plugins for several JSTL tags. Note - that these plugins work with JSTL 1.1 as well as JSTL 1.0, though - the examples uses JSTL 1.1 and JSP 2.0. - These plugins are not complete (for instance, some item types are not - handled in <c:if>). - They do serve as examples to show plugins in action (just - examine the generated Java files), and how they can be implemented. -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/xml/xml.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/xml/xml.html deleted file mode 100644 index 00121424e98be10f00ae9ba8b6188057238607b8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/xml/xml.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - -Untitled Document - - - - -

    - -

    Source Code for XML syntax Example -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/xml/xml.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/xml/xml.jsp deleted file mode 100644 index 840b21f3248ba3f7fe51a538b31e06cc0f07bcda..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/xml/xml.jsp +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - String getDateTimeStr(Locale l) { - DateFormat df = SimpleDateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, l); - return df.format(new Date()); - } - - - - - Example JSP in XML format - - - -This is the output of a simple JSP using XML format. -
    - -
    Use a jsp:scriptlet to loop from 1 to 10:
    - -// Note we need to declare CDATA because we don't escape the less than symbol - - - - -
    -]]> - -
    - Use a jsp:expression to write the date and time in the browser's locale: - getDateTimeStr(request.getLocale()) -
    - - - - <p>This sentence is enclosed in a jsp:text element.</p> - - - - -
    diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/xml/xml.jsp.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/xml/xml.jsp.html deleted file mode 100644 index b146a971021cdfb260f54d43dbe6cca8d9b1de1a..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/jsp/xml/xml.jsp.html +++ /dev/null @@ -1,71 +0,0 @@ -Source Code
    <?xml version="1.0" encoding="UTF-8"?>
    -<!--
    - Licensed to the Apache Software Foundation (ASF) under one or more
    -  contributor license agreements.  See the NOTICE file distributed with
    -  this work for additional information regarding copyright ownership.
    -  The ASF licenses this file to You under the Apache License, Version 2.0
    -  (the "License"); you may not use this file except in compliance with
    -  the License.  You may obtain a copy of the License at
    -
    -      http://www.apache.org/licenses/LICENSE-2.0
    -
    -  Unless required by applicable law or agreed to in writing, software
    -  distributed under the License is distributed on an "AS IS" BASIS,
    -  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  See the License for the specific language governing permissions and
    -  limitations under the License.
    --->
    -<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
    -  version="1.2">
    -<jsp:directive.page contentType="text/html"/>
    -<jsp:directive.page import="java.util.Date, java.util.Locale"/>
    -<jsp:directive.page import="java.text.*"/>
    -
    -<jsp:declaration>
    -  String getDateTimeStr(Locale l) {
    -    DateFormat df = SimpleDateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, l);
    -    return df.format(new Date());
    -  }
    -</jsp:declaration>
    -
    -<html>
    -<head>
    -  <title>Example JSP in XML format</title>
    -</head>
    -
    -<body>
    -This is the output of a simple JSP using XML format.
    -<br />
    -
    -<div>Use a jsp:scriptlet to loop from 1 to 10: </div>
    -<jsp:scriptlet>
    -// Note we need to declare CDATA because we don't escape the less than symbol
    -<![CDATA[
    -  for (int i = 1; i<=10; i++) {
    -    out.println(i);
    -    if (i < 10) {
    -      out.println(", ");
    -    }
    -  }
    -]]>
    -</jsp:scriptlet>
    -
    -<!-- Because I omit br's end tag, declare it as CDATA -->
    -<![CDATA[
    -  <br><br>
    -]]>
    -
    -<div align="left">
    -  Use a jsp:expression to write the date and time in the browser's locale:
    -  <jsp:expression>getDateTimeStr(request.getLocale())</jsp:expression>
    -</div>
    -
    -
    -<jsp:text>
    -  &lt;p&gt;This sentence is enclosed in a jsp:text element.&lt;/p&gt;
    -</jsp:text>
    -
    -</body>
    -</html>
    -</jsp:root>
    -
    \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/cookies.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/cookies.html deleted file mode 100644 index bacee44dbac72ad64e689eb26081a1f8946b86cf..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/cookies.html +++ /dev/null @@ -1,61 +0,0 @@ - - - -Untitled Document - - - - -

    -

    Source Code for Cookie Example
    -

    - -
    import java.io.*;
    -import javax.servlet.*;
    -import javax.servlet.http.*;
    -
    -public class CookieExample extends HttpServlet {
    -
    -    public void doGet(HttpServletRequest request, HttpServletResponse response)
    -    throws IOException, ServletException
    -    {
    -        response.setContentType("text/html");
    -        PrintWriter out = response.getWriter();
    -
    -        // print out cookies
    -
    -        Cookie[] cookies = request.getCookies();
    -        for (int i = 0; i < cookies.length; i++) {
    -            Cookie c = cookies[i];
    -            String name = c.getName();
    -            String value = c.getValue();
    -            out.println(name + " = " + value);
    -        }
    -
    -        // set a cookie
    -
    -        String name = request.getParameter("cookieName");
    -        if (name != null && name.length() > 0) {
    -            String value = request.getParameter("cookieValue");
    -            Cookie c = new Cookie(name, value);
    -            response.addCookie(c);
    -        }
    -    }
    -}
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/helloworld.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/helloworld.html deleted file mode 100644 index c2234467b9f1796363b639b72cbe28664754523a..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/helloworld.html +++ /dev/null @@ -1,50 +0,0 @@ - - - -Untitled Document - - - - -

    -

    Source Code for HelloWorld Example
    -

    - -
    import java.io.*;
    -import javax.servlet.*;
    -import javax.servlet.http.*;
    -
    -public class HelloWorld extends HttpServlet {
    -
    -    public void doGet(HttpServletRequest request, HttpServletResponse response)
    -    throws IOException, ServletException
    -    {
    -        response.setContentType("text/html");
    -        PrintWriter out = response.getWriter();
    -        out.println("<html>");
    -        out.println("<head>");
    -        out.println("<title>Hello World!</title>");
    -        out.println("</head>");
    -        out.println("<body>");
    -        out.println("<h1>Hello World!</h1>");
    -        out.println("</body>");
    -        out.println("</html>");
    -    }
    -}
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/images/code.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/images/code.gif deleted file mode 100644 index 93af2cd130aa61cb2f235cdd6f0e75ab444819ef..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/images/code.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/images/execute.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/images/execute.gif deleted file mode 100644 index f64d70fd233d6fb3fcbdeedc02061871984f8fb5..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/images/execute.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/images/return.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/images/return.gif deleted file mode 100644 index af4f68f4a3a13e0ef1dc0045b04c2c93354cdf40..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/images/return.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/index.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/index.html deleted file mode 100644 index 7299d2c42a9dd8bcd3ca8e0a397516227f793fb8..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/index.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - Servlet Examples - - - -

    Servlet -Examples with Code

    -

    This is a collection of examples which demonstrate some of the more -frequently used parts of the Servlet API. Familiarity with the Java(tm) -Programming Language is assumed. -

    These examples will only work when viewed via an http URL. They will -not work if you are viewing these pages via a "file://..." URL. Please -refer to the README file provide with this Tomcat release regarding -how to configure and start the provided web server. -

    Wherever you see a form, enter some data and see how the servlet reacts. -When playing with the Cookie and Session Examples, jump back to the Headers -Example to see exactly what your browser is sending the server. -

    To navigate your way through the examples, the following icons will -help:

    -
      -
    • Execute the example
    • -
    • Look at the source code for the example
    • - -
    • Return to this screen
    • -
    - -

    Tip: To see the cookie interactions with your browser, try turning on -the "notify when setting a cookie" option in your browser preferences. -This will let you see when a session is created and give some feedback -when looking at the cookie demo.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Hello WorldExecuteSource
    Request InfoExecuteSource
    Request HeadersExecuteSource
    Request ParametersExecuteSource
    CookiesExecuteSource
    SessionsExecuteSource
    - -

    Note: The source code for these examples does not contain all of the -source code that is actually in the example, only the important sections -of code. Code not important to understand the example has been removed -for clarity.

    - -

    Other Examples

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Servlet 3.0 Asynchronous processing examples:
    async0 - Execute -
    async1 - Execute -
    async2 - Execute -
    async3 - Execute -
    stockticker - Execute -
    Servlet 3.1 Non-blocking IO examples
    Byte counter - Execute -
    Number Writer - Execute -
    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/nonblocking/bytecounter.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/nonblocking/bytecounter.html deleted file mode 100644 index 55d31a21380e172f4a930206b82933fb95891514..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/nonblocking/bytecounter.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - Servlet 3.1 non-blocking IO examples: Byte counter - - -

    Byte counter

    -

    Select a file and/or enter some data using the form below and then submit - it. The server will read the request body using non-blocking IO and then - respond with the total length of the request body in bytes.

    -
    -

    -

    -

    -
    - - \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/reqheaders.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/reqheaders.html deleted file mode 100644 index adda30cefa9460195d7e567c4cdfe0fc0e13fb9c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/reqheaders.html +++ /dev/null @@ -1,49 +0,0 @@ - - - -Untitled Document - - - - -

    -

    Source Code for RequestHeader Example
    -

    - -
    import java.io.*;
    -import java.util.*;
    -import javax.servlet.*;
    -import javax.servlet.http.*;
    -
    -public class RequestHeaderExample extends HttpServlet {
    -
    -    public void doGet(HttpServletRequest request, HttpServletResponse response)
    -    throws IOException, ServletException
    -    {
    -        response.setContentType("text/html");
    -        PrintWriter out = response.getWriter();
    -        Enumeration e = request.getHeaderNames();
    -        while (e.hasMoreElements()) {
    -            String name = (String)e.nextElement();
    -            String value = request.getHeader(name);
    -            out.println(name + " = " + value);
    -        }
    -    }
    -}
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/reqinfo.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/reqinfo.html deleted file mode 100644 index daf239c181ef4d1fa7091f963536284148efea85..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/reqinfo.html +++ /dev/null @@ -1,68 +0,0 @@ - - - -Untitled Document - - - - -

    -

    Source Code for Request Info Example
    -

    - -
    import java.io.*;
    -import javax.servlet.*;
    -import javax.servlet.http.*;
    -
    -public class RequestInfo extends HttpServlet {
    -
    -    public void doGet(HttpServletRequest request, HttpServletResponse response)
    -    throws IOException, ServletException
    -    {
    -        response.setContentType("text/html");
    -        PrintWriter out = response.getWriter();
    -        out.println("<html>");
    -        out.println("<body>");
    -        out.println("<head>");
    -        out.println("<title>Request Information Example</title>");
    -        out.println("</head>");
    -        out.println("<body>");
    -        out.println("<h3>Request Information Example</h3>");
    -        out.println("Method: " + request.getMethod());
    -        out.println("Request URI: " + request.getRequestURI());
    -        out.println("Protocol: " + request.getProtocol());
    -        out.println("PathInfo: " + request.getPathInfo());
    -        out.println("Remote Address: " + request.getRemoteAddr());
    -        out.println("</body>");
    -        out.println("</html>");
    -    }
    -
    -    /**
    -     * We are going to perform the same operations for POST requests
    -     * as for GET methods, so this method just sends the request to
    -     * the doGet method.
    -     */
    -
    -    public void doPost(HttpServletRequest request, HttpServletResponse response)
    -    throws IOException, ServletException
    -    {
    -        doGet(request, response);
    -    }
    -}
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/reqparams.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/reqparams.html deleted file mode 100644 index 7128e39e4da7d0b1b3d03e4d8f79200fff3a9a3c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/reqparams.html +++ /dev/null @@ -1,78 +0,0 @@ - - - -Untitled Document - - - - -

    -

    Source Code for Request Parameter Example
    -

    - -
    import java.io.*;
    -import java.util.*;
    -import javax.servlet.*;
    -import javax.servlet.http.*;
    -
    -public class RequestParamExample extends HttpServlet {
    -
    -    public void doGet(HttpServletRequest request, HttpServletResponse response)
    -    throws IOException, ServletException
    -    {
    -        response.setContentType("text/html");
    -        PrintWriter out = response.getWriter();
    -        out.println("<html>");
    -        out.println("<head>");
    -        out.println("<title>Request Parameters Example</title>");
    -        out.println("</head>");
    -        out.println("<body>");
    -        out.println("<h3>Request Parameters Example</h3>");
    -        out.println("Parameters in this request:<br>");
    -        if (firstName != null || lastName != null) {
    -            out.println("First Name:");
    -            out.println(" = " + HTMLFilter.filter(firstName) + "<br>");
    -            out.println("Last Name:");
    -            out.println(" = " + HTMLFilter.filter(lastName));
    -        } else {
    -            out.println("No Parameters, Please enter some");
    -        }
    -        out.println("<P>");
    -        out.print("<form action=\"");
    -        out.print("RequestParamExample\" ");
    -        out.println("method=POST>");
    -        out.println("First Name:");
    -        out.println("<input type=text size=20 name=firstname>");
    -        out.println("<br>");
    -        out.println("Last Name:");
    -        out.println("<input type=text size=20 name=lastname>");
    -        out.println("<br>");
    -        out.println("<input type=submit>");
    -        out.println("</form>");
    -        out.println("</body>");
    -        out.println("</html>");
    -    }
    -
    -    public void doPost(HttpServletRequest request, HttpServletResponse res)
    -    throws IOException, ServletException
    -    {
    -        doGet(request, response);
    -    }
    -}
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/sessions.html b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/sessions.html deleted file mode 100644 index 99816c22e6e44654c1495c5d76a3ea88560e2f5c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/servlets/sessions.html +++ /dev/null @@ -1,70 +0,0 @@ - - - -Untitled Document - - - - -

    -

    Source Code for Session Example
    -

    - -
    import java.io.*;
    -import java.util.*;
    -import javax.servlet.*;
    -import javax.servlet.http.*;
    -
    -public class SessionExample extends HttpServlet {
    -
    -    public void doGet(HttpServletRequest request, HttpServletResponse response)
    -    throws IOException, ServletException
    -    {
    -        response.setContentType("text/html");
    -        PrintWriter out = response.getWriter();
    -
    -        HttpSession session = request.getSession(true);
    -
    -        // print session info
    -
    -        Date created = new Date(session.getCreationTime());
    -        Date accessed = new Date(session.getLastAccessedTime());
    -        out.println("ID " + session.getId());
    -        out.println("Created: " + created);
    -        out.println("Last Accessed: " + accessed);
    -
    -        // set session info if needed
    -
    -        String dataName = request.getParameter("dataName");
    -        if (dataName != null && dataName.length() > 0) {
    -            String dataValue = request.getParameter("dataValue");
    -            session.setAttribute(dataName, dataValue);
    -        }
    -
    -        // print session contents
    -
    -        Enumeration e = session.getAttributeNames();
    -        while (e.hasMoreElements()) {
    -            String name = (String)e.nextElement();
    -            String value = session.getAttribute(name).toString();
    -            out.println(name + " = " + value);
    -        }
    -    }
    -}
    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/websocket/chat.xhtml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/websocket/chat.xhtml deleted file mode 100644 index fca748ca98c4c60d8cdbb8f9fbf2d20e91f030ff..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/websocket/chat.xhtml +++ /dev/null @@ -1,136 +0,0 @@ - - - - - Apache Tomcat WebSocket Examples: Chat - - - - -

    Seems your browser doesn't support Javascript! Websockets rely on Javascript being enabled. Please enable - Javascript and reload this page!

    -
    -

    - -

    -
    -
    -
    -
    - - \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/websocket/drawboard.xhtml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/websocket/drawboard.xhtml deleted file mode 100644 index ff63366484cf386e9cc4d024b56e85685d9af936..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/websocket/drawboard.xhtml +++ /dev/null @@ -1,899 +0,0 @@ - - - - - Apache Tomcat WebSocket Examples: Drawboard - - - - -
    Seems your browser doesn't support Javascript! Websockets rely on Javascript being enabled. Please enable - Javascript and reload this page!
    -
    -
    -
    -
    - -

    About Drawboard WebSocket Example

    -
    -

    - This drawboard is a page where you can draw with your mouse or touch input - (using different colors) and everybody else which has the page open will - immediately see what you are drawing.
    - If someone opens the page later, they will get the current room image (so they - can see what was already drawn by other people). -

    -

    - It uses asynchronous sending of messages so that it doesn't need separate threads - for each client to send messages.
    - Each "Room" (where the drawing happens) uses a ReentrantLock to synchronize access - (currently, only a single Room is implemented). -

    -

    - When you open the page, first you will receive a binary websocket message containing - the current room image as PNG image. After that, you will receive string messages - that contain the drawing actions (line from x1,y1 to x2,y2).
    - Note that it currently only uses simple string messages instead of JSON because - I did not want to introduce a dependency on a JSON lib. -

    -

    - It uses synchronization mechanisms to ensure that the final image will look the same - for every user, regardless of what their network latency/speed is – e.g. if two user - draw at the same time on the same place, the server will decide which line was the - first one, and that will be reflected on every client. -

    -
    - - \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/websocket/echo.xhtml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/websocket/echo.xhtml deleted file mode 100644 index 89347bbd2169ba34461df35ee93aa5474b99755d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/websocket/echo.xhtml +++ /dev/null @@ -1,184 +0,0 @@ - - - - - Apache Tomcat WebSocket Examples: Echo - - - - -

    Seems your browser doesn't support Javascript! Websockets rely on Javascript being enabled. Please enable - Javascript and reload this page!

    -
    -
    -
    - Connect to service implemented using: -
    - - -
    - - -
    - - -
    - - - -
    -
    - -
    -
    - - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    - - \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/websocket/index.xhtml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/websocket/index.xhtml deleted file mode 100644 index 97ee9451b6ca525961d8c71170fd776c16b08265..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/websocket/index.xhtml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - Apache Tomcat WebSocket Examples - - -

    Apache Tomcat WebSocket Examples

    - - - \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/websocket/snake.xhtml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/websocket/snake.xhtml deleted file mode 100644 index b71077c63a46771def4b35763d749b121f3cbf8c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/examples/websocket/snake.xhtml +++ /dev/null @@ -1,266 +0,0 @@ - - - - - Apache Tomcat WebSocket Examples: Multiplayer Snake - - - -

    Seems your browser doesn't support Javascript! Websockets rely on Javascript being enabled. Please enable - Javascript and reload this page!

    -
    - -
    -
    -
    -
    - - - \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/META-INF/context.xml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/META-INF/context.xml deleted file mode 100644 index 8d1f61d6c09e44c623f137658f1a96aced7a3a83..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/META-INF/context.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/WEB-INF/jsp/401.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/WEB-INF/jsp/401.jsp deleted file mode 100644 index 047766bbf96cc310bc076aa64cce79c1afe21f50..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/WEB-INF/jsp/401.jsp +++ /dev/null @@ -1,71 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page session="false" trimDirectiveWhitespaces="true" %> - - - - 401 Unauthorized - - - -

    401 Unauthorized

    -

    - You are not authorized to view this page. If you have not changed - any configuration files, please examine the file - conf/tomcat-users.xml in your installation. That - file must contain the credentials to let you use this webapp. -

    -

    - For example, to add the admin-gui role to a user named - tomcat with a password of s3cret, add the following to the - config file listed above. -

    -
    -<role rolename="admin-gui"/>
    -<user username="tomcat" password="s3cret" roles="admin-gui"/>
    -
    -

    - Note that for Tomcat 7 onwards, the roles required to use the host manager - application were changed from the single admin role to the - following two roles. You will need to assign the role(s) required for - the functionality you wish to access. -

    -
      -
    • admin-gui - allows access to the HTML GUI
    • -
    • admin-script - allows access to the text interface
    • -
    -

    - The HTML interface is protected against CSRF but the text interface is not. - To maintain the CSRF protection: -

    -
      -
    • Users with the admin-gui role should not be granted the - admin-script role.
    • -
    • If the text interface is accessed through a browser (e.g. for testing - since this interface is intended for tools not humans) then the browser - must be closed afterwards to terminate the session.
    • -
    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/WEB-INF/jsp/403.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/WEB-INF/jsp/403.jsp deleted file mode 100644 index 74e1e2da931039ec7bf3a9a5d51163ff94dc5fa5..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/WEB-INF/jsp/403.jsp +++ /dev/null @@ -1,90 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page session="false" trimDirectiveWhitespaces="true" %> - - - - 403 Access Denied - - - -

    403 Access Denied

    -

    - You are not authorized to view this page. -

    -

    - By default the Host Manager is only accessible from a browser running on the - same machine as Tomcat. If you wish to modify this restriction, you'll need - to edit the Host Manager's context.xml file. -

    -

    - If you have already configured the Host Manager application to allow access - and you have used your browsers back button, used a saved book-mark or - similar then you may have triggered the cross-site request forgery (CSRF) - protection that has been enabled for the HTML interface of the Host Manager - application. You will need to reset this protection by returning to the - main Host Manager page. - Once you return to this page, you will be able to continue using the Host - Manager application's HTML interface normally. If you continue to see this - access denied message, check that you have the necessary permissions to - access this application. -

    -

    If you have not changed - any configuration files, please examine the file - conf/tomcat-users.xml in your installation. That - file must contain the credentials to let you use this webapp. -

    -

    - For example, to add the admin-gui role to a user named - tomcat with a password of s3cret, add the following to the - config file listed above. -

    -
    -<role rolename="admin-gui"/>
    -<user username="tomcat" password="s3cret" roles="admin-gui"/>
    -
    -

    - Note that for Tomcat 7 onwards, the roles required to use the host manager - application were changed from the single admin role to the - following two roles. You will need to assign the role(s) required for - the functionality you wish to access. -

    -
      -
    • admin-gui - allows access to the HTML GUI
    • -
    • admin-script - allows access to the text interface
    • -
    -

    - The HTML interface is protected against CSRF but the text interface is not. - To maintain the CSRF protection: -

    -
      -
    • Users with the admin-gui role should not be granted the - admin-script role.
    • -
    • If the text interface is accessed through a browser (e.g. for testing - since this interface is intended for tools not humans) then the browser - must be closed afterwards to terminate the session.
    • -
    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/WEB-INF/jsp/404.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/WEB-INF/jsp/404.jsp deleted file mode 100644 index 9816df590a25829b9d6e4ce583d7f15512fb6c60..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/WEB-INF/jsp/404.jsp +++ /dev/null @@ -1,62 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page import="org.apache.catalina.util.RequestUtil" session="false" - trimDirectiveWhitespaces="true" %> - - - - 404 Not found - - - -

    404 Not found

    -

    - The page you tried to access - (<%=RequestUtil.filter((String) request.getAttribute( - "javax.servlet.error.request_uri"))%>) - does not exist. -

    -

    - The Host Manager application has been re-structured for Tomcat 7 onwards and - some URLs have changed. All URLs used to access the Manager application - should now start with one of the following options: -

    -
      -
    • <%=request.getContextPath()%>/html for the HTML GUI
    • -
    • <%=request.getContextPath()%>/text for the text interface
    • -
    -

    - Note that the URL for the text interface has changed from - "<%=request.getContextPath()%>" to - "<%=request.getContextPath()%>/text". -

    -

    - You probably need to adjust the URL you are using to access the Host Manager - application. However, there is always a chance you have found a bug in the - Host Manager application. If you are sure you have found a bug, and that the - bug has not already been reported, please report it to the Apache Tomcat - team. -

    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/WEB-INF/web.xml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/WEB-INF/web.xml deleted file mode 100644 index c315546d054c665eb0acc29e09a51909f803010c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/WEB-INF/web.xml +++ /dev/null @@ -1,143 +0,0 @@ - - - - - Tomcat Host Manager Application - - A scriptable host management web application for the Tomcat Web Server; - Manager lets you view, create and remove virtual hosts. - - - - HostManager - org.apache.catalina.manager.host.HostManagerServlet - - debug - 2 - - - - HTMLHostManager - org.apache.catalina.manager.host.HTMLHostManagerServlet - - debug - 2 - - - - - SetCharacterEncoding - org.apache.catalina.filters.SetCharacterEncodingFilter - - encoding - UTF-8 - - - - - SetCharacterEncoding - /* - - - - CSRF - org.apache.catalina.filters.CsrfPreventionFilter - - entryPoints - /html,/html/,/html/list,/index.jsp - - - - - CSRF - HTMLHostManager - - - - - HostManager - /text/* - - - HTMLHostManager - /html/* - - - - - - HostManager commands - /text/* - - - - admin-script - - - - - HTMLHostManager commands - /html/* - - - - admin-gui - - - - - - BASIC - Tomcat Host Manager Application - - - - - - The role that is required to log in to the Host Manager Application HTML - interface - - admin-gui - - - - The role that is required to log in to the Host Manager Application text - interface - - admin-script - - - - 401 - /WEB-INF/jsp/401.jsp - - - 403 - /WEB-INF/jsp/403.jsp - - - 404 - /WEB-INF/jsp/404.jsp - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/add.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/add.gif deleted file mode 100644 index 0774d074e5e48291bdacfacb086506e6be117e51..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/add.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/asf-logo.svg b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/asf-logo.svg deleted file mode 100644 index e24cbe52975eaea5ed9ede394d40862db1a05b34..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/asf-logo.svg +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/code.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/code.gif deleted file mode 100644 index d27307b5c09467c2e45bbfcd1ff74989eb2e7d65..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/code.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/design.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/design.gif deleted file mode 100644 index f5db0a9fc783924486176ce157924fba53df73fc..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/design.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/docs.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/docs.gif deleted file mode 100644 index d64a4a18c405e2c10ab791363f9f7acd16f3d433..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/docs.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/fix.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/fix.gif deleted file mode 100644 index d59ad642ba46c0bc1af17ebd2485722e92d6c70e..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/fix.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/tomcat.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/tomcat.gif deleted file mode 100644 index f2aa6f863e43e3924a35854c556a9c1b6d125cba..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/tomcat.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/update.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/update.gif deleted file mode 100644 index 31e22abbc7a2e24b20b978e9be9bce91d4d97728..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/update.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/void.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/void.gif deleted file mode 100644 index e565824aafafe632011b281cba976baf8b3ba89a..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/images/void.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/index.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/index.jsp deleted file mode 100644 index 2806b76e8e00d033a5e7aa1f30338e9608041899..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/index.jsp +++ /dev/null @@ -1,18 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page session="false" trimDirectiveWhitespaces="true" %> -<% response.sendRedirect(request.getContextPath() + "/html"); %> \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/manager.xml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/manager.xml deleted file mode 100644 index 2510acbc20481fa3d7498ea9e4a0a7c591edcab7..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/host-manager/manager.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/META-INF/context.xml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/META-INF/context.xml deleted file mode 100644 index 021774508876428603f2819e507908685c01bec0..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/META-INF/context.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/401.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/401.jsp deleted file mode 100644 index fcd0280a02d7838d04541a8bde3c7574e5164129..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/401.jsp +++ /dev/null @@ -1,80 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page session="false" trimDirectiveWhitespaces="true" %> - - - - 401 Unauthorized - - - -

    401 Unauthorized

    -

    - You are not authorized to view this page. If you have not changed - any configuration files, please examine the file - conf/tomcat-users.xml in your installation. That - file must contain the credentials to let you use this webapp. -

    -

    - For example, to add the manager-gui role to a user named - tomcat with a password of s3cret, add the following to the - config file listed above. -

    -
    -<role rolename="manager-gui"/>
    -<user username="tomcat" password="s3cret" roles="manager-gui"/>
    -
    -

    - Note that for Tomcat 7 onwards, the roles required to use the manager - application were changed from the single manager role to the - following four roles. You will need to assign the role(s) required for - the functionality you wish to access. -

    -
      -
    • manager-gui - allows access to the HTML GUI and the status - pages
    • -
    • manager-script - allows access to the text interface and the - status pages
    • -
    • manager-jmx - allows access to the JMX proxy and the status - pages
    • -
    • manager-status - allows access to the status pages only
    • -
    -

    - The HTML interface is protected against CSRF but the text and JMX interfaces - are not. To maintain the CSRF protection: -

    -
      -
    • Users with the manager-gui role should not be granted either - the manager-script or manager-jmx roles.
    • -
    • If the text or jmx interfaces are accessed through a browser (e.g. for - testing since these interfaces are intended for tools not humans) then - the browser must be closed afterwards to terminate the session.
    • -
    -

    - For more information - please see the - Manager App HOW-TO. -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/403.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/403.jsp deleted file mode 100644 index 78184c71ef70eccb428714a048e5eee46dd4532e..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/403.jsp +++ /dev/null @@ -1,100 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page session="false" trimDirectiveWhitespaces="true" %> - - - - 403 Access Denied - - - -

    403 Access Denied

    -

    - You are not authorized to view this page. -

    -

    - By default the Manager is only accessible from a browser running on the - same machine as Tomcat. If you wish to modify this restriction, you'll need - to edit the Manager's context.xml file. -

    -

    - If you have already configured the Manager application to allow access and - you have used your browsers back button, used a saved book-mark or similar - then you may have triggered the cross-site request forgery (CSRF) protection - that has been enabled for the HTML interface of the Manager application. You - will need to reset this protection by returning to the - main Manager page. Once you - return to this page, you will be able to continue using the Manager - application's HTML interface normally. If you continue to see this access - denied message, check that you have the necessary permissions to access this - application. -

    -

    - If you have not changed - any configuration files, please examine the file - conf/tomcat-users.xml in your installation. That - file must contain the credentials to let you use this webapp. -

    -

    - For example, to add the manager-gui role to a user named - tomcat with a password of s3cret, add the following to the - config file listed above. -

    -
    -<role rolename="manager-gui"/>
    -<user username="tomcat" password="s3cret" roles="manager-gui"/>
    -
    -

    - Note that for Tomcat 7 onwards, the roles required to use the manager - application were changed from the single manager role to the - following four roles. You will need to assign the role(s) required for - the functionality you wish to access. -

    -
      -
    • manager-gui - allows access to the HTML GUI and the status - pages
    • -
    • manager-script - allows access to the text interface and the - status pages
    • -
    • manager-jmx - allows access to the JMX proxy and the status - pages
    • -
    • manager-status - allows access to the status pages only
    • -
    -

    - The HTML interface is protected against CSRF but the text and JMX interfaces - are not. To maintain the CSRF protection: -

    -
      -
    • Users with the manager-gui role should not be granted either - the manager-script or manager-jmx roles.
    • -
    • If the text or jmx interfaces are accessed through a browser (e.g. for - testing since these interfaces are intended for tools not humans) then - the browser must be closed afterwards to terminate the session.
    • -
    -

    - For more information - please see the - Manager App HOW-TO. -

    - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/404.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/404.jsp deleted file mode 100644 index 7e1ef5cd75e9aafe339d60c602e78c210765ccbf..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/404.jsp +++ /dev/null @@ -1,63 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page import="org.apache.catalina.util.RequestUtil" session="false" - trimDirectiveWhitespaces="true" %> - - - - 404 Not found - - - -

    404 Not found

    -

    - The page you tried to access - (<%=RequestUtil.filter((String) request.getAttribute( - "javax.servlet.error.request_uri"))%>) - does not exist. -

    -

    - The Manager application has been re-structured for Tomcat 7 onwards and some - of URLs have changed. All URLs used to access the Manager application should - now start with one of the following options: -

    -
      -
    • <%=request.getContextPath()%>/html for the HTML GUI
    • -
    • <%=request.getContextPath()%>/text for the text interface
    • -
    • <%=request.getContextPath()%>/jmxproxy for the JMX proxy
    • -
    • <%=request.getContextPath()%>/status for the status pages
    • -
    -

    - Note that the URL for the text interface has changed from - "<%=request.getContextPath()%>" to - "<%=request.getContextPath()%>/text". -

    -

    - You probably need to adjust the URL you are using to access the Manager - application. However, there is always a chance you have found a bug in the - Manager application. If you are sure you have found a bug, and that the bug - has not already been reported, please report it to the Apache Tomcat team. -

    - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/connectorCerts.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/connectorCerts.jsp deleted file mode 100644 index 77ddc2b4cbd58c4b556f7688b743c67e326f955d..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/connectorCerts.jsp +++ /dev/null @@ -1,92 +0,0 @@ - -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@page session="false" contentType="text/html; charset=ISO-8859-1" %> -<%@page import="java.util.Map" %> -<%@page import="java.util.Map.Entry" %> -<%@page import="java.util.List" %> - - - -<% Map> certList = (Map>) request.getAttribute("certList"); -%> - - - - - - - - - Configured certificate chains per Connector - - -

    Configured certificate chains per Connector

    - - - - - - - - - - <% - for (Map.Entry> entry : certList.entrySet()) { - %> - - - - - <% - } - %> - -
    Connector / TLS Virtual Host / Certificate typeCertificate chain
    <%=entry.getKey()%> - <% - for (String cert : entry.getValue()) { - %> -
    <%=cert%>
    - <% - } - %> -
    - -
    -

    - -

    -
    - -<%--div style="display: none;"> -

    - Valid HTML 4.01! - Valid XHTML 1.0! - Valid XHTML 1.1! -

    - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/connectorCiphers.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/connectorCiphers.jsp deleted file mode 100644 index e82a3dd1ceab0f6bc09e6b241d997a56e9b49dd1..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/connectorCiphers.jsp +++ /dev/null @@ -1,92 +0,0 @@ - -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@page session="false" contentType="text/html; charset=ISO-8859-1" %> -<%@page import="java.util.Map" %> -<%@page import="java.util.Map.Entry" %> -<%@page import="java.util.List" %> - - - -<% Map> cipherList = (Map>) request.getAttribute("cipherList"); -%> - - - - - - - - - Configured ciphers per Connector - - -

    Configured ciphers per Connector

    - - - - - - - - - - <% - for (Map.Entry> entry : cipherList.entrySet()) { - %> - - - - - <% - } - %> - -
    Connector / TLS Virtual HostEnabled Ciphers
    <%=entry.getKey()%> - <% - for (String cipher : entry.getValue()) { - %> -

    <%=cipher%>

    - <% - } - %> -
    - -
    -

    - -

    -
    - -<%--div style="display: none;"> -

    - Valid HTML 4.01! - Valid XHTML 1.0! - Valid XHTML 1.1! -

    - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/connectorTrustedCerts.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/connectorTrustedCerts.jsp deleted file mode 100644 index 2beeb377d61834123aad886fb0cef771a69a8061..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/connectorTrustedCerts.jsp +++ /dev/null @@ -1,92 +0,0 @@ - -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@page session="false" contentType="text/html; charset=ISO-8859-1" %> -<%@page import="java.util.Map" %> -<%@page import="java.util.Map.Entry" %> -<%@page import="java.util.List" %> - - - -<% Map> trustedCertList = (Map>) request.getAttribute("trustedCertList"); -%> - - - - - - - - - Trusted certificates per Connector - - -

    Trusted certificates per Connector

    - - - - - - - - - - <% - for (Map.Entry> entry : trustedCertList.entrySet()) { - %> - - - - - <% - } - %> - -
    Connector / TLS Virtual HostTrusted Certificates
    <%=entry.getKey()%> - <% - for (String cert : entry.getValue()) { - %> -
    <%=cert%>
    - <% - } - %> -
    - -
    -

    - -

    -
    - -<%--div style="display: none;"> -

    - Valid HTML 4.01! - Valid XHTML 1.0! - Valid XHTML 1.1! -

    - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/sessionDetail.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/sessionDetail.jsp deleted file mode 100644 index 58d1f902b0006a84f630564631fdf86034a8d99c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/sessionDetail.jsp +++ /dev/null @@ -1,197 +0,0 @@ - -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@page session="false" contentType="text/html; charset=ISO-8859-1" %> -<%@page import="java.util.Enumeration" %> -<%@page import="javax.servlet.http.HttpSession" %> -<%@page import="org.apache.catalina.Session" %> -<%@page import="org.apache.catalina.manager.JspHelper" %> -<%@page import="org.apache.catalina.util.ContextName" %> - -<%--!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" - "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"--%> - - -<% String path = (String) request.getAttribute("path"); - String version = (String) request.getAttribute("version"); - ContextName cn = new ContextName(path, version); - Session currentSession = (Session)request.getAttribute("currentSession"); - String currentSessionId = null; - HttpSession currentHttpSession = null; - if (currentSession != null) { - currentHttpSession = currentSession.getSession(); - currentSessionId = JspHelper.escapeXml(currentSession.getId()); - } else { - currentSessionId = "Session invalidated"; - } - String submitUrl = JspHelper.escapeXml(response.encodeURL( - ((HttpServletRequest) pageContext.getRequest()).getRequestURI() + - "?path=" + path + "&version=" + version)); -%> - - - - - - - - - - Sessions Administration: details for <%= currentSessionId %> - - -<% if (currentHttpSession == null) { %> -

    <%=currentSessionId%>

    -<% } else { %> -

    Details for Session <%= currentSessionId %>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Session Id<%= currentSessionId %>
    Guessed Locale<%= JspHelper.guessDisplayLocaleFromSession(currentSession) %>
    Guessed User<%= JspHelper.guessDisplayUserFromSession(currentSession) %>
    Creation Time<%= JspHelper.getDisplayCreationTimeForSession(currentSession) %>
    Last Accessed Time<%= JspHelper.getDisplayLastAccessedTimeForSession(currentSession) %>
    Session Max Inactive Interval<%= JspHelper.secondsToTimeString(currentSession.getMaxInactiveInterval()) %>
    Used Time<%= JspHelper.getDisplayUsedTimeForSession(currentSession) %>
    Inactive Time<%= JspHelper.getDisplayInactiveTimeForSession(currentSession) %>
    TTL<%= JspHelper.getDisplayTTLForSession(currentSession) %>
    - -
    -
    - - - <% - if ("Primary".equals(request.getParameter("sessionType"))) { - %> - - <% - } - %> -
    -
    - -
    <%= JspHelper.escapeXml(request.getAttribute("error")) %>
    -
    <%= JspHelper.escapeXml(request.getAttribute("message")) %>
    - - - <% int nAttributes = 0; - Enumeration attributeNamesEnumeration = currentHttpSession.getAttributeNames(); - while (attributeNamesEnumeration.hasMoreElements()) { - attributeNamesEnumeration.nextElement(); - ++nAttributes; - } - %> - - - - - - - - - <%--tfoot> - - - - - - <% attributeNamesEnumeration = currentHttpSession.getAttributeNames(); - while (attributeNamesEnumeration.hasMoreElements()) { - String attributeName = (String) attributeNamesEnumeration.nextElement(); - %> - - - - - - <% } // end while %> - -
    <%= JspHelper.formatNumber(nAttributes) %> attributes
    Remove AttributeAttribute nameAttribute value
    - TODO: set Max Inactive Interval on sessions -
    -
    -
    - - - - <% - if ("Primary".equals(request.getParameter("sessionType"))) { - %> - - - <% - } else { - out.print("Primary sessions only"); - } - %> -
    -
    -
    <%= JspHelper.escapeXml(attributeName) %><% Object attributeValue = currentHttpSession.getAttribute(attributeName); %>"><%= JspHelper.escapeXml(attributeValue) %>
    -<% } // endif%> - -
    -

    - -

    -
    - -<%--div style="display: none;"> -

    - Valid HTML 4.01! - Valid XHTML 1.0! - Valid XHTML 1.1! -

    - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/sessionsList.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/sessionsList.jsp deleted file mode 100644 index 1fad63d320142bb609e4c88777df301c1d69525c..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/jsp/sessionsList.jsp +++ /dev/null @@ -1,172 +0,0 @@ - -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@page session="false" contentType="text/html; charset=ISO-8859-1" %> -<%@page import="java.util.Collection" %> -<%@page import="java.util.Iterator" %> -<%@page import="org.apache.catalina.manager.JspHelper" %> -<%@page import="org.apache.catalina.Session" %> -<%@page import="org.apache.catalina.ha.session.DeltaSession" %> -<%@page import="org.apache.catalina.util.ContextName" %> - - - -<%@page import="org.apache.catalina.manager.DummyProxySession"%> -<% String path = (String) request.getAttribute("path"); - String version = (String) request.getAttribute("version"); - ContextName cn = new ContextName(path, version); - String submitUrl = JspHelper.escapeXml(response.encodeURL( - ((HttpServletRequest) pageContext.getRequest()).getRequestURI() + - "?path=" + path + "&version=" + version)); - Collection activeSessions = (Collection) request.getAttribute("activeSessions"); -%> - - - - - - - - - - Sessions Administration for <%= JspHelper.escapeXml(cn.getDisplayName()) %> - - -

    Sessions Administration for <%= JspHelper.escapeXml(cn.getDisplayName()) %>

    - -

    Tips:

    -
      -
    • Click on a column to sort.
    • -
    • To view a session details and/or remove a session attributes, click on its id.
    • -
    - -
    <%= JspHelper.escapeXml(request.getAttribute("error")) %>
    -
    <%= JspHelper.escapeXml(request.getAttribute("message")) %>
    - -
    -
    Active HttpSessions informations - - "/> - <% String order = (String) request.getAttribute("order"); - if (order == null || "".equals(order)) { - order = "ASC"; - } - %> - - - <%= JspHelper.formatNumber(activeSessions.size()) %> active Sessions
    - - - - - - - - - - - - - - - <% if (activeSessions.size() > 10) { %> - <%-- is the same as --%> - - - - - - - - - - - - - <% } // end if %> - -<% Iterator iter = activeSessions.iterator(); - while (iter.hasNext()) { - Session currentSession = (Session) iter.next(); - String currentSessionId = JspHelper.escapeXml(currentSession.getId()); - String type; - if (currentSession instanceof DeltaSession) { - if (((DeltaSession) currentSession).isPrimarySession()) { - type = "Primary"; - } else { - type = "Backup"; - } - } else if (currentSession instanceof DummyProxySession) { - type = "Proxy"; - } else { - type = "Primary"; - } -%> - - - - - - - - - - - -<% } // end while %> - -
    Session IdTypeGuessed LocaleGuessed User nameCreation TimeLast Accessed TimeUsed TimeInactive TimeTTL
    Session IdTypeGuessed LocaleGuessed User nameCreation TimeLast Accessed TimeUsed TimeInactive TimeTTL
    - <% - if ("Proxy".equals(type)) { - out.print(currentSessionId); - } else { - %> - <%= currentSessionId %> - <% - } - %> - <%= type %><%= JspHelper.guessDisplayLocaleFromSession(currentSession) %><%= JspHelper.guessDisplayUserFromSession(currentSession) %><%= JspHelper.getDisplayCreationTimeForSession(currentSession) %><%= JspHelper.getDisplayLastAccessedTimeForSession(currentSession) %><%= JspHelper.getDisplayUsedTimeForSession(currentSession) %><%= JspHelper.getDisplayInactiveTimeForSession(currentSession) %><%= JspHelper.getDisplayTTLForSession(currentSession) %>
    -

    - -

    -
    -
    - -
    -

    - -

    -
    - -<%--div style="display: none;"> -

    - Valid HTML 4.01! - Valid XHTML 1.0! - Valid XHTML 1.1! -

    - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/web.xml b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/web.xml deleted file mode 100644 index d91728e7b921c404127788896bd3e4de91d05d20..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/WEB-INF/web.xml +++ /dev/null @@ -1,207 +0,0 @@ - - - - - Tomcat Manager Application - - A scriptable management web application for the Tomcat Web Server; - Manager lets you view, load/unload/etc particular web applications. - - - - Manager - org.apache.catalina.manager.ManagerServlet - - debug - 2 - - - - HTMLManager - org.apache.catalina.manager.HTMLManagerServlet - - debug - 2 - - - - - 52428800 - 52428800 - 0 - - - - Status - org.apache.catalina.manager.StatusManagerServlet - - debug - 0 - - - - - JMXProxy - org.apache.catalina.manager.JMXProxyServlet - - - - - Manager - /text/* - - - Status - /status/* - - - JMXProxy - /jmxproxy/* - - - HTMLManager - /html/* - - - - SetCharacterEncoding - org.apache.catalina.filters.SetCharacterEncodingFilter - - encoding - UTF-8 - - - - - SetCharacterEncoding - /* - - - - CSRF - org.apache.catalina.filters.CsrfPreventionFilter - - entryPoints - /html,/html/,/html/list,/index.jsp - - - - - CSRF - HTMLManager - - - - - - - HTML Manager interface (for humans) - /html/* - - - manager-gui - - - - - Text Manager interface (for scripts) - /text/* - - - manager-script - - - - - JMX Proxy interface - /jmxproxy/* - - - manager-jmx - - - - - Status interface - /status/* - - - manager-gui - manager-script - manager-jmx - manager-status - - - - - - BASIC - Tomcat Manager Application - - - - - - The role that is required to access the HTML Manager pages - - manager-gui - - - - The role that is required to access the text Manager pages - - manager-script - - - - The role that is required to access the HTML JMX Proxy - - manager-jmx - - - - The role that is required to access to the Manager Status pages - - manager-status - - - - 401 - /WEB-INF/jsp/401.jsp - - - 403 - /WEB-INF/jsp/403.jsp - - - 404 - /WEB-INF/jsp/404.jsp - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/add.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/add.gif deleted file mode 100644 index 0774d074e5e48291bdacfacb086506e6be117e51..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/add.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/asf-logo.svg b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/asf-logo.svg deleted file mode 100644 index e24cbe52975eaea5ed9ede394d40862db1a05b34..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/asf-logo.svg +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/code.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/code.gif deleted file mode 100644 index d27307b5c09467c2e45bbfcd1ff74989eb2e7d65..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/code.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/design.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/design.gif deleted file mode 100644 index f5db0a9fc783924486176ce157924fba53df73fc..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/design.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/docs.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/docs.gif deleted file mode 100644 index d64a4a18c405e2c10ab791363f9f7acd16f3d433..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/docs.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/fix.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/fix.gif deleted file mode 100644 index d59ad642ba46c0bc1af17ebd2485722e92d6c70e..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/fix.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/tomcat.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/tomcat.gif deleted file mode 100644 index f2aa6f863e43e3924a35854c556a9c1b6d125cba..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/tomcat.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/update.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/update.gif deleted file mode 100644 index 31e22abbc7a2e24b20b978e9be9bce91d4d97728..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/update.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/void.gif b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/void.gif deleted file mode 100644 index e565824aafafe632011b281cba976baf8b3ba89a..0000000000000000000000000000000000000000 Binary files a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/images/void.gif and /dev/null differ diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/index.jsp b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/index.jsp deleted file mode 100644 index 2806b76e8e00d033a5e7aa1f30338e9608041899..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/index.jsp +++ /dev/null @@ -1,18 +0,0 @@ -<%-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---%> -<%@ page session="false" trimDirectiveWhitespaces="true" %> -<% response.sendRedirect(request.getContextPath() + "/html"); %> \ No newline at end of file diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/status.xsd b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/status.xsd deleted file mode 100644 index 5af979d839bdc09f4ca12e46b4af65530a29de45..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/status.xsd +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/xform.xsl b/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/xform.xsl deleted file mode 100644 index 06ced01694b1b0b61809a6d7ab30eee4b0366700..0000000000000000000000000000000000000000 --- a/servers/extracts/tomcat-8.5.27/apache-tomcat-8.5.27/webapps/manager/xform.xsl +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - - - Tomcat Status - - - -
    Tomcat Status
    - - - - - -
    - - - - Memory Pools
    - -
    -
    - - - - - - - - -
    JVM:free: total: max:

    -
    - - - - - - - - - - -
    Name: Type: Initial: Committed: Maximum: Used:
    -
    - - - Connector --
    - - - - -
    - - - - - - - - -
    threadInfomaxThreads: currentThreadCount: currentThreadsBusy:

    -
    - - - - - - - - - - - -
    requestInfo maxTime: processingTime: requestCount: errorCount: bytesReceived: bytesSent:

    -
    - - - - - - -
    StageTimeB SentB RecvClientVHostRequest

    -
    - - - - - - - - - - ? - - - -
    diff --git a/target/DAAExample/WEB-INF/web.xml b/target/DAAExample/WEB-INF/web.xml deleted file mode 100644 index a32d8cda80ed2600c9eabbc15ea88849b7f4b3ff..0000000000000000000000000000000000000000 --- a/target/DAAExample/WEB-INF/web.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - DAAExample - - - index.html - - - - CorsFilter - org.apache.catalina.filters.CorsFilter - - cors.allowed.origins - * - - - cors.allowed.headers - Authorization - - - cors.allowed.methods - GET, POST, DELETE, PUT - - - - CorsFilter - /rest/* - - - - - Protected Area - /rest/* - PUT - DELETE - GET - POST - - - ADMIN - USER - - - - - - Admin Area - /rest/people/* - GET - PUT - DELETE - POST - - - ADMIN - - - - - - ADMIN - - - USER - - - - BASIC - DAAExample - - \ No newline at end of file diff --git a/target/DAAExample/favicon.ico b/target/DAAExample/favicon.ico deleted file mode 100644 index 8081c7ceaf2be08bf59010158c586170d9d2d517..0000000000000000000000000000000000000000 Binary files a/target/DAAExample/favicon.ico and /dev/null differ diff --git a/target/DAAExample/index.html b/target/DAAExample/index.html deleted file mode 100644 index 76d59f3233b6c4e4f6d052f9767c900fe5cac343..0000000000000000000000000000000000000000 --- a/target/DAAExample/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - DAA Example - - - - - - - - - diff --git a/target/DAAExample/main-es2015.js b/target/DAAExample/main-es2015.js deleted file mode 100644 index bb1db318b35e342bb06955145022157e1831e6f9..0000000000000000000000000000000000000000 --- a/target/DAAExample/main-es2015.js +++ /dev/null @@ -1,1134 +0,0 @@ -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["main"],{ - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html": -/*!**************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html ***! - \**************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n\r\n\r\n"); - -/***/ }), - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/login-panel/login-panel.component.html": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/login-panel/login-panel.component.html ***! - \*********************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n\r\n
    \r\n
    \r\n

    DAA Example - Angular

    \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
    \r\n
    \r\n"); - -/***/ }), - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/main-panel/main-panel.component.html": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/main-panel/main-panel.component.html ***! - \*******************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n DAA Example\r\n \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n"); - -/***/ }), - -/***/ "./node_modules/tslib/tslib.es6.js": -/*!*****************************************!*\ - !*** ./node_modules/tslib/tslib.es6.js ***! - \*****************************************/ -/*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__extends", function() { return __extends; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__assign", function() { return __assign; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__rest", function() { return __rest; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__decorate", function() { return __decorate; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__param", function() { return __param; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__metadata", function() { return __metadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__awaiter", function() { return __awaiter; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__generator", function() { return __generator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__exportStar", function() { return __exportStar; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__values", function() { return __values; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__read", function() { return __read; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spread", function() { return __spread; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__await", function() { return __await; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function() { return __asyncGenerator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function() { return __asyncDelegator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncValues", function() { return __asyncValues; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function() { return __makeTemplateObject; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function() { return __importStar; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; }); -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ -/* global Reflect, Promise */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - } - return __assign.apply(this, arguments); -} - -function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) - t[p[i]] = s[p[i]]; - return t; -} - -function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -} - -function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); -} - -function __awaiter(thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -function __exportStar(m, exports) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} - -function __values(o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -} - -function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -} - -function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} - -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } -} - -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } -} - -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -} - -function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; - -function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result.default = mod; - return result; -} - -function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - - -/***/ }), - -/***/ "./src/$$_lazy_route_resource lazy recursive": -/*!**********************************************************!*\ - !*** ./src/$$_lazy_route_resource lazy namespace object ***! - \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -function webpackEmptyAsyncContext(req) { - // Here Promise.resolve().then() is used instead of new Promise() to prevent - // uncaught exception popping up in devtools - return Promise.resolve().then(function() { - var e = new Error("Cannot find module '" + req + "'"); - e.code = 'MODULE_NOT_FOUND'; - throw e; - }); -} -webpackEmptyAsyncContext.keys = function() { return []; }; -webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext; -module.exports = webpackEmptyAsyncContext; -webpackEmptyAsyncContext.id = "./src/$$_lazy_route_resource lazy recursive"; - -/***/ }), - -/***/ "./src/app/app-routing.module.ts": -/*!***************************************!*\ - !*** ./src/app/app-routing.module.ts ***! - \***************************************/ -/*! exports provided: AppRoutingModule */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppRoutingModule", function() { return AppRoutingModule; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* harmony import */ var _guards_unauthenticated_guard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./guards/unauthenticated.guard */ "./src/app/guards/unauthenticated.guard.ts"); -/* harmony import */ var _guards_authenticated_guard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./guards/authenticated.guard */ "./src/app/guards/authenticated.guard.ts"); -/* harmony import */ var _components_login_panel_login_panel_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/login-panel/login-panel.component */ "./src/app/components/login-panel/login-panel.component.ts"); -/* harmony import */ var _components_main_panel_main_panel_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/main-panel/main-panel.component */ "./src/app/components/main-panel/main-panel.component.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - - - - -const routes = [ - { - path: 'welcome', - pathMatch: 'full', - component: _components_login_panel_login_panel_component__WEBPACK_IMPORTED_MODULE_5__["LoginPanelComponent"], - canActivate: [_guards_unauthenticated_guard__WEBPACK_IMPORTED_MODULE_3__["UnauthenticatedGuard"]] - }, - { - path: '', - component: _components_main_panel_main_panel_component__WEBPACK_IMPORTED_MODULE_6__["MainPanelComponent"], - canActivate: [_guards_authenticated_guard__WEBPACK_IMPORTED_MODULE_4__["AuthenticatedGuard"]], - children: [ - { - path: '', - redirectTo: 'people', - pathMatch: 'full' - }, - { - path: 'people', - loadChildren: () => __webpack_require__.e(/*! import() | modules-people-people-module */ "modules-people-people-module").then(__webpack_require__.bind(null, /*! ./modules/people/people.module */ "./src/app/modules/people/people.module.ts")).then(m => m.PeopleModule) - }, - { - path: 'listPets/:person', - redirectTo: ':person', - pathMatch: 'full' - }, - { - path: ':person', - loadChildren: () => __webpack_require__.e(/*! import() | modules-pets-pets-module */ "modules-pets-pets-module").then(__webpack_require__.bind(null, /*! ./modules/pets/pets.module */ "./src/app/modules/pets/pets.module.ts")).then(m => m.PetsModule) - } - ] - }, -]; -let AppRoutingModule = class AppRoutingModule { -}; -AppRoutingModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - imports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"].forRoot(routes)], - exports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"]] - }) -], AppRoutingModule); - - - -/***/ }), - -/***/ "./src/app/app.component.scss": -/*!************************************!*\ - !*** ./src/app/app.component.scss ***! - \************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQzpcXFVzZXJzXFxOb2VsaWFcXERlc2t0b3BcXERBQVxcZGFhZXhhbXBsZVxcc3JjXFxtYWluXFxhbmd1bGFyL3NyY1xcYXBwXFxhcHAuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUEiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcclxuICogREFBIEV4YW1wbGVcclxuICpcclxuICogQ29weXJpZ2h0IChDKSAyMDE5IC0gTWlndWVsIFJlYm9pcm8tSmF0by5cclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXHJcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXHJcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxyXG4gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxyXG4gKlxyXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxyXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxyXG4gKi9cclxuXHJcbiJdfQ== */"); - -/***/ }), - -/***/ "./src/app/app.component.ts": -/*!**********************************!*\ - !*** ./src/app/app.component.ts ***! - \**********************************/ -/*! exports provided: AppComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppComponent", function() { return AppComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - -let AppComponent = class AppComponent { - constructor() { - this.title = 'angular'; - } -}; -AppComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-root', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./app.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./app.component.scss */ "./src/app/app.component.scss")).default] - }) -], AppComponent); - - - -/***/ }), - -/***/ "./src/app/app.module.ts": -/*!*******************************!*\ - !*** ./src/app/app.module.ts ***! - \*******************************/ -/*! exports provided: AppModule */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppModule", function() { return AppModule; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/platform-browser */ "./node_modules/@angular/platform-browser/fesm2015/platform-browser.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _app_routing_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app-routing.module */ "./src/app/app-routing.module.ts"); -/* harmony import */ var _app_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./app.component */ "./src/app/app.component.ts"); -/* harmony import */ var _components_login_panel_login_panel_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/login-panel/login-panel.component */ "./src/app/components/login-panel/login-panel.component.ts"); -/* harmony import */ var _components_main_panel_main_panel_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/main-panel/main-panel.component */ "./src/app/components/main-panel/main-panel.component.ts"); -/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/common/http */ "./node_modules/@angular/common/fesm2015/http.js"); -/* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/forms */ "./node_modules/@angular/forms/fesm2015/forms.js"); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @angular/common */ "./node_modules/@angular/common/fesm2015/common.js"); -/* harmony import */ var _interceptors_authentication_interceptor__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./interceptors/authentication.interceptor */ "./src/app/interceptors/authentication.interceptor.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - - - - - - - - -let AppModule = class AppModule { -}; -AppModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_2__["NgModule"])({ - declarations: [ - _app_component__WEBPACK_IMPORTED_MODULE_4__["AppComponent"], - _components_login_panel_login_panel_component__WEBPACK_IMPORTED_MODULE_5__["LoginPanelComponent"], - _components_main_panel_main_panel_component__WEBPACK_IMPORTED_MODULE_6__["MainPanelComponent"], - ], - imports: [ - _app_routing_module__WEBPACK_IMPORTED_MODULE_3__["AppRoutingModule"], - _angular_platform_browser__WEBPACK_IMPORTED_MODULE_1__["BrowserModule"], - _angular_common__WEBPACK_IMPORTED_MODULE_9__["CommonModule"], - _angular_forms__WEBPACK_IMPORTED_MODULE_8__["FormsModule"], - _angular_common_http__WEBPACK_IMPORTED_MODULE_7__["HttpClientModule"] - ], - providers: [ - { - provide: _angular_common_http__WEBPACK_IMPORTED_MODULE_7__["HTTP_INTERCEPTORS"], - useClass: _interceptors_authentication_interceptor__WEBPACK_IMPORTED_MODULE_10__["AuthenticationInterceptor"], - multi: true - }, - { - provide: _angular_common__WEBPACK_IMPORTED_MODULE_9__["LocationStrategy"], - useClass: _angular_common__WEBPACK_IMPORTED_MODULE_9__["HashLocationStrategy"] - } - ], - bootstrap: [_app_component__WEBPACK_IMPORTED_MODULE_4__["AppComponent"]] - }) -], AppModule); - - - -/***/ }), - -/***/ "./src/app/components/login-panel/login-panel.component.scss": -/*!*******************************************************************!*\ - !*** ./src/app/components/login-panel/login-panel.component.scss ***! - \*******************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n#container {\n height: 100%;\n width: 100%;\n display: -webkit-box;\n display: flex;\n -ms-flex-align: center;\n -ms-flex-pack: center;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n padding-top: 40px;\n padding-bottom: 40px;\n}\n.form-signin {\n width: 100%;\n max-width: 330px;\n padding: 15px;\n margin: 0 auto;\n}\n.form-signin .form-control {\n position: relative;\n box-sizing: border-box;\n height: auto;\n padding: 10px;\n font-size: 16px;\n}\n.form-signin .form-control:focus {\n z-index: 2;\n}\n#login {\n margin-bottom: -1px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n#password {\n margin-bottom: 10px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXGNvbXBvbmVudHNcXGxvZ2luLXBhbmVsXFxsb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9sb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQW1CQTtFQUNFLFlBQUE7RUFDQSxXQUFBO0VBRUEsb0JBQUE7RUFDQSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxxQkFBQTtFQUNBLHlCQUFBO0VBQ0EsbUJBQUE7RUFDQSx3QkFBQTtFQUNBLHVCQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtBQ0FGO0FER0E7RUFDRSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0VBQ0EsY0FBQTtBQ0FGO0FER0E7RUFDRSxrQkFBQTtFQUNBLHNCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxlQUFBO0FDQUY7QURHQTtFQUNFLFVBQUE7QUNBRjtBREdBO0VBQ0UsbUJBQUE7RUFDQSw2QkFBQTtFQUNBLDRCQUFBO0FDQUY7QURHQTtFQUNFLG1CQUFBO0VBQ0EseUJBQUE7RUFDQSwwQkFBQTtBQ0FGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9sb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuI2NvbnRhaW5lciB7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcclxuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XHJcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBwYWRkaW5nLXRvcDogNDBweDtcclxuICBwYWRkaW5nLWJvdHRvbTogNDBweDtcclxufVxyXG5cclxuLmZvcm0tc2lnbmluIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXgtd2lkdGg6IDMzMHB4O1xyXG4gIHBhZGRpbmc6IDE1cHg7XHJcbiAgbWFyZ2luOiAwIGF1dG87XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgcGFkZGluZzogMTBweDtcclxuICBmb250LXNpemU6IDE2cHg7XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sOmZvY3VzIHtcclxuICB6LWluZGV4OiAyO1xyXG59XHJcblxyXG4jbG9naW4ge1xyXG4gIG1hcmdpbi1ib3R0b206IC0xcHg7XHJcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcclxufVxyXG5cclxuI3Bhc3N3b3JkIHtcclxuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XHJcbn1cclxuIiwiLyohXG4gKiBEQUEgRXhhbXBsZVxuICpcbiAqIENvcHlyaWdodCAoQykgMjAxOSAtIE1pZ3VlbCBSZWJvaXJvLUphdG8uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cbiNjb250YWluZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XG4gIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZy10b3A6IDQwcHg7XG4gIHBhZGRpbmctYm90dG9tOiA0MHB4O1xufVxuXG4uZm9ybS1zaWduaW4ge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAzMzBweDtcbiAgcGFkZGluZzogMTVweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cblxuLmZvcm0tc2lnbmluIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuICB6LWluZGV4OiAyO1xufVxuXG4jbG9naW4ge1xuICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuI3Bhc3N3b3JkIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG59Il19 */"); - -/***/ }), - -/***/ "./src/app/components/login-panel/login-panel.component.ts": -/*!*****************************************************************!*\ - !*** ./src/app/components/login-panel/login-panel.component.ts ***! - \*****************************************************************/ -/*! exports provided: LoginPanelComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LoginPanelComponent", function() { return LoginPanelComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* harmony import */ var _services_authentication_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../services/authentication.service */ "./src/app/services/authentication.service.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - -let LoginPanelComponent = class LoginPanelComponent { - constructor(authenticationService, router) { - this.authenticationService = authenticationService; - this.router = router; - this.login = ''; - this.password = ''; - } - onLogin() { - const credentials = { - login: this.login, - password: this.password - }; - this.authenticationService.tryLogin(credentials) - .subscribe(() => this.router.navigate(['/'])); - } -}; -LoginPanelComponent.ctorParameters = () => [ - { type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_3__["AuthenticationService"] }, - { type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] } -]; -LoginPanelComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-login-panel', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./login-panel.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/login-panel/login-panel.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./login-panel.component.scss */ "./src/app/components/login-panel/login-panel.component.scss")).default] - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_3__["AuthenticationService"], - _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]]) -], LoginPanelComponent); - - - -/***/ }), - -/***/ "./src/app/components/main-panel/main-panel.component.scss": -/*!*****************************************************************!*\ - !*** ./src/app/components/main-panel/main-panel.component.scss ***! - \*****************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9tYWluLXBhbmVsL0M6XFxVc2Vyc1xcTm9lbGlhXFxEZXNrdG9wXFxEQUFcXGRhYWV4YW1wbGVcXHNyY1xcbWFpblxcYW5ndWxhci9zcmNcXGFwcFxcY29tcG9uZW50c1xcbWFpbi1wYW5lbFxcbWFpbi1wYW5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQSIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbWFpbi1wYW5lbC9tYWluLXBhbmVsLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXHJcbiAqIERBQSBFeGFtcGxlXHJcbiAqXHJcbiAqIENvcHlyaWdodCAoQykgMjAxOSAtIE1pZ3VlbCBSZWJvaXJvLUphdG8uXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxyXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxyXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcclxuICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cclxuICpcclxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcclxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cclxuICovXHJcbiJdfQ== */"); - -/***/ }), - -/***/ "./src/app/components/main-panel/main-panel.component.ts": -/*!***************************************************************!*\ - !*** ./src/app/components/main-panel/main-panel.component.ts ***! - \***************************************************************/ -/*! exports provided: MainPanelComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MainPanelComponent", function() { return MainPanelComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_cdk_layout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/cdk/layout */ "./node_modules/@angular/cdk/esm2015/layout.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* harmony import */ var _services_authentication_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../services/authentication.service */ "./src/app/services/authentication.service.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - - - -let MainPanelComponent = class MainPanelComponent { - constructor(authenticationService, breakpointObserver, router) { - this.authenticationService = authenticationService; - this.breakpointObserver = breakpointObserver; - this.router = router; - this.isHandset$ = this.breakpointObserver.observe(_angular_cdk_layout__WEBPACK_IMPORTED_MODULE_2__["Breakpoints"].Handset) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(result => result.matches)); - } - onLogout() { - this.authenticationService.logout(); - this.router.navigate(['welcome']); - } -}; -MainPanelComponent.ctorParameters = () => [ - { type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_5__["AuthenticationService"] }, - { type: _angular_cdk_layout__WEBPACK_IMPORTED_MODULE_2__["BreakpointObserver"] }, - { type: _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"] } -]; -MainPanelComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-main-panel', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./main-panel.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/main-panel/main-panel.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./main-panel.component.scss */ "./src/app/components/main-panel/main-panel.component.scss")).default] - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_5__["AuthenticationService"], - _angular_cdk_layout__WEBPACK_IMPORTED_MODULE_2__["BreakpointObserver"], - _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"]]) -], MainPanelComponent); - - - -/***/ }), - -/***/ "./src/app/guards/authenticated.guard.ts": -/*!***********************************************!*\ - !*** ./src/app/guards/authenticated.guard.ts ***! - \***********************************************/ -/*! exports provided: AuthenticatedGuard */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AuthenticatedGuard", function() { return AuthenticatedGuard; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); -/* harmony import */ var _services_authentication_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../services/authentication.service */ "./src/app/services/authentication.service.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - - -let AuthenticatedGuard = class AuthenticatedGuard { - constructor(authenticationService, router) { - this.authenticationService = authenticationService; - this.router = router; - } - canActivate(next, state) { - if (this.authenticationService.isLogged()) { - return true; - } - else { - return this.authenticationService.tryLoginWithStoredCredentials() - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(user => user !== null), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(isLogged => { - if (!isLogged) { - this.router.navigate(['welcome']); - } - })); - } - } -}; -AuthenticatedGuard.ctorParameters = () => [ - { type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_4__["AuthenticationService"] }, - { type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] } -]; -AuthenticatedGuard = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_4__["AuthenticationService"], - _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]]) -], AuthenticatedGuard); - - - -/***/ }), - -/***/ "./src/app/guards/unauthenticated.guard.ts": -/*!*************************************************!*\ - !*** ./src/app/guards/unauthenticated.guard.ts ***! - \*************************************************/ -/*! exports provided: UnauthenticatedGuard */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UnauthenticatedGuard", function() { return UnauthenticatedGuard; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); -/* harmony import */ var _services_authentication_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../services/authentication.service */ "./src/app/services/authentication.service.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - - -let UnauthenticatedGuard = class UnauthenticatedGuard { - constructor(authenticationService, router) { - this.authenticationService = authenticationService; - this.router = router; - } - canActivate(next, state) { - if (this.authenticationService.isLogged()) { - this.router.navigate([]); - return false; - } - else { - return this.authenticationService.tryLoginWithStoredCredentials() - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(user => user === null), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(isNotLogged => { - if (!isNotLogged) { - this.router.navigate([]); - } - })); - } - } -}; -UnauthenticatedGuard.ctorParameters = () => [ - { type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_4__["AuthenticationService"] }, - { type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] } -]; -UnauthenticatedGuard = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_4__["AuthenticationService"], - _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]]) -], UnauthenticatedGuard); - - - -/***/ }), - -/***/ "./src/app/interceptors/authentication.interceptor.ts": -/*!************************************************************!*\ - !*** ./src/app/interceptors/authentication.interceptor.ts ***! - \************************************************************/ -/*! exports provided: AuthenticationInterceptor */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AuthenticationInterceptor", function() { return AuthenticationInterceptor; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _services_authentication_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../services/authentication.service */ "./src/app/services/authentication.service.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - -let AuthenticationInterceptor = class AuthenticationInterceptor { - constructor(authenticationService) { - this.authenticationService = authenticationService; - } - intercept(request, next) { - const user = this.authenticationService.loggedUser; - if (user !== null) { - request = request.clone({ - setHeaders: { - Authorization: 'Basic ' + btoa(user.login + ':' + user.password) - } - }); - } - return next.handle(request); - } -}; -AuthenticationInterceptor.ctorParameters = () => [ - { type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_2__["AuthenticationService"] } -]; -AuthenticationInterceptor = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_2__["AuthenticationService"]]) -], AuthenticationInterceptor); - - - -/***/ }), - -/***/ "./src/app/services/authentication.service.ts": -/*!****************************************************!*\ - !*** ./src/app/services/authentication.service.ts ***! - \****************************************************/ -/*! exports provided: AuthenticationService */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AuthenticationService", function() { return AuthenticationService; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm2015/index.js"); -/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/common/http */ "./node_modules/@angular/common/fesm2015/http.js"); -/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../environments/environment */ "./src/environments/environment.ts"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ -var AuthenticationService_1; - - - - - - -let AuthenticationService = AuthenticationService_1 = class AuthenticationService { - constructor(http) { - this.http = http; - this._loggedUser$ = new rxjs__WEBPACK_IMPORTED_MODULE_2__["BehaviorSubject"](null); - } - static clearCredentials() { - localStorage.removeItem(AuthenticationService_1.USER_STORAGE_KEY); - } - static loadCredentials() { - const serializedCredentials = localStorage.getItem(AuthenticationService_1.USER_STORAGE_KEY); - if (serializedCredentials !== null) { - return JSON.parse(serializedCredentials); - } - else { - return null; - } - } - static storeCredentials(login, password) { - const credentials = { login, password }; - localStorage.setItem(AuthenticationService_1.USER_STORAGE_KEY, JSON.stringify(credentials)); - } - get loggedUser$() { - return this._loggedUser$.asObservable(); - } - get loggedUser() { - return this._loggedUser$.value; - } - isLogged() { - return this.loggedUser !== null; - } - logout() { - AuthenticationService_1.clearCredentials(); - this._loggedUser$.next(null); - } - tryLoginWithStoredCredentials() { - const credentials = AuthenticationService_1.loadCredentials(); - if (credentials !== null) { - return this.tryLogin(credentials); - } - else { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["of"])(null); - } - } - tryLogin(login, password) { - let userLogin; - let userPassword; - if (typeof login === 'string') { - if (password === undefined) { - throw new TypeError('password can\'t be null when login is string'); - } - userLogin = login; - userPassword = password; - } - else { - userLogin = login.login; - userPassword = login.password; - } - AuthenticationService_1.storeCredentials(userLogin, userPassword); - const headers = new _angular_common_http__WEBPACK_IMPORTED_MODULE_3__["HttpHeaders"]() - .set('Authorization', 'Basic ' + btoa(userLogin + ':' + userPassword)); - return this.http.get(`${_environments_environment__WEBPACK_IMPORTED_MODULE_4__["environment"].restApi}/users/${userLogin}`, { - headers: headers - }) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["tap"])(user => this._loggedUser$.next({ - login: userLogin, - password: userPassword - })), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["catchError"])(error => { - this._loggedUser$.next(null); - throw error; - })); - } -}; -AuthenticationService.USER_STORAGE_KEY = 'user'; -AuthenticationService.ctorParameters = () => [ - { type: _angular_common_http__WEBPACK_IMPORTED_MODULE_3__["HttpClient"] } -]; -AuthenticationService = AuthenticationService_1 = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_common_http__WEBPACK_IMPORTED_MODULE_3__["HttpClient"]]) -], AuthenticationService); - - - -/***/ }), - -/***/ "./src/environments/environment.ts": -/*!*****************************************!*\ - !*** ./src/environments/environment.ts ***! - \*****************************************/ -/*! exports provided: environment */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "environment", function() { return environment; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. -const environment = { - production: false, - restApi: 'http://localhost:9080/DAAExample/rest' -}; -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/dist/zone-error'; // Included with Angular CLI. - - -/***/ }), - -/***/ "./src/main.ts": -/*!*********************!*\ - !*** ./src/main.ts ***! - \*********************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/platform-browser-dynamic */ "./node_modules/@angular/platform-browser-dynamic/fesm2015/platform-browser-dynamic.js"); -/* harmony import */ var _app_app_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app/app.module */ "./src/app/app.module.ts"); -/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./environments/environment */ "./src/environments/environment.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - - -if (_environments_environment__WEBPACK_IMPORTED_MODULE_4__["environment"].production) { - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["enableProdMode"])(); -} -Object(_angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_2__["platformBrowserDynamic"])().bootstrapModule(_app_app_module__WEBPACK_IMPORTED_MODULE_3__["AppModule"]) - .catch(err => console.error(err)); - - -/***/ }), - -/***/ 0: -/*!***************************!*\ - !*** multi ./src/main.ts ***! - \***************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(/*! C:\Users\Noelia\Desktop\DAA\daaexample\src\main\angular\src\main.ts */"./src/main.ts"); - - -/***/ }) - -},[[0,"runtime","vendor"]]]); -//# sourceMappingURL=main-es2015.js.map \ No newline at end of file diff --git a/target/DAAExample/main-es2015.js.map b/target/DAAExample/main-es2015.js.map deleted file mode 100644 index 81bb2b8be66fdae59899f6e1ea95206b92b05249..0000000000000000000000000000000000000000 --- a/target/DAAExample/main-es2015.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["./src/app/app.component.html","./src/app/components/login-panel/login-panel.component.html","./src/app/components/main-panel/main-panel.component.html","./node_modules/tslib/tslib.es6.js","./src/$_lazy_route_resource lazy namespace object","./src/app/app-routing.module.ts","./src/app/app.component.scss","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/components/login-panel/login-panel.component.scss","./src/app/components/login-panel/login-panel.component.ts","./src/app/components/main-panel/main-panel.component.scss","./src/app/components/main-panel/main-panel.component.ts","./src/app/guards/authenticated.guard.ts","./src/app/guards/unauthenticated.guard.ts","./src/app/interceptors/authentication.interceptor.ts","./src/app/services/authentication.service.ts","./src/environments/environment.ts","./src/main.ts"],"names":[],"mappings":"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","file":"main-es2015.js","sourcesContent":["export default \"\\r\\n\\r\\n\\r\\n\"","export default \"\\r\\n\\r\\n
    \\r\\n
    \\r\\n

    DAA Example - Angular

    \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\"","export default \"\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n DAA Example\\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\"","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport {UnauthenticatedGuard} from './guards/unauthenticated.guard';\r\nimport {AuthenticatedGuard} from './guards/authenticated.guard';\r\nimport {LoginPanelComponent} from './components/login-panel/login-panel.component';\r\nimport {MainPanelComponent} from './components/main-panel/main-panel.component';\r\nimport {PetsFormComponent} from './modules/pets/components/pets-form/pets-form.component';\r\n\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'welcome',\r\n pathMatch: 'full',\r\n component: LoginPanelComponent,\r\n canActivate: [UnauthenticatedGuard]\r\n },\r\n {\r\n path: '',\r\n component: MainPanelComponent,\r\n canActivate: [AuthenticatedGuard],\r\n children: [\r\n {\r\n path: '',\r\n redirectTo: 'people',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: 'people',\r\n loadChildren: () => import('./modules/people/people.module').then(m => m.PeopleModule)\r\n },\r\n {\r\n path: 'listPets/:person',\r\n redirectTo: ':person',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: ':person',\r\n loadChildren: () => import('./modules/pets/pets.module').then(m => m.PetsModule)\r\n }\r\n ]\r\n },\r\n \r\n\r\n \r\n \r\n \r\n /*{\r\n path: 'pets/:person',\r\n pathMatch: 'full',\r\n component: PetsFormComponent,\r\n canActivate: [AuthenticatedGuard]\r\n }*/\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQzpcXFVzZXJzXFxOb2VsaWFcXERlc2t0b3BcXERBQVxcZGFhZXhhbXBsZVxcc3JjXFxtYWluXFxhbmd1bGFyL3NyY1xcYXBwXFxhcHAuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUEiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcclxuICogREFBIEV4YW1wbGVcclxuICpcclxuICogQ29weXJpZ2h0IChDKSAyMDE5IC0gTWlndWVsIFJlYm9pcm8tSmF0by5cclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXHJcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXHJcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxyXG4gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxyXG4gKlxyXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxyXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxyXG4gKi9cclxuXHJcbiJdfQ== */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent {\r\n title = 'angular';\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {BrowserModule} from '@angular/platform-browser';\r\nimport {NgModule} from '@angular/core';\r\n\r\nimport {AppRoutingModule} from './app-routing.module';\r\nimport {AppComponent} from './app.component';\r\nimport {LoginPanelComponent} from './components/login-panel/login-panel.component';\r\nimport {MainPanelComponent} from './components/main-panel/main-panel.component';\r\nimport {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {CommonModule, HashLocationStrategy, LocationStrategy} from '@angular/common';\r\nimport {AuthenticationInterceptor} from './interceptors/authentication.interceptor';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n LoginPanelComponent,\r\n MainPanelComponent,\r\n ],\r\n imports: [\r\n AppRoutingModule,\r\n BrowserModule,\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule\r\n ],\r\n providers: [\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AuthenticationInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: LocationStrategy,\r\n useClass: HashLocationStrategy\r\n }\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {\r\n}\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n#container {\\n height: 100%;\\n width: 100%;\\n display: -webkit-box;\\n display: flex;\\n -ms-flex-align: center;\\n -ms-flex-pack: center;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n padding-top: 40px;\\n padding-bottom: 40px;\\n}\\n.form-signin {\\n width: 100%;\\n max-width: 330px;\\n padding: 15px;\\n margin: 0 auto;\\n}\\n.form-signin .form-control {\\n position: relative;\\n box-sizing: border-box;\\n height: auto;\\n padding: 10px;\\n font-size: 16px;\\n}\\n.form-signin .form-control:focus {\\n z-index: 2;\\n}\\n#login {\\n margin-bottom: -1px;\\n border-bottom-right-radius: 0;\\n border-bottom-left-radius: 0;\\n}\\n#password {\\n margin-bottom: 10px;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXGNvbXBvbmVudHNcXGxvZ2luLXBhbmVsXFxsb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9sb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQW1CQTtFQUNFLFlBQUE7RUFDQSxXQUFBO0VBRUEsb0JBQUE7RUFDQSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxxQkFBQTtFQUNBLHlCQUFBO0VBQ0EsbUJBQUE7RUFDQSx3QkFBQTtFQUNBLHVCQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtBQ0FGO0FER0E7RUFDRSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0VBQ0EsY0FBQTtBQ0FGO0FER0E7RUFDRSxrQkFBQTtFQUNBLHNCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxlQUFBO0FDQUY7QURHQTtFQUNFLFVBQUE7QUNBRjtBREdBO0VBQ0UsbUJBQUE7RUFDQSw2QkFBQTtFQUNBLDRCQUFBO0FDQUY7QURHQTtFQUNFLG1CQUFBO0VBQ0EseUJBQUE7RUFDQSwwQkFBQTtBQ0FGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9sb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuI2NvbnRhaW5lciB7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcclxuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XHJcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBwYWRkaW5nLXRvcDogNDBweDtcclxuICBwYWRkaW5nLWJvdHRvbTogNDBweDtcclxufVxyXG5cclxuLmZvcm0tc2lnbmluIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXgtd2lkdGg6IDMzMHB4O1xyXG4gIHBhZGRpbmc6IDE1cHg7XHJcbiAgbWFyZ2luOiAwIGF1dG87XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgcGFkZGluZzogMTBweDtcclxuICBmb250LXNpemU6IDE2cHg7XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sOmZvY3VzIHtcclxuICB6LWluZGV4OiAyO1xyXG59XHJcblxyXG4jbG9naW4ge1xyXG4gIG1hcmdpbi1ib3R0b206IC0xcHg7XHJcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcclxufVxyXG5cclxuI3Bhc3N3b3JkIHtcclxuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XHJcbn1cclxuIiwiLyohXG4gKiBEQUEgRXhhbXBsZVxuICpcbiAqIENvcHlyaWdodCAoQykgMjAxOSAtIE1pZ3VlbCBSZWJvaXJvLUphdG8uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cbiNjb250YWluZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XG4gIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZy10b3A6IDQwcHg7XG4gIHBhZGRpbmctYm90dG9tOiA0MHB4O1xufVxuXG4uZm9ybS1zaWduaW4ge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAzMzBweDtcbiAgcGFkZGluZzogMTVweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cblxuLmZvcm0tc2lnbmluIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuICB6LWluZGV4OiAyO1xufVxuXG4jbG9naW4ge1xuICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuI3Bhc3N3b3JkIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG59Il19 */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Component} from '@angular/core';\r\nimport {Router} from '@angular/router';\r\nimport {AuthenticationService} from '../../services/authentication.service';\r\nimport {UserModel} from '../../models';\r\n\r\n@Component({\r\n selector: 'app-login-panel',\r\n templateUrl: './login-panel.component.html',\r\n styleUrls: ['./login-panel.component.scss']\r\n})\r\nexport class LoginPanelComponent {\r\n public login: string;\r\n public password: string;\r\n\r\n public constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly router: Router\r\n ) {\r\n this.login = '';\r\n this.password = '';\r\n }\r\n\r\n public onLogin(): void {\r\n const credentials: UserModel = {\r\n login: this.login,\r\n password: this.password\r\n };\r\n\r\n this.authenticationService.tryLogin(credentials)\r\n .subscribe(() => this.router.navigate(['/']));\r\n }\r\n\r\n}\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9tYWluLXBhbmVsL0M6XFxVc2Vyc1xcTm9lbGlhXFxEZXNrdG9wXFxEQUFcXGRhYWV4YW1wbGVcXHNyY1xcbWFpblxcYW5ndWxhci9zcmNcXGFwcFxcY29tcG9uZW50c1xcbWFpbi1wYW5lbFxcbWFpbi1wYW5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQSIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbWFpbi1wYW5lbC9tYWluLXBhbmVsLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXHJcbiAqIERBQSBFeGFtcGxlXHJcbiAqXHJcbiAqIENvcHlyaWdodCAoQykgMjAxOSAtIE1pZ3VlbCBSZWJvaXJvLUphdG8uXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxyXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxyXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcclxuICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cclxuICpcclxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcclxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cclxuICovXHJcbiJdfQ== */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Component} from '@angular/core';\r\nimport {Observable} from 'rxjs';\r\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\r\nimport {map} from 'rxjs/operators';\r\nimport {Router} from '@angular/router';\r\nimport {AuthenticationService} from '../../services/authentication.service';\r\n\r\n@Component({\r\n selector: 'app-main-panel',\r\n templateUrl: './main-panel.component.html',\r\n styleUrls: ['./main-panel.component.scss']\r\n})\r\nexport class MainPanelComponent {\r\n public readonly isHandset$: Observable;\r\n\r\n public constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly breakpointObserver: BreakpointObserver,\r\n private readonly router: Router\r\n ) {\r\n this.isHandset$ = this.breakpointObserver.observe(Breakpoints.Handset)\r\n .pipe(\r\n map(result => result.matches)\r\n );\r\n }\r\n\r\n public onLogout(): void {\r\n this.authenticationService.logout();\r\n this.router.navigate(['welcome']);\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router';\r\nimport {Observable} from 'rxjs';\r\nimport {map, tap} from 'rxjs/operators';\r\nimport {AuthenticationService} from '../services/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticatedGuard implements CanActivate {\r\n public constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly router: Router\r\n ) {}\r\n\r\n public canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean | Observable {\r\n if (this.authenticationService.isLogged()) {\r\n return true;\r\n } else {\r\n return this.authenticationService.tryLoginWithStoredCredentials()\r\n .pipe(\r\n map(user => user !== null),\r\n tap(isLogged => {\r\n if (!isLogged) {\r\n this.router.navigate(['welcome']);\r\n }\r\n })\r\n );\r\n }\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router';\r\nimport {map, tap} from 'rxjs/operators';\r\nimport {Observable} from 'rxjs';\r\nimport {AuthenticationService} from '../services/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UnauthenticatedGuard implements CanActivate {\r\n public constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly router: Router\r\n ) {}\r\n\r\n public canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean | Observable {\r\n if (this.authenticationService.isLogged()) {\r\n this.router.navigate([]);\r\n return false;\r\n } else {\r\n return this.authenticationService.tryLoginWithStoredCredentials()\r\n .pipe(\r\n map(user => user === null),\r\n tap(isNotLogged => {\r\n if (!isNotLogged) {\r\n this.router.navigate([]);\r\n }\r\n })\r\n );\r\n }\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\r\nimport {Observable} from 'rxjs';\r\nimport {AuthenticationService} from '../services/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationInterceptor implements HttpInterceptor {\r\n\r\n public constructor(public authenticationService: AuthenticationService) {\r\n }\r\n\r\n public intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n const user = this.authenticationService.loggedUser;\r\n\r\n if (user !== null) {\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: 'Basic ' + btoa(user.login + ':' + user.password)\r\n }\r\n });\r\n }\r\n\r\n return next.handle(request);\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {BehaviorSubject, Observable, of} from 'rxjs';\r\nimport {UserModel} from '../models';\r\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\r\nimport {environment} from '../../environments/environment';\r\nimport {catchError, tap} from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationService {\r\n private static readonly USER_STORAGE_KEY = 'user';\r\n\r\n private readonly _loggedUser$: BehaviorSubject;\r\n\r\n private static clearCredentials(): void {\r\n localStorage.removeItem(AuthenticationService.USER_STORAGE_KEY);\r\n }\r\n\r\n private static loadCredentials(): UserModel | null {\r\n const serializedCredentials = localStorage.getItem(AuthenticationService.USER_STORAGE_KEY);\r\n\r\n if (serializedCredentials !== null) {\r\n return JSON.parse(serializedCredentials);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n private static storeCredentials(login: string, password: string): void {\r\n const credentials: UserModel = {login, password};\r\n\r\n localStorage.setItem(AuthenticationService.USER_STORAGE_KEY, JSON.stringify(credentials));\r\n }\r\n\r\n public constructor(\r\n private readonly http: HttpClient\r\n ) {\r\n this._loggedUser$ = new BehaviorSubject(null);\r\n }\r\n\r\n public get loggedUser$(): Observable {\r\n return this._loggedUser$.asObservable();\r\n }\r\n\r\n public get loggedUser(): UserModel | null {\r\n return this._loggedUser$.value;\r\n }\r\n\r\n public isLogged(): boolean {\r\n return this.loggedUser !== null;\r\n }\r\n\r\n public logout(): void {\r\n AuthenticationService.clearCredentials();\r\n this._loggedUser$.next(null);\r\n }\r\n\r\n public tryLoginWithStoredCredentials(): Observable {\r\n const credentials = AuthenticationService.loadCredentials();\r\n\r\n if (credentials !== null) {\r\n return this.tryLogin(credentials);\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n\r\n public tryLogin(login: UserModel): Observable;\r\n public tryLogin(login: string, password: string): Observable;\r\n\r\n public tryLogin(login: string | UserModel, password?: string): Observable {\r\n let userLogin: string;\r\n let userPassword: string;\r\n\r\n if (typeof login === 'string') {\r\n if (password === undefined) {\r\n throw new TypeError('password can\\'t be null when login is string');\r\n }\r\n\r\n userLogin = login;\r\n userPassword = password;\r\n } else {\r\n userLogin = login.login;\r\n userPassword = login.password;\r\n }\r\n AuthenticationService.storeCredentials(userLogin, userPassword);\r\n\r\n const headers = new HttpHeaders()\r\n .set('Authorization', 'Basic ' + btoa(userLogin + ':' + userPassword));\r\n\r\n return this.http.get(`${environment.restApi}/users/${userLogin}`, {\r\n headers: headers\r\n })\r\n .pipe(\r\n tap(user => this._loggedUser$.next({\r\n login: userLogin,\r\n password: userPassword\r\n })),\r\n catchError(error => {\r\n this._loggedUser$.next(null);\r\n throw error;\r\n })\r\n );\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\n// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false,\r\n restApi: 'http://localhost:9080/DAAExample/rest'\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/target/DAAExample/main-es5.js b/target/DAAExample/main-es5.js deleted file mode 100644 index 452bd882cc1a6595b53de0e24633669522fed20a..0000000000000000000000000000000000000000 --- a/target/DAAExample/main-es5.js +++ /dev/null @@ -1,1938 +0,0 @@ -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["main"], { - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html": - /*!**************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html ***! - \**************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppAppComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n\r\n\r\n"; - /***/ - }, - - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/components/login-panel/login-panel.component.html": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/login-panel/login-panel.component.html ***! - \*********************************************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppComponentsLoginPanelLoginPanelComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n\r\n
    \r\n
    \r\n

    DAA Example - Angular

    \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
    \r\n
    \r\n"; - /***/ - }, - - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/components/main-panel/main-panel.component.html": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/main-panel/main-panel.component.html ***! - \*******************************************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppComponentsMainPanelMainPanelComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n DAA Example\r\n \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n"; - /***/ - }, - - /***/ - "./node_modules/tslib/tslib.es6.js": - /*!*****************************************!*\ - !*** ./node_modules/tslib/tslib.es6.js ***! - \*****************************************/ - - /*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */ - - /***/ - function node_modulesTslibTslibEs6Js(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__extends", function () { - return __extends; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__assign", function () { - return _assign; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__rest", function () { - return __rest; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__decorate", function () { - return __decorate; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__param", function () { - return __param; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__metadata", function () { - return __metadata; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__awaiter", function () { - return __awaiter; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__generator", function () { - return __generator; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__exportStar", function () { - return __exportStar; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__values", function () { - return __values; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__read", function () { - return __read; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__spread", function () { - return __spread; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__await", function () { - return __await; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function () { - return __asyncGenerator; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function () { - return __asyncDelegator; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__asyncValues", function () { - return __asyncValues; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function () { - return __makeTemplateObject; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__importStar", function () { - return __importStar; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__importDefault", function () { - return __importDefault; - }); - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - - /* global Reflect, Promise */ - - - var _extendStatics = function extendStatics(d, b) { - _extendStatics = Object.setPrototypeOf || { - __proto__: [] - } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) { - if (b.hasOwnProperty(p)) d[p] = b[p]; - } - }; - - return _extendStatics(d, b); - }; - - function __extends(d, b) { - _extendStatics(d, b); - - function __() { - this.constructor = d; - } - - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var _assign = function __assign() { - _assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - - for (var p in s) { - if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - } - - return t; - }; - - return _assign.apply(this, arguments); - }; - - function __rest(s, e) { - var t = {}; - - for (var p in s) { - if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; - } - - if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]]; - } - return t; - } - - function __decorate(decorators, target, key, desc) { - var c = arguments.length, - r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, - d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) { - if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - } - return c > 3 && r && Object.defineProperty(target, key, r), r; - } - - function __param(paramIndex, decorator) { - return function (target, key) { - decorator(target, key, paramIndex); - }; - } - - function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); - } - - function __awaiter(thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - - function step(result) { - result.done ? resolve(result.value) : new P(function (resolve) { - resolve(result.value); - }).then(fulfilled, rejected); - } - - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - } - - function __generator(thisArg, body) { - var _ = { - label: 0, - sent: function sent() { - if (t[0] & 1) throw t[1]; - return t[1]; - }, - trys: [], - ops: [] - }, - f, - y, - t, - g; - return g = { - next: verb(0), - "throw": verb(1), - "return": verb(2) - }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { - return this; - }), g; - - function verb(n) { - return function (v) { - return step([n, v]); - }; - } - - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - - while (_) { - try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - - switch (op[0]) { - case 0: - case 1: - t = op; - break; - - case 4: - _.label++; - return { - value: op[1], - done: false - }; - - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - - case 7: - op = _.ops.pop(); - - _.trys.pop(); - - continue; - - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _ = 0; - continue; - } - - if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { - _.label = op[1]; - break; - } - - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - - if (t && _.label < t[2]) { - _.label = t[2]; - - _.ops.push(op); - - break; - } - - if (t[2]) _.ops.pop(); - - _.trys.pop(); - - continue; - } - - op = body.call(thisArg, _); - } catch (e) { - op = [6, e]; - y = 0; - } finally { - f = t = 0; - } - } - - if (op[0] & 5) throw op[1]; - return { - value: op[0] ? op[1] : void 0, - done: true - }; - } - } - - function __exportStar(m, exports) { - for (var p in m) { - if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - } - - function __values(o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], - i = 0; - if (m) return m.call(o); - return { - next: function next() { - if (o && i >= o.length) o = void 0; - return { - value: o && o[i++], - done: !o - }; - } - }; - } - - function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), - r, - ar = [], - e; - - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { - ar.push(r.value); - } - } catch (error) { - e = { - error: error - }; - } finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } finally { - if (e) throw e.error; - } - } - - return ar; - } - - function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) { - ar = ar.concat(__read(arguments[i])); - } - - return ar; - } - - function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); - } - - function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), - i, - q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i; - - function verb(n) { - if (g[n]) i[n] = function (v) { - return new Promise(function (a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - - function fulfill(value) { - resume("next", value); - } - - function reject(value) { - resume("throw", value); - } - - function settle(f, v) { - if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); - } - } - - function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { - throw e; - }), verb("return"), i[Symbol.iterator] = function () { - return this; - }, i; - - function verb(n, f) { - i[n] = o[n] ? function (v) { - return (p = !p) ? { - value: __await(o[n](v)), - done: n === "return" - } : f ? f(v) : v; - } : f; - } - } - - function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], - i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i); - - function verb(n) { - i[n] = o[n] && function (v) { - return new Promise(function (resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function (v) { - resolve({ - value: v, - done: d - }); - }, reject); - } - } - - function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { - value: raw - }); - } else { - cooked.raw = raw; - } - - return cooked; - } - - ; - - function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) { - if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - } - result.default = mod; - return result; - } - - function __importDefault(mod) { - return mod && mod.__esModule ? mod : { - default: mod - }; - } - /***/ - - }, - - /***/ - "./src/$$_lazy_route_resource lazy recursive": - /*!**********************************************************!*\ - !*** ./src/$$_lazy_route_resource lazy namespace object ***! - \**********************************************************/ - - /*! no static exports found */ - - /***/ - function src$$_lazy_route_resourceLazyRecursive(module, exports) { - function webpackEmptyAsyncContext(req) { - // Here Promise.resolve().then() is used instead of new Promise() to prevent - // uncaught exception popping up in devtools - return Promise.resolve().then(function () { - var e = new Error("Cannot find module '" + req + "'"); - e.code = 'MODULE_NOT_FOUND'; - throw e; - }); - } - - webpackEmptyAsyncContext.keys = function () { - return []; - }; - - webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext; - module.exports = webpackEmptyAsyncContext; - webpackEmptyAsyncContext.id = "./src/$$_lazy_route_resource lazy recursive"; - /***/ - }, - - /***/ - "./src/app/app-routing.module.ts": - /*!***************************************!*\ - !*** ./src/app/app-routing.module.ts ***! - \***************************************/ - - /*! exports provided: AppRoutingModule */ - - /***/ - function srcAppAppRoutingModuleTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "AppRoutingModule", function () { - return AppRoutingModule; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* harmony import */ - - - var _guards_unauthenticated_guard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ./guards/unauthenticated.guard */ - "./src/app/guards/unauthenticated.guard.ts"); - /* harmony import */ - - - var _guards_authenticated_guard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! ./guards/authenticated.guard */ - "./src/app/guards/authenticated.guard.ts"); - /* harmony import */ - - - var _components_login_panel_login_panel_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( - /*! ./components/login-panel/login-panel.component */ - "./src/app/components/login-panel/login-panel.component.ts"); - /* harmony import */ - - - var _components_main_panel_main_panel_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( - /*! ./components/main-panel/main-panel.component */ - "./src/app/components/main-panel/main-panel.component.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var routes = [{ - path: 'welcome', - pathMatch: 'full', - component: _components_login_panel_login_panel_component__WEBPACK_IMPORTED_MODULE_5__["LoginPanelComponent"], - canActivate: [_guards_unauthenticated_guard__WEBPACK_IMPORTED_MODULE_3__["UnauthenticatedGuard"]] - }, { - path: '', - component: _components_main_panel_main_panel_component__WEBPACK_IMPORTED_MODULE_6__["MainPanelComponent"], - canActivate: [_guards_authenticated_guard__WEBPACK_IMPORTED_MODULE_4__["AuthenticatedGuard"]], - children: [{ - path: '', - redirectTo: 'people', - pathMatch: 'full' - }, { - path: 'people', - loadChildren: function loadChildren() { - return __webpack_require__.e( - /*! import() | modules-people-people-module */ - "modules-people-people-module").then(__webpack_require__.bind(null, - /*! ./modules/people/people.module */ - "./src/app/modules/people/people.module.ts")).then(function (m) { - return m.PeopleModule; - }); - } - }, { - path: 'listPets/:person', - redirectTo: ':person', - pathMatch: 'full' - }, { - path: ':person', - loadChildren: function loadChildren() { - return __webpack_require__.e( - /*! import() | modules-pets-pets-module */ - "modules-pets-pets-module").then(__webpack_require__.bind(null, - /*! ./modules/pets/pets.module */ - "./src/app/modules/pets/pets.module.ts")).then(function (m) { - return m.PetsModule; - }); - } - }] - }]; - - var AppRoutingModule = function AppRoutingModule() { - _classCallCheck(this, AppRoutingModule); - }; - - AppRoutingModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - imports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"].forRoot(routes)], - exports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"]] - })], AppRoutingModule); - /***/ - }, - - /***/ - "./src/app/app.component.scss": - /*!************************************!*\ - !*** ./src/app/app.component.scss ***! - \************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppAppComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQzpcXFVzZXJzXFxOb2VsaWFcXERlc2t0b3BcXERBQVxcZGFhZXhhbXBsZVxcc3JjXFxtYWluXFxhbmd1bGFyL3NyY1xcYXBwXFxhcHAuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUEiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcclxuICogREFBIEV4YW1wbGVcclxuICpcclxuICogQ29weXJpZ2h0IChDKSAyMDE5IC0gTWlndWVsIFJlYm9pcm8tSmF0by5cclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXHJcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXHJcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxyXG4gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxyXG4gKlxyXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxyXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxyXG4gKi9cclxuXHJcbiJdfQ== */"; - /***/ - }, - - /***/ - "./src/app/app.component.ts": - /*!**********************************!*\ - !*** ./src/app/app.component.ts ***! - \**********************************/ - - /*! exports provided: AppComponent */ - - /***/ - function srcAppAppComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "AppComponent", function () { - return AppComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var AppComponent = function AppComponent() { - _classCallCheck(this, AppComponent); - - this.title = 'angular'; - }; - - AppComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-root', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./app.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./app.component.scss */ - "./src/app/app.component.scss")).default] - })], AppComponent); - /***/ - }, - - /***/ - "./src/app/app.module.ts": - /*!*******************************!*\ - !*** ./src/app/app.module.ts ***! - \*******************************/ - - /*! exports provided: AppModule */ - - /***/ - function srcAppAppModuleTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "AppModule", function () { - return AppModule; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/platform-browser */ - "./node_modules/@angular/platform-browser/fesm2015/platform-browser.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _app_routing_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ./app-routing.module */ - "./src/app/app-routing.module.ts"); - /* harmony import */ - - - var _app_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! ./app.component */ - "./src/app/app.component.ts"); - /* harmony import */ - - - var _components_login_panel_login_panel_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( - /*! ./components/login-panel/login-panel.component */ - "./src/app/components/login-panel/login-panel.component.ts"); - /* harmony import */ - - - var _components_main_panel_main_panel_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( - /*! ./components/main-panel/main-panel.component */ - "./src/app/components/main-panel/main-panel.component.ts"); - /* harmony import */ - - - var _angular_common_http__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__( - /*! @angular/common/http */ - "./node_modules/@angular/common/fesm2015/http.js"); - /* harmony import */ - - - var _angular_forms__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__( - /*! @angular/forms */ - "./node_modules/@angular/forms/fesm2015/forms.js"); - /* harmony import */ - - - var _angular_common__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__( - /*! @angular/common */ - "./node_modules/@angular/common/fesm2015/common.js"); - /* harmony import */ - - - var _interceptors_authentication_interceptor__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__( - /*! ./interceptors/authentication.interceptor */ - "./src/app/interceptors/authentication.interceptor.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var AppModule = function AppModule() { - _classCallCheck(this, AppModule); - }; - - AppModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_2__["NgModule"])({ - declarations: [_app_component__WEBPACK_IMPORTED_MODULE_4__["AppComponent"], _components_login_panel_login_panel_component__WEBPACK_IMPORTED_MODULE_5__["LoginPanelComponent"], _components_main_panel_main_panel_component__WEBPACK_IMPORTED_MODULE_6__["MainPanelComponent"]], - imports: [_app_routing_module__WEBPACK_IMPORTED_MODULE_3__["AppRoutingModule"], _angular_platform_browser__WEBPACK_IMPORTED_MODULE_1__["BrowserModule"], _angular_common__WEBPACK_IMPORTED_MODULE_9__["CommonModule"], _angular_forms__WEBPACK_IMPORTED_MODULE_8__["FormsModule"], _angular_common_http__WEBPACK_IMPORTED_MODULE_7__["HttpClientModule"]], - providers: [{ - provide: _angular_common_http__WEBPACK_IMPORTED_MODULE_7__["HTTP_INTERCEPTORS"], - useClass: _interceptors_authentication_interceptor__WEBPACK_IMPORTED_MODULE_10__["AuthenticationInterceptor"], - multi: true - }, { - provide: _angular_common__WEBPACK_IMPORTED_MODULE_9__["LocationStrategy"], - useClass: _angular_common__WEBPACK_IMPORTED_MODULE_9__["HashLocationStrategy"] - }], - bootstrap: [_app_component__WEBPACK_IMPORTED_MODULE_4__["AppComponent"]] - })], AppModule); - /***/ - }, - - /***/ - "./src/app/components/login-panel/login-panel.component.scss": - /*!*******************************************************************!*\ - !*** ./src/app/components/login-panel/login-panel.component.scss ***! - \*******************************************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppComponentsLoginPanelLoginPanelComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n#container {\n height: 100%;\n width: 100%;\n display: -webkit-box;\n display: flex;\n -ms-flex-align: center;\n -ms-flex-pack: center;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n padding-top: 40px;\n padding-bottom: 40px;\n}\n.form-signin {\n width: 100%;\n max-width: 330px;\n padding: 15px;\n margin: 0 auto;\n}\n.form-signin .form-control {\n position: relative;\n box-sizing: border-box;\n height: auto;\n padding: 10px;\n font-size: 16px;\n}\n.form-signin .form-control:focus {\n z-index: 2;\n}\n#login {\n margin-bottom: -1px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n#password {\n margin-bottom: 10px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXGNvbXBvbmVudHNcXGxvZ2luLXBhbmVsXFxsb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9sb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQW1CQTtFQUNFLFlBQUE7RUFDQSxXQUFBO0VBRUEsb0JBQUE7RUFDQSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxxQkFBQTtFQUNBLHlCQUFBO0VBQ0EsbUJBQUE7RUFDQSx3QkFBQTtFQUNBLHVCQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtBQ0FGO0FER0E7RUFDRSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0VBQ0EsY0FBQTtBQ0FGO0FER0E7RUFDRSxrQkFBQTtFQUNBLHNCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxlQUFBO0FDQUY7QURHQTtFQUNFLFVBQUE7QUNBRjtBREdBO0VBQ0UsbUJBQUE7RUFDQSw2QkFBQTtFQUNBLDRCQUFBO0FDQUY7QURHQTtFQUNFLG1CQUFBO0VBQ0EseUJBQUE7RUFDQSwwQkFBQTtBQ0FGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9sb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuI2NvbnRhaW5lciB7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcclxuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XHJcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBwYWRkaW5nLXRvcDogNDBweDtcclxuICBwYWRkaW5nLWJvdHRvbTogNDBweDtcclxufVxyXG5cclxuLmZvcm0tc2lnbmluIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXgtd2lkdGg6IDMzMHB4O1xyXG4gIHBhZGRpbmc6IDE1cHg7XHJcbiAgbWFyZ2luOiAwIGF1dG87XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgcGFkZGluZzogMTBweDtcclxuICBmb250LXNpemU6IDE2cHg7XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sOmZvY3VzIHtcclxuICB6LWluZGV4OiAyO1xyXG59XHJcblxyXG4jbG9naW4ge1xyXG4gIG1hcmdpbi1ib3R0b206IC0xcHg7XHJcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcclxufVxyXG5cclxuI3Bhc3N3b3JkIHtcclxuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XHJcbn1cclxuIiwiLyohXG4gKiBEQUEgRXhhbXBsZVxuICpcbiAqIENvcHlyaWdodCAoQykgMjAxOSAtIE1pZ3VlbCBSZWJvaXJvLUphdG8uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cbiNjb250YWluZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XG4gIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZy10b3A6IDQwcHg7XG4gIHBhZGRpbmctYm90dG9tOiA0MHB4O1xufVxuXG4uZm9ybS1zaWduaW4ge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAzMzBweDtcbiAgcGFkZGluZzogMTVweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cblxuLmZvcm0tc2lnbmluIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuICB6LWluZGV4OiAyO1xufVxuXG4jbG9naW4ge1xuICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuI3Bhc3N3b3JkIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG59Il19 */"; - /***/ - }, - - /***/ - "./src/app/components/login-panel/login-panel.component.ts": - /*!*****************************************************************!*\ - !*** ./src/app/components/login-panel/login-panel.component.ts ***! - \*****************************************************************/ - - /*! exports provided: LoginPanelComponent */ - - /***/ - function srcAppComponentsLoginPanelLoginPanelComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "LoginPanelComponent", function () { - return LoginPanelComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* harmony import */ - - - var _services_authentication_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ../../services/authentication.service */ - "./src/app/services/authentication.service.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var LoginPanelComponent = - /*#__PURE__*/ - function () { - function LoginPanelComponent(authenticationService, router) { - _classCallCheck(this, LoginPanelComponent); - - this.authenticationService = authenticationService; - this.router = router; - this.login = ''; - this.password = ''; - } - - _createClass(LoginPanelComponent, [{ - key: "onLogin", - value: function onLogin() { - var _this = this; - - var credentials = { - login: this.login, - password: this.password - }; - this.authenticationService.tryLogin(credentials).subscribe(function () { - return _this.router.navigate(['/']); - }); - } - }]); - - return LoginPanelComponent; - }(); - - LoginPanelComponent.ctorParameters = function () { - return [{ - type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_3__["AuthenticationService"] - }, { - type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] - }]; - }; - - LoginPanelComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-login-panel', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./login-panel.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/components/login-panel/login-panel.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./login-panel.component.scss */ - "./src/app/components/login-panel/login-panel.component.scss")).default] - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_3__["AuthenticationService"], _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]])], LoginPanelComponent); - /***/ - }, - - /***/ - "./src/app/components/main-panel/main-panel.component.scss": - /*!*****************************************************************!*\ - !*** ./src/app/components/main-panel/main-panel.component.scss ***! - \*****************************************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppComponentsMainPanelMainPanelComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9tYWluLXBhbmVsL0M6XFxVc2Vyc1xcTm9lbGlhXFxEZXNrdG9wXFxEQUFcXGRhYWV4YW1wbGVcXHNyY1xcbWFpblxcYW5ndWxhci9zcmNcXGFwcFxcY29tcG9uZW50c1xcbWFpbi1wYW5lbFxcbWFpbi1wYW5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQSIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbWFpbi1wYW5lbC9tYWluLXBhbmVsLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXHJcbiAqIERBQSBFeGFtcGxlXHJcbiAqXHJcbiAqIENvcHlyaWdodCAoQykgMjAxOSAtIE1pZ3VlbCBSZWJvaXJvLUphdG8uXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxyXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxyXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcclxuICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cclxuICpcclxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcclxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cclxuICovXHJcbiJdfQ== */"; - /***/ - }, - - /***/ - "./src/app/components/main-panel/main-panel.component.ts": - /*!***************************************************************!*\ - !*** ./src/app/components/main-panel/main-panel.component.ts ***! - \***************************************************************/ - - /*! exports provided: MainPanelComponent */ - - /***/ - function srcAppComponentsMainPanelMainPanelComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "MainPanelComponent", function () { - return MainPanelComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_cdk_layout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/cdk/layout */ - "./node_modules/@angular/cdk/esm2015/layout.js"); - /* harmony import */ - - - var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! rxjs/operators */ - "./node_modules/rxjs/_esm2015/operators/index.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* harmony import */ - - - var _services_authentication_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( - /*! ../../services/authentication.service */ - "./src/app/services/authentication.service.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var MainPanelComponent = - /*#__PURE__*/ - function () { - function MainPanelComponent(authenticationService, breakpointObserver, router) { - _classCallCheck(this, MainPanelComponent); - - this.authenticationService = authenticationService; - this.breakpointObserver = breakpointObserver; - this.router = router; - this.isHandset$ = this.breakpointObserver.observe(_angular_cdk_layout__WEBPACK_IMPORTED_MODULE_2__["Breakpoints"].Handset).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (result) { - return result.matches; - })); - } - - _createClass(MainPanelComponent, [{ - key: "onLogout", - value: function onLogout() { - this.authenticationService.logout(); - this.router.navigate(['welcome']); - } - }]); - - return MainPanelComponent; - }(); - - MainPanelComponent.ctorParameters = function () { - return [{ - type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_5__["AuthenticationService"] - }, { - type: _angular_cdk_layout__WEBPACK_IMPORTED_MODULE_2__["BreakpointObserver"] - }, { - type: _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"] - }]; - }; - - MainPanelComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-main-panel', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./main-panel.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/components/main-panel/main-panel.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./main-panel.component.scss */ - "./src/app/components/main-panel/main-panel.component.scss")).default] - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_5__["AuthenticationService"], _angular_cdk_layout__WEBPACK_IMPORTED_MODULE_2__["BreakpointObserver"], _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"]])], MainPanelComponent); - /***/ - }, - - /***/ - "./src/app/guards/authenticated.guard.ts": - /*!***********************************************!*\ - !*** ./src/app/guards/authenticated.guard.ts ***! - \***********************************************/ - - /*! exports provided: AuthenticatedGuard */ - - /***/ - function srcAppGuardsAuthenticatedGuardTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "AuthenticatedGuard", function () { - return AuthenticatedGuard; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* harmony import */ - - - var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! rxjs/operators */ - "./node_modules/rxjs/_esm2015/operators/index.js"); - /* harmony import */ - - - var _services_authentication_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! ../services/authentication.service */ - "./src/app/services/authentication.service.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var AuthenticatedGuard = - /*#__PURE__*/ - function () { - function AuthenticatedGuard(authenticationService, router) { - _classCallCheck(this, AuthenticatedGuard); - - this.authenticationService = authenticationService; - this.router = router; - } - - _createClass(AuthenticatedGuard, [{ - key: "canActivate", - value: function canActivate(next, state) { - var _this2 = this; - - if (this.authenticationService.isLogged()) { - return true; - } else { - return this.authenticationService.tryLoginWithStoredCredentials().pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (user) { - return user !== null; - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(function (isLogged) { - if (!isLogged) { - _this2.router.navigate(['welcome']); - } - })); - } - } - }]); - - return AuthenticatedGuard; - }(); - - AuthenticatedGuard.ctorParameters = function () { - return [{ - type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_4__["AuthenticationService"] - }, { - type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] - }]; - }; - - AuthenticatedGuard = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_4__["AuthenticationService"], _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]])], AuthenticatedGuard); - /***/ - }, - - /***/ - "./src/app/guards/unauthenticated.guard.ts": - /*!*************************************************!*\ - !*** ./src/app/guards/unauthenticated.guard.ts ***! - \*************************************************/ - - /*! exports provided: UnauthenticatedGuard */ - - /***/ - function srcAppGuardsUnauthenticatedGuardTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "UnauthenticatedGuard", function () { - return UnauthenticatedGuard; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* harmony import */ - - - var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! rxjs/operators */ - "./node_modules/rxjs/_esm2015/operators/index.js"); - /* harmony import */ - - - var _services_authentication_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! ../services/authentication.service */ - "./src/app/services/authentication.service.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var UnauthenticatedGuard = - /*#__PURE__*/ - function () { - function UnauthenticatedGuard(authenticationService, router) { - _classCallCheck(this, UnauthenticatedGuard); - - this.authenticationService = authenticationService; - this.router = router; - } - - _createClass(UnauthenticatedGuard, [{ - key: "canActivate", - value: function canActivate(next, state) { - var _this3 = this; - - if (this.authenticationService.isLogged()) { - this.router.navigate([]); - return false; - } else { - return this.authenticationService.tryLoginWithStoredCredentials().pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (user) { - return user === null; - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(function (isNotLogged) { - if (!isNotLogged) { - _this3.router.navigate([]); - } - })); - } - } - }]); - - return UnauthenticatedGuard; - }(); - - UnauthenticatedGuard.ctorParameters = function () { - return [{ - type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_4__["AuthenticationService"] - }, { - type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] - }]; - }; - - UnauthenticatedGuard = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_4__["AuthenticationService"], _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]])], UnauthenticatedGuard); - /***/ - }, - - /***/ - "./src/app/interceptors/authentication.interceptor.ts": - /*!************************************************************!*\ - !*** ./src/app/interceptors/authentication.interceptor.ts ***! - \************************************************************/ - - /*! exports provided: AuthenticationInterceptor */ - - /***/ - function srcAppInterceptorsAuthenticationInterceptorTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "AuthenticationInterceptor", function () { - return AuthenticationInterceptor; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _services_authentication_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! ../services/authentication.service */ - "./src/app/services/authentication.service.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var AuthenticationInterceptor = - /*#__PURE__*/ - function () { - function AuthenticationInterceptor(authenticationService) { - _classCallCheck(this, AuthenticationInterceptor); - - this.authenticationService = authenticationService; - } - - _createClass(AuthenticationInterceptor, [{ - key: "intercept", - value: function intercept(request, next) { - var user = this.authenticationService.loggedUser; - - if (user !== null) { - request = request.clone({ - setHeaders: { - Authorization: 'Basic ' + btoa(user.login + ':' + user.password) - } - }); - } - - return next.handle(request); - } - }]); - - return AuthenticationInterceptor; - }(); - - AuthenticationInterceptor.ctorParameters = function () { - return [{ - type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_2__["AuthenticationService"] - }]; - }; - - AuthenticationInterceptor = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_2__["AuthenticationService"]])], AuthenticationInterceptor); - /***/ - }, - - /***/ - "./src/app/services/authentication.service.ts": - /*!****************************************************!*\ - !*** ./src/app/services/authentication.service.ts ***! - \****************************************************/ - - /*! exports provided: AuthenticationService */ - - /***/ - function srcAppServicesAuthenticationServiceTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "AuthenticationService", function () { - return AuthenticationService; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! rxjs */ - "./node_modules/rxjs/_esm2015/index.js"); - /* harmony import */ - - - var _angular_common_http__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! @angular/common/http */ - "./node_modules/@angular/common/fesm2015/http.js"); - /* harmony import */ - - - var _environments_environment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! ../../environments/environment */ - "./src/environments/environment.ts"); - /* harmony import */ - - - var rxjs_operators__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( - /*! rxjs/operators */ - "./node_modules/rxjs/_esm2015/operators/index.js"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var AuthenticationService_1; - - var AuthenticationService = AuthenticationService_1 = - /*#__PURE__*/ - function () { - function AuthenticationService(http) { - _classCallCheck(this, AuthenticationService); - - this.http = http; - this._loggedUser$ = new rxjs__WEBPACK_IMPORTED_MODULE_2__["BehaviorSubject"](null); - } - - _createClass(AuthenticationService, [{ - key: "isLogged", - value: function isLogged() { - return this.loggedUser !== null; - } - }, { - key: "logout", - value: function logout() { - AuthenticationService_1.clearCredentials(); - - this._loggedUser$.next(null); - } - }, { - key: "tryLoginWithStoredCredentials", - value: function tryLoginWithStoredCredentials() { - var credentials = AuthenticationService_1.loadCredentials(); - - if (credentials !== null) { - return this.tryLogin(credentials); - } else { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["of"])(null); - } - } - }, { - key: "tryLogin", - value: function tryLogin(login, password) { - var _this4 = this; - - var userLogin; - var userPassword; - - if (typeof login === 'string') { - if (password === undefined) { - throw new TypeError('password can\'t be null when login is string'); - } - - userLogin = login; - userPassword = password; - } else { - userLogin = login.login; - userPassword = login.password; - } - - AuthenticationService_1.storeCredentials(userLogin, userPassword); - var headers = new _angular_common_http__WEBPACK_IMPORTED_MODULE_3__["HttpHeaders"]().set('Authorization', 'Basic ' + btoa(userLogin + ':' + userPassword)); - return this.http.get("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_4__["environment"].restApi, "/users/").concat(userLogin), { - headers: headers - }).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["tap"])(function (user) { - return _this4._loggedUser$.next({ - login: userLogin, - password: userPassword - }); - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["catchError"])(function (error) { - _this4._loggedUser$.next(null); - - throw error; - })); - } - }, { - key: "loggedUser$", - get: function get() { - return this._loggedUser$.asObservable(); - } - }, { - key: "loggedUser", - get: function get() { - return this._loggedUser$.value; - } - }], [{ - key: "clearCredentials", - value: function clearCredentials() { - localStorage.removeItem(AuthenticationService_1.USER_STORAGE_KEY); - } - }, { - key: "loadCredentials", - value: function loadCredentials() { - var serializedCredentials = localStorage.getItem(AuthenticationService_1.USER_STORAGE_KEY); - - if (serializedCredentials !== null) { - return JSON.parse(serializedCredentials); - } else { - return null; - } - } - }, { - key: "storeCredentials", - value: function storeCredentials(login, password) { - var credentials = { - login: login, - password: password - }; - localStorage.setItem(AuthenticationService_1.USER_STORAGE_KEY, JSON.stringify(credentials)); - } - }]); - - return AuthenticationService; - }(); - - AuthenticationService.USER_STORAGE_KEY = 'user'; - - AuthenticationService.ctorParameters = function () { - return [{ - type: _angular_common_http__WEBPACK_IMPORTED_MODULE_3__["HttpClient"] - }]; - }; - - AuthenticationService = AuthenticationService_1 = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_common_http__WEBPACK_IMPORTED_MODULE_3__["HttpClient"]])], AuthenticationService); - /***/ - }, - - /***/ - "./src/environments/environment.ts": - /*!*****************************************!*\ - !*** ./src/environments/environment.ts ***! - \*****************************************/ - - /*! exports provided: environment */ - - /***/ - function srcEnvironmentsEnvironmentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "environment", function () { - return environment; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - // This file can be replaced during build by using the `fileReplacements` array. - // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. - // The list of file replacements can be found in `angular.json`. - - - var environment = { - production: false, - restApi: 'http://localhost:9080/DAAExample/rest' - }; - /* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ - // import 'zone.js/dist/zone-error'; // Included with Angular CLI. - - /***/ - }, - - /***/ - "./src/main.ts": - /*!*********************!*\ - !*** ./src/main.ts ***! - \*********************/ - - /*! no exports provided */ - - /***/ - function srcMainTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/platform-browser-dynamic */ - "./node_modules/@angular/platform-browser-dynamic/fesm2015/platform-browser-dynamic.js"); - /* harmony import */ - - - var _app_app_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ./app/app.module */ - "./src/app/app.module.ts"); - /* harmony import */ - - - var _environments_environment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! ./environments/environment */ - "./src/environments/environment.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - if (_environments_environment__WEBPACK_IMPORTED_MODULE_4__["environment"].production) { - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["enableProdMode"])(); - } - - Object(_angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_2__["platformBrowserDynamic"])().bootstrapModule(_app_app_module__WEBPACK_IMPORTED_MODULE_3__["AppModule"]).catch(function (err) { - return console.error(err); - }); - /***/ - }, - - /***/ - 0: - /*!***************************!*\ - !*** multi ./src/main.ts ***! - \***************************/ - - /*! no static exports found */ - - /***/ - function _(module, exports, __webpack_require__) { - module.exports = __webpack_require__( - /*! C:\Users\Noelia\Desktop\DAA\daaexample\src\main\angular\src\main.ts */ - "./src/main.ts"); - /***/ - } -}, [[0, "runtime", "vendor"]]]); -//# sourceMappingURL=main-es5.js.map \ No newline at end of file diff --git a/target/DAAExample/main-es5.js.map b/target/DAAExample/main-es5.js.map deleted file mode 100644 index 169aa30574098075b70202e311151e22e865a6ab..0000000000000000000000000000000000000000 --- a/target/DAAExample/main-es5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["src/app/app.component.html","src/app/components/login-panel/login-panel.component.html","src/app/components/main-panel/main-panel.component.html","node_modules/tslib/tslib.es6.js","src/$_lazy_route_resource lazy namespace object","src/app/app-routing.module.ts","src/app/app.component.scss","src/app/app.component.ts","src/app/app.module.ts","src/app/components/login-panel/login-panel.component.scss","src/app/components/login-panel/login-panel.component.ts","src/app/components/main-panel/main-panel.component.scss","src/app/components/main-panel/main-panel.component.ts","src/app/guards/authenticated.guard.ts","src/app/guards/unauthenticated.guard.ts","src/app/interceptors/authentication.interceptor.ts","src/app/services/authentication.service.ts","src/environments/environment.ts","src/main.ts"],"names":[],"mappings":"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","sourcesContent":["export default \"\\r\\n\\r\\n\\r\\n\"","export default \"\\r\\n\\r\\n
    \\r\\n
    \\r\\n

    DAA Example - Angular

    \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\"","export default \"\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n DAA Example\\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\"","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport {UnauthenticatedGuard} from './guards/unauthenticated.guard';\r\nimport {AuthenticatedGuard} from './guards/authenticated.guard';\r\nimport {LoginPanelComponent} from './components/login-panel/login-panel.component';\r\nimport {MainPanelComponent} from './components/main-panel/main-panel.component';\r\nimport {PetsFormComponent} from './modules/pets/components/pets-form/pets-form.component';\r\n\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'welcome',\r\n pathMatch: 'full',\r\n component: LoginPanelComponent,\r\n canActivate: [UnauthenticatedGuard]\r\n },\r\n {\r\n path: '',\r\n component: MainPanelComponent,\r\n canActivate: [AuthenticatedGuard],\r\n children: [\r\n {\r\n path: '',\r\n redirectTo: 'people',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: 'people',\r\n loadChildren: () => import('./modules/people/people.module').then(m => m.PeopleModule)\r\n },\r\n {\r\n path: 'listPets/:person',\r\n redirectTo: ':person',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: ':person',\r\n loadChildren: () => import('./modules/pets/pets.module').then(m => m.PetsModule)\r\n }\r\n ]\r\n },\r\n \r\n\r\n \r\n \r\n \r\n /*{\r\n path: 'pets/:person',\r\n pathMatch: 'full',\r\n component: PetsFormComponent,\r\n canActivate: [AuthenticatedGuard]\r\n }*/\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQzpcXFVzZXJzXFxOb2VsaWFcXERlc2t0b3BcXERBQVxcZGFhZXhhbXBsZVxcc3JjXFxtYWluXFxhbmd1bGFyL3NyY1xcYXBwXFxhcHAuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUEiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcclxuICogREFBIEV4YW1wbGVcclxuICpcclxuICogQ29weXJpZ2h0IChDKSAyMDE5IC0gTWlndWVsIFJlYm9pcm8tSmF0by5cclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXHJcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXHJcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxyXG4gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxyXG4gKlxyXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxyXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxyXG4gKi9cclxuXHJcbiJdfQ== */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent {\r\n title = 'angular';\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {BrowserModule} from '@angular/platform-browser';\r\nimport {NgModule} from '@angular/core';\r\n\r\nimport {AppRoutingModule} from './app-routing.module';\r\nimport {AppComponent} from './app.component';\r\nimport {LoginPanelComponent} from './components/login-panel/login-panel.component';\r\nimport {MainPanelComponent} from './components/main-panel/main-panel.component';\r\nimport {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {CommonModule, HashLocationStrategy, LocationStrategy} from '@angular/common';\r\nimport {AuthenticationInterceptor} from './interceptors/authentication.interceptor';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n LoginPanelComponent,\r\n MainPanelComponent,\r\n ],\r\n imports: [\r\n AppRoutingModule,\r\n BrowserModule,\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule\r\n ],\r\n providers: [\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AuthenticationInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: LocationStrategy,\r\n useClass: HashLocationStrategy\r\n }\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {\r\n}\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n#container {\\n height: 100%;\\n width: 100%;\\n display: -webkit-box;\\n display: flex;\\n -ms-flex-align: center;\\n -ms-flex-pack: center;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n padding-top: 40px;\\n padding-bottom: 40px;\\n}\\n.form-signin {\\n width: 100%;\\n max-width: 330px;\\n padding: 15px;\\n margin: 0 auto;\\n}\\n.form-signin .form-control {\\n position: relative;\\n box-sizing: border-box;\\n height: auto;\\n padding: 10px;\\n font-size: 16px;\\n}\\n.form-signin .form-control:focus {\\n z-index: 2;\\n}\\n#login {\\n margin-bottom: -1px;\\n border-bottom-right-radius: 0;\\n border-bottom-left-radius: 0;\\n}\\n#password {\\n margin-bottom: 10px;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXGNvbXBvbmVudHNcXGxvZ2luLXBhbmVsXFxsb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9sb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQW1CQTtFQUNFLFlBQUE7RUFDQSxXQUFBO0VBRUEsb0JBQUE7RUFDQSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxxQkFBQTtFQUNBLHlCQUFBO0VBQ0EsbUJBQUE7RUFDQSx3QkFBQTtFQUNBLHVCQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtBQ0FGO0FER0E7RUFDRSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0VBQ0EsY0FBQTtBQ0FGO0FER0E7RUFDRSxrQkFBQTtFQUNBLHNCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxlQUFBO0FDQUY7QURHQTtFQUNFLFVBQUE7QUNBRjtBREdBO0VBQ0UsbUJBQUE7RUFDQSw2QkFBQTtFQUNBLDRCQUFBO0FDQUY7QURHQTtFQUNFLG1CQUFBO0VBQ0EseUJBQUE7RUFDQSwwQkFBQTtBQ0FGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9sb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuI2NvbnRhaW5lciB7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcclxuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XHJcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBwYWRkaW5nLXRvcDogNDBweDtcclxuICBwYWRkaW5nLWJvdHRvbTogNDBweDtcclxufVxyXG5cclxuLmZvcm0tc2lnbmluIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXgtd2lkdGg6IDMzMHB4O1xyXG4gIHBhZGRpbmc6IDE1cHg7XHJcbiAgbWFyZ2luOiAwIGF1dG87XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgcGFkZGluZzogMTBweDtcclxuICBmb250LXNpemU6IDE2cHg7XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sOmZvY3VzIHtcclxuICB6LWluZGV4OiAyO1xyXG59XHJcblxyXG4jbG9naW4ge1xyXG4gIG1hcmdpbi1ib3R0b206IC0xcHg7XHJcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcclxufVxyXG5cclxuI3Bhc3N3b3JkIHtcclxuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XHJcbn1cclxuIiwiLyohXG4gKiBEQUEgRXhhbXBsZVxuICpcbiAqIENvcHlyaWdodCAoQykgMjAxOSAtIE1pZ3VlbCBSZWJvaXJvLUphdG8uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cbiNjb250YWluZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XG4gIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZy10b3A6IDQwcHg7XG4gIHBhZGRpbmctYm90dG9tOiA0MHB4O1xufVxuXG4uZm9ybS1zaWduaW4ge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAzMzBweDtcbiAgcGFkZGluZzogMTVweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cblxuLmZvcm0tc2lnbmluIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuICB6LWluZGV4OiAyO1xufVxuXG4jbG9naW4ge1xuICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuI3Bhc3N3b3JkIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG59Il19 */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Component} from '@angular/core';\r\nimport {Router} from '@angular/router';\r\nimport {AuthenticationService} from '../../services/authentication.service';\r\nimport {UserModel} from '../../models';\r\n\r\n@Component({\r\n selector: 'app-login-panel',\r\n templateUrl: './login-panel.component.html',\r\n styleUrls: ['./login-panel.component.scss']\r\n})\r\nexport class LoginPanelComponent {\r\n public login: string;\r\n public password: string;\r\n\r\n public constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly router: Router\r\n ) {\r\n this.login = '';\r\n this.password = '';\r\n }\r\n\r\n public onLogin(): void {\r\n const credentials: UserModel = {\r\n login: this.login,\r\n password: this.password\r\n };\r\n\r\n this.authenticationService.tryLogin(credentials)\r\n .subscribe(() => this.router.navigate(['/']));\r\n }\r\n\r\n}\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9tYWluLXBhbmVsL0M6XFxVc2Vyc1xcTm9lbGlhXFxEZXNrdG9wXFxEQUFcXGRhYWV4YW1wbGVcXHNyY1xcbWFpblxcYW5ndWxhci9zcmNcXGFwcFxcY29tcG9uZW50c1xcbWFpbi1wYW5lbFxcbWFpbi1wYW5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQSIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbWFpbi1wYW5lbC9tYWluLXBhbmVsLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXHJcbiAqIERBQSBFeGFtcGxlXHJcbiAqXHJcbiAqIENvcHlyaWdodCAoQykgMjAxOSAtIE1pZ3VlbCBSZWJvaXJvLUphdG8uXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxyXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxyXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcclxuICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cclxuICpcclxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcclxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cclxuICovXHJcbiJdfQ== */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Component} from '@angular/core';\r\nimport {Observable} from 'rxjs';\r\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\r\nimport {map} from 'rxjs/operators';\r\nimport {Router} from '@angular/router';\r\nimport {AuthenticationService} from '../../services/authentication.service';\r\n\r\n@Component({\r\n selector: 'app-main-panel',\r\n templateUrl: './main-panel.component.html',\r\n styleUrls: ['./main-panel.component.scss']\r\n})\r\nexport class MainPanelComponent {\r\n public readonly isHandset$: Observable;\r\n\r\n public constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly breakpointObserver: BreakpointObserver,\r\n private readonly router: Router\r\n ) {\r\n this.isHandset$ = this.breakpointObserver.observe(Breakpoints.Handset)\r\n .pipe(\r\n map(result => result.matches)\r\n );\r\n }\r\n\r\n public onLogout(): void {\r\n this.authenticationService.logout();\r\n this.router.navigate(['welcome']);\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router';\r\nimport {Observable} from 'rxjs';\r\nimport {map, tap} from 'rxjs/operators';\r\nimport {AuthenticationService} from '../services/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticatedGuard implements CanActivate {\r\n public constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly router: Router\r\n ) {}\r\n\r\n public canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean | Observable {\r\n if (this.authenticationService.isLogged()) {\r\n return true;\r\n } else {\r\n return this.authenticationService.tryLoginWithStoredCredentials()\r\n .pipe(\r\n map(user => user !== null),\r\n tap(isLogged => {\r\n if (!isLogged) {\r\n this.router.navigate(['welcome']);\r\n }\r\n })\r\n );\r\n }\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router';\r\nimport {map, tap} from 'rxjs/operators';\r\nimport {Observable} from 'rxjs';\r\nimport {AuthenticationService} from '../services/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UnauthenticatedGuard implements CanActivate {\r\n public constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly router: Router\r\n ) {}\r\n\r\n public canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean | Observable {\r\n if (this.authenticationService.isLogged()) {\r\n this.router.navigate([]);\r\n return false;\r\n } else {\r\n return this.authenticationService.tryLoginWithStoredCredentials()\r\n .pipe(\r\n map(user => user === null),\r\n tap(isNotLogged => {\r\n if (!isNotLogged) {\r\n this.router.navigate([]);\r\n }\r\n })\r\n );\r\n }\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\r\nimport {Observable} from 'rxjs';\r\nimport {AuthenticationService} from '../services/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationInterceptor implements HttpInterceptor {\r\n\r\n public constructor(public authenticationService: AuthenticationService) {\r\n }\r\n\r\n public intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n const user = this.authenticationService.loggedUser;\r\n\r\n if (user !== null) {\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: 'Basic ' + btoa(user.login + ':' + user.password)\r\n }\r\n });\r\n }\r\n\r\n return next.handle(request);\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {BehaviorSubject, Observable, of} from 'rxjs';\r\nimport {UserModel} from '../models';\r\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\r\nimport {environment} from '../../environments/environment';\r\nimport {catchError, tap} from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationService {\r\n private static readonly USER_STORAGE_KEY = 'user';\r\n\r\n private readonly _loggedUser$: BehaviorSubject;\r\n\r\n private static clearCredentials(): void {\r\n localStorage.removeItem(AuthenticationService.USER_STORAGE_KEY);\r\n }\r\n\r\n private static loadCredentials(): UserModel | null {\r\n const serializedCredentials = localStorage.getItem(AuthenticationService.USER_STORAGE_KEY);\r\n\r\n if (serializedCredentials !== null) {\r\n return JSON.parse(serializedCredentials);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n private static storeCredentials(login: string, password: string): void {\r\n const credentials: UserModel = {login, password};\r\n\r\n localStorage.setItem(AuthenticationService.USER_STORAGE_KEY, JSON.stringify(credentials));\r\n }\r\n\r\n public constructor(\r\n private readonly http: HttpClient\r\n ) {\r\n this._loggedUser$ = new BehaviorSubject(null);\r\n }\r\n\r\n public get loggedUser$(): Observable {\r\n return this._loggedUser$.asObservable();\r\n }\r\n\r\n public get loggedUser(): UserModel | null {\r\n return this._loggedUser$.value;\r\n }\r\n\r\n public isLogged(): boolean {\r\n return this.loggedUser !== null;\r\n }\r\n\r\n public logout(): void {\r\n AuthenticationService.clearCredentials();\r\n this._loggedUser$.next(null);\r\n }\r\n\r\n public tryLoginWithStoredCredentials(): Observable {\r\n const credentials = AuthenticationService.loadCredentials();\r\n\r\n if (credentials !== null) {\r\n return this.tryLogin(credentials);\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n\r\n public tryLogin(login: UserModel): Observable;\r\n public tryLogin(login: string, password: string): Observable;\r\n\r\n public tryLogin(login: string | UserModel, password?: string): Observable {\r\n let userLogin: string;\r\n let userPassword: string;\r\n\r\n if (typeof login === 'string') {\r\n if (password === undefined) {\r\n throw new TypeError('password can\\'t be null when login is string');\r\n }\r\n\r\n userLogin = login;\r\n userPassword = password;\r\n } else {\r\n userLogin = login.login;\r\n userPassword = login.password;\r\n }\r\n AuthenticationService.storeCredentials(userLogin, userPassword);\r\n\r\n const headers = new HttpHeaders()\r\n .set('Authorization', 'Basic ' + btoa(userLogin + ':' + userPassword));\r\n\r\n return this.http.get(`${environment.restApi}/users/${userLogin}`, {\r\n headers: headers\r\n })\r\n .pipe(\r\n tap(user => this._loggedUser$.next({\r\n login: userLogin,\r\n password: userPassword\r\n })),\r\n catchError(error => {\r\n this._loggedUser$.next(null);\r\n throw error;\r\n })\r\n );\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\n// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false,\r\n restApi: 'http://localhost:9080/DAAExample/rest'\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"sourceRoot":"webpack:///","file":"main-es5.js"} \ No newline at end of file diff --git a/target/DAAExample/modules-people-people-module-es2015.js b/target/DAAExample/modules-people-people-module-es2015.js deleted file mode 100644 index 3bc0ffe86402d295e558d1e0f50d6a36d9f7dfab..0000000000000000000000000000000000000000 --- a/target/DAAExample/modules-people-people-module-es2015.js +++ /dev/null @@ -1,571 +0,0 @@ -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["modules-people-people-module"],{ - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-form/people-form.component.html": -/*!************************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-form/people-form.component.html ***! - \************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n\r\n
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n"); - -/***/ }), - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-list/people-list.component.html": -/*!************************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-list/people-list.component.html ***! - \************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    NombreApellido 
    {{person.name}}{{person.surname}}\r\n \r\n \r\n \r\n
    \r\n"); - -/***/ }), - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-main/people-main.component.html": -/*!************************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-main/people-main.component.html ***! - \************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n\r\n

    Personas

    \r\n\r\n\r\n"); - -/***/ }), - -/***/ "./src/app/modules/people/components/people-form/people-form.component.scss": -/*!**********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-form/people-form.component.scss ***! - \**********************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtZm9ybS9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLWZvcm1cXHBlb3BsZS1mb3JtLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtZm9ybS9wZW9wbGUtZm9ybS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */"); - -/***/ }), - -/***/ "./src/app/modules/people/components/people-form/people-form.component.ts": -/*!********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-form/people-form.component.ts ***! - \********************************************************************************/ -/*! exports provided: PeopleFormComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PeopleFormComponent", function() { return PeopleFormComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _models_person_model__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../models/person.model */ "./src/app/modules/people/models/person.model.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - -let PeopleFormComponent = class PeopleFormComponent { - constructor() { - this.modify = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - this.clean = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - } - set person(person) { - this.activePerson = person; - this.name = person.name; - this.surname = person.surname; - } - get person() { - return this.activePerson; - } - onModify() { - this.modify.emit({ - id: this.person.id, - name: this.name, - surname: this.surname - }); - } - onClean() { - this.clean.emit(); - } -}; -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]) -], PeopleFormComponent.prototype, "modify", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]) -], PeopleFormComponent.prototype, "clean", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _models_person_model__WEBPACK_IMPORTED_MODULE_2__["PersonModel"]), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_models_person_model__WEBPACK_IMPORTED_MODULE_2__["PersonModel"]]) -], PeopleFormComponent.prototype, "person", null); -PeopleFormComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-people-form', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./people-form.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-form/people-form.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./people-form.component.scss */ "./src/app/modules/people/components/people-form/people-form.component.scss")).default] - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", []) -], PeopleFormComponent); - - - -/***/ }), - -/***/ "./src/app/modules/people/components/people-list/people-list.component.scss": -/*!**********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-list/people-list.component.scss ***! - \**********************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbGlzdC9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLWxpc3RcXHBlb3BsZS1saXN0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbGlzdC9wZW9wbGUtbGlzdC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */"); - -/***/ }), - -/***/ "./src/app/modules/people/components/people-list/people-list.component.ts": -/*!********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-list/people-list.component.ts ***! - \********************************************************************************/ -/*! exports provided: PeopleListComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PeopleListComponent", function() { return PeopleListComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - -let PeopleListComponent = class PeopleListComponent { - constructor(router) { - this.router = router; - this.people = []; - this.edit = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - this.delete = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - } - onEdit(person) { - this.edit.emit(person); - } - onDelete(person) { - this.delete.emit(person); - } - pets(person) { - this.router.navigate(['//listPets', person.id]); - } -}; -PeopleListComponent.ctorParameters = () => [ - { type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] } -]; -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", Array) -], PeopleListComponent.prototype, "people", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]) -], PeopleListComponent.prototype, "edit", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]) -], PeopleListComponent.prototype, "delete", void 0); -PeopleListComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-people-list', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./people-list.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-list/people-list.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./people-list.component.scss */ "./src/app/modules/people/components/people-list/people-list.component.scss")).default] - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]]) -], PeopleListComponent); - - - -/***/ }), - -/***/ "./src/app/modules/people/components/people-main/people-main.component.scss": -/*!**********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-main/people-main.component.scss ***! - \**********************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbWFpbi9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLW1haW5cXHBlb3BsZS1tYWluLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbWFpbi9wZW9wbGUtbWFpbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */"); - -/***/ }), - -/***/ "./src/app/modules/people/components/people-main/people-main.component.ts": -/*!********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-main/people-main.component.ts ***! - \********************************************************************************/ -/*! exports provided: PeopleMainComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PeopleMainComponent", function() { return PeopleMainComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _services_people_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/people.service */ "./src/app/modules/people/services/people.service.ts"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - -let PeopleMainComponent = class PeopleMainComponent { - constructor(peopleService) { - this.peopleService = peopleService; - this.people = []; - this.clearActivePerson(); - } - ngOnInit() { - this.peopleService.list() - .subscribe(people => this.people = people); - } - onEdit(person) { - this.activePerson = person; - } - onDelete(person) { - if (confirm(`¿Estás seguro de que deseas eliminar a ${person.name} ${person.surname}?`)) { - this.peopleService.delete(person) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(() => this.peopleService.list())) - .subscribe(people => this.people = people); - } - } - onCleanForm() { - this.clearActivePerson(); - } - onModifyForm(person) { - if (person.id === undefined) { - this.peopleService.create(person) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(() => this.peopleService.list())) - .subscribe(people => { - this.people = people; - this.clearActivePerson(); - }); - } - else { - this.peopleService.modify(person) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(() => this.peopleService.list())) - .subscribe(people => { - this.people = people; - this.clearActivePerson(); - }); - } - } - clearActivePerson() { - this.activePerson = { id: undefined, name: '', surname: '' }; - } -}; -PeopleMainComponent.ctorParameters = () => [ - { type: _services_people_service__WEBPACK_IMPORTED_MODULE_2__["PeopleService"] } -]; -PeopleMainComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-people-main', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./people-main.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-main/people-main.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./people-main.component.scss */ "./src/app/modules/people/components/people-main/people-main.component.scss")).default] - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_people_service__WEBPACK_IMPORTED_MODULE_2__["PeopleService"]]) -], PeopleMainComponent); - - - -/***/ }), - -/***/ "./src/app/modules/people/models/person.model.ts": -/*!*******************************************************!*\ - !*** ./src/app/modules/people/models/person.model.ts ***! - \*******************************************************/ -/*! exports provided: PersonModel */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PersonModel", function() { return PersonModel; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - -class PersonModel { -} - - -/***/ }), - -/***/ "./src/app/modules/people/people-routing.module.ts": -/*!*********************************************************!*\ - !*** ./src/app/modules/people/people-routing.module.ts ***! - \*********************************************************/ -/*! exports provided: PeopleRoutingModule */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PeopleRoutingModule", function() { return PeopleRoutingModule; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* harmony import */ var _components_people_main_people_main_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/people-main/people-main.component */ "./src/app/modules/people/components/people-main/people-main.component.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - -const routes = [ - { - path: '', - component: _components_people_main_people_main_component__WEBPACK_IMPORTED_MODULE_3__["PeopleMainComponent"] - } -]; -let PeopleRoutingModule = class PeopleRoutingModule { -}; -PeopleRoutingModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - imports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"].forChild(routes)], - exports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"]] - }) -], PeopleRoutingModule); - - - -/***/ }), - -/***/ "./src/app/modules/people/people.module.ts": -/*!*************************************************!*\ - !*** ./src/app/modules/people/people.module.ts ***! - \*************************************************/ -/*! exports provided: PeopleModule */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PeopleModule", function() { return PeopleModule; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/common */ "./node_modules/@angular/common/fesm2015/common.js"); -/* harmony import */ var _people_routing_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./people-routing.module */ "./src/app/modules/people/people-routing.module.ts"); -/* harmony import */ var _components_people_list_people_list_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/people-list/people-list.component */ "./src/app/modules/people/components/people-list/people-list.component.ts"); -/* harmony import */ var _components_people_form_people_form_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/people-form/people-form.component */ "./src/app/modules/people/components/people-form/people-form.component.ts"); -/* harmony import */ var _components_people_main_people_main_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/people-main/people-main.component */ "./src/app/modules/people/components/people-main/people-main.component.ts"); -/* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/forms */ "./node_modules/@angular/forms/fesm2015/forms.js"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - - - - - -let PeopleModule = class PeopleModule { -}; -PeopleModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - declarations: [ - _components_people_form_people_form_component__WEBPACK_IMPORTED_MODULE_5__["PeopleFormComponent"], - _components_people_list_people_list_component__WEBPACK_IMPORTED_MODULE_4__["PeopleListComponent"], - _components_people_main_people_main_component__WEBPACK_IMPORTED_MODULE_6__["PeopleMainComponent"] - ], - imports: [ - _angular_common__WEBPACK_IMPORTED_MODULE_2__["CommonModule"], - _angular_forms__WEBPACK_IMPORTED_MODULE_7__["FormsModule"], - _people_routing_module__WEBPACK_IMPORTED_MODULE_3__["PeopleRoutingModule"] - ] - }) -], PeopleModule); - - - -/***/ }), - -/***/ "./src/app/modules/people/services/people.service.ts": -/*!***********************************************************!*\ - !*** ./src/app/modules/people/services/people.service.ts ***! - \***********************************************************/ -/*! exports provided: PeopleService */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PeopleService", function() { return PeopleService; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/common/http */ "./node_modules/@angular/common/fesm2015/http.js"); -/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../environments/environment */ "./src/environments/environment.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - -let PeopleService = class PeopleService { - constructor(http) { - this.http = http; - } - list() { - return this.http.get(`${_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi}/people`); - } - create(person) { - const data = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpParams"]() - .set('name', person.name) - .set('surname', person.surname); - return this.http.post(`${_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi}/people`, data); - } - modify(person) { - const data = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpParams"]() - .set('name', person.name) - .set('surname', person.surname); - return this.http.put(`${_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi}/people/${person.id}`, data); - } - delete(person) { - return this.http.delete(`${_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi}/people/${person.id}`); - } -}; -PeopleService.ctorParameters = () => [ - { type: _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"] } -]; -PeopleService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"]]) -], PeopleService); - - - -/***/ }) - -}]); -//# sourceMappingURL=modules-people-people-module-es2015.js.map \ No newline at end of file diff --git a/target/DAAExample/modules-people-people-module-es2015.js.map b/target/DAAExample/modules-people-people-module-es2015.js.map deleted file mode 100644 index 1fc06c23bf688f1c77443ef20ab9a1c7a2f79a9c..0000000000000000000000000000000000000000 --- a/target/DAAExample/modules-people-people-module-es2015.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["./src/app/modules/people/components/people-form/people-form.component.html","./src/app/modules/people/components/people-list/people-list.component.html","./src/app/modules/people/components/people-main/people-main.component.html","./src/app/modules/people/components/people-form/people-form.component.scss","./src/app/modules/people/components/people-form/people-form.component.ts","./src/app/modules/people/components/people-list/people-list.component.scss","./src/app/modules/people/components/people-list/people-list.component.ts","./src/app/modules/people/components/people-main/people-main.component.scss","./src/app/modules/people/components/people-main/people-main.component.ts","./src/app/modules/people/models/person.model.ts","./src/app/modules/people/people-routing.module.ts","./src/app/modules/people/people.module.ts","./src/app/modules/people/services/people.service.ts"],"names":[],"mappings":"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","file":"modules-people-people-module-es2015.js","sourcesContent":["export default \"\\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\"","export default \"\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    NombreApellido 
    {{person.name}}{{person.surname}}\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n\"","export default \"\\r\\n\\r\\n

    Personas

    \\r\\n\\r\\n\\r\\n\"","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtZm9ybS9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLWZvcm1cXHBlb3BsZS1mb3JtLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtZm9ybS9wZW9wbGUtZm9ybS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {PersonModel} from '../../models/person.model';\r\n\r\n@Component({\r\n selector: 'app-people-form',\r\n templateUrl: './people-form.component.html',\r\n styleUrls: ['./people-form.component.scss']\r\n})\r\nexport class PeopleFormComponent {\r\n public activePerson: PersonModel;\r\n\r\n @Output()\r\n public readonly modify: EventEmitter;\r\n @Output()\r\n public readonly clean: EventEmitter;\r\n\r\n public name: string;\r\n public surname: string;\r\n\r\n public constructor() {\r\n this.modify = new EventEmitter();\r\n this.clean = new EventEmitter();\r\n }\r\n\r\n @Input()\r\n public set person(person: PersonModel) {\r\n this.activePerson = person;\r\n this.name = person.name;\r\n this.surname = person.surname;\r\n }\r\n\r\n public get person(): PersonModel {\r\n return this.activePerson;\r\n }\r\n\r\n public onModify() {\r\n this.modify.emit({\r\n id: this.person.id,\r\n name: this.name,\r\n surname: this.surname\r\n });\r\n }\r\n\r\n public onClean() {\r\n this.clean.emit();\r\n }\r\n}\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbGlzdC9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLWxpc3RcXHBlb3BsZS1saXN0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbGlzdC9wZW9wbGUtbGlzdC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {PersonModel} from '../../models/person.model';\r\nimport {PeopleService} from '../../services/people.service';\r\nimport {Router} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-people-list',\r\n templateUrl: './people-list.component.html',\r\n styleUrls: ['./people-list.component.scss']\r\n})\r\nexport class PeopleListComponent {\r\n\r\n @Input()\r\n public people: PersonModel[] = [];\r\n\r\n @Output()\r\n public readonly edit: EventEmitter;\r\n @Output()\r\n public readonly delete: EventEmitter;\r\n\r\n public constructor(private readonly router: Router) {\r\n this.edit = new EventEmitter();\r\n this.delete = new EventEmitter();\r\n }\r\n\r\n public onEdit(person: PersonModel) {\r\n this.edit.emit(person);\r\n }\r\n\r\n public onDelete(person: PersonModel) {\r\n this.delete.emit(person);\r\n }\r\n\r\n public pets(person: PersonModel){\r\n this.router.navigate(['//listPets',person.id]);\r\n }\r\n}\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbWFpbi9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLW1haW5cXHBlb3BsZS1tYWluLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbWFpbi9wZW9wbGUtbWFpbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport { Component, OnInit } from '@angular/core';\r\nimport {PersonModel} from '../../models/person.model';\r\nimport {PeopleService} from '../../services/people.service';\r\nimport {map, mergeMap} from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-people-main',\r\n templateUrl: './people-main.component.html',\r\n styleUrls: ['./people-main.component.scss']\r\n})\r\nexport class PeopleMainComponent implements OnInit {\r\n public activePerson: PersonModel;\r\n public people: PersonModel[];\r\n\r\n public constructor(\r\n private readonly peopleService: PeopleService\r\n ) {\r\n this.people = [];\r\n this.clearActivePerson();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.peopleService.list()\r\n .subscribe(people => this.people = people);\r\n }\r\n\r\n public onEdit(person: PersonModel): void {\r\n this.activePerson = person;\r\n }\r\n\r\n public onDelete(person: PersonModel): void {\r\n if (confirm(`¿Estás seguro de que deseas eliminar a ${person.name} ${person.surname}?`)) {\r\n this.peopleService.delete(person)\r\n .pipe(\r\n mergeMap(() => this.peopleService.list())\r\n )\r\n .subscribe(people => this.people = people);\r\n }\r\n }\r\n\r\n public onCleanForm(): void {\r\n this.clearActivePerson();\r\n }\r\n\r\n public onModifyForm(person: PersonModel): void {\r\n if (person.id === undefined) {\r\n this.peopleService.create(person)\r\n .pipe(\r\n mergeMap(() => this.peopleService.list())\r\n )\r\n .subscribe(people => {\r\n this.people = people;\r\n this.clearActivePerson();\r\n });\r\n } else {\r\n this.peopleService.modify(person)\r\n .pipe(\r\n mergeMap(() => this.peopleService.list())\r\n )\r\n .subscribe(people => {\r\n this.people = people;\r\n this.clearActivePerson();\r\n });\r\n }\r\n }\r\n\r\n private clearActivePerson(): void {\r\n this.activePerson = { id: undefined, name: '', surname: '' };\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nexport class PersonModel {\r\n id?: number;\r\n name: string;\r\n surname: string;\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {NgModule} from '@angular/core';\r\nimport {RouterModule, Routes} from '@angular/router';\r\nimport {PeopleMainComponent} from './components/people-main/people-main.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: PeopleMainComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class PeopleRoutingModule { }\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\n\r\nimport {PeopleRoutingModule} from './people-routing.module';\r\nimport {PeopleListComponent} from './components/people-list/people-list.component';\r\nimport {PeopleFormComponent} from './components/people-form/people-form.component';\r\nimport {PeopleMainComponent} from './components/people-main/people-main.component';\r\nimport {FormsModule} from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [\r\n PeopleFormComponent,\r\n PeopleListComponent,\r\n PeopleMainComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n PeopleRoutingModule\r\n ]\r\n})\r\nexport class PeopleModule {\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\r\nimport {environment} from '../../../../environments/environment';\r\nimport {Observable} from 'rxjs';\r\nimport {PersonModel} from '../models/person.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PeopleService {\r\n\r\n public constructor(private readonly http: HttpClient) { }\r\n\r\n public list(): Observable {\r\n return this.http.get(`${environment.restApi}/people`);\r\n }\r\n\r\n public create(person: PersonModel): Observable {\r\n const data = new HttpParams()\r\n .set('name', person.name)\r\n .set('surname', person.surname);\r\n\r\n return this.http.post(`${environment.restApi}/people`, data);\r\n }\r\n\r\n public modify(person: PersonModel): Observable {\r\n const data = new HttpParams()\r\n .set('name', person.name)\r\n .set('surname', person.surname);\r\n\r\n return this.http.put(`${environment.restApi}/people/${person.id}`, data);\r\n }\r\n\r\n public delete(person: PersonModel): Observable {\r\n return this.http.delete(`${environment.restApi}/people/${person.id}`);\r\n }\r\n}\r\n"],"sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/target/DAAExample/modules-people-people-module-es5.js b/target/DAAExample/modules-people-people-module-es5.js deleted file mode 100644 index 5e82290c7c37798ca19c539f5e81eaf8116c2fce..0000000000000000000000000000000000000000 --- a/target/DAAExample/modules-people-people-module-es5.js +++ /dev/null @@ -1,850 +0,0 @@ -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["modules-people-people-module"], { - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-form/people-form.component.html": - /*!************************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-form/people-form.component.html ***! - \************************************************************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppModulesPeopleComponentsPeopleFormPeopleFormComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n\r\n
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n"; - /***/ - }, - - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-list/people-list.component.html": - /*!************************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-list/people-list.component.html ***! - \************************************************************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppModulesPeopleComponentsPeopleListPeopleListComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    NombreApellido 
    {{person.name}}{{person.surname}}\r\n \r\n \r\n \r\n
    \r\n"; - /***/ - }, - - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-main/people-main.component.html": - /*!************************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-main/people-main.component.html ***! - \************************************************************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppModulesPeopleComponentsPeopleMainPeopleMainComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n\r\n

    Personas

    \r\n\r\n\r\n"; - /***/ - }, - - /***/ - "./src/app/modules/people/components/people-form/people-form.component.scss": - /*!**********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-form/people-form.component.scss ***! - \**********************************************************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppModulesPeopleComponentsPeopleFormPeopleFormComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtZm9ybS9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLWZvcm1cXHBlb3BsZS1mb3JtLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtZm9ybS9wZW9wbGUtZm9ybS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */"; - /***/ - }, - - /***/ - "./src/app/modules/people/components/people-form/people-form.component.ts": - /*!********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-form/people-form.component.ts ***! - \********************************************************************************/ - - /*! exports provided: PeopleFormComponent */ - - /***/ - function srcAppModulesPeopleComponentsPeopleFormPeopleFormComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PeopleFormComponent", function () { - return PeopleFormComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _models_person_model__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! ../../models/person.model */ - "./src/app/modules/people/models/person.model.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var PeopleFormComponent = - /*#__PURE__*/ - function () { - function PeopleFormComponent() { - _classCallCheck(this, PeopleFormComponent); - - this.modify = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - this.clean = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - } - - _createClass(PeopleFormComponent, [{ - key: "onModify", - value: function onModify() { - this.modify.emit({ - id: this.person.id, - name: this.name, - surname: this.surname - }); - } - }, { - key: "onClean", - value: function onClean() { - this.clean.emit(); - } - }, { - key: "person", - set: function set(person) { - this.activePerson = person; - this.name = person.name; - this.surname = person.surname; - }, - get: function get() { - return this.activePerson; - } - }]); - - return PeopleFormComponent; - }(); - - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])], PeopleFormComponent.prototype, "modify", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])], PeopleFormComponent.prototype, "clean", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _models_person_model__WEBPACK_IMPORTED_MODULE_2__["PersonModel"]), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_models_person_model__WEBPACK_IMPORTED_MODULE_2__["PersonModel"]])], PeopleFormComponent.prototype, "person", null); - PeopleFormComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-people-form', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./people-form.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-form/people-form.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./people-form.component.scss */ - "./src/app/modules/people/components/people-form/people-form.component.scss")).default] - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [])], PeopleFormComponent); - /***/ - }, - - /***/ - "./src/app/modules/people/components/people-list/people-list.component.scss": - /*!**********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-list/people-list.component.scss ***! - \**********************************************************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppModulesPeopleComponentsPeopleListPeopleListComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbGlzdC9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLWxpc3RcXHBlb3BsZS1saXN0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbGlzdC9wZW9wbGUtbGlzdC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */"; - /***/ - }, - - /***/ - "./src/app/modules/people/components/people-list/people-list.component.ts": - /*!********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-list/people-list.component.ts ***! - \********************************************************************************/ - - /*! exports provided: PeopleListComponent */ - - /***/ - function srcAppModulesPeopleComponentsPeopleListPeopleListComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PeopleListComponent", function () { - return PeopleListComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var PeopleListComponent = - /*#__PURE__*/ - function () { - function PeopleListComponent(router) { - _classCallCheck(this, PeopleListComponent); - - this.router = router; - this.people = []; - this.edit = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - this.delete = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - } - - _createClass(PeopleListComponent, [{ - key: "onEdit", - value: function onEdit(person) { - this.edit.emit(person); - } - }, { - key: "onDelete", - value: function onDelete(person) { - this.delete.emit(person); - } - }, { - key: "pets", - value: function pets(person) { - this.router.navigate(['//listPets', person.id]); - } - }]); - - return PeopleListComponent; - }(); - - PeopleListComponent.ctorParameters = function () { - return [{ - type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] - }]; - }; - - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", Array)], PeopleListComponent.prototype, "people", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])], PeopleListComponent.prototype, "edit", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])], PeopleListComponent.prototype, "delete", void 0); - PeopleListComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-people-list', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./people-list.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-list/people-list.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./people-list.component.scss */ - "./src/app/modules/people/components/people-list/people-list.component.scss")).default] - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]])], PeopleListComponent); - /***/ - }, - - /***/ - "./src/app/modules/people/components/people-main/people-main.component.scss": - /*!**********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-main/people-main.component.scss ***! - \**********************************************************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppModulesPeopleComponentsPeopleMainPeopleMainComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbWFpbi9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLW1haW5cXHBlb3BsZS1tYWluLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbWFpbi9wZW9wbGUtbWFpbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */"; - /***/ - }, - - /***/ - "./src/app/modules/people/components/people-main/people-main.component.ts": - /*!********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-main/people-main.component.ts ***! - \********************************************************************************/ - - /*! exports provided: PeopleMainComponent */ - - /***/ - function srcAppModulesPeopleComponentsPeopleMainPeopleMainComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PeopleMainComponent", function () { - return PeopleMainComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _services_people_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! ../../services/people.service */ - "./src/app/modules/people/services/people.service.ts"); - /* harmony import */ - - - var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! rxjs/operators */ - "./node_modules/rxjs/_esm2015/operators/index.js"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var PeopleMainComponent = - /*#__PURE__*/ - function () { - function PeopleMainComponent(peopleService) { - _classCallCheck(this, PeopleMainComponent); - - this.peopleService = peopleService; - this.people = []; - this.clearActivePerson(); - } - - _createClass(PeopleMainComponent, [{ - key: "ngOnInit", - value: function ngOnInit() { - var _this = this; - - this.peopleService.list().subscribe(function (people) { - return _this.people = people; - }); - } - }, { - key: "onEdit", - value: function onEdit(person) { - this.activePerson = person; - } - }, { - key: "onDelete", - value: function onDelete(person) { - var _this2 = this; - - if (confirm("\xBFEst\xE1s seguro de que deseas eliminar a ".concat(person.name, " ").concat(person.surname, "?"))) { - this.peopleService.delete(person).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(function () { - return _this2.peopleService.list(); - })).subscribe(function (people) { - return _this2.people = people; - }); - } - } - }, { - key: "onCleanForm", - value: function onCleanForm() { - this.clearActivePerson(); - } - }, { - key: "onModifyForm", - value: function onModifyForm(person) { - var _this3 = this; - - if (person.id === undefined) { - this.peopleService.create(person).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(function () { - return _this3.peopleService.list(); - })).subscribe(function (people) { - _this3.people = people; - - _this3.clearActivePerson(); - }); - } else { - this.peopleService.modify(person).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(function () { - return _this3.peopleService.list(); - })).subscribe(function (people) { - _this3.people = people; - - _this3.clearActivePerson(); - }); - } - } - }, { - key: "clearActivePerson", - value: function clearActivePerson() { - this.activePerson = { - id: undefined, - name: '', - surname: '' - }; - } - }]); - - return PeopleMainComponent; - }(); - - PeopleMainComponent.ctorParameters = function () { - return [{ - type: _services_people_service__WEBPACK_IMPORTED_MODULE_2__["PeopleService"] - }]; - }; - - PeopleMainComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-people-main', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./people-main.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-main/people-main.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./people-main.component.scss */ - "./src/app/modules/people/components/people-main/people-main.component.scss")).default] - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_people_service__WEBPACK_IMPORTED_MODULE_2__["PeopleService"]])], PeopleMainComponent); - /***/ - }, - - /***/ - "./src/app/modules/people/models/person.model.ts": - /*!*******************************************************!*\ - !*** ./src/app/modules/people/models/person.model.ts ***! - \*******************************************************/ - - /*! exports provided: PersonModel */ - - /***/ - function srcAppModulesPeopleModelsPersonModelTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PersonModel", function () { - return PersonModel; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var PersonModel = function PersonModel() { - _classCallCheck(this, PersonModel); - }; - /***/ - - }, - - /***/ - "./src/app/modules/people/people-routing.module.ts": - /*!*********************************************************!*\ - !*** ./src/app/modules/people/people-routing.module.ts ***! - \*********************************************************/ - - /*! exports provided: PeopleRoutingModule */ - - /***/ - function srcAppModulesPeoplePeopleRoutingModuleTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PeopleRoutingModule", function () { - return PeopleRoutingModule; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* harmony import */ - - - var _components_people_main_people_main_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ./components/people-main/people-main.component */ - "./src/app/modules/people/components/people-main/people-main.component.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var routes = [{ - path: '', - component: _components_people_main_people_main_component__WEBPACK_IMPORTED_MODULE_3__["PeopleMainComponent"] - }]; - - var PeopleRoutingModule = function PeopleRoutingModule() { - _classCallCheck(this, PeopleRoutingModule); - }; - - PeopleRoutingModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - imports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"].forChild(routes)], - exports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"]] - })], PeopleRoutingModule); - /***/ - }, - - /***/ - "./src/app/modules/people/people.module.ts": - /*!*************************************************!*\ - !*** ./src/app/modules/people/people.module.ts ***! - \*************************************************/ - - /*! exports provided: PeopleModule */ - - /***/ - function srcAppModulesPeoplePeopleModuleTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PeopleModule", function () { - return PeopleModule; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/common */ - "./node_modules/@angular/common/fesm2015/common.js"); - /* harmony import */ - - - var _people_routing_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ./people-routing.module */ - "./src/app/modules/people/people-routing.module.ts"); - /* harmony import */ - - - var _components_people_list_people_list_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! ./components/people-list/people-list.component */ - "./src/app/modules/people/components/people-list/people-list.component.ts"); - /* harmony import */ - - - var _components_people_form_people_form_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( - /*! ./components/people-form/people-form.component */ - "./src/app/modules/people/components/people-form/people-form.component.ts"); - /* harmony import */ - - - var _components_people_main_people_main_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( - /*! ./components/people-main/people-main.component */ - "./src/app/modules/people/components/people-main/people-main.component.ts"); - /* harmony import */ - - - var _angular_forms__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__( - /*! @angular/forms */ - "./node_modules/@angular/forms/fesm2015/forms.js"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var PeopleModule = function PeopleModule() { - _classCallCheck(this, PeopleModule); - }; - - PeopleModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - declarations: [_components_people_form_people_form_component__WEBPACK_IMPORTED_MODULE_5__["PeopleFormComponent"], _components_people_list_people_list_component__WEBPACK_IMPORTED_MODULE_4__["PeopleListComponent"], _components_people_main_people_main_component__WEBPACK_IMPORTED_MODULE_6__["PeopleMainComponent"]], - imports: [_angular_common__WEBPACK_IMPORTED_MODULE_2__["CommonModule"], _angular_forms__WEBPACK_IMPORTED_MODULE_7__["FormsModule"], _people_routing_module__WEBPACK_IMPORTED_MODULE_3__["PeopleRoutingModule"]] - })], PeopleModule); - /***/ - }, - - /***/ - "./src/app/modules/people/services/people.service.ts": - /*!***********************************************************!*\ - !*** ./src/app/modules/people/services/people.service.ts ***! - \***********************************************************/ - - /*! exports provided: PeopleService */ - - /***/ - function srcAppModulesPeopleServicesPeopleServiceTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PeopleService", function () { - return PeopleService; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_common_http__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/common/http */ - "./node_modules/@angular/common/fesm2015/http.js"); - /* harmony import */ - - - var _environments_environment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ../../../../environments/environment */ - "./src/environments/environment.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var PeopleService = - /*#__PURE__*/ - function () { - function PeopleService(http) { - _classCallCheck(this, PeopleService); - - this.http = http; - } - - _createClass(PeopleService, [{ - key: "list", - value: function list() { - return this.http.get("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi, "/people")); - } - }, { - key: "create", - value: function create(person) { - var data = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpParams"]().set('name', person.name).set('surname', person.surname); - return this.http.post("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi, "/people"), data); - } - }, { - key: "modify", - value: function modify(person) { - var data = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpParams"]().set('name', person.name).set('surname', person.surname); - return this.http.put("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi, "/people/").concat(person.id), data); - } - }, { - key: "delete", - value: function _delete(person) { - return this.http.delete("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi, "/people/").concat(person.id)); - } - }]); - - return PeopleService; - }(); - - PeopleService.ctorParameters = function () { - return [{ - type: _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"] - }]; - }; - - PeopleService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"]])], PeopleService); - /***/ - } -}]); -//# sourceMappingURL=modules-people-people-module-es5.js.map \ No newline at end of file diff --git a/target/DAAExample/modules-people-people-module-es5.js.map b/target/DAAExample/modules-people-people-module-es5.js.map deleted file mode 100644 index 93547e458baeafc22df2174a61f7220e642a2316..0000000000000000000000000000000000000000 --- a/target/DAAExample/modules-people-people-module-es5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["src/app/modules/people/components/people-form/people-form.component.html","src/app/modules/people/components/people-list/people-list.component.html","src/app/modules/people/components/people-main/people-main.component.html","src/app/modules/people/components/people-form/people-form.component.scss","src/app/modules/people/components/people-form/people-form.component.ts","src/app/modules/people/components/people-list/people-list.component.scss","src/app/modules/people/components/people-list/people-list.component.ts","src/app/modules/people/components/people-main/people-main.component.scss","src/app/modules/people/components/people-main/people-main.component.ts","src/app/modules/people/models/person.model.ts","src/app/modules/people/people-routing.module.ts","src/app/modules/people/people.module.ts","src/app/modules/people/services/people.service.ts"],"names":[],"mappings":"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","sourcesContent":["export default \"\\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\"","export default \"\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    NombreApellido 
    {{person.name}}{{person.surname}}\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n\"","export default \"\\r\\n\\r\\n

    Personas

    \\r\\n\\r\\n\\r\\n\"","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtZm9ybS9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLWZvcm1cXHBlb3BsZS1mb3JtLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtZm9ybS9wZW9wbGUtZm9ybS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {PersonModel} from '../../models/person.model';\r\n\r\n@Component({\r\n selector: 'app-people-form',\r\n templateUrl: './people-form.component.html',\r\n styleUrls: ['./people-form.component.scss']\r\n})\r\nexport class PeopleFormComponent {\r\n public activePerson: PersonModel;\r\n\r\n @Output()\r\n public readonly modify: EventEmitter;\r\n @Output()\r\n public readonly clean: EventEmitter;\r\n\r\n public name: string;\r\n public surname: string;\r\n\r\n public constructor() {\r\n this.modify = new EventEmitter();\r\n this.clean = new EventEmitter();\r\n }\r\n\r\n @Input()\r\n public set person(person: PersonModel) {\r\n this.activePerson = person;\r\n this.name = person.name;\r\n this.surname = person.surname;\r\n }\r\n\r\n public get person(): PersonModel {\r\n return this.activePerson;\r\n }\r\n\r\n public onModify() {\r\n this.modify.emit({\r\n id: this.person.id,\r\n name: this.name,\r\n surname: this.surname\r\n });\r\n }\r\n\r\n public onClean() {\r\n this.clean.emit();\r\n }\r\n}\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbGlzdC9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLWxpc3RcXHBlb3BsZS1saXN0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbGlzdC9wZW9wbGUtbGlzdC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {PersonModel} from '../../models/person.model';\r\nimport {PeopleService} from '../../services/people.service';\r\nimport {Router} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-people-list',\r\n templateUrl: './people-list.component.html',\r\n styleUrls: ['./people-list.component.scss']\r\n})\r\nexport class PeopleListComponent {\r\n\r\n @Input()\r\n public people: PersonModel[] = [];\r\n\r\n @Output()\r\n public readonly edit: EventEmitter;\r\n @Output()\r\n public readonly delete: EventEmitter;\r\n\r\n public constructor(private readonly router: Router) {\r\n this.edit = new EventEmitter();\r\n this.delete = new EventEmitter();\r\n }\r\n\r\n public onEdit(person: PersonModel) {\r\n this.edit.emit(person);\r\n }\r\n\r\n public onDelete(person: PersonModel) {\r\n this.delete.emit(person);\r\n }\r\n\r\n public pets(person: PersonModel){\r\n this.router.navigate(['//listPets',person.id]);\r\n }\r\n}\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbWFpbi9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLW1haW5cXHBlb3BsZS1tYWluLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbWFpbi9wZW9wbGUtbWFpbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport { Component, OnInit } from '@angular/core';\r\nimport {PersonModel} from '../../models/person.model';\r\nimport {PeopleService} from '../../services/people.service';\r\nimport {map, mergeMap} from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-people-main',\r\n templateUrl: './people-main.component.html',\r\n styleUrls: ['./people-main.component.scss']\r\n})\r\nexport class PeopleMainComponent implements OnInit {\r\n public activePerson: PersonModel;\r\n public people: PersonModel[];\r\n\r\n public constructor(\r\n private readonly peopleService: PeopleService\r\n ) {\r\n this.people = [];\r\n this.clearActivePerson();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.peopleService.list()\r\n .subscribe(people => this.people = people);\r\n }\r\n\r\n public onEdit(person: PersonModel): void {\r\n this.activePerson = person;\r\n }\r\n\r\n public onDelete(person: PersonModel): void {\r\n if (confirm(`¿Estás seguro de que deseas eliminar a ${person.name} ${person.surname}?`)) {\r\n this.peopleService.delete(person)\r\n .pipe(\r\n mergeMap(() => this.peopleService.list())\r\n )\r\n .subscribe(people => this.people = people);\r\n }\r\n }\r\n\r\n public onCleanForm(): void {\r\n this.clearActivePerson();\r\n }\r\n\r\n public onModifyForm(person: PersonModel): void {\r\n if (person.id === undefined) {\r\n this.peopleService.create(person)\r\n .pipe(\r\n mergeMap(() => this.peopleService.list())\r\n )\r\n .subscribe(people => {\r\n this.people = people;\r\n this.clearActivePerson();\r\n });\r\n } else {\r\n this.peopleService.modify(person)\r\n .pipe(\r\n mergeMap(() => this.peopleService.list())\r\n )\r\n .subscribe(people => {\r\n this.people = people;\r\n this.clearActivePerson();\r\n });\r\n }\r\n }\r\n\r\n private clearActivePerson(): void {\r\n this.activePerson = { id: undefined, name: '', surname: '' };\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nexport class PersonModel {\r\n id?: number;\r\n name: string;\r\n surname: string;\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {NgModule} from '@angular/core';\r\nimport {RouterModule, Routes} from '@angular/router';\r\nimport {PeopleMainComponent} from './components/people-main/people-main.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: PeopleMainComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class PeopleRoutingModule { }\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\n\r\nimport {PeopleRoutingModule} from './people-routing.module';\r\nimport {PeopleListComponent} from './components/people-list/people-list.component';\r\nimport {PeopleFormComponent} from './components/people-form/people-form.component';\r\nimport {PeopleMainComponent} from './components/people-main/people-main.component';\r\nimport {FormsModule} from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [\r\n PeopleFormComponent,\r\n PeopleListComponent,\r\n PeopleMainComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n PeopleRoutingModule\r\n ]\r\n})\r\nexport class PeopleModule {\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\r\nimport {environment} from '../../../../environments/environment';\r\nimport {Observable} from 'rxjs';\r\nimport {PersonModel} from '../models/person.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PeopleService {\r\n\r\n public constructor(private readonly http: HttpClient) { }\r\n\r\n public list(): Observable {\r\n return this.http.get(`${environment.restApi}/people`);\r\n }\r\n\r\n public create(person: PersonModel): Observable {\r\n const data = new HttpParams()\r\n .set('name', person.name)\r\n .set('surname', person.surname);\r\n\r\n return this.http.post(`${environment.restApi}/people`, data);\r\n }\r\n\r\n public modify(person: PersonModel): Observable {\r\n const data = new HttpParams()\r\n .set('name', person.name)\r\n .set('surname', person.surname);\r\n\r\n return this.http.put(`${environment.restApi}/people/${person.id}`, data);\r\n }\r\n\r\n public delete(person: PersonModel): Observable {\r\n return this.http.delete(`${environment.restApi}/people/${person.id}`);\r\n }\r\n}\r\n"],"sourceRoot":"webpack:///","file":"modules-people-people-module-es5.js"} \ No newline at end of file diff --git a/target/DAAExample/modules-pets-pets-module-es2015.js b/target/DAAExample/modules-pets-pets-module-es2015.js deleted file mode 100644 index 7fcf089dae78825ee39f107424ab3881000a2031..0000000000000000000000000000000000000000 --- a/target/DAAExample/modules-pets-pets-module-es2015.js +++ /dev/null @@ -1,463 +0,0 @@ -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["modules-pets-pets-module"],{ - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-form/pets-form.component.html": -/*!******************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-form/pets-form.component.html ***! - \******************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n"); - -/***/ }), - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-list/pets-list.component.html": -/*!******************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-list/pets-list.component.html ***! - \******************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    NombreTipo 
    {{pet.name}}{{pet.kind}}\r\n \r\n \r\n
    \r\n\r\n\r\n"); - -/***/ }), - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-main/pets-main.component.html": -/*!******************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-main/pets-main.component.html ***! - \******************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n

    Mascotas

    \r\n\r\n\r\n\r\n\r\n"); - -/***/ }), - -/***/ "./src/app/modules/pets/components/pets-form/pets-form.component.scss": -/*!****************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-form/pets-form.component.scss ***! - \****************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtZm9ybS9wZXRzLWZvcm0uY29tcG9uZW50LnNjc3MifQ== */"); - -/***/ }), - -/***/ "./src/app/modules/pets/components/pets-form/pets-form.component.ts": -/*!**************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-form/pets-form.component.ts ***! - \**************************************************************************/ -/*! exports provided: PetsFormComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PetsFormComponent", function() { return PetsFormComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* harmony import */ var _models_pet_model__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../models/pet.model */ "./src/app/modules/pets/models/pet.model.ts"); - - - - -let PetsFormComponent = class PetsFormComponent { - constructor(route) { - this.route = route; - this.clean = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - this.modify = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - } - set pet(pet) { - this.activePet = pet; - this.name = pet.name; - this.kind = pet.kind; - } - get pet() { - return this.activePet; - } - onClean() { - this.clean.emit(); - } - onModify() { - this.modify.emit({ - id: this.pet.id, - name: this.name, - kind: this.kind, - owner: this.owner - }); - } -}; -PetsFormComponent.ctorParameters = () => [ - { type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["ActivatedRoute"] } -]; -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", Number) -], PetsFormComponent.prototype, "owner", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]) -], PetsFormComponent.prototype, "clean", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]) -], PetsFormComponent.prototype, "modify", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _models_pet_model__WEBPACK_IMPORTED_MODULE_3__["PetModel"]), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_models_pet_model__WEBPACK_IMPORTED_MODULE_3__["PetModel"]]) -], PetsFormComponent.prototype, "pet", null); -PetsFormComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-pets-form', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./pets-form.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-form/pets-form.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./pets-form.component.scss */ "./src/app/modules/pets/components/pets-form/pets-form.component.scss")).default] - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_router__WEBPACK_IMPORTED_MODULE_2__["ActivatedRoute"]]) -], PetsFormComponent); - - - -/***/ }), - -/***/ "./src/app/modules/pets/components/pets-list/pets-list.component.scss": -/*!****************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-list/pets-list.component.scss ***! - \****************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtbGlzdC9wZXRzLWxpc3QuY29tcG9uZW50LnNjc3MifQ== */"); - -/***/ }), - -/***/ "./src/app/modules/pets/components/pets-list/pets-list.component.ts": -/*!**************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-list/pets-list.component.ts ***! - \**************************************************************************/ -/*! exports provided: PetsListComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PetsListComponent", function() { return PetsListComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); - - -let PetsListComponent = class PetsListComponent { - constructor() { - this.pets = []; - this.delete = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - this.edit = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - } - onDelete(pet) { - this.delete.emit(pet); - } - onEdit(pet) { - this.edit.emit(pet); - } -}; -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", Array) -], PetsListComponent.prototype, "pets", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]) -], PetsListComponent.prototype, "delete", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]) -], PetsListComponent.prototype, "edit", void 0); -PetsListComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-pets-list', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./pets-list.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-list/pets-list.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./pets-list.component.scss */ "./src/app/modules/pets/components/pets-list/pets-list.component.scss")).default] - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", []) -], PetsListComponent); - - - -/***/ }), - -/***/ "./src/app/modules/pets/components/pets-main/pets-main.component.scss": -/*!****************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-main/pets-main.component.scss ***! - \****************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtbWFpbi9wZXRzLW1haW4uY29tcG9uZW50LnNjc3MifQ== */"); - -/***/ }), - -/***/ "./src/app/modules/pets/components/pets-main/pets-main.component.ts": -/*!**************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-main/pets-main.component.ts ***! - \**************************************************************************/ -/*! exports provided: PetsMainComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PetsMainComponent", function() { return PetsMainComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _services_pets_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/pets.service */ "./src/app/modules/pets/services/pets.service.ts"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); - - - - - -let PetsMainComponent = class PetsMainComponent { - constructor(petsService, route, router) { - this.petsService = petsService; - this.route = route; - this.router = router; - this.pets = []; - this.clearActivePet(); - } - ngOnInit() { - this.id = this.route.snapshot.params.person; - this.petsService.list(this.id) - .subscribe(pets => this.pets = pets); - } - onCleanForm() { - this.clearActivePet(); - } - clearActivePet() { - this.activePet = { id: undefined, name: '', kind: '', owner: undefined }; - } - back() { - this.router.navigate(['/']); - } - onDelete(pet) { - if (confirm(`¿Estás seguro de que deseas eliminar a ${pet.name}?`)) { - this.petsService.delete(pet) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(() => this.petsService.list(pet.owner))) - .subscribe(pets => this.pets = pets); - } - } - onEdit(pet) { - this.activePet = pet; - console.log("Noe"); - console.log(this.activePet); - } - onModifyForm(pet) { - if (pet.id === undefined) { - this.petsService.create(pet) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(() => this.petsService.list(pet.owner))) - .subscribe(pets => { - this.pets = pets; - this.clearActivePet(); - }); - } - else { - this.petsService.modify(pet) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(() => this.petsService.list(pet.owner))) - .subscribe(pets => { - this.pets = pets; - this.clearActivePet(); - }); - } - } -}; -PetsMainComponent.ctorParameters = () => [ - { type: _services_pets_service__WEBPACK_IMPORTED_MODULE_2__["PetsService"] }, - { type: _angular_router__WEBPACK_IMPORTED_MODULE_4__["ActivatedRoute"] }, - { type: _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"] } -]; -PetsMainComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-pets-main', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./pets-main.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-main/pets-main.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./pets-main.component.scss */ "./src/app/modules/pets/components/pets-main/pets-main.component.scss")).default] - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_pets_service__WEBPACK_IMPORTED_MODULE_2__["PetsService"], - _angular_router__WEBPACK_IMPORTED_MODULE_4__["ActivatedRoute"], - _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"]]) -], PetsMainComponent); - - - -/***/ }), - -/***/ "./src/app/modules/pets/models/pet.model.ts": -/*!**************************************************!*\ - !*** ./src/app/modules/pets/models/pet.model.ts ***! - \**************************************************/ -/*! exports provided: PetModel */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PetModel", function() { return PetModel; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); - -class PetModel { -} - - -/***/ }), - -/***/ "./src/app/modules/pets/pets-routing.module.ts": -/*!*****************************************************!*\ - !*** ./src/app/modules/pets/pets-routing.module.ts ***! - \*****************************************************/ -/*! exports provided: PetsRoutingModule */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PetsRoutingModule", function() { return PetsRoutingModule; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* harmony import */ var _components_pets_main_pets_main_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/pets-main/pets-main.component */ "./src/app/modules/pets/components/pets-main/pets-main.component.ts"); - - - - -const routes = [ - { - path: '', - component: _components_pets_main_pets_main_component__WEBPACK_IMPORTED_MODULE_3__["PetsMainComponent"] - } -]; -let PetsRoutingModule = class PetsRoutingModule { -}; -PetsRoutingModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - imports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"].forChild(routes)], - exports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"]] - }) -], PetsRoutingModule); - - - -/***/ }), - -/***/ "./src/app/modules/pets/pets.module.ts": -/*!*********************************************!*\ - !*** ./src/app/modules/pets/pets.module.ts ***! - \*********************************************/ -/*! exports provided: PetsModule */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PetsModule", function() { return PetsModule; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/common */ "./node_modules/@angular/common/fesm2015/common.js"); -/* harmony import */ var _pets_routing_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pets-routing.module */ "./src/app/modules/pets/pets-routing.module.ts"); -/* harmony import */ var _components_pets_list_pets_list_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/pets-list/pets-list.component */ "./src/app/modules/pets/components/pets-list/pets-list.component.ts"); -/* harmony import */ var _components_pets_form_pets_form_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/pets-form/pets-form.component */ "./src/app/modules/pets/components/pets-form/pets-form.component.ts"); -/* harmony import */ var _components_pets_main_pets_main_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/pets-main/pets-main.component */ "./src/app/modules/pets/components/pets-main/pets-main.component.ts"); -/* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/forms */ "./node_modules/@angular/forms/fesm2015/forms.js"); - - - - - - - - -let PetsModule = class PetsModule { -}; -PetsModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - declarations: [ - _components_pets_form_pets_form_component__WEBPACK_IMPORTED_MODULE_5__["PetsFormComponent"], - _components_pets_list_pets_list_component__WEBPACK_IMPORTED_MODULE_4__["PetsListComponent"], - _components_pets_main_pets_main_component__WEBPACK_IMPORTED_MODULE_6__["PetsMainComponent"] - ], - imports: [ - _angular_common__WEBPACK_IMPORTED_MODULE_2__["CommonModule"], - _angular_forms__WEBPACK_IMPORTED_MODULE_7__["FormsModule"], - _pets_routing_module__WEBPACK_IMPORTED_MODULE_3__["PetsRoutingModule"] - ] - }) -], PetsModule); - - - -/***/ }), - -/***/ "./src/app/modules/pets/services/pets.service.ts": -/*!*******************************************************!*\ - !*** ./src/app/modules/pets/services/pets.service.ts ***! - \*******************************************************/ -/*! exports provided: PetsService */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PetsService", function() { return PetsService; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/common/http */ "./node_modules/@angular/common/fesm2015/http.js"); -/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../environments/environment */ "./src/environments/environment.ts"); - - - - -let PetsService = class PetsService { - constructor(http) { - this.http = http; - } - list(id) { - return this.http.get(`${_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi}/pets?owner=${id}`); - } - delete(pet) { - return this.http.delete(`${_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi}/pets/${pet.id}`); - } - modify(pet) { - const data = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpParams"]() - .set('name', pet.name) - .set('kind', pet.kind) - .set('owner', pet.owner.toString()); - return this.http.put(`${_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi}/pets/${pet.id}`, data); - } - create(pet) { - const data = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpParams"]() - .set('name', pet.name) - .set('kind', pet.kind) - .set('owner', pet.owner.toString()); - return this.http.post(`${_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi}/pets`, data); - } -}; -PetsService.ctorParameters = () => [ - { type: _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"] } -]; -PetsService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"]]) -], PetsService); - - - -/***/ }) - -}]); -//# sourceMappingURL=modules-pets-pets-module-es2015.js.map \ No newline at end of file diff --git a/target/DAAExample/modules-pets-pets-module-es2015.js.map b/target/DAAExample/modules-pets-pets-module-es2015.js.map deleted file mode 100644 index f30d7e791a12fd6a136f8ae35754b454503754b8..0000000000000000000000000000000000000000 --- a/target/DAAExample/modules-pets-pets-module-es2015.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["./src/app/modules/pets/components/pets-form/pets-form.component.html","./src/app/modules/pets/components/pets-list/pets-list.component.html","./src/app/modules/pets/components/pets-main/pets-main.component.html","./src/app/modules/pets/components/pets-form/pets-form.component.scss","./src/app/modules/pets/components/pets-form/pets-form.component.ts","./src/app/modules/pets/components/pets-list/pets-list.component.scss","./src/app/modules/pets/components/pets-list/pets-list.component.ts","./src/app/modules/pets/components/pets-main/pets-main.component.scss","./src/app/modules/pets/components/pets-main/pets-main.component.ts","./src/app/modules/pets/models/pet.model.ts","./src/app/modules/pets/pets-routing.module.ts","./src/app/modules/pets/pets.module.ts","./src/app/modules/pets/services/pets.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA;AAAe,uuBAAwqB,2CAA2C,qJ;;;;;;;;;;;;ACAluB;AAAe,0QAA2M,2GAA2G,QAAQ,2CAA2C,UAAU,gDAAgD,UAAU,+R;;;;;;;;;;;;ACA5b;AAAe,muB;;;;;;;;;;;;ACAf;AAAe,6GAA8C,uL;;;;;;;;;;;;;;;;;;;ACAkB;AAChC;AACG;AAOlD,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;IAc5B,YACU,KAAqB;QAArB,UAAK,GAAL,KAAK,CAAgB;QAE7B,IAAI,CAAC,KAAK,GAAG,IAAI,0DAAY,EAAS,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,0DAAY,EAAY,CAAC;IAC7C,CAAC;IAGD,IAAW,GAAG,CAAC,GAAa;QAC1B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;CAEF;;YA9BkB,8DAAc;;AAZ/B;IADC,2DAAK,EAAE;;gDACa;AAGrB;IADC,4DAAM,EAAE;oEACc,0DAAY;gDAAQ;AAG3C;IADC,4DAAM,EAAE;oEACe,0DAAY;iDAAW;AAa/C;IADC,2DAAK,EAAE;oEACY,0DAAQ;2EAAR,0DAAQ;4CAI3B;AA1BU,iBAAiB;IAL7B,+DAAS,CAAC;QACT,QAAQ,EAAE,eAAe;QACzB,uPAAyC;;KAE1C,CAAC;2EAgBiB,8DAAc;GAfpB,iBAAiB,CA6C7B;AA7C6B;;;;;;;;;;;;;ACT9B;AAAe,6GAA8C,uL;;;;;;;;;;;;;;;;;ACAkB;AAO/E,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;IAW5B;QARO,SAAI,GAAe,EAAE,CAAC;QAS3B,IAAI,CAAC,MAAM,GAAG,IAAI,0DAAY,EAAY,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,0DAAY,EAAY,CAAC;IAC3C,CAAC;IAEM,QAAQ,CAAC,GAAa;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAEM,MAAM,CAAC,GAAa;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;CAIF;AAvBC;IADC,2DAAK,EAAE;;+CACqB;AAG7B;IADC,4DAAM,EAAE;oEACe,0DAAY;iDAAW;AAG/C;IADC,4DAAM,EAAE;oEACa,0DAAY;+CAAW;AATlC,iBAAiB;IAL7B,+DAAS,CAAC;QACT,QAAQ,EAAE,eAAe;QACzB,uPAAyC;;KAE1C,CAAC;;GACW,iBAAiB,CA0B7B;AA1B6B;;;;;;;;;;;;;ACP9B;AAAe,6GAA8C,uL;;;;;;;;;;;;;;;;;;;;ACAX;AAEM;AACX;AACU;AAQvD,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;IAK5B,YACmB,WAAwB,EACjC,KAAqB,EACZ,MAAc;QAFd,gBAAW,GAAX,WAAW,CAAa;QACjC,UAAK,GAAL,KAAK,CAAgB;QACZ,WAAM,GAAN,MAAM,CAAQ;QAE/B,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,cAAc,EAAE;IACvB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;aAC3B,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAEzC,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAEM,cAAc;QACnB,IAAI,CAAC,SAAS,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC3E,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;IAEM,QAAQ,CAAC,GAAa;QAC3B,IAAI,OAAO,CAAC,0CAA0C,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE;YAClE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;iBACzB,IAAI,CACH,+DAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CACjD;iBACA,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;SACxC;IACH,CAAC;IAEM,MAAM,CAAC,GAAa;QACzB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IAEM,YAAY,CAAC,GAAa;QAC/B,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,EAAE;YACxB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;iBACzB,IAAI,CACH,+DAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CACjD;iBACA,SAAS,CAAC,IAAI,CAAC,EAAE;gBAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC,CAAC,CAAC;SACN;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;iBACzB,IAAI,CACH,+DAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CACjD;iBACA,SAAS,CAAC,IAAI,CAAC,EAAE;gBAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC,CAAC,CAAC;SACN;IACH,CAAC;CAEF;;YAjEiC,kEAAW;YAC1B,8DAAc;YACJ,sDAAM;;AARtB,iBAAiB;IAL7B,+DAAS,CAAC;QACT,QAAQ,EAAE,eAAe;QACzB,uPAAyC;;KAE1C,CAAC;2EAOgC,kEAAW;QAC1B,8DAAc;QACJ,sDAAM;GARtB,iBAAiB,CAuE7B;AAvE6B;;;;;;;;;;;;;;;;;ACZvB,MAAM,QAAQ;CAKlB;;;;;;;;;;;;;;;;;;;;ACLoC;AACc;AACwB;AAE7E,MAAM,MAAM,GAAW;IACrB;QACE,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,2FAAiB;KAC7B;CACF,CAAC;AAMF,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;CAAI;AAArB,iBAAiB;IAJ7B,8DAAQ,CAAC;QACR,OAAO,EAAE,CAAC,4DAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,EAAE,CAAC,4DAAY,CAAC;KACxB,CAAC;GACW,iBAAiB,CAAI;AAAJ;;;;;;;;;;;;;;;;;;;;;;;;ACfS;AACM;AAEW;AACqB;AACA;AACA;AAClC;AAc3C,IAAa,UAAU,GAAvB,MAAa,UAAU;CAAI;AAAd,UAAU;IAZtB,8DAAQ,CAAC;QACR,YAAY,EAAE;YACZ,2FAAiB;YACjB,2FAAiB;YACjB,2FAAiB;SAClB;QACD,OAAO,EAAE;YACP,4DAAY;YACZ,0DAAW;YACX,sEAAiB;SAClB;KACF,CAAC;GACW,UAAU,CAAI;AAAJ;;;;;;;;;;;;;;;;;;;;ACrBoB;AAC8B;AACR;AAOjE,IAAa,WAAW,GAAxB,MAAa,WAAW;IAEtB,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAI,CAAC;IAI3C,IAAI,CAAC,EAAU;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,GAAG,qEAAW,CAAC,OAAO,eAAe,EAAE,EAAE,CAAC,CAAC;IAC9E,CAAC;IAEM,MAAM,CAAC,GAAa;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAS,GAAG,qEAAW,CAAC,OAAO,SAAS,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;IAEM,MAAM,CAAC,GAAa;QACzB,MAAM,IAAI,GAAG,IAAI,+DAAU,EAAE;aAC1B,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC;aACrB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC;aACrB,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAW,GAAG,qEAAW,CAAC,OAAO,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;IAEM,MAAM,CAAC,GAAa;QACzB,MAAM,IAAI,GAAG,IAAI,+DAAU,EAAE;aAC1B,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC;aACrB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC;aACrB,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEtC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAW,GAAG,qEAAW,CAAC,OAAO,OAAO,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;CACF;;YA7BoC,+DAAU;;AAFlC,WAAW;IAHvB,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;2EAGmC,+DAAU;GAFlC,WAAW,CA+BvB;AA/BuB","file":"modules-pets-pets-module-es2015.js","sourcesContent":["export default \"\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\"","export default \"\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    NombreTipo 
    {{pet.name}}{{pet.kind}}\\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n\\r\\n\"","export default \"\\r\\n

    Mascotas

    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtZm9ybS9wZXRzLWZvcm0uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport { PetModel } from '../../models/pet.model';\r\n\r\n@Component({\r\n selector: 'app-pets-form',\r\n templateUrl: './pets-form.component.html',\r\n styleUrls: ['./pets-form.component.scss']\r\n})\r\nexport class PetsFormComponent {\r\n public activePet: PetModel;\r\n @Input()\r\n public owner: number;\r\n\r\n @Output()\r\n public readonly clean: EventEmitter;\r\n\r\n @Output()\r\n public readonly modify: EventEmitter;\r\n\r\n public name: string;\r\n public kind: string;\r\n \r\n constructor(\r\n private route: ActivatedRoute\r\n ) { \r\n this.clean = new EventEmitter();\r\n this.modify = new EventEmitter();\r\n }\r\n\r\n @Input()\r\n public set pet(pet: PetModel) {\r\n this.activePet = pet;\r\n this.name = pet.name;\r\n this.kind = pet.kind;\r\n }\r\n\r\n public get pet(): PetModel {\r\n return this.activePet;\r\n }\r\n\r\n public onClean() {\r\n this.clean.emit();\r\n }\r\n\r\n public onModify() {\r\n this.modify.emit({\r\n id: this.pet.id,\r\n name: this.name,\r\n kind: this.kind,\r\n owner: this.owner\r\n });\r\n }\r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtbGlzdC9wZXRzLWxpc3QuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, EventEmitter, OnInit, Input, Output } from '@angular/core';\r\nimport { PetModel} from '../../models/pet.model';\r\n@Component({\r\n selector: 'app-pets-list',\r\n templateUrl: './pets-list.component.html',\r\n styleUrls: ['./pets-list.component.scss']\r\n})\r\nexport class PetsListComponent {\r\n \r\n @Input()\r\n public pets: PetModel[] = [];\r\n\r\n @Output()\r\n public readonly delete: EventEmitter;\r\n\r\n @Output()\r\n public readonly edit: EventEmitter;\r\n\r\n constructor() { \r\n this.delete = new EventEmitter();\r\n this.edit = new EventEmitter();\r\n }\r\n\r\n public onDelete(pet: PetModel) {\r\n this.delete.emit(pet);\r\n }\r\n\r\n public onEdit(pet: PetModel) {\r\n this.edit.emit(pet);\r\n }\r\n\r\n \r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtbWFpbi9wZXRzLW1haW4uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\r\nimport {PetModel} from '../../models/pet.model';\r\nimport {PetsService} from '../../services/pets.service';\r\nimport {map, mergeMap} from 'rxjs/operators';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\n\r\n\r\n@Component({\r\n selector: 'app-pets-main',\r\n templateUrl: './pets-main.component.html',\r\n styleUrls: ['./pets-main.component.scss']\r\n})\r\nexport class PetsMainComponent implements OnInit {\r\n public id : number\r\n public activePet: PetModel;\r\n public pets: PetModel[];\r\n\r\n constructor(\r\n private readonly petsService: PetsService,\r\n private route: ActivatedRoute,\r\n private readonly router: Router\r\n ) { \r\n this.pets = [];\r\n this.clearActivePet()\r\n }\r\n\r\n ngOnInit() {\r\n this.id = this.route.snapshot.params.person;\r\n this.petsService.list(this.id)\r\n .subscribe(pets => this.pets = pets);\r\n \r\n }\r\n\r\n public onCleanForm(): void {\r\n this.clearActivePet();\r\n }\r\n\r\n public clearActivePet():void{\r\n this.activePet = { id: undefined, name: '', kind: '', owner: undefined };\r\n }\r\n\r\n public back(){\r\n this.router.navigate(['/']);\r\n }\r\n\r\n public onDelete(pet: PetModel): void {\r\n if (confirm(`¿Estás seguro de que deseas eliminar a ${pet.name}?`)) {\r\n this.petsService.delete(pet)\r\n .pipe(\r\n mergeMap(() => this.petsService.list(pet.owner))\r\n )\r\n .subscribe(pets => this.pets = pets);\r\n }\r\n }\r\n\r\n public onEdit(pet: PetModel): void {\r\n this.activePet = pet;\r\n console.log(\"Noe\")\r\n console.log(this.activePet)\r\n }\r\n\r\n public onModifyForm(pet: PetModel): void {\r\n if (pet.id === undefined) {\r\n this.petsService.create(pet)\r\n .pipe(\r\n mergeMap(() => this.petsService.list(pet.owner))\r\n )\r\n .subscribe(pets => {\r\n this.pets = pets;\r\n this.clearActivePet();\r\n });\r\n } else {\r\n this.petsService.modify(pet)\r\n .pipe(\r\n mergeMap(() => this.petsService.list(pet.owner))\r\n )\r\n .subscribe(pets => {\r\n this.pets = pets;\r\n this.clearActivePet();\r\n });\r\n }\r\n }\r\n\r\n}\r\n","export class PetModel {\r\n id?: number;\r\n name: string;\r\n kind: string;\r\n owner:number;\r\n }\r\n ","import {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {PetsMainComponent} from './components/pets-main/pets-main.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: PetsMainComponent\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class PetsRoutingModule { }\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\nimport {PetsRoutingModule} from './pets-routing.module';\nimport {PetsListComponent} from './components/pets-list/pets-list.component';\nimport {PetsFormComponent} from './components/pets-form/pets-form.component';\nimport {PetsMainComponent} from './components/pets-main/pets-main.component';\nimport {FormsModule} from '@angular/forms';\n\n@NgModule({\n declarations: [\n PetsFormComponent,\n PetsListComponent,\n PetsMainComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n PetsRoutingModule\n ]\n})\nexport class PetsModule { }\n","import { Injectable } from '@angular/core';\r\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\r\nimport {environment} from '../../../../environments/environment';\r\nimport {Observable} from 'rxjs';\r\nimport {PetModel} from '../models/pet.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PetsService {\r\n\r\n constructor(private readonly http: HttpClient) { }\r\n\r\n\r\n\r\n public list(id: number): Observable{\r\n return this.http.get(`${environment.restApi}/pets?owner=${id}`);\r\n }\r\n\r\n public delete(pet: PetModel): Observable {\r\n return this.http.delete(`${environment.restApi}/pets/${pet.id}`);\r\n }\r\n\r\n public modify(pet: PetModel): Observable {\r\n const data = new HttpParams()\r\n .set('name', pet.name)\r\n .set('kind', pet.kind)\r\n .set('owner', pet.owner.toString());\r\n\r\n return this.http.put(`${environment.restApi}/pets/${pet.id}`, data);\r\n }\r\n\r\n public create(pet: PetModel): Observable {\r\n const data = new HttpParams()\r\n .set('name', pet.name)\r\n .set('kind', pet.kind)\r\n .set('owner', pet.owner.toString());\r\n\r\n return this.http.post(`${environment.restApi}/pets`, data);\r\n }\r\n}\r\n"],"sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/target/DAAExample/modules-pets-pets-module-es5.js b/target/DAAExample/modules-pets-pets-module-es5.js deleted file mode 100644 index 366bb4f16ddff99247397bbfd3555b9f53f4a5b7..0000000000000000000000000000000000000000 --- a/target/DAAExample/modules-pets-pets-module-es5.js +++ /dev/null @@ -1,735 +0,0 @@ -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["modules-pets-pets-module"], { - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-form/pets-form.component.html": - /*!******************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-form/pets-form.component.html ***! - \******************************************************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppModulesPetsComponentsPetsFormPetsFormComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n"; - /***/ - }, - - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-list/pets-list.component.html": - /*!******************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-list/pets-list.component.html ***! - \******************************************************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppModulesPetsComponentsPetsListPetsListComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    NombreTipo 
    {{pet.name}}{{pet.kind}}\r\n \r\n \r\n
    \r\n\r\n\r\n"; - /***/ - }, - - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-main/pets-main.component.html": - /*!******************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-main/pets-main.component.html ***! - \******************************************************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppModulesPetsComponentsPetsMainPetsMainComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n

    Mascotas

    \r\n\r\n\r\n\r\n\r\n"; - /***/ - }, - - /***/ - "./src/app/modules/pets/components/pets-form/pets-form.component.scss": - /*!****************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-form/pets-form.component.scss ***! - \****************************************************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppModulesPetsComponentsPetsFormPetsFormComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtZm9ybS9wZXRzLWZvcm0uY29tcG9uZW50LnNjc3MifQ== */"; - /***/ - }, - - /***/ - "./src/app/modules/pets/components/pets-form/pets-form.component.ts": - /*!**************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-form/pets-form.component.ts ***! - \**************************************************************************/ - - /*! exports provided: PetsFormComponent */ - - /***/ - function srcAppModulesPetsComponentsPetsFormPetsFormComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PetsFormComponent", function () { - return PetsFormComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* harmony import */ - - - var _models_pet_model__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ../../models/pet.model */ - "./src/app/modules/pets/models/pet.model.ts"); - - var PetsFormComponent = - /*#__PURE__*/ - function () { - function PetsFormComponent(route) { - _classCallCheck(this, PetsFormComponent); - - this.route = route; - this.clean = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - this.modify = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - } - - _createClass(PetsFormComponent, [{ - key: "onClean", - value: function onClean() { - this.clean.emit(); - } - }, { - key: "onModify", - value: function onModify() { - this.modify.emit({ - id: this.pet.id, - name: this.name, - kind: this.kind, - owner: this.owner - }); - } - }, { - key: "pet", - set: function set(pet) { - this.activePet = pet; - this.name = pet.name; - this.kind = pet.kind; - }, - get: function get() { - return this.activePet; - } - }]); - - return PetsFormComponent; - }(); - - PetsFormComponent.ctorParameters = function () { - return [{ - type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["ActivatedRoute"] - }]; - }; - - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", Number)], PetsFormComponent.prototype, "owner", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])], PetsFormComponent.prototype, "clean", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])], PetsFormComponent.prototype, "modify", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _models_pet_model__WEBPACK_IMPORTED_MODULE_3__["PetModel"]), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_models_pet_model__WEBPACK_IMPORTED_MODULE_3__["PetModel"]])], PetsFormComponent.prototype, "pet", null); - PetsFormComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-pets-form', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./pets-form.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-form/pets-form.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./pets-form.component.scss */ - "./src/app/modules/pets/components/pets-form/pets-form.component.scss")).default] - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_router__WEBPACK_IMPORTED_MODULE_2__["ActivatedRoute"]])], PetsFormComponent); - /***/ - }, - - /***/ - "./src/app/modules/pets/components/pets-list/pets-list.component.scss": - /*!****************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-list/pets-list.component.scss ***! - \****************************************************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppModulesPetsComponentsPetsListPetsListComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtbGlzdC9wZXRzLWxpc3QuY29tcG9uZW50LnNjc3MifQ== */"; - /***/ - }, - - /***/ - "./src/app/modules/pets/components/pets-list/pets-list.component.ts": - /*!**************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-list/pets-list.component.ts ***! - \**************************************************************************/ - - /*! exports provided: PetsListComponent */ - - /***/ - function srcAppModulesPetsComponentsPetsListPetsListComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PetsListComponent", function () { - return PetsListComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - - var PetsListComponent = - /*#__PURE__*/ - function () { - function PetsListComponent() { - _classCallCheck(this, PetsListComponent); - - this.pets = []; - this.delete = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - this.edit = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - } - - _createClass(PetsListComponent, [{ - key: "onDelete", - value: function onDelete(pet) { - this.delete.emit(pet); - } - }, { - key: "onEdit", - value: function onEdit(pet) { - this.edit.emit(pet); - } - }]); - - return PetsListComponent; - }(); - - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", Array)], PetsListComponent.prototype, "pets", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])], PetsListComponent.prototype, "delete", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])], PetsListComponent.prototype, "edit", void 0); - PetsListComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-pets-list', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./pets-list.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-list/pets-list.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./pets-list.component.scss */ - "./src/app/modules/pets/components/pets-list/pets-list.component.scss")).default] - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [])], PetsListComponent); - /***/ - }, - - /***/ - "./src/app/modules/pets/components/pets-main/pets-main.component.scss": - /*!****************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-main/pets-main.component.scss ***! - \****************************************************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppModulesPetsComponentsPetsMainPetsMainComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtbWFpbi9wZXRzLW1haW4uY29tcG9uZW50LnNjc3MifQ== */"; - /***/ - }, - - /***/ - "./src/app/modules/pets/components/pets-main/pets-main.component.ts": - /*!**************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-main/pets-main.component.ts ***! - \**************************************************************************/ - - /*! exports provided: PetsMainComponent */ - - /***/ - function srcAppModulesPetsComponentsPetsMainPetsMainComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PetsMainComponent", function () { - return PetsMainComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _services_pets_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! ../../services/pets.service */ - "./src/app/modules/pets/services/pets.service.ts"); - /* harmony import */ - - - var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! rxjs/operators */ - "./node_modules/rxjs/_esm2015/operators/index.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - - var PetsMainComponent = - /*#__PURE__*/ - function () { - function PetsMainComponent(petsService, route, router) { - _classCallCheck(this, PetsMainComponent); - - this.petsService = petsService; - this.route = route; - this.router = router; - this.pets = []; - this.clearActivePet(); - } - - _createClass(PetsMainComponent, [{ - key: "ngOnInit", - value: function ngOnInit() { - var _this = this; - - this.id = this.route.snapshot.params.person; - this.petsService.list(this.id).subscribe(function (pets) { - return _this.pets = pets; - }); - } - }, { - key: "onCleanForm", - value: function onCleanForm() { - this.clearActivePet(); - } - }, { - key: "clearActivePet", - value: function clearActivePet() { - this.activePet = { - id: undefined, - name: '', - kind: '', - owner: undefined - }; - } - }, { - key: "back", - value: function back() { - this.router.navigate(['/']); - } - }, { - key: "onDelete", - value: function onDelete(pet) { - var _this2 = this; - - if (confirm("\xBFEst\xE1s seguro de que deseas eliminar a ".concat(pet.name, "?"))) { - this.petsService.delete(pet).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(function () { - return _this2.petsService.list(pet.owner); - })).subscribe(function (pets) { - return _this2.pets = pets; - }); - } - } - }, { - key: "onEdit", - value: function onEdit(pet) { - this.activePet = pet; - console.log("Noe"); - console.log(this.activePet); - } - }, { - key: "onModifyForm", - value: function onModifyForm(pet) { - var _this3 = this; - - if (pet.id === undefined) { - this.petsService.create(pet).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(function () { - return _this3.petsService.list(pet.owner); - })).subscribe(function (pets) { - _this3.pets = pets; - - _this3.clearActivePet(); - }); - } else { - this.petsService.modify(pet).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(function () { - return _this3.petsService.list(pet.owner); - })).subscribe(function (pets) { - _this3.pets = pets; - - _this3.clearActivePet(); - }); - } - } - }]); - - return PetsMainComponent; - }(); - - PetsMainComponent.ctorParameters = function () { - return [{ - type: _services_pets_service__WEBPACK_IMPORTED_MODULE_2__["PetsService"] - }, { - type: _angular_router__WEBPACK_IMPORTED_MODULE_4__["ActivatedRoute"] - }, { - type: _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"] - }]; - }; - - PetsMainComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-pets-main', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./pets-main.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-main/pets-main.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./pets-main.component.scss */ - "./src/app/modules/pets/components/pets-main/pets-main.component.scss")).default] - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_pets_service__WEBPACK_IMPORTED_MODULE_2__["PetsService"], _angular_router__WEBPACK_IMPORTED_MODULE_4__["ActivatedRoute"], _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"]])], PetsMainComponent); - /***/ - }, - - /***/ - "./src/app/modules/pets/models/pet.model.ts": - /*!**************************************************!*\ - !*** ./src/app/modules/pets/models/pet.model.ts ***! - \**************************************************/ - - /*! exports provided: PetModel */ - - /***/ - function srcAppModulesPetsModelsPetModelTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PetModel", function () { - return PetModel; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - - var PetModel = function PetModel() { - _classCallCheck(this, PetModel); - }; - /***/ - - }, - - /***/ - "./src/app/modules/pets/pets-routing.module.ts": - /*!*****************************************************!*\ - !*** ./src/app/modules/pets/pets-routing.module.ts ***! - \*****************************************************/ - - /*! exports provided: PetsRoutingModule */ - - /***/ - function srcAppModulesPetsPetsRoutingModuleTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PetsRoutingModule", function () { - return PetsRoutingModule; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* harmony import */ - - - var _components_pets_main_pets_main_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ./components/pets-main/pets-main.component */ - "./src/app/modules/pets/components/pets-main/pets-main.component.ts"); - - var routes = [{ - path: '', - component: _components_pets_main_pets_main_component__WEBPACK_IMPORTED_MODULE_3__["PetsMainComponent"] - }]; - - var PetsRoutingModule = function PetsRoutingModule() { - _classCallCheck(this, PetsRoutingModule); - }; - - PetsRoutingModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - imports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"].forChild(routes)], - exports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"]] - })], PetsRoutingModule); - /***/ - }, - - /***/ - "./src/app/modules/pets/pets.module.ts": - /*!*********************************************!*\ - !*** ./src/app/modules/pets/pets.module.ts ***! - \*********************************************/ - - /*! exports provided: PetsModule */ - - /***/ - function srcAppModulesPetsPetsModuleTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PetsModule", function () { - return PetsModule; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/common */ - "./node_modules/@angular/common/fesm2015/common.js"); - /* harmony import */ - - - var _pets_routing_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ./pets-routing.module */ - "./src/app/modules/pets/pets-routing.module.ts"); - /* harmony import */ - - - var _components_pets_list_pets_list_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! ./components/pets-list/pets-list.component */ - "./src/app/modules/pets/components/pets-list/pets-list.component.ts"); - /* harmony import */ - - - var _components_pets_form_pets_form_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( - /*! ./components/pets-form/pets-form.component */ - "./src/app/modules/pets/components/pets-form/pets-form.component.ts"); - /* harmony import */ - - - var _components_pets_main_pets_main_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( - /*! ./components/pets-main/pets-main.component */ - "./src/app/modules/pets/components/pets-main/pets-main.component.ts"); - /* harmony import */ - - - var _angular_forms__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__( - /*! @angular/forms */ - "./node_modules/@angular/forms/fesm2015/forms.js"); - - var PetsModule = function PetsModule() { - _classCallCheck(this, PetsModule); - }; - - PetsModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - declarations: [_components_pets_form_pets_form_component__WEBPACK_IMPORTED_MODULE_5__["PetsFormComponent"], _components_pets_list_pets_list_component__WEBPACK_IMPORTED_MODULE_4__["PetsListComponent"], _components_pets_main_pets_main_component__WEBPACK_IMPORTED_MODULE_6__["PetsMainComponent"]], - imports: [_angular_common__WEBPACK_IMPORTED_MODULE_2__["CommonModule"], _angular_forms__WEBPACK_IMPORTED_MODULE_7__["FormsModule"], _pets_routing_module__WEBPACK_IMPORTED_MODULE_3__["PetsRoutingModule"]] - })], PetsModule); - /***/ - }, - - /***/ - "./src/app/modules/pets/services/pets.service.ts": - /*!*******************************************************!*\ - !*** ./src/app/modules/pets/services/pets.service.ts ***! - \*******************************************************/ - - /*! exports provided: PetsService */ - - /***/ - function srcAppModulesPetsServicesPetsServiceTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PetsService", function () { - return PetsService; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_common_http__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/common/http */ - "./node_modules/@angular/common/fesm2015/http.js"); - /* harmony import */ - - - var _environments_environment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ../../../../environments/environment */ - "./src/environments/environment.ts"); - - var PetsService = - /*#__PURE__*/ - function () { - function PetsService(http) { - _classCallCheck(this, PetsService); - - this.http = http; - } - - _createClass(PetsService, [{ - key: "list", - value: function list(id) { - return this.http.get("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi, "/pets?owner=").concat(id)); - } - }, { - key: "delete", - value: function _delete(pet) { - return this.http.delete("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi, "/pets/").concat(pet.id)); - } - }, { - key: "modify", - value: function modify(pet) { - var data = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpParams"]().set('name', pet.name).set('kind', pet.kind).set('owner', pet.owner.toString()); - return this.http.put("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi, "/pets/").concat(pet.id), data); - } - }, { - key: "create", - value: function create(pet) { - var data = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpParams"]().set('name', pet.name).set('kind', pet.kind).set('owner', pet.owner.toString()); - return this.http.post("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi, "/pets"), data); - } - }]); - - return PetsService; - }(); - - PetsService.ctorParameters = function () { - return [{ - type: _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"] - }]; - }; - - PetsService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"]])], PetsService); - /***/ - } -}]); -//# sourceMappingURL=modules-pets-pets-module-es5.js.map \ No newline at end of file diff --git a/target/DAAExample/modules-pets-pets-module-es5.js.map b/target/DAAExample/modules-pets-pets-module-es5.js.map deleted file mode 100644 index 6e73f548f209ac92d2d06dc6607abcee164ef7ae..0000000000000000000000000000000000000000 --- a/target/DAAExample/modules-pets-pets-module-es5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["src/app/modules/pets/components/pets-form/pets-form.component.html","src/app/modules/pets/components/pets-list/pets-list.component.html","src/app/modules/pets/components/pets-main/pets-main.component.html","src/app/modules/pets/components/pets-form/pets-form.component.scss","src/app/modules/pets/components/pets-form/pets-form.component.ts","src/app/modules/pets/components/pets-list/pets-list.component.scss","src/app/modules/pets/components/pets-list/pets-list.component.ts","src/app/modules/pets/components/pets-main/pets-main.component.scss","src/app/modules/pets/components/pets-main/pets-main.component.ts","src/app/modules/pets/models/pet.model.ts","src/app/modules/pets/pets-routing.module.ts","src/app/modules/pets/pets.module.ts","src/app/modules/pets/services/pets.service.ts"],"names":[],"mappings":"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","sourcesContent":["export default \"\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\"","export default \"\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    NombreTipo 
    {{pet.name}}{{pet.kind}}\\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n\\r\\n\"","export default \"\\r\\n

    Mascotas

    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtZm9ybS9wZXRzLWZvcm0uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport { PetModel } from '../../models/pet.model';\r\n\r\n@Component({\r\n selector: 'app-pets-form',\r\n templateUrl: './pets-form.component.html',\r\n styleUrls: ['./pets-form.component.scss']\r\n})\r\nexport class PetsFormComponent {\r\n public activePet: PetModel;\r\n @Input()\r\n public owner: number;\r\n\r\n @Output()\r\n public readonly clean: EventEmitter;\r\n\r\n @Output()\r\n public readonly modify: EventEmitter;\r\n\r\n public name: string;\r\n public kind: string;\r\n \r\n constructor(\r\n private route: ActivatedRoute\r\n ) { \r\n this.clean = new EventEmitter();\r\n this.modify = new EventEmitter();\r\n }\r\n\r\n @Input()\r\n public set pet(pet: PetModel) {\r\n this.activePet = pet;\r\n this.name = pet.name;\r\n this.kind = pet.kind;\r\n }\r\n\r\n public get pet(): PetModel {\r\n return this.activePet;\r\n }\r\n\r\n public onClean() {\r\n this.clean.emit();\r\n }\r\n\r\n public onModify() {\r\n this.modify.emit({\r\n id: this.pet.id,\r\n name: this.name,\r\n kind: this.kind,\r\n owner: this.owner\r\n });\r\n }\r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtbGlzdC9wZXRzLWxpc3QuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, EventEmitter, OnInit, Input, Output } from '@angular/core';\r\nimport { PetModel} from '../../models/pet.model';\r\n@Component({\r\n selector: 'app-pets-list',\r\n templateUrl: './pets-list.component.html',\r\n styleUrls: ['./pets-list.component.scss']\r\n})\r\nexport class PetsListComponent {\r\n \r\n @Input()\r\n public pets: PetModel[] = [];\r\n\r\n @Output()\r\n public readonly delete: EventEmitter;\r\n\r\n @Output()\r\n public readonly edit: EventEmitter;\r\n\r\n constructor() { \r\n this.delete = new EventEmitter();\r\n this.edit = new EventEmitter();\r\n }\r\n\r\n public onDelete(pet: PetModel) {\r\n this.delete.emit(pet);\r\n }\r\n\r\n public onEdit(pet: PetModel) {\r\n this.edit.emit(pet);\r\n }\r\n\r\n \r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtbWFpbi9wZXRzLW1haW4uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\r\nimport {PetModel} from '../../models/pet.model';\r\nimport {PetsService} from '../../services/pets.service';\r\nimport {map, mergeMap} from 'rxjs/operators';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\n\r\n\r\n@Component({\r\n selector: 'app-pets-main',\r\n templateUrl: './pets-main.component.html',\r\n styleUrls: ['./pets-main.component.scss']\r\n})\r\nexport class PetsMainComponent implements OnInit {\r\n public id : number\r\n public activePet: PetModel;\r\n public pets: PetModel[];\r\n\r\n constructor(\r\n private readonly petsService: PetsService,\r\n private route: ActivatedRoute,\r\n private readonly router: Router\r\n ) { \r\n this.pets = [];\r\n this.clearActivePet()\r\n }\r\n\r\n ngOnInit() {\r\n this.id = this.route.snapshot.params.person;\r\n this.petsService.list(this.id)\r\n .subscribe(pets => this.pets = pets);\r\n \r\n }\r\n\r\n public onCleanForm(): void {\r\n this.clearActivePet();\r\n }\r\n\r\n public clearActivePet():void{\r\n this.activePet = { id: undefined, name: '', kind: '', owner: undefined };\r\n }\r\n\r\n public back(){\r\n this.router.navigate(['/']);\r\n }\r\n\r\n public onDelete(pet: PetModel): void {\r\n if (confirm(`¿Estás seguro de que deseas eliminar a ${pet.name}?`)) {\r\n this.petsService.delete(pet)\r\n .pipe(\r\n mergeMap(() => this.petsService.list(pet.owner))\r\n )\r\n .subscribe(pets => this.pets = pets);\r\n }\r\n }\r\n\r\n public onEdit(pet: PetModel): void {\r\n this.activePet = pet;\r\n console.log(\"Noe\")\r\n console.log(this.activePet)\r\n }\r\n\r\n public onModifyForm(pet: PetModel): void {\r\n if (pet.id === undefined) {\r\n this.petsService.create(pet)\r\n .pipe(\r\n mergeMap(() => this.petsService.list(pet.owner))\r\n )\r\n .subscribe(pets => {\r\n this.pets = pets;\r\n this.clearActivePet();\r\n });\r\n } else {\r\n this.petsService.modify(pet)\r\n .pipe(\r\n mergeMap(() => this.petsService.list(pet.owner))\r\n )\r\n .subscribe(pets => {\r\n this.pets = pets;\r\n this.clearActivePet();\r\n });\r\n }\r\n }\r\n\r\n}\r\n","export class PetModel {\r\n id?: number;\r\n name: string;\r\n kind: string;\r\n owner:number;\r\n }\r\n ","import {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {PetsMainComponent} from './components/pets-main/pets-main.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: PetsMainComponent\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class PetsRoutingModule { }\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\nimport {PetsRoutingModule} from './pets-routing.module';\nimport {PetsListComponent} from './components/pets-list/pets-list.component';\nimport {PetsFormComponent} from './components/pets-form/pets-form.component';\nimport {PetsMainComponent} from './components/pets-main/pets-main.component';\nimport {FormsModule} from '@angular/forms';\n\n@NgModule({\n declarations: [\n PetsFormComponent,\n PetsListComponent,\n PetsMainComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n PetsRoutingModule\n ]\n})\nexport class PetsModule { }\n","import { Injectable } from '@angular/core';\r\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\r\nimport {environment} from '../../../../environments/environment';\r\nimport {Observable} from 'rxjs';\r\nimport {PetModel} from '../models/pet.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PetsService {\r\n\r\n constructor(private readonly http: HttpClient) { }\r\n\r\n\r\n\r\n public list(id: number): Observable{\r\n return this.http.get(`${environment.restApi}/pets?owner=${id}`);\r\n }\r\n\r\n public delete(pet: PetModel): Observable {\r\n return this.http.delete(`${environment.restApi}/pets/${pet.id}`);\r\n }\r\n\r\n public modify(pet: PetModel): Observable {\r\n const data = new HttpParams()\r\n .set('name', pet.name)\r\n .set('kind', pet.kind)\r\n .set('owner', pet.owner.toString());\r\n\r\n return this.http.put(`${environment.restApi}/pets/${pet.id}`, data);\r\n }\r\n\r\n public create(pet: PetModel): Observable {\r\n const data = new HttpParams()\r\n .set('name', pet.name)\r\n .set('kind', pet.kind)\r\n .set('owner', pet.owner.toString());\r\n\r\n return this.http.post(`${environment.restApi}/pets`, data);\r\n }\r\n}\r\n"],"sourceRoot":"webpack:///","file":"modules-pets-pets-module-es5.js"} \ No newline at end of file diff --git a/target/DAAExample/polyfills-es2015.js b/target/DAAExample/polyfills-es2015.js deleted file mode 100644 index 65bf6c9c3914ce814ca9747c10f642f3a199bb9d..0000000000000000000000000000000000000000 --- a/target/DAAExample/polyfills-es2015.js +++ /dev/null @@ -1,6495 +0,0 @@ -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["polyfills"],{ - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js ***! - \*************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = function (it) { - if (typeof it != 'function') { - throw TypeError(String(it) + ' is not a function'); - } return it; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js": -/*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js ***! - \***********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - -module.exports = function (it) { - if (!isObject(it) && it !== null) { - throw TypeError("Can't set " + String(it) + ' as a prototype'); - } return it; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js ***! - \**************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = function (it, Constructor, name) { - if (!(it instanceof Constructor)) { - throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation'); - } return it; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - -module.exports = function (it) { - if (!isObject(it)) { - throw TypeError(String(it) + ' is not an object'); - } return it; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js ***! - \*****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); -var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); -var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js"); - -// `Array.prototype.{ indexOf, includes }` methods implementation -var createMethod = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare - if (value != value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; - -module.exports = { - // `Array.prototype.includes` method - // https://tc39.github.io/ecma262/#sec-array.prototype.includes - includes: createMethod(true), - // `Array.prototype.indexOf` method - // https://tc39.github.io/ecma262/#sec-array.prototype.indexof - indexOf: createMethod(false) -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js ***! - \******************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js"); -var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js"); -var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); -var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); -var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js"); - -var push = [].push; - -// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation -var createMethod = function (TYPE) { - var IS_MAP = TYPE == 1; - var IS_FILTER = TYPE == 2; - var IS_SOME = TYPE == 3; - var IS_EVERY = TYPE == 4; - var IS_FIND_INDEX = TYPE == 6; - var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; - return function ($this, callbackfn, that, specificCreate) { - var O = toObject($this); - var self = IndexedObject(O); - var boundFunction = bind(callbackfn, that, 3); - var length = toLength(self.length); - var index = 0; - var create = specificCreate || arraySpeciesCreate; - var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; - var value, result; - for (;length > index; index++) if (NO_HOLES || index in self) { - value = self[index]; - result = boundFunction(value, index, O); - if (TYPE) { - if (IS_MAP) target[index] = result; // map - else if (result) switch (TYPE) { - case 3: return true; // some - case 5: return value; // find - case 6: return index; // findIndex - case 2: push.call(target, value); // filter - } else if (IS_EVERY) return false; // every - } - } - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; - }; -}; - -module.exports = { - // `Array.prototype.forEach` method - // https://tc39.github.io/ecma262/#sec-array.prototype.foreach - forEach: createMethod(0), - // `Array.prototype.map` method - // https://tc39.github.io/ecma262/#sec-array.prototype.map - map: createMethod(1), - // `Array.prototype.filter` method - // https://tc39.github.io/ecma262/#sec-array.prototype.filter - filter: createMethod(2), - // `Array.prototype.some` method - // https://tc39.github.io/ecma262/#sec-array.prototype.some - some: createMethod(3), - // `Array.prototype.every` method - // https://tc39.github.io/ecma262/#sec-array.prototype.every - every: createMethod(4), - // `Array.prototype.find` method - // https://tc39.github.io/ecma262/#sec-array.prototype.find - find: createMethod(5), - // `Array.prototype.findIndex` method - // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex - findIndex: createMethod(6) -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js": -/*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js ***! - \***********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); -var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - -var SPECIES = wellKnownSymbol('species'); - -// `ArraySpeciesCreate` abstract operation -// https://tc39.github.io/ecma262/#sec-arrayspeciescreate -module.exports = function (originalArray, length) { - var C; - if (isArray(originalArray)) { - C = originalArray.constructor; - // cross-realm fallback - if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; - else if (isObject(C)) { - C = C[SPECIES]; - if (C === null) C = undefined; - } - } return new (C === undefined ? Array : C)(length === 0 ? 0 : length); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js": -/*!***********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js ***! - \***********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - -// call something on iterator step with safe closing on error -module.exports = function (iterator, fn, value, ENTRIES) { - try { - return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); - // 7.4.6 IteratorClose(iterator, completion) - } catch (error) { - var returnMethod = iterator['return']; - if (returnMethod !== undefined) anObject(returnMethod.call(iterator)); - throw error; - } -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js": -/*!*********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js ***! - \*********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - -var ITERATOR = wellKnownSymbol('iterator'); -var SAFE_CLOSING = false; - -try { - var called = 0; - var iteratorWithReturn = { - next: function () { - return { done: !!called++ }; - }, - 'return': function () { - SAFE_CLOSING = true; - } - }; - iteratorWithReturn[ITERATOR] = function () { - return this; - }; - // eslint-disable-next-line no-throw-literal - Array.from(iteratorWithReturn, function () { throw 2; }); -} catch (error) { /* empty */ } - -module.exports = function (exec, SKIP_CLOSING) { - if (!SKIP_CLOSING && !SAFE_CLOSING) return false; - var ITERATION_SUPPORT = false; - try { - var object = {}; - object[ITERATOR] = function () { - return { - next: function () { - return { done: ITERATION_SUPPORT = true }; - } - }; - }; - exec(object); - } catch (error) { /* empty */ } - return ITERATION_SUPPORT; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js ***! - \**************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var toString = {}.toString; - -module.exports = function (it) { - return toString.call(it).slice(8, -1); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js ***! - \**********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js"); -var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - -var TO_STRING_TAG = wellKnownSymbol('toStringTag'); -// ES3 wrong here -var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; - -// fallback for IE11 Script Access Denied error -var tryGet = function (it, key) { - try { - return it[key]; - } catch (error) { /* empty */ } -}; - -// getting tag from ES6+ `Object.prototype.toString` -module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag - // builtinTag case - : CORRECT_ARGUMENTS ? classofRaw(O) - // ES3 arguments fallback - : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; -var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); -var redefineAll = __webpack_require__(/*! ../internals/redefine-all */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js"); -var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js"); -var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js"); -var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); -var defineIterator = __webpack_require__(/*! ../internals/define-iterator */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js"); -var setSpecies = __webpack_require__(/*! ../internals/set-species */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js"); -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); -var fastKey = __webpack_require__(/*! ../internals/internal-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js").fastKey; -var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - -var setInternalState = InternalStateModule.set; -var internalStateGetterFor = InternalStateModule.getterFor; - -module.exports = { - getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { - var C = wrapper(function (that, iterable) { - anInstance(that, C, CONSTRUCTOR_NAME); - setInternalState(that, { - type: CONSTRUCTOR_NAME, - index: create(null), - first: undefined, - last: undefined, - size: 0 - }); - if (!DESCRIPTORS) that.size = 0; - if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); - }); - - var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); - - var define = function (that, key, value) { - var state = getInternalState(that); - var entry = getEntry(that, key); - var previous, index; - // change existing entry - if (entry) { - entry.value = value; - // create new entry - } else { - state.last = entry = { - index: index = fastKey(key, true), - key: key, - value: value, - previous: previous = state.last, - next: undefined, - removed: false - }; - if (!state.first) state.first = entry; - if (previous) previous.next = entry; - if (DESCRIPTORS) state.size++; - else that.size++; - // add to index - if (index !== 'F') state.index[index] = entry; - } return that; - }; - - var getEntry = function (that, key) { - var state = getInternalState(that); - // fast case - var index = fastKey(key); - var entry; - if (index !== 'F') return state.index[index]; - // frozen object case - for (entry = state.first; entry; entry = entry.next) { - if (entry.key == key) return entry; - } - }; - - redefineAll(C.prototype, { - // 23.1.3.1 Map.prototype.clear() - // 23.2.3.2 Set.prototype.clear() - clear: function clear() { - var that = this; - var state = getInternalState(that); - var data = state.index; - var entry = state.first; - while (entry) { - entry.removed = true; - if (entry.previous) entry.previous = entry.previous.next = undefined; - delete data[entry.index]; - entry = entry.next; - } - state.first = state.last = undefined; - if (DESCRIPTORS) state.size = 0; - else that.size = 0; - }, - // 23.1.3.3 Map.prototype.delete(key) - // 23.2.3.4 Set.prototype.delete(value) - 'delete': function (key) { - var that = this; - var state = getInternalState(that); - var entry = getEntry(that, key); - if (entry) { - var next = entry.next; - var prev = entry.previous; - delete state.index[entry.index]; - entry.removed = true; - if (prev) prev.next = next; - if (next) next.previous = prev; - if (state.first == entry) state.first = next; - if (state.last == entry) state.last = prev; - if (DESCRIPTORS) state.size--; - else that.size--; - } return !!entry; - }, - // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) - // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) - forEach: function forEach(callbackfn /* , that = undefined */) { - var state = getInternalState(this); - var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); - var entry; - while (entry = entry ? entry.next : state.first) { - boundFunction(entry.value, entry.key, this); - // revert to the last existing entry - while (entry && entry.removed) entry = entry.previous; - } - }, - // 23.1.3.7 Map.prototype.has(key) - // 23.2.3.7 Set.prototype.has(value) - has: function has(key) { - return !!getEntry(this, key); - } - }); - - redefineAll(C.prototype, IS_MAP ? { - // 23.1.3.6 Map.prototype.get(key) - get: function get(key) { - var entry = getEntry(this, key); - return entry && entry.value; - }, - // 23.1.3.9 Map.prototype.set(key, value) - set: function set(key, value) { - return define(this, key === 0 ? 0 : key, value); - } - } : { - // 23.2.3.1 Set.prototype.add(value) - add: function add(value) { - return define(this, value = value === 0 ? 0 : value, value); - } - }); - if (DESCRIPTORS) defineProperty(C.prototype, 'size', { - get: function () { - return getInternalState(this).size; - } - }); - return C; - }, - setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) { - var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator'; - var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME); - var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME); - // add .keys, .values, .entries, [@@iterator] - // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 - defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) { - setInternalState(this, { - type: ITERATOR_NAME, - target: iterated, - state: getInternalCollectionState(iterated), - kind: kind, - last: undefined - }); - }, function () { - var state = getInternalIteratorState(this); - var kind = state.kind; - var entry = state.last; - // revert to the last existing entry - while (entry && entry.removed) entry = entry.previous; - // get next entry - if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) { - // or finish the iteration - state.target = undefined; - return { value: undefined, done: true }; - } - // return step by kind - if (kind == 'keys') return { value: entry.key, done: false }; - if (kind == 'values') return { value: entry.value, done: false }; - return { value: [entry.key, entry.value], done: false }; - }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); - - // add [@@species], 23.1.2.2, 23.2.2.2 - setSpecies(CONSTRUCTOR_NAME); - } -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-weak.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-weak.js ***! - \******************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var redefineAll = __webpack_require__(/*! ../internals/redefine-all */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js"); -var getWeakData = __webpack_require__(/*! ../internals/internal-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js").getWeakData; -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); -var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js"); -var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); -var ArrayIterationModule = __webpack_require__(/*! ../internals/array-iteration */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js"); -var $has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - -var setInternalState = InternalStateModule.set; -var internalStateGetterFor = InternalStateModule.getterFor; -var find = ArrayIterationModule.find; -var findIndex = ArrayIterationModule.findIndex; -var id = 0; - -// fallback for uncaught frozen keys -var uncaughtFrozenStore = function (store) { - return store.frozen || (store.frozen = new UncaughtFrozenStore()); -}; - -var UncaughtFrozenStore = function () { - this.entries = []; -}; - -var findUncaughtFrozen = function (store, key) { - return find(store.entries, function (it) { - return it[0] === key; - }); -}; - -UncaughtFrozenStore.prototype = { - get: function (key) { - var entry = findUncaughtFrozen(this, key); - if (entry) return entry[1]; - }, - has: function (key) { - return !!findUncaughtFrozen(this, key); - }, - set: function (key, value) { - var entry = findUncaughtFrozen(this, key); - if (entry) entry[1] = value; - else this.entries.push([key, value]); - }, - 'delete': function (key) { - var index = findIndex(this.entries, function (it) { - return it[0] === key; - }); - if (~index) this.entries.splice(index, 1); - return !!~index; - } -}; - -module.exports = { - getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { - var C = wrapper(function (that, iterable) { - anInstance(that, C, CONSTRUCTOR_NAME); - setInternalState(that, { - type: CONSTRUCTOR_NAME, - id: id++, - frozen: undefined - }); - if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); - }); - - var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); - - var define = function (that, key, value) { - var state = getInternalState(that); - var data = getWeakData(anObject(key), true); - if (data === true) uncaughtFrozenStore(state).set(key, value); - else data[state.id] = value; - return that; - }; - - redefineAll(C.prototype, { - // 23.3.3.2 WeakMap.prototype.delete(key) - // 23.4.3.3 WeakSet.prototype.delete(value) - 'delete': function (key) { - var state = getInternalState(this); - if (!isObject(key)) return false; - var data = getWeakData(key); - if (data === true) return uncaughtFrozenStore(state)['delete'](key); - return data && $has(data, state.id) && delete data[state.id]; - }, - // 23.3.3.4 WeakMap.prototype.has(key) - // 23.4.3.4 WeakSet.prototype.has(value) - has: function has(key) { - var state = getInternalState(this); - if (!isObject(key)) return false; - var data = getWeakData(key); - if (data === true) return uncaughtFrozenStore(state).has(key); - return data && $has(data, state.id); - } - }); - - redefineAll(C.prototype, IS_MAP ? { - // 23.3.3.3 WeakMap.prototype.get(key) - get: function get(key) { - var state = getInternalState(this); - if (isObject(key)) { - var data = getWeakData(key); - if (data === true) return uncaughtFrozenStore(state).get(key); - return data ? data[state.id] : undefined; - } - }, - // 23.3.3.5 WeakMap.prototype.set(key, value) - set: function set(key, value) { - return define(this, key, value); - } - } : { - // 23.4.3.1 WeakSet.prototype.add(value) - add: function add(value) { - return define(this, value, true); - } - }); - - return C; - } -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js ***! - \*************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js"); -var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); -var InternalMetadataModule = __webpack_require__(/*! ../internals/internal-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js"); -var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); -var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); -var checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js"); -var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); -var inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js"); - -module.exports = function (CONSTRUCTOR_NAME, wrapper, common) { - var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1; - var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1; - var ADDER = IS_MAP ? 'set' : 'add'; - var NativeConstructor = global[CONSTRUCTOR_NAME]; - var NativePrototype = NativeConstructor && NativeConstructor.prototype; - var Constructor = NativeConstructor; - var exported = {}; - - var fixMethod = function (KEY) { - var nativeMethod = NativePrototype[KEY]; - redefine(NativePrototype, KEY, - KEY == 'add' ? function add(value) { - nativeMethod.call(this, value === 0 ? 0 : value); - return this; - } : KEY == 'delete' ? function (key) { - return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); - } : KEY == 'get' ? function get(key) { - return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key); - } : KEY == 'has' ? function has(key) { - return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); - } : function set(key, value) { - nativeMethod.call(this, key === 0 ? 0 : key, value); - return this; - } - ); - }; - - // eslint-disable-next-line max-len - if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () { - new NativeConstructor().entries().next(); - })))) { - // create collection constructor - Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); - InternalMetadataModule.REQUIRED = true; - } else if (isForced(CONSTRUCTOR_NAME, true)) { - var instance = new Constructor(); - // early implementations not supports chaining - var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; - // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false - var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); - // most early implementations doesn't supports iterables, most modern - not close it correctly - // eslint-disable-next-line no-new - var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); }); - // for early implementations -0 and +0 not the same - var BUGGY_ZERO = !IS_WEAK && fails(function () { - // V8 ~ Chromium 42- fails only with 5+ elements - var $instance = new NativeConstructor(); - var index = 5; - while (index--) $instance[ADDER](index, index); - return !$instance.has(-0); - }); - - if (!ACCEPT_ITERABLES) { - Constructor = wrapper(function (dummy, iterable) { - anInstance(dummy, Constructor, CONSTRUCTOR_NAME); - var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor); - if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); - return that; - }); - Constructor.prototype = NativePrototype; - NativePrototype.constructor = Constructor; - } - - if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { - fixMethod('delete'); - fixMethod('has'); - IS_MAP && fixMethod('get'); - } - - if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); - - // weak collections should not contains .clear method - if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear; - } - - exported[CONSTRUCTOR_NAME] = Constructor; - $({ global: true, forced: Constructor != NativeConstructor }, exported); - - setToStringTag(Constructor, CONSTRUCTOR_NAME); - - if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); - - return Constructor; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js": -/*!******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js ***! - \******************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js"); -var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js"); -var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - -module.exports = function (target, source) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js": -/*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js ***! - \***************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - -module.exports = !fails(function () { - function F() { /* empty */ } - F.prototype.constructor = null; - return Object.getPrototypeOf(new F()) !== F.prototype; -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-iterator-constructor.js": -/*!******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-iterator-constructor.js ***! - \******************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js").IteratorPrototype; -var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); -var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); -var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); -var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); - -var returnThis = function () { return this; }; - -module.exports = function (IteratorConstructor, NAME, next) { - var TO_STRING_TAG = NAME + ' Iterator'; - IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) }); - setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); - Iterators[TO_STRING_TAG] = returnThis; - return IteratorConstructor; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js": -/*!*********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js ***! - \*********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); -var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); -var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); - -module.exports = DESCRIPTORS ? function (object, key, value) { - return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js": -/*!*****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js ***! - \*****************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js ***! - \******************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-iterator-constructor.js"); -var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); -var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js"); -var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); -var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); -var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); -var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); -var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); -var IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js"); - -var IteratorPrototype = IteratorsCore.IteratorPrototype; -var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; -var ITERATOR = wellKnownSymbol('iterator'); -var KEYS = 'keys'; -var VALUES = 'values'; -var ENTRIES = 'entries'; - -var returnThis = function () { return this; }; - -module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { - createIteratorConstructor(IteratorConstructor, NAME, next); - - var getIterationMethod = function (KIND) { - if (KIND === DEFAULT && defaultIterator) return defaultIterator; - if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; - switch (KIND) { - case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; - case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; - case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; - } return function () { return new IteratorConstructor(this); }; - }; - - var TO_STRING_TAG = NAME + ' Iterator'; - var INCORRECT_VALUES_NAME = false; - var IterablePrototype = Iterable.prototype; - var nativeIterator = IterablePrototype[ITERATOR] - || IterablePrototype['@@iterator'] - || DEFAULT && IterablePrototype[DEFAULT]; - var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); - var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; - var CurrentIteratorPrototype, methods, KEY; - - // fix native - if (anyNativeIterator) { - CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); - if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { - if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { - if (setPrototypeOf) { - setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); - } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') { - createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis); - } - } - // Set @@toStringTag to native iterators - setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); - if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; - } - } - - // fix Array#{values, @@iterator}.name in V8 / FF - if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { - INCORRECT_VALUES_NAME = true; - defaultIterator = function values() { return nativeIterator.call(this); }; - } - - // define iterator - if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { - createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator); - } - Iterators[NAME] = defaultIterator; - - // export additional methods - if (DEFAULT) { - methods = { - values: getIterationMethod(VALUES), - keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), - entries: getIterationMethod(ENTRIES) - }; - if (FORCED) for (KEY in methods) { - if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { - redefine(IterablePrototype, KEY, methods[KEY]); - } - } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); - } - - return methods; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js ***! - \**************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - -// Thank's IE8 for his funny defineProperty -module.exports = !fails(function () { - return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js": -/*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js ***! - \**************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - -var document = global.document; -// typeof document.createElement is 'object' in old IE -var EXISTS = isObject(document) && isObject(document.createElement); - -module.exports = function (it) { - return EXISTS ? document.createElement(it) : {}; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js ***! - \****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -// IE8- don't enum bug keys -module.exports = [ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' -]; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js ***! - \*********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js").f; -var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); -var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); -var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js"); -var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js"); -var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js"); - -/* - options.target - name of the target object - options.global - target is the global object - options.stat - export as static methods of target - options.proto - export as prototype methods of target - options.real - real prototype method for the `pure` version - options.forced - export even if the native feature is available - options.bind - bind methods to the target, required for the `pure` version - options.wrap - wrap constructors to preventing global pollution, required for the `pure` version - options.unsafe - use the simple assignment of property instead of delete + defineProperty - options.sham - add a flag to not completely full polyfills - options.enumerable - export as enumerable property - options.noTargetGet - prevent calling a getter on target -*/ -module.exports = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global; - } else if (STATIC) { - target = global[TARGET] || setGlobal(TARGET, {}); - } else { - target = (global[TARGET] || {}).prototype; - } - if (target) for (key in source) { - sourceProperty = source[key]; - if (options.noTargetGet) { - descriptor = getOwnPropertyDescriptor(target, key); - targetProperty = descriptor && descriptor.value; - } else targetProperty = target[key]; - FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); - // contained in target - if (!FORCED && targetProperty !== undefined) { - if (typeof sourceProperty === typeof targetProperty) continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - // add a flag to not completely full polyfills - if (options.sham || (targetProperty && targetProperty.sham)) { - createNonEnumerableProperty(sourceProperty, 'sham', true); - } - // extend global - redefine(target, key, sourceProperty, options); - } -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js": -/*!********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js ***! - \********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js ***! - \***********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - -module.exports = !fails(function () { - return Object.isExtensible(Object.preventExtensions({})); -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js": -/*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js ***! - \************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var aFunction = __webpack_require__(/*! ../internals/a-function */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - -// optional / simple context binding -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - switch (length) { - case 0: return function () { - return fn.call(that); - }; - case 1: return function (a) { - return fn.call(that, a); - }; - case 2: return function (a, b) { - return fn.call(that, a, b); - }; - case 3: return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function (/* ...args */) { - return fn.apply(that, arguments); - }; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js ***! - \***************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var path = __webpack_require__(/*! ../internals/path */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js"); -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - -var aFunction = function (variable) { - return typeof variable == 'function' ? variable : undefined; -}; - -module.exports = function (namespace, method) { - return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) - : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method]; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js": -/*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js ***! - \**********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js"); -var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - -var ITERATOR = wellKnownSymbol('iterator'); - -module.exports = function (it) { - if (it != undefined) return it[ITERATOR] - || it['@@iterator'] - || Iterators[classof(it)]; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js ***! - \*********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var check = function (it) { - return it && it.Math == Math && it; -}; - -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -module.exports = - // eslint-disable-next-line no-undef - check(typeof globalThis == 'object' && globalThis) || - check(typeof window == 'object' && window) || - check(typeof self == 'object' && self) || - check(typeof global == 'object' && global) || - // eslint-disable-next-line no-new-func - Function('return this')(); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js": -/*!******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js ***! - \******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var hasOwnProperty = {}.hasOwnProperty; - -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js ***! - \**************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = {}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js": -/*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js ***! - \*******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - -module.exports = getBuiltIn('document', 'documentElement'); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js ***! - \*****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); -var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js"); - -// Thank's IE8 for his funny defineProperty -module.exports = !DESCRIPTORS && !fails(function () { - return Object.defineProperty(createElement('div'), 'a', { - get: function () { return 7; } - }).a != 7; -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js ***! - \*****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); -var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - -var split = ''.split; - -// fallback for non-array-like ES3 and non-enumerable old V8 strings -module.exports = fails(function () { - // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins - return !Object('z').propertyIsEnumerable(0); -}) ? function (it) { - return classof(it) == 'String' ? split.call(it, '') : Object(it); -} : Object; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js": -/*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js ***! - \**********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); -var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js"); - -// makes subclassing work correct for wrapped built-ins -module.exports = function ($this, dummy, Wrapper) { - var NewTarget, NewTargetPrototype; - if ( - // it can work only with native `setPrototypeOf` - setPrototypeOf && - // we haven't completely correct pre-ES6 way for getting `new.target`, so use this - typeof (NewTarget = dummy.constructor) == 'function' && - NewTarget !== Wrapper && - isObject(NewTargetPrototype = NewTarget.prototype) && - NewTargetPrototype !== Wrapper.prototype - ) setPrototypeOf($this, NewTargetPrototype); - return $this; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js ***! - \*****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js"); - -var functionToString = Function.toString; - -// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper -if (typeof store.inspectSource != 'function') { - store.inspectSource = function (it) { - return functionToString.call(it); - }; -} - -module.exports = store.inspectSource; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; -var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js"); -var FREEZING = __webpack_require__(/*! ../internals/freezing */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js"); - -var METADATA = uid('meta'); -var id = 0; - -var isExtensible = Object.isExtensible || function () { - return true; -}; - -var setMetadata = function (it) { - defineProperty(it, METADATA, { value: { - objectID: 'O' + ++id, // object ID - weakData: {} // weak collections IDs - } }); -}; - -var fastKey = function (it, create) { - // return a primitive with prefix - if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - if (!has(it, METADATA)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return 'F'; - // not necessary to add metadata - if (!create) return 'E'; - // add missing metadata - setMetadata(it); - // return object ID - } return it[METADATA].objectID; -}; - -var getWeakData = function (it, create) { - if (!has(it, METADATA)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return true; - // not necessary to add metadata - if (!create) return false; - // add missing metadata - setMetadata(it); - // return the store of weak collections IDs - } return it[METADATA].weakData; -}; - -// add metadata on freeze-family methods calling -var onFreeze = function (it) { - if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it); - return it; -}; - -var meta = module.exports = { - REQUIRED: false, - fastKey: fastKey, - getWeakData: getWeakData, - onFreeze: onFreeze -}; - -hiddenKeys[METADATA] = true; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js ***! - \*****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js"); -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); -var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); -var objectHas = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js"); -var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); - -var WeakMap = global.WeakMap; -var set, get, has; - -var enforce = function (it) { - return has(it) ? get(it) : set(it, {}); -}; - -var getterFor = function (TYPE) { - return function (it) { - var state; - if (!isObject(it) || (state = get(it)).type !== TYPE) { - throw TypeError('Incompatible receiver, ' + TYPE + ' required'); - } return state; - }; -}; - -if (NATIVE_WEAK_MAP) { - var store = new WeakMap(); - var wmget = store.get; - var wmhas = store.has; - var wmset = store.set; - set = function (it, metadata) { - wmset.call(store, it, metadata); - return metadata; - }; - get = function (it) { - return wmget.call(store, it) || {}; - }; - has = function (it) { - return wmhas.call(store, it); - }; -} else { - var STATE = sharedKey('state'); - hiddenKeys[STATE] = true; - set = function (it, metadata) { - createNonEnumerableProperty(it, STATE, metadata); - return metadata; - }; - get = function (it) { - return objectHas(it, STATE) ? it[STATE] : {}; - }; - has = function (it) { - return objectHas(it, STATE); - }; -} - -module.exports = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js": -/*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js ***! - \***************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); -var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); - -var ITERATOR = wellKnownSymbol('iterator'); -var ArrayPrototype = Array.prototype; - -// check on default Array iterator -module.exports = function (it) { - return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js ***! - \***********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - -// `IsArray` abstract operation -// https://tc39.github.io/ecma262/#sec-isarray -module.exports = Array.isArray || function isArray(arg) { - return classof(arg) == 'Array'; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - -var replacement = /#|\.prototype\./; - -var isForced = function (feature, detection) { - var value = data[normalize(feature)]; - return value == POLYFILL ? true - : value == NATIVE ? false - : typeof detection == 'function' ? fails(detection) - : !!detection; -}; - -var normalize = isForced.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); -}; - -var data = isForced.data = {}; -var NATIVE = isForced.NATIVE = 'N'; -var POLYFILL = isForced.POLYFILL = 'P'; - -module.exports = isForced; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js ***! - \**********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = false; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js ***! - \**********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js"); -var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); -var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js"); -var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js"); -var callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js"); - -var Result = function (stopped, result) { - this.stopped = stopped; - this.result = result; -}; - -var iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) { - var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1); - var iterator, iterFn, index, length, result, next, step; - - if (IS_ITERATOR) { - iterator = iterable; - } else { - iterFn = getIteratorMethod(iterable); - if (typeof iterFn != 'function') throw TypeError('Target is not iterable'); - // optimisation for array iterators - if (isArrayIteratorMethod(iterFn)) { - for (index = 0, length = toLength(iterable.length); length > index; index++) { - result = AS_ENTRIES - ? boundFunction(anObject(step = iterable[index])[0], step[1]) - : boundFunction(iterable[index]); - if (result && result instanceof Result) return result; - } return new Result(false); - } - iterator = iterFn.call(iterable); - } - - next = iterator.next; - while (!(step = next.call(iterator)).done) { - result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES); - if (typeof result == 'object' && result && result instanceof Result) return result; - } return new Result(false); -}; - -iterate.stop = function (result) { - return new Result(true, result); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js ***! - \*****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); -var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); -var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); - -var ITERATOR = wellKnownSymbol('iterator'); -var BUGGY_SAFARI_ITERATORS = false; - -var returnThis = function () { return this; }; - -// `%IteratorPrototype%` object -// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object -var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; - -if ([].keys) { - arrayIterator = [].keys(); - // Safari 8 has buggy iterators w/o `next` - if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; - else { - PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); - if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; - } -} - -if (IteratorPrototype == undefined) IteratorPrototype = {}; - -// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) { - createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis); -} - -module.exports = { - IteratorPrototype: IteratorPrototype, - BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = {}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js ***! - \****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - -module.exports = !!Object.getOwnPropertySymbols && !fails(function () { - // Chrome 38 Symbol has incorrect toString conversion - // eslint-disable-next-line no-undef - return !String(Symbol()); -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js ***! - \******************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js"); - -var WeakMap = global.WeakMap; - -module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap)); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js ***! - \****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js"); -var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js"); -var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); -var html = __webpack_require__(/*! ../internals/html */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js"); -var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js"); -var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js"); - -var GT = '>'; -var LT = '<'; -var PROTOTYPE = 'prototype'; -var SCRIPT = 'script'; -var IE_PROTO = sharedKey('IE_PROTO'); - -var EmptyConstructor = function () { /* empty */ }; - -var scriptTag = function (content) { - return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; -}; - -// Create object with fake `null` prototype: use ActiveX Object with cleared prototype -var NullProtoObjectViaActiveX = function (activeXDocument) { - activeXDocument.write(scriptTag('')); - activeXDocument.close(); - var temp = activeXDocument.parentWindow.Object; - activeXDocument = null; // avoid memory leak - return temp; -}; - -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var NullProtoObjectViaIFrame = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = documentCreateElement('iframe'); - var JS = 'java' + SCRIPT + ':'; - var iframeDocument; - iframe.style.display = 'none'; - html.appendChild(iframe); - // https://github.com/zloirock/core-js/issues/475 - iframe.src = String(JS); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(scriptTag('document.F=Object')); - iframeDocument.close(); - return iframeDocument.F; -}; - -// Check for document.domain and active x support -// No need to use active x approach when document.domain is not set -// see https://github.com/es-shims/es5-shim/issues/150 -// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 -// avoid IE GC bug -var activeXDocument; -var NullProtoObject = function () { - try { - /* global ActiveXObject */ - activeXDocument = document.domain && new ActiveXObject('htmlfile'); - } catch (error) { /* ignore */ } - NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame(); - var length = enumBugKeys.length; - while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; - return NullProtoObject(); -}; - -hiddenKeys[IE_PROTO] = true; - -// `Object.create` method -// https://tc39.github.io/ecma262/#sec-object.create -module.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - EmptyConstructor[PROTOTYPE] = anObject(O); - result = new EmptyConstructor(); - EmptyConstructor[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = NullProtoObject(); - return Properties === undefined ? result : defineProperties(result, Properties); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js": -/*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js ***! - \***************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); -var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js"); - -// `Object.defineProperties` method -// https://tc39.github.io/ecma262/#sec-object.defineproperties -module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = objectKeys(Properties); - var length = keys.length; - var index = 0; - var key; - while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]); - return O; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js": -/*!*************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js ***! - \*************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); -var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - -var nativeDefineProperty = Object.defineProperty; - -// `Object.defineProperty` method -// https://tc39.github.io/ecma262/#sec-object.defineproperty -exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return nativeDefineProperty(O, P, Attributes); - } catch (error) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js": -/*!*************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js ***! - \*************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); -var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js"); -var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); -var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); -var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js"); - -var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - -// `Object.getOwnPropertyDescriptor` method -// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor -exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return nativeGetOwnPropertyDescriptor(O, P); - } catch (error) { /* empty */ } - if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js": -/*!********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js ***! - \********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js"); -var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js"); - -var hiddenKeys = enumBugKeys.concat('length', 'prototype'); - -// `Object.getOwnPropertyNames` method -// https://tc39.github.io/ecma262/#sec-object.getownpropertynames -exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys(O, hiddenKeys); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js": -/*!**********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js ***! - \**********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -exports.f = Object.getOwnPropertySymbols; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js": -/*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js ***! - \**************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); -var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js"); -var CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js"); - -var IE_PROTO = sharedKey('IE_PROTO'); -var ObjectPrototype = Object.prototype; - -// `Object.getPrototypeOf` method -// https://tc39.github.io/ecma262/#sec-object.getprototypeof -module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) return O[IE_PROTO]; - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } return O instanceof Object ? ObjectPrototype : null; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js": -/*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js ***! - \***********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); -var indexOf = __webpack_require__(/*! ../internals/array-includes */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js").indexOf; -var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); - -module.exports = function (object, names) { - var O = toIndexedObject(object); - var i = 0; - var result = []; - var key; - for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key); - // Don't enum bug & hidden keys - while (names.length > i) if (has(O, key = names[i++])) { - ~indexOf(result, key) || result.push(key); - } - return result; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js ***! - \**************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js"); -var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js"); - -// `Object.keys` method -// https://tc39.github.io/ecma262/#sec-object.keys -module.exports = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js": -/*!********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js ***! - \********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var nativePropertyIsEnumerable = {}.propertyIsEnumerable; -var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - -// Nashorn ~ JDK8 bug -var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); - -// `Object.prototype.propertyIsEnumerable` method implementation -// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable -exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor(this, V); - return !!descriptor && descriptor.enumerable; -} : nativePropertyIsEnumerable; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js": -/*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js ***! - \**************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js"); - -// `Object.setPrototypeOf` method -// https://tc39.github.io/ecma262/#sec-object.setprototypeof -// Works with __proto__ only. Old v8 can't work with null proto objects. -/* eslint-disable no-proto */ -module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { - var CORRECT_SETTER = false; - var test = {}; - var setter; - try { - setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; - setter.call(test, []); - CORRECT_SETTER = test instanceof Array; - } catch (error) { /* empty */ } - return function setPrototypeOf(O, proto) { - anObject(O); - aPossiblePrototype(proto); - if (CORRECT_SETTER) setter.call(O, proto); - else O.__proto__ = proto; - return O; - }; -}() : undefined); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js ***! - \***********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); -var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js"); -var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - -// all object keys, includes non-enumerable and symbols -module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js": -/*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js ***! - \*******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - -module.exports = global; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js ***! - \***************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - -module.exports = function (target, src, options) { - for (var key in src) redefine(target, key, src[key], options); - return target; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js ***! - \***********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js"); -var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js"); -var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - -var getInternalState = InternalStateModule.get; -var enforceInternalState = InternalStateModule.enforce; -var TEMPLATE = String(String).split('String'); - -(module.exports = function (O, key, value, options) { - var unsafe = options ? !!options.unsafe : false; - var simple = options ? !!options.enumerable : false; - var noTargetGet = options ? !!options.noTargetGet : false; - if (typeof value == 'function') { - if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key); - enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); - } - if (O === global) { - if (simple) O[key] = value; - else setGlobal(key, value); - return; - } else if (!unsafe) { - delete O[key]; - } else if (!noTargetGet && O[key]) { - simple = true; - } - if (simple) O[key] = value; - else createNonEnumerableProperty(O, key, value); -// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative -})(Function.prototype, 'toString', function toString() { - return typeof this == 'function' && getInternalState(this).source || inspectSource(this); -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js ***! - \*******************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` -var Map = __webpack_require__(/*! ../modules/es.map */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js"); -var WeakMap = __webpack_require__(/*! ../modules/es.weak-map */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js"); -var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js"); - -var metadata = shared('metadata'); -var store = metadata.store || (metadata.store = new WeakMap()); - -var getOrCreateMetadataMap = function (target, targetKey, create) { - var targetMetadata = store.get(target); - if (!targetMetadata) { - if (!create) return; - store.set(target, targetMetadata = new Map()); - } - var keyMetadata = targetMetadata.get(targetKey); - if (!keyMetadata) { - if (!create) return; - targetMetadata.set(targetKey, keyMetadata = new Map()); - } return keyMetadata; -}; - -var ordinaryHasOwnMetadata = function (MetadataKey, O, P) { - var metadataMap = getOrCreateMetadataMap(O, P, false); - return metadataMap === undefined ? false : metadataMap.has(MetadataKey); -}; - -var ordinaryGetOwnMetadata = function (MetadataKey, O, P) { - var metadataMap = getOrCreateMetadataMap(O, P, false); - return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey); -}; - -var ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) { - getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue); -}; - -var ordinaryOwnMetadataKeys = function (target, targetKey) { - var metadataMap = getOrCreateMetadataMap(target, targetKey, false); - var keys = []; - if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); }); - return keys; -}; - -var toMetadataKey = function (it) { - return it === undefined || typeof it == 'symbol' ? it : String(it); -}; - -module.exports = { - store: store, - getMap: getOrCreateMetadataMap, - has: ordinaryHasOwnMetadata, - get: ordinaryGetOwnMetadata, - set: ordinaryDefineOwnMetadata, - keys: ordinaryOwnMetadataKeys, - toKey: toMetadataKey -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js": -/*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js ***! - \***************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -// `RequireObjectCoercible` abstract operation -// https://tc39.github.io/ecma262/#sec-requireobjectcoercible -module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js ***! - \*************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - -module.exports = function (key, value) { - try { - createNonEnumerableProperty(global, key, value); - } catch (error) { - global[key] = value; - } return value; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js ***! - \**************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); -var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - -var SPECIES = wellKnownSymbol('species'); - -module.exports = function (CONSTRUCTOR_NAME) { - var Constructor = getBuiltIn(CONSTRUCTOR_NAME); - var defineProperty = definePropertyModule.f; - - if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { - defineProperty(Constructor, SPECIES, { - configurable: true, - get: function () { return this; } - }); - } -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - -var TO_STRING_TAG = wellKnownSymbol('toStringTag'); - -module.exports = function (it, TAG, STATIC) { - if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { - defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG }); - } -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js ***! - \*************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js"); -var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js"); - -var keys = shared('keys'); - -module.exports = function (key) { - return keys[key] || (keys[key] = uid(key)); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js ***! - \***************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js"); - -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || setGlobal(SHARED, {}); - -module.exports = store; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js ***! - \*********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); -var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js"); - -(module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: '3.6.4', - mode: IS_PURE ? 'pure' : 'global', - copyright: '© 2020 Denis Pushkarev (zloirock.ru)' -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - -var max = Math.max; -var min = Math.min; - -// Helper for a popular repeating case of the spec: -// Let integer be ? ToInteger(index). -// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). -module.exports = function (index, length) { - var integer = toInteger(index); - return integer < 0 ? max(integer + length, 0) : min(integer, length); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -// toObject with fallback for non-array-like ES3 strings -var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js"); -var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - -module.exports = function (it) { - return IndexedObject(requireObjectCoercible(it)); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js ***! - \*************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var ceil = Math.ceil; -var floor = Math.floor; - -// `ToInteger` abstract operation -// https://tc39.github.io/ecma262/#sec-tointeger -module.exports = function (argument) { - return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - -var min = Math.min; - -// `ToLength` abstract operation -// https://tc39.github.io/ecma262/#sec-tolength -module.exports = function (argument) { - return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - -// `ToObject` abstract operation -// https://tc39.github.io/ecma262/#sec-toobject -module.exports = function (argument) { - return Object(requireObjectCoercible(argument)); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js ***! - \***************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - -// `ToPrimitive` abstract operation -// https://tc39.github.io/ecma262/#sec-toprimitive -// instead of the ES6 spec version, we didn't implement @@toPrimitive case -// and the second argument - flag - preferred type is a string -module.exports = function (input, PREFERRED_STRING) { - if (!isObject(input)) return input; - var fn, val; - if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; - if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; - if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; - throw TypeError("Can't convert object to primitive value"); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js": -/*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js ***! - \************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - -var TO_STRING_TAG = wellKnownSymbol('toStringTag'); -var test = {}; - -test[TO_STRING_TAG] = 'z'; - -module.exports = String(test) === '[object z]'; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js": -/*!******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js ***! - \******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var id = 0; -var postfix = Math.random(); - -module.exports = function (key) { - return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js"); - -module.exports = NATIVE_SYMBOL - // eslint-disable-next-line no-undef - && !Symbol.sham - // eslint-disable-next-line no-undef - && typeof Symbol.iterator == 'symbol'; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js"); -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js"); -var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js"); -var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js"); - -var WellKnownSymbolsStore = shared('wks'); -var Symbol = global.Symbol; -var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid; - -module.exports = function (name) { - if (!has(WellKnownSymbolsStore, name)) { - if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name]; - else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name); - } return WellKnownSymbolsStore[name]; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js": -/*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js ***! - \*******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var collection = __webpack_require__(/*! ../internals/collection */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js"); -var collectionStrong = __webpack_require__(/*! ../internals/collection-strong */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js"); - -// `Map` constructor -// https://tc39.github.io/ecma262/#sec-map-objects -module.exports = collection('Map', function (init) { - return function Map() { return init(this, arguments.length ? arguments[0] : undefined); }; -}, collectionStrong); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js": -/*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js ***! - \*******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var collection = __webpack_require__(/*! ../internals/collection */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js"); -var collectionStrong = __webpack_require__(/*! ../internals/collection-strong */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js"); - -// `Set` constructor -// https://tc39.github.io/ecma262/#sec-set-objects -module.exports = collection('Set', function (init) { - return function Set() { return init(this, arguments.length ? arguments[0] : undefined); }; -}, collectionStrong); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var redefineAll = __webpack_require__(/*! ../internals/redefine-all */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js"); -var InternalMetadataModule = __webpack_require__(/*! ../internals/internal-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js"); -var collection = __webpack_require__(/*! ../internals/collection */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js"); -var collectionWeak = __webpack_require__(/*! ../internals/collection-weak */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-weak.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); -var enforceIternalState = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js").enforce; -var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js"); - -var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global; -var isExtensible = Object.isExtensible; -var InternalWeakMap; - -var wrapper = function (init) { - return function WeakMap() { - return init(this, arguments.length ? arguments[0] : undefined); - }; -}; - -// `WeakMap` constructor -// https://tc39.github.io/ecma262/#sec-weakmap-constructor -var $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak); - -// IE11 WeakMap frozen keys fix -// We can't use feature detection because it crash some old IE builds -// https://github.com/zloirock/core-js/issues/485 -if (NATIVE_WEAK_MAP && IS_IE11) { - InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true); - InternalMetadataModule.REQUIRED = true; - var WeakMapPrototype = $WeakMap.prototype; - var nativeDelete = WeakMapPrototype['delete']; - var nativeHas = WeakMapPrototype.has; - var nativeGet = WeakMapPrototype.get; - var nativeSet = WeakMapPrototype.set; - redefineAll(WeakMapPrototype, { - 'delete': function (key) { - if (isObject(key) && !isExtensible(key)) { - var state = enforceIternalState(this); - if (!state.frozen) state.frozen = new InternalWeakMap(); - return nativeDelete.call(this, key) || state.frozen['delete'](key); - } return nativeDelete.call(this, key); - }, - has: function has(key) { - if (isObject(key) && !isExtensible(key)) { - var state = enforceIternalState(this); - if (!state.frozen) state.frozen = new InternalWeakMap(); - return nativeHas.call(this, key) || state.frozen.has(key); - } return nativeHas.call(this, key); - }, - get: function get(key) { - if (isObject(key) && !isExtensible(key)) { - var state = enforceIternalState(this); - if (!state.frozen) state.frozen = new InternalWeakMap(); - return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key); - } return nativeGet.call(this, key); - }, - set: function set(key, value) { - if (isObject(key) && !isExtensible(key)) { - var state = enforceIternalState(this); - if (!state.frozen) state.frozen = new InternalWeakMap(); - nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value); - } else nativeSet.call(this, key, value); - return this; - } - }); -} - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.define-metadata.js": -/*!*******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.define-metadata.js ***! - \*******************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - -var toMetadataKey = ReflectMetadataModule.toKey; -var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; - -// `Reflect.defineMetadata` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - defineMetadata: function defineMetadata(metadataKey, metadataValue, target /* , targetKey */) { - var targetKey = arguments.length < 4 ? undefined : toMetadataKey(arguments[3]); - ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), targetKey); - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.delete-metadata.js": -/*!*******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.delete-metadata.js ***! - \*******************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - -var toMetadataKey = ReflectMetadataModule.toKey; -var getOrCreateMetadataMap = ReflectMetadataModule.getMap; -var store = ReflectMetadataModule.store; - -// `Reflect.deleteMetadata` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false); - if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false; - if (metadataMap.size) return true; - var targetMetadata = store.get(target); - targetMetadata['delete'](targetKey); - return !!targetMetadata.size || store['delete'](target); - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js": -/*!*********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js ***! - \*********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` -var Set = __webpack_require__(/*! ../modules/es.set */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); -var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); - -var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; -var toMetadataKey = ReflectMetadataModule.toKey; - -var from = function (iter) { - var result = []; - iterate(iter, result.push, result); - return result; -}; - -var ordinaryMetadataKeys = function (O, P) { - var oKeys = ordinaryOwnMetadataKeys(O, P); - var parent = getPrototypeOf(O); - if (parent === null) return oKeys; - var pKeys = ordinaryMetadataKeys(parent, P); - return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys; -}; - -// `Reflect.getMetadataKeys` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - getMetadataKeys: function getMetadataKeys(target /* , targetKey */) { - var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); - return ordinaryMetadataKeys(anObject(target), targetKey); - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata.js": -/*!****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata.js ***! - \****************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - -var ordinaryHasOwnMetadata = ReflectMetadataModule.has; -var ordinaryGetOwnMetadata = ReflectMetadataModule.get; -var toMetadataKey = ReflectMetadataModule.toKey; - -var ordinaryGetMetadata = function (MetadataKey, O, P) { - var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); - if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P); - var parent = getPrototypeOf(O); - return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined; -}; - -// `Reflect.getMetadata` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - getMetadata: function getMetadata(metadataKey, target /* , targetKey */) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - return ordinaryGetMetadata(metadataKey, anObject(target), targetKey); - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js": -/*!*************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js ***! - \*************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - -var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; -var toMetadataKey = ReflectMetadataModule.toKey; - -// `Reflect.getOwnMetadataKeys` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) { - var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); - return ordinaryOwnMetadataKeys(anObject(target), targetKey); - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js": -/*!********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js ***! - \********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - -var ordinaryGetOwnMetadata = ReflectMetadataModule.get; -var toMetadataKey = ReflectMetadataModule.toKey; - -// `Reflect.getOwnMetadata` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - return ordinaryGetOwnMetadata(metadataKey, anObject(target), targetKey); - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-metadata.js": -/*!****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-metadata.js ***! - \****************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - -var ordinaryHasOwnMetadata = ReflectMetadataModule.has; -var toMetadataKey = ReflectMetadataModule.toKey; - -var ordinaryHasMetadata = function (MetadataKey, O, P) { - var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); - if (hasOwn) return true; - var parent = getPrototypeOf(O); - return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false; -}; - -// `Reflect.hasMetadata` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - return ordinaryHasMetadata(metadataKey, anObject(target), targetKey); - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js": -/*!********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js ***! - \********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - -var ordinaryHasOwnMetadata = ReflectMetadataModule.has; -var toMetadataKey = ReflectMetadataModule.toKey; - -// `Reflect.hasOwnMetadata` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - return ordinaryHasOwnMetadata(metadataKey, anObject(target), targetKey); - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.metadata.js": -/*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.metadata.js ***! - \************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - -var toMetadataKey = ReflectMetadataModule.toKey; -var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; - -// `Reflect.metadata` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - metadata: function metadata(metadataKey, metadataValue) { - return function decorator(target, key) { - ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetadataKey(key)); - }; - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata.js ***! - \*******************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(/*! ../modules/esnext.reflect.define-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.define-metadata.js"); -__webpack_require__(/*! ../modules/esnext.reflect.delete-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.delete-metadata.js"); -__webpack_require__(/*! ../modules/esnext.reflect.get-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata.js"); -__webpack_require__(/*! ../modules/esnext.reflect.get-metadata-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js"); -__webpack_require__(/*! ../modules/esnext.reflect.get-own-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js"); -__webpack_require__(/*! ../modules/esnext.reflect.get-own-metadata-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js"); -__webpack_require__(/*! ../modules/esnext.reflect.has-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-metadata.js"); -__webpack_require__(/*! ../modules/esnext.reflect.has-own-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js"); -__webpack_require__(/*! ../modules/esnext.reflect.metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.metadata.js"); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js ***! - \**************************************************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/proposals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata.js"); -/* harmony import */ var core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0__); -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - - -/***/ }), - -/***/ "./node_modules/tslib/tslib.es6.js": -/*!*****************************************!*\ - !*** ./node_modules/tslib/tslib.es6.js ***! - \*****************************************/ -/*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__extends", function() { return __extends; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__assign", function() { return __assign; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__rest", function() { return __rest; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__decorate", function() { return __decorate; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__param", function() { return __param; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__metadata", function() { return __metadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__awaiter", function() { return __awaiter; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__generator", function() { return __generator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__exportStar", function() { return __exportStar; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__values", function() { return __values; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__read", function() { return __read; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spread", function() { return __spread; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__await", function() { return __await; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function() { return __asyncGenerator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function() { return __asyncDelegator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncValues", function() { return __asyncValues; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function() { return __makeTemplateObject; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function() { return __importStar; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; }); -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ -/* global Reflect, Promise */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - } - return __assign.apply(this, arguments); -} - -function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) - t[p[i]] = s[p[i]]; - return t; -} - -function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -} - -function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); -} - -function __awaiter(thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -function __exportStar(m, exports) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} - -function __values(o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -} - -function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -} - -function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} - -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } -} - -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } -} - -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -} - -function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; - -function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result.default = mod; - return result; -} - -function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - - -/***/ }), - -/***/ "./node_modules/zone.js/dist/zone-evergreen.js": -/*!*****************************************************!*\ - !*** ./node_modules/zone.js/dist/zone-evergreen.js ***! - \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** -* @license -* Copyright Google Inc. All Rights Reserved. -* -* Use of this source code is governed by an MIT-style license that can be -* found in the LICENSE file at https://angular.io/license -*/ -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const Zone$1 = (function (global) { - const performance = global['performance']; - function mark(name) { - performance && performance['mark'] && performance['mark'](name); - } - function performanceMeasure(name, label) { - performance && performance['measure'] && performance['measure'](name, label); - } - mark('Zone'); - const checkDuplicate = global[('__zone_symbol__forceDuplicateZoneCheck')] === true; - if (global['Zone']) { - // if global['Zone'] already exists (maybe zone.js was already loaded or - // some other lib also registered a global object named Zone), we may need - // to throw an error, but sometimes user may not want this error. - // For example, - // we have two web pages, page1 includes zone.js, page2 doesn't. - // and the 1st time user load page1 and page2, everything work fine, - // but when user load page2 again, error occurs because global['Zone'] already exists. - // so we add a flag to let user choose whether to throw this error or not. - // By default, if existing Zone is from zone.js, we will not throw the error. - if (checkDuplicate || typeof global['Zone'].__symbol__ !== 'function') { - throw new Error('Zone already loaded.'); - } - else { - return global['Zone']; - } - } - class Zone { - constructor(parent, zoneSpec) { - this._parent = parent; - this._name = zoneSpec ? zoneSpec.name || 'unnamed' : ''; - this._properties = zoneSpec && zoneSpec.properties || {}; - this._zoneDelegate = - new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec); - } - static assertZonePatched() { - if (global['Promise'] !== patches['ZoneAwarePromise']) { - throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' + - 'has been overwritten.\n' + - 'Most likely cause is that a Promise polyfill has been loaded ' + - 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' + - 'If you must load one, do so before loading zone.js.)'); - } - } - static get root() { - let zone = Zone.current; - while (zone.parent) { - zone = zone.parent; - } - return zone; - } - static get current() { - return _currentZoneFrame.zone; - } - static get currentTask() { - return _currentTask; - } - static __load_patch(name, fn) { - if (patches.hasOwnProperty(name)) { - if (checkDuplicate) { - throw Error('Already loaded patch: ' + name); - } - } - else if (!global['__Zone_disable_' + name]) { - const perfName = 'Zone:' + name; - mark(perfName); - patches[name] = fn(global, Zone, _api); - performanceMeasure(perfName, perfName); - } - } - get parent() { - return this._parent; - } - get name() { - return this._name; - } - get(key) { - const zone = this.getZoneWith(key); - if (zone) - return zone._properties[key]; - } - getZoneWith(key) { - let current = this; - while (current) { - if (current._properties.hasOwnProperty(key)) { - return current; - } - current = current._parent; - } - return null; - } - fork(zoneSpec) { - if (!zoneSpec) - throw new Error('ZoneSpec required!'); - return this._zoneDelegate.fork(this, zoneSpec); - } - wrap(callback, source) { - if (typeof callback !== 'function') { - throw new Error('Expecting function got: ' + callback); - } - const _callback = this._zoneDelegate.intercept(this, callback, source); - const zone = this; - return function () { - return zone.runGuarded(_callback, this, arguments, source); - }; - } - run(callback, applyThis, applyArgs, source) { - _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; - try { - return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); - } - finally { - _currentZoneFrame = _currentZoneFrame.parent; - } - } - runGuarded(callback, applyThis = null, applyArgs, source) { - _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; - try { - try { - return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); - } - catch (error) { - if (this._zoneDelegate.handleError(this, error)) { - throw error; - } - } - } - finally { - _currentZoneFrame = _currentZoneFrame.parent; - } - } - runTask(task, applyThis, applyArgs) { - if (task.zone != this) { - throw new Error('A task can only be run in the zone of creation! (Creation: ' + - (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')'); - } - // https://github.com/angular/zone.js/issues/778, sometimes eventTask - // will run in notScheduled(canceled) state, we should not try to - // run such kind of task but just return - if (task.state === notScheduled && (task.type === eventTask || task.type === macroTask)) { - return; - } - const reEntryGuard = task.state != running; - reEntryGuard && task._transitionTo(running, scheduled); - task.runCount++; - const previousTask = _currentTask; - _currentTask = task; - _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; - try { - if (task.type == macroTask && task.data && !task.data.isPeriodic) { - task.cancelFn = undefined; - } - try { - return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs); - } - catch (error) { - if (this._zoneDelegate.handleError(this, error)) { - throw error; - } - } - } - finally { - // if the task's state is notScheduled or unknown, then it has already been cancelled - // we should not reset the state to scheduled - if (task.state !== notScheduled && task.state !== unknown) { - if (task.type == eventTask || (task.data && task.data.isPeriodic)) { - reEntryGuard && task._transitionTo(scheduled, running); - } - else { - task.runCount = 0; - this._updateTaskCount(task, -1); - reEntryGuard && - task._transitionTo(notScheduled, running, notScheduled); - } - } - _currentZoneFrame = _currentZoneFrame.parent; - _currentTask = previousTask; - } - } - scheduleTask(task) { - if (task.zone && task.zone !== this) { - // check if the task was rescheduled, the newZone - // should not be the children of the original zone - let newZone = this; - while (newZone) { - if (newZone === task.zone) { - throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${task.zone.name}`); - } - newZone = newZone.parent; - } - } - task._transitionTo(scheduling, notScheduled); - const zoneDelegates = []; - task._zoneDelegates = zoneDelegates; - task._zone = this; - try { - task = this._zoneDelegate.scheduleTask(this, task); - } - catch (err) { - // should set task's state to unknown when scheduleTask throw error - // because the err may from reschedule, so the fromState maybe notScheduled - task._transitionTo(unknown, scheduling, notScheduled); - // TODO: @JiaLiPassion, should we check the result from handleError? - this._zoneDelegate.handleError(this, err); - throw err; - } - if (task._zoneDelegates === zoneDelegates) { - // we have to check because internally the delegate can reschedule the task. - this._updateTaskCount(task, 1); - } - if (task.state == scheduling) { - task._transitionTo(scheduled, scheduling); - } - return task; - } - scheduleMicroTask(source, callback, data, customSchedule) { - return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, undefined)); - } - scheduleMacroTask(source, callback, data, customSchedule, customCancel) { - return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel)); - } - scheduleEventTask(source, callback, data, customSchedule, customCancel) { - return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel)); - } - cancelTask(task) { - if (task.zone != this) - throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' + - (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')'); - task._transitionTo(canceling, scheduled, running); - try { - this._zoneDelegate.cancelTask(this, task); - } - catch (err) { - // if error occurs when cancelTask, transit the state to unknown - task._transitionTo(unknown, canceling); - this._zoneDelegate.handleError(this, err); - throw err; - } - this._updateTaskCount(task, -1); - task._transitionTo(notScheduled, canceling); - task.runCount = 0; - return task; - } - _updateTaskCount(task, count) { - const zoneDelegates = task._zoneDelegates; - if (count == -1) { - task._zoneDelegates = null; - } - for (let i = 0; i < zoneDelegates.length; i++) { - zoneDelegates[i]._updateTaskCount(task.type, count); - } - } - } - Zone.__symbol__ = __symbol__; - const DELEGATE_ZS = { - name: '', - onHasTask: (delegate, _, target, hasTaskState) => delegate.hasTask(target, hasTaskState), - onScheduleTask: (delegate, _, target, task) => delegate.scheduleTask(target, task), - onInvokeTask: (delegate, _, target, task, applyThis, applyArgs) => delegate.invokeTask(target, task, applyThis, applyArgs), - onCancelTask: (delegate, _, target, task) => delegate.cancelTask(target, task) - }; - class ZoneDelegate { - constructor(zone, parentDelegate, zoneSpec) { - this._taskCounts = { 'microTask': 0, 'macroTask': 0, 'eventTask': 0 }; - this.zone = zone; - this._parentDelegate = parentDelegate; - this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS); - this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt); - this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone); - this._interceptZS = - zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS); - this._interceptDlgt = - zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt); - this._interceptCurrZone = - zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone); - this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS); - this._invokeDlgt = - zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt); - this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone); - this._handleErrorZS = - zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS); - this._handleErrorDlgt = - zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt); - this._handleErrorCurrZone = - zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone); - this._scheduleTaskZS = - zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS); - this._scheduleTaskDlgt = zoneSpec && - (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt); - this._scheduleTaskCurrZone = - zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone); - this._invokeTaskZS = - zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS); - this._invokeTaskDlgt = - zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt); - this._invokeTaskCurrZone = - zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone); - this._cancelTaskZS = - zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS); - this._cancelTaskDlgt = - zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt); - this._cancelTaskCurrZone = - zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone); - this._hasTaskZS = null; - this._hasTaskDlgt = null; - this._hasTaskDlgtOwner = null; - this._hasTaskCurrZone = null; - const zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask; - const parentHasTask = parentDelegate && parentDelegate._hasTaskZS; - if (zoneSpecHasTask || parentHasTask) { - // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such - // a case all task related interceptors must go through this ZD. We can't short circuit it. - this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS; - this._hasTaskDlgt = parentDelegate; - this._hasTaskDlgtOwner = this; - this._hasTaskCurrZone = zone; - if (!zoneSpec.onScheduleTask) { - this._scheduleTaskZS = DELEGATE_ZS; - this._scheduleTaskDlgt = parentDelegate; - this._scheduleTaskCurrZone = this.zone; - } - if (!zoneSpec.onInvokeTask) { - this._invokeTaskZS = DELEGATE_ZS; - this._invokeTaskDlgt = parentDelegate; - this._invokeTaskCurrZone = this.zone; - } - if (!zoneSpec.onCancelTask) { - this._cancelTaskZS = DELEGATE_ZS; - this._cancelTaskDlgt = parentDelegate; - this._cancelTaskCurrZone = this.zone; - } - } - } - fork(targetZone, zoneSpec) { - return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) : - new Zone(targetZone, zoneSpec); - } - intercept(targetZone, callback, source) { - return this._interceptZS ? - this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) : - callback; - } - invoke(targetZone, callback, applyThis, applyArgs, source) { - return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) : - callback.apply(applyThis, applyArgs); - } - handleError(targetZone, error) { - return this._handleErrorZS ? - this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) : - true; - } - scheduleTask(targetZone, task) { - let returnTask = task; - if (this._scheduleTaskZS) { - if (this._hasTaskZS) { - returnTask._zoneDelegates.push(this._hasTaskDlgtOwner); - } - returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task); - if (!returnTask) - returnTask = task; - } - else { - if (task.scheduleFn) { - task.scheduleFn(task); - } - else if (task.type == microTask) { - scheduleMicroTask(task); - } - else { - throw new Error('Task is missing scheduleFn.'); - } - } - return returnTask; - } - invokeTask(targetZone, task, applyThis, applyArgs) { - return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) : - task.callback.apply(applyThis, applyArgs); - } - cancelTask(targetZone, task) { - let value; - if (this._cancelTaskZS) { - value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task); - } - else { - if (!task.cancelFn) { - throw Error('Task is not cancelable'); - } - value = task.cancelFn(task); - } - return value; - } - hasTask(targetZone, isEmpty) { - // hasTask should not throw error so other ZoneDelegate - // can still trigger hasTask callback - try { - this._hasTaskZS && - this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty); - } - catch (err) { - this.handleError(targetZone, err); - } - } - _updateTaskCount(type, count) { - const counts = this._taskCounts; - const prev = counts[type]; - const next = counts[type] = prev + count; - if (next < 0) { - throw new Error('More tasks executed then were scheduled.'); - } - if (prev == 0 || next == 0) { - const isEmpty = { - microTask: counts['microTask'] > 0, - macroTask: counts['macroTask'] > 0, - eventTask: counts['eventTask'] > 0, - change: type - }; - this.hasTask(this.zone, isEmpty); - } - } - } - class ZoneTask { - constructor(type, source, callback, options, scheduleFn, cancelFn) { - this._zone = null; - this.runCount = 0; - this._zoneDelegates = null; - this._state = 'notScheduled'; - this.type = type; - this.source = source; - this.data = options; - this.scheduleFn = scheduleFn; - this.cancelFn = cancelFn; - this.callback = callback; - const self = this; - // TODO: @JiaLiPassion options should have interface - if (type === eventTask && options && options.useG) { - this.invoke = ZoneTask.invokeTask; - } - else { - this.invoke = function () { - return ZoneTask.invokeTask.call(global, self, this, arguments); - }; - } - } - static invokeTask(task, target, args) { - if (!task) { - task = this; - } - _numberOfNestedTaskFrames++; - try { - task.runCount++; - return task.zone.runTask(task, target, args); - } - finally { - if (_numberOfNestedTaskFrames == 1) { - drainMicroTaskQueue(); - } - _numberOfNestedTaskFrames--; - } - } - get zone() { - return this._zone; - } - get state() { - return this._state; - } - cancelScheduleRequest() { - this._transitionTo(notScheduled, scheduling); - } - _transitionTo(toState, fromState1, fromState2) { - if (this._state === fromState1 || this._state === fromState2) { - this._state = toState; - if (toState == notScheduled) { - this._zoneDelegates = null; - } - } - else { - throw new Error(`${this.type} '${this.source}': can not transition to '${toState}', expecting state '${fromState1}'${fromState2 ? ' or \'' + fromState2 + '\'' : ''}, was '${this._state}'.`); - } - } - toString() { - if (this.data && typeof this.data.handleId !== 'undefined') { - return this.data.handleId.toString(); - } - else { - return Object.prototype.toString.call(this); - } - } - // add toJSON method to prevent cyclic error when - // call JSON.stringify(zoneTask) - toJSON() { - return { - type: this.type, - state: this.state, - source: this.source, - zone: this.zone.name, - runCount: this.runCount - }; - } - } - ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - /// MICROTASK QUEUE - ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - const symbolSetTimeout = __symbol__('setTimeout'); - const symbolPromise = __symbol__('Promise'); - const symbolThen = __symbol__('then'); - let _microTaskQueue = []; - let _isDrainingMicrotaskQueue = false; - let nativeMicroTaskQueuePromise; - function scheduleMicroTask(task) { - // if we are not running in any task, and there has not been anything scheduled - // we must bootstrap the initial task creation by manually scheduling the drain - if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) { - // We are not running in Task, so we need to kickstart the microtask queue. - if (!nativeMicroTaskQueuePromise) { - if (global[symbolPromise]) { - nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0); - } - } - if (nativeMicroTaskQueuePromise) { - let nativeThen = nativeMicroTaskQueuePromise[symbolThen]; - if (!nativeThen) { - // native Promise is not patchable, we need to use `then` directly - // issue 1078 - nativeThen = nativeMicroTaskQueuePromise['then']; - } - nativeThen.call(nativeMicroTaskQueuePromise, drainMicroTaskQueue); - } - else { - global[symbolSetTimeout](drainMicroTaskQueue, 0); - } - } - task && _microTaskQueue.push(task); - } - function drainMicroTaskQueue() { - if (!_isDrainingMicrotaskQueue) { - _isDrainingMicrotaskQueue = true; - while (_microTaskQueue.length) { - const queue = _microTaskQueue; - _microTaskQueue = []; - for (let i = 0; i < queue.length; i++) { - const task = queue[i]; - try { - task.zone.runTask(task, null, null); - } - catch (error) { - _api.onUnhandledError(error); - } - } - } - _api.microtaskDrainDone(); - _isDrainingMicrotaskQueue = false; - } - } - ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - /// BOOTSTRAP - ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - const NO_ZONE = { name: 'NO ZONE' }; - const notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown'; - const microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask'; - const patches = {}; - const _api = { - symbol: __symbol__, - currentZoneFrame: () => _currentZoneFrame, - onUnhandledError: noop, - microtaskDrainDone: noop, - scheduleMicroTask: scheduleMicroTask, - showUncaughtError: () => !Zone[__symbol__('ignoreConsoleErrorUncaughtError')], - patchEventTarget: () => [], - patchOnProperties: noop, - patchMethod: () => noop, - bindArguments: () => [], - patchThen: () => noop, - patchMacroTask: () => noop, - setNativePromise: (NativePromise) => { - // sometimes NativePromise.resolve static function - // is not ready yet, (such as core-js/es6.promise) - // so we need to check here. - if (NativePromise && typeof NativePromise.resolve === 'function') { - nativeMicroTaskQueuePromise = NativePromise.resolve(0); - } - }, - patchEventPrototype: () => noop, - isIEOrEdge: () => false, - getGlobalObjects: () => undefined, - ObjectDefineProperty: () => noop, - ObjectGetOwnPropertyDescriptor: () => undefined, - ObjectCreate: () => undefined, - ArraySlice: () => [], - patchClass: () => noop, - wrapWithCurrentZone: () => noop, - filterProperties: () => [], - attachOriginToPatched: () => noop, - _redefineProperty: () => noop, - patchCallbacks: () => noop - }; - let _currentZoneFrame = { parent: null, zone: new Zone(null, null) }; - let _currentTask = null; - let _numberOfNestedTaskFrames = 0; - function noop() { } - function __symbol__(name) { - return '__zone_symbol__' + name; - } - performanceMeasure('Zone', 'Zone'); - return global['Zone'] = Zone; -})(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global); - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -Zone.__load_patch('ZoneAwarePromise', (global, Zone, api) => { - const ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - const ObjectDefineProperty = Object.defineProperty; - function readableObjectToString(obj) { - if (obj && obj.toString === Object.prototype.toString) { - const className = obj.constructor && obj.constructor.name; - return (className ? className : '') + ': ' + JSON.stringify(obj); - } - return obj ? obj.toString() : Object.prototype.toString.call(obj); - } - const __symbol__ = api.symbol; - const _uncaughtPromiseErrors = []; - const symbolPromise = __symbol__('Promise'); - const symbolThen = __symbol__('then'); - const creationTrace = '__creationTrace__'; - api.onUnhandledError = (e) => { - if (api.showUncaughtError()) { - const rejection = e && e.rejection; - if (rejection) { - console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined); - } - else { - console.error(e); - } - } - }; - api.microtaskDrainDone = () => { - while (_uncaughtPromiseErrors.length) { - while (_uncaughtPromiseErrors.length) { - const uncaughtPromiseError = _uncaughtPromiseErrors.shift(); - try { - uncaughtPromiseError.zone.runGuarded(() => { - throw uncaughtPromiseError; - }); - } - catch (error) { - handleUnhandledRejection(error); - } - } - } - }; - const UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler'); - function handleUnhandledRejection(e) { - api.onUnhandledError(e); - try { - const handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL]; - if (handler && typeof handler === 'function') { - handler.call(this, e); - } - } - catch (err) { - } - } - function isThenable(value) { - return value && value.then; - } - function forwardResolution(value) { - return value; - } - function forwardRejection(rejection) { - return ZoneAwarePromise.reject(rejection); - } - const symbolState = __symbol__('state'); - const symbolValue = __symbol__('value'); - const symbolFinally = __symbol__('finally'); - const symbolParentPromiseValue = __symbol__('parentPromiseValue'); - const symbolParentPromiseState = __symbol__('parentPromiseState'); - const source = 'Promise.then'; - const UNRESOLVED = null; - const RESOLVED = true; - const REJECTED = false; - const REJECTED_NO_CATCH = 0; - function makeResolver(promise, state) { - return (v) => { - try { - resolvePromise(promise, state, v); - } - catch (err) { - resolvePromise(promise, false, err); - } - // Do not return value or you will break the Promise spec. - }; - } - const once = function () { - let wasCalled = false; - return function wrapper(wrappedFunction) { - return function () { - if (wasCalled) { - return; - } - wasCalled = true; - wrappedFunction.apply(null, arguments); - }; - }; - }; - const TYPE_ERROR = 'Promise resolved with itself'; - const CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace'); - // Promise Resolution - function resolvePromise(promise, state, value) { - const onceWrapper = once(); - if (promise === value) { - throw new TypeError(TYPE_ERROR); - } - if (promise[symbolState] === UNRESOLVED) { - // should only get value.then once based on promise spec. - let then = null; - try { - if (typeof value === 'object' || typeof value === 'function') { - then = value && value.then; - } - } - catch (err) { - onceWrapper(() => { - resolvePromise(promise, false, err); - })(); - return promise; - } - // if (value instanceof ZoneAwarePromise) { - if (state !== REJECTED && value instanceof ZoneAwarePromise && - value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) && - value[symbolState] !== UNRESOLVED) { - clearRejectedNoCatch(value); - resolvePromise(promise, value[symbolState], value[symbolValue]); - } - else if (state !== REJECTED && typeof then === 'function') { - try { - then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false))); - } - catch (err) { - onceWrapper(() => { - resolvePromise(promise, false, err); - })(); - } - } - else { - promise[symbolState] = state; - const queue = promise[symbolValue]; - promise[symbolValue] = value; - if (promise[symbolFinally] === symbolFinally) { - // the promise is generated by Promise.prototype.finally - if (state === RESOLVED) { - // the state is resolved, should ignore the value - // and use parent promise value - promise[symbolState] = promise[symbolParentPromiseState]; - promise[symbolValue] = promise[symbolParentPromiseValue]; - } - } - // record task information in value when error occurs, so we can - // do some additional work such as render longStackTrace - if (state === REJECTED && value instanceof Error) { - // check if longStackTraceZone is here - const trace = Zone.currentTask && Zone.currentTask.data && - Zone.currentTask.data[creationTrace]; - if (trace) { - // only keep the long stack trace into error when in longStackTraceZone - ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { configurable: true, enumerable: false, writable: true, value: trace }); - } - } - for (let i = 0; i < queue.length;) { - scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]); - } - if (queue.length == 0 && state == REJECTED) { - promise[symbolState] = REJECTED_NO_CATCH; - try { - // try to print more readable error log - throw new Error('Uncaught (in promise): ' + readableObjectToString(value) + - (value && value.stack ? '\n' + value.stack : '')); - } - catch (err) { - const error = err; - error.rejection = value; - error.promise = promise; - error.zone = Zone.current; - error.task = Zone.currentTask; - _uncaughtPromiseErrors.push(error); - api.scheduleMicroTask(); // to make sure that it is running - } - } - } - } - // Resolving an already resolved promise is a noop. - return promise; - } - const REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler'); - function clearRejectedNoCatch(promise) { - if (promise[symbolState] === REJECTED_NO_CATCH) { - // if the promise is rejected no catch status - // and queue.length > 0, means there is a error handler - // here to handle the rejected promise, we should trigger - // windows.rejectionhandled eventHandler or nodejs rejectionHandled - // eventHandler - try { - const handler = Zone[REJECTION_HANDLED_HANDLER]; - if (handler && typeof handler === 'function') { - handler.call(this, { rejection: promise[symbolValue], promise: promise }); - } - } - catch (err) { - } - promise[symbolState] = REJECTED; - for (let i = 0; i < _uncaughtPromiseErrors.length; i++) { - if (promise === _uncaughtPromiseErrors[i].promise) { - _uncaughtPromiseErrors.splice(i, 1); - } - } - } - } - function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) { - clearRejectedNoCatch(promise); - const promiseState = promise[symbolState]; - const delegate = promiseState ? - (typeof onFulfilled === 'function') ? onFulfilled : forwardResolution : - (typeof onRejected === 'function') ? onRejected : forwardRejection; - zone.scheduleMicroTask(source, () => { - try { - const parentPromiseValue = promise[symbolValue]; - const isFinallyPromise = chainPromise && symbolFinally === chainPromise[symbolFinally]; - if (isFinallyPromise) { - // if the promise is generated from finally call, keep parent promise's state and value - chainPromise[symbolParentPromiseValue] = parentPromiseValue; - chainPromise[symbolParentPromiseState] = promiseState; - } - // should not pass value to finally callback - const value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ? - [] : - [parentPromiseValue]); - resolvePromise(chainPromise, true, value); - } - catch (error) { - // if error occurs, should always return this error - resolvePromise(chainPromise, false, error); - } - }, chainPromise); - } - const ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }'; - class ZoneAwarePromise { - constructor(executor) { - const promise = this; - if (!(promise instanceof ZoneAwarePromise)) { - throw new Error('Must be an instanceof Promise.'); - } - promise[symbolState] = UNRESOLVED; - promise[symbolValue] = []; // queue; - try { - executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED)); - } - catch (error) { - resolvePromise(promise, false, error); - } - } - static toString() { - return ZONE_AWARE_PROMISE_TO_STRING; - } - static resolve(value) { - return resolvePromise(new this(null), RESOLVED, value); - } - static reject(error) { - return resolvePromise(new this(null), REJECTED, error); - } - static race(values) { - let resolve; - let reject; - let promise = new this((res, rej) => { - resolve = res; - reject = rej; - }); - function onResolve(value) { - resolve(value); - } - function onReject(error) { - reject(error); - } - for (let value of values) { - if (!isThenable(value)) { - value = this.resolve(value); - } - value.then(onResolve, onReject); - } - return promise; - } - static all(values) { - let resolve; - let reject; - let promise = new this((res, rej) => { - resolve = res; - reject = rej; - }); - // Start at 2 to prevent prematurely resolving if .then is called immediately. - let unresolvedCount = 2; - let valueIndex = 0; - const resolvedValues = []; - for (let value of values) { - if (!isThenable(value)) { - value = this.resolve(value); - } - const curValueIndex = valueIndex; - value.then((value) => { - resolvedValues[curValueIndex] = value; - unresolvedCount--; - if (unresolvedCount === 0) { - resolve(resolvedValues); - } - }, reject); - unresolvedCount++; - valueIndex++; - } - // Make the unresolvedCount zero-based again. - unresolvedCount -= 2; - if (unresolvedCount === 0) { - resolve(resolvedValues); - } - return promise; - } - get [Symbol.toStringTag]() { - return 'Promise'; - } - then(onFulfilled, onRejected) { - const chainPromise = new this.constructor(null); - const zone = Zone.current; - if (this[symbolState] == UNRESOLVED) { - this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected); - } - else { - scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected); - } - return chainPromise; - } - catch(onRejected) { - return this.then(null, onRejected); - } - finally(onFinally) { - const chainPromise = new this.constructor(null); - chainPromise[symbolFinally] = symbolFinally; - const zone = Zone.current; - if (this[symbolState] == UNRESOLVED) { - this[symbolValue].push(zone, chainPromise, onFinally, onFinally); - } - else { - scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally); - } - return chainPromise; - } - } - // Protect against aggressive optimizers dropping seemingly unused properties. - // E.g. Closure Compiler in advanced mode. - ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve; - ZoneAwarePromise['reject'] = ZoneAwarePromise.reject; - ZoneAwarePromise['race'] = ZoneAwarePromise.race; - ZoneAwarePromise['all'] = ZoneAwarePromise.all; - const NativePromise = global[symbolPromise] = global['Promise']; - const ZONE_AWARE_PROMISE = Zone.__symbol__('ZoneAwarePromise'); - let desc = ObjectGetOwnPropertyDescriptor(global, 'Promise'); - if (!desc || desc.configurable) { - desc && delete desc.writable; - desc && delete desc.value; - if (!desc) { - desc = { configurable: true, enumerable: true }; - } - desc.get = function () { - // if we already set ZoneAwarePromise, use patched one - // otherwise return native one. - return global[ZONE_AWARE_PROMISE] ? global[ZONE_AWARE_PROMISE] : global[symbolPromise]; - }; - desc.set = function (NewNativePromise) { - if (NewNativePromise === ZoneAwarePromise) { - // if the NewNativePromise is ZoneAwarePromise - // save to global - global[ZONE_AWARE_PROMISE] = NewNativePromise; - } - else { - // if the NewNativePromise is not ZoneAwarePromise - // for example: after load zone.js, some library just - // set es6-promise to global, if we set it to global - // directly, assertZonePatched will fail and angular - // will not loaded, so we just set the NewNativePromise - // to global[symbolPromise], so the result is just like - // we load ES6 Promise before zone.js - global[symbolPromise] = NewNativePromise; - if (!NewNativePromise.prototype[symbolThen]) { - patchThen(NewNativePromise); - } - api.setNativePromise(NewNativePromise); - } - }; - ObjectDefineProperty(global, 'Promise', desc); - } - global['Promise'] = ZoneAwarePromise; - const symbolThenPatched = __symbol__('thenPatched'); - function patchThen(Ctor) { - const proto = Ctor.prototype; - const prop = ObjectGetOwnPropertyDescriptor(proto, 'then'); - if (prop && (prop.writable === false || !prop.configurable)) { - // check Ctor.prototype.then propertyDescriptor is writable or not - // in meteor env, writable is false, we should ignore such case - return; - } - const originalThen = proto.then; - // Keep a reference to the original method. - proto[symbolThen] = originalThen; - Ctor.prototype.then = function (onResolve, onReject) { - const wrapped = new ZoneAwarePromise((resolve, reject) => { - originalThen.call(this, resolve, reject); - }); - return wrapped.then(onResolve, onReject); - }; - Ctor[symbolThenPatched] = true; - } - api.patchThen = patchThen; - function zoneify(fn) { - return function () { - let resultPromise = fn.apply(this, arguments); - if (resultPromise instanceof ZoneAwarePromise) { - return resultPromise; - } - let ctor = resultPromise.constructor; - if (!ctor[symbolThenPatched]) { - patchThen(ctor); - } - return resultPromise; - }; - } - if (NativePromise) { - patchThen(NativePromise); - const fetch = global['fetch']; - if (typeof fetch == 'function') { - global[api.symbol('fetch')] = fetch; - global['fetch'] = zoneify(fetch); - } - } - // This is not part of public API, but it is useful for tests, so we expose it. - Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors; - return ZoneAwarePromise; -}); - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * Suppress closure compiler errors about unknown 'Zone' variable - * @fileoverview - * @suppress {undefinedVars,globalThis,missingRequire} - */ -// issue #989, to reduce bundle size, use short name -/** Object.getOwnPropertyDescriptor */ -const ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; -/** Object.defineProperty */ -const ObjectDefineProperty = Object.defineProperty; -/** Object.getPrototypeOf */ -const ObjectGetPrototypeOf = Object.getPrototypeOf; -/** Object.create */ -const ObjectCreate = Object.create; -/** Array.prototype.slice */ -const ArraySlice = Array.prototype.slice; -/** addEventListener string const */ -const ADD_EVENT_LISTENER_STR = 'addEventListener'; -/** removeEventListener string const */ -const REMOVE_EVENT_LISTENER_STR = 'removeEventListener'; -/** zoneSymbol addEventListener */ -const ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR); -/** zoneSymbol removeEventListener */ -const ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR); -/** true string const */ -const TRUE_STR = 'true'; -/** false string const */ -const FALSE_STR = 'false'; -/** __zone_symbol__ string const */ -const ZONE_SYMBOL_PREFIX = '__zone_symbol__'; -function wrapWithCurrentZone(callback, source) { - return Zone.current.wrap(callback, source); -} -function scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) { - return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel); -} -const zoneSymbol = Zone.__symbol__; -const isWindowExists = typeof window !== 'undefined'; -const internalWindow = isWindowExists ? window : undefined; -const _global = isWindowExists && internalWindow || typeof self === 'object' && self || global; -const REMOVE_ATTRIBUTE = 'removeAttribute'; -const NULL_ON_PROP_VALUE = [null]; -function bindArguments(args, source) { - for (let i = args.length - 1; i >= 0; i--) { - if (typeof args[i] === 'function') { - args[i] = wrapWithCurrentZone(args[i], source + '_' + i); - } - } - return args; -} -function patchPrototype(prototype, fnNames) { - const source = prototype.constructor['name']; - for (let i = 0; i < fnNames.length; i++) { - const name = fnNames[i]; - const delegate = prototype[name]; - if (delegate) { - const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name); - if (!isPropertyWritable(prototypeDesc)) { - continue; - } - prototype[name] = ((delegate) => { - const patched = function () { - return delegate.apply(this, bindArguments(arguments, source + '.' + name)); - }; - attachOriginToPatched(patched, delegate); - return patched; - })(delegate); - } - } -} -function isPropertyWritable(propertyDesc) { - if (!propertyDesc) { - return true; - } - if (propertyDesc.writable === false) { - return false; - } - return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined'); -} -const isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope); -// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify -// this code. -const isNode = (!('nw' in _global) && typeof _global.process !== 'undefined' && - {}.toString.call(_global.process) === '[object process]'); -const isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']); -// we are in electron of nw, so we are both browser and nodejs -// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify -// this code. -const isMix = typeof _global.process !== 'undefined' && - {}.toString.call(_global.process) === '[object process]' && !isWebWorker && - !!(isWindowExists && internalWindow['HTMLElement']); -const zoneSymbolEventNames = {}; -const wrapFn = function (event) { - // https://github.com/angular/zone.js/issues/911, in IE, sometimes - // event will be undefined, so we need to use window.event - event = event || _global.event; - if (!event) { - return; - } - let eventNameSymbol = zoneSymbolEventNames[event.type]; - if (!eventNameSymbol) { - eventNameSymbol = zoneSymbolEventNames[event.type] = zoneSymbol('ON_PROPERTY' + event.type); - } - const target = this || event.target || _global; - const listener = target[eventNameSymbol]; - let result; - if (isBrowser && target === internalWindow && event.type === 'error') { - // window.onerror have different signiture - // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#window.onerror - // and onerror callback will prevent default when callback return true - const errorEvent = event; - result = listener && - listener.call(this, errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error); - if (result === true) { - event.preventDefault(); - } - } - else { - result = listener && listener.apply(this, arguments); - if (result != undefined && !result) { - event.preventDefault(); - } - } - return result; -}; -function patchProperty(obj, prop, prototype) { - let desc = ObjectGetOwnPropertyDescriptor(obj, prop); - if (!desc && prototype) { - // when patch window object, use prototype to check prop exist or not - const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop); - if (prototypeDesc) { - desc = { enumerable: true, configurable: true }; - } - } - // if the descriptor not exists or is not configurable - // just return - if (!desc || !desc.configurable) { - return; - } - const onPropPatchedSymbol = zoneSymbol('on' + prop + 'patched'); - if (obj.hasOwnProperty(onPropPatchedSymbol) && obj[onPropPatchedSymbol]) { - return; - } - // A property descriptor cannot have getter/setter and be writable - // deleting the writable and value properties avoids this error: - // - // TypeError: property descriptors must not specify a value or be writable when a - // getter or setter has been specified - delete desc.writable; - delete desc.value; - const originalDescGet = desc.get; - const originalDescSet = desc.set; - // substr(2) cuz 'onclick' -> 'click', etc - const eventName = prop.substr(2); - let eventNameSymbol = zoneSymbolEventNames[eventName]; - if (!eventNameSymbol) { - eventNameSymbol = zoneSymbolEventNames[eventName] = zoneSymbol('ON_PROPERTY' + eventName); - } - desc.set = function (newValue) { - // in some of windows's onproperty callback, this is undefined - // so we need to check it - let target = this; - if (!target && obj === _global) { - target = _global; - } - if (!target) { - return; - } - let previousValue = target[eventNameSymbol]; - if (previousValue) { - target.removeEventListener(eventName, wrapFn); - } - // issue #978, when onload handler was added before loading zone.js - // we should remove it with originalDescSet - if (originalDescSet) { - originalDescSet.apply(target, NULL_ON_PROP_VALUE); - } - if (typeof newValue === 'function') { - target[eventNameSymbol] = newValue; - target.addEventListener(eventName, wrapFn, false); - } - else { - target[eventNameSymbol] = null; - } - }; - // The getter would return undefined for unassigned properties but the default value of an - // unassigned property is null - desc.get = function () { - // in some of windows's onproperty callback, this is undefined - // so we need to check it - let target = this; - if (!target && obj === _global) { - target = _global; - } - if (!target) { - return null; - } - const listener = target[eventNameSymbol]; - if (listener) { - return listener; - } - else if (originalDescGet) { - // result will be null when use inline event attribute, - // such as - // because the onclick function is internal raw uncompiled handler - // the onclick will be evaluated when first time event was triggered or - // the property is accessed, https://github.com/angular/zone.js/issues/525 - // so we should use original native get to retrieve the handler - let value = originalDescGet && originalDescGet.call(this); - if (value) { - desc.set.call(this, value); - if (typeof target[REMOVE_ATTRIBUTE] === 'function') { - target.removeAttribute(prop); - } - return value; - } - } - return null; - }; - ObjectDefineProperty(obj, prop, desc); - obj[onPropPatchedSymbol] = true; -} -function patchOnProperties(obj, properties, prototype) { - if (properties) { - for (let i = 0; i < properties.length; i++) { - patchProperty(obj, 'on' + properties[i], prototype); - } - } - else { - const onProperties = []; - for (const prop in obj) { - if (prop.substr(0, 2) == 'on') { - onProperties.push(prop); - } - } - for (let j = 0; j < onProperties.length; j++) { - patchProperty(obj, onProperties[j], prototype); - } - } -} -const originalInstanceKey = zoneSymbol('originalInstance'); -// wrap some native API on `window` -function patchClass(className) { - const OriginalClass = _global[className]; - if (!OriginalClass) - return; - // keep original class in global - _global[zoneSymbol(className)] = OriginalClass; - _global[className] = function () { - const a = bindArguments(arguments, className); - switch (a.length) { - case 0: - this[originalInstanceKey] = new OriginalClass(); - break; - case 1: - this[originalInstanceKey] = new OriginalClass(a[0]); - break; - case 2: - this[originalInstanceKey] = new OriginalClass(a[0], a[1]); - break; - case 3: - this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]); - break; - case 4: - this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]); - break; - default: - throw new Error('Arg list too long.'); - } - }; - // attach original delegate to patched function - attachOriginToPatched(_global[className], OriginalClass); - const instance = new OriginalClass(function () { }); - let prop; - for (prop in instance) { - // https://bugs.webkit.org/show_bug.cgi?id=44721 - if (className === 'XMLHttpRequest' && prop === 'responseBlob') - continue; - (function (prop) { - if (typeof instance[prop] === 'function') { - _global[className].prototype[prop] = function () { - return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments); - }; - } - else { - ObjectDefineProperty(_global[className].prototype, prop, { - set: function (fn) { - if (typeof fn === 'function') { - this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop); - // keep callback in wrapped function so we can - // use it in Function.prototype.toString to return - // the native one. - attachOriginToPatched(this[originalInstanceKey][prop], fn); - } - else { - this[originalInstanceKey][prop] = fn; - } - }, - get: function () { - return this[originalInstanceKey][prop]; - } - }); - } - }(prop)); - } - for (prop in OriginalClass) { - if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) { - _global[className][prop] = OriginalClass[prop]; - } - } -} -function copySymbolProperties(src, dest) { - if (typeof Object.getOwnPropertySymbols !== 'function') { - return; - } - const symbols = Object.getOwnPropertySymbols(src); - symbols.forEach((symbol) => { - const desc = Object.getOwnPropertyDescriptor(src, symbol); - Object.defineProperty(dest, symbol, { - get: function () { - return src[symbol]; - }, - set: function (value) { - if (desc && (!desc.writable || typeof desc.set !== 'function')) { - // if src[symbol] is not writable or not have a setter, just return - return; - } - src[symbol] = value; - }, - enumerable: desc ? desc.enumerable : true, - configurable: desc ? desc.configurable : true - }); - }); -} -let shouldCopySymbolProperties = false; - -function patchMethod(target, name, patchFn) { - let proto = target; - while (proto && !proto.hasOwnProperty(name)) { - proto = ObjectGetPrototypeOf(proto); - } - if (!proto && target[name]) { - // somehow we did not find it, but we can see it. This happens on IE for Window properties. - proto = target; - } - const delegateName = zoneSymbol(name); - let delegate = null; - if (proto && !(delegate = proto[delegateName])) { - delegate = proto[delegateName] = proto[name]; - // check whether proto[name] is writable - // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob - const desc = proto && ObjectGetOwnPropertyDescriptor(proto, name); - if (isPropertyWritable(desc)) { - const patchDelegate = patchFn(delegate, delegateName, name); - proto[name] = function () { - return patchDelegate(this, arguments); - }; - attachOriginToPatched(proto[name], delegate); - if (shouldCopySymbolProperties) { - copySymbolProperties(delegate, proto[name]); - } - } - } - return delegate; -} -// TODO: @JiaLiPassion, support cancel task later if necessary -function patchMacroTask(obj, funcName, metaCreator) { - let setNative = null; - function scheduleTask(task) { - const data = task.data; - data.args[data.cbIdx] = function () { - task.invoke.apply(this, arguments); - }; - setNative.apply(data.target, data.args); - return task; - } - setNative = patchMethod(obj, funcName, (delegate) => function (self, args) { - const meta = metaCreator(self, args); - if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') { - return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask); - } - else { - // cause an error by calling it directly. - return delegate.apply(self, args); - } - }); -} - -function attachOriginToPatched(patched, original) { - patched[zoneSymbol('OriginalDelegate')] = original; -} -let isDetectedIEOrEdge = false; -let ieOrEdge = false; -function isIE() { - try { - const ua = internalWindow.navigator.userAgent; - if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1) { - return true; - } - } - catch (error) { - } - return false; -} -function isIEOrEdge() { - if (isDetectedIEOrEdge) { - return ieOrEdge; - } - isDetectedIEOrEdge = true; - try { - const ua = internalWindow.navigator.userAgent; - if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) { - ieOrEdge = true; - } - } - catch (error) { - } - return ieOrEdge; -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -// override Function.prototype.toString to make zone.js patched function -// look like native function -Zone.__load_patch('toString', (global) => { - // patch Func.prototype.toString to let them look like native - const originalFunctionToString = Function.prototype.toString; - const ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate'); - const PROMISE_SYMBOL = zoneSymbol('Promise'); - const ERROR_SYMBOL = zoneSymbol('Error'); - const newFunctionToString = function toString() { - if (typeof this === 'function') { - const originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL]; - if (originalDelegate) { - if (typeof originalDelegate === 'function') { - return originalFunctionToString.call(originalDelegate); - } - else { - return Object.prototype.toString.call(originalDelegate); - } - } - if (this === Promise) { - const nativePromise = global[PROMISE_SYMBOL]; - if (nativePromise) { - return originalFunctionToString.call(nativePromise); - } - } - if (this === Error) { - const nativeError = global[ERROR_SYMBOL]; - if (nativeError) { - return originalFunctionToString.call(nativeError); - } - } - } - return originalFunctionToString.call(this); - }; - newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString; - Function.prototype.toString = newFunctionToString; - // patch Object.prototype.toString to let them look like native - const originalObjectToString = Object.prototype.toString; - const PROMISE_OBJECT_TO_STRING = '[object Promise]'; - Object.prototype.toString = function () { - if (this instanceof Promise) { - return PROMISE_OBJECT_TO_STRING; - } - return originalObjectToString.call(this); - }; -}); - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @fileoverview - * @suppress {missingRequire} - */ -let passiveSupported = false; -if (typeof window !== 'undefined') { - try { - const options = Object.defineProperty({}, 'passive', { - get: function () { - passiveSupported = true; - } - }); - window.addEventListener('test', options, options); - window.removeEventListener('test', options, options); - } - catch (err) { - passiveSupported = false; - } -} -// an identifier to tell ZoneTask do not create a new invoke closure -const OPTIMIZED_ZONE_EVENT_TASK_DATA = { - useG: true -}; -const zoneSymbolEventNames$1 = {}; -const globalSources = {}; -const EVENT_NAME_SYMBOL_REGX = /^__zone_symbol__(\w+)(true|false)$/; -const IMMEDIATE_PROPAGATION_SYMBOL = ('__zone_symbol__propagationStopped'); -function patchEventTarget(_global, apis, patchOptions) { - const ADD_EVENT_LISTENER = (patchOptions && patchOptions.add) || ADD_EVENT_LISTENER_STR; - const REMOVE_EVENT_LISTENER = (patchOptions && patchOptions.rm) || REMOVE_EVENT_LISTENER_STR; - const LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.listeners) || 'eventListeners'; - const REMOVE_ALL_LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.rmAll) || 'removeAllListeners'; - const zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER); - const ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':'; - const PREPEND_EVENT_LISTENER = 'prependListener'; - const PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':'; - const invokeTask = function (task, target, event) { - // for better performance, check isRemoved which is set - // by removeEventListener - if (task.isRemoved) { - return; - } - const delegate = task.callback; - if (typeof delegate === 'object' && delegate.handleEvent) { - // create the bind version of handleEvent when invoke - task.callback = (event) => delegate.handleEvent(event); - task.originalDelegate = delegate; - } - // invoke static task.invoke - task.invoke(task, target, [event]); - const options = task.options; - if (options && typeof options === 'object' && options.once) { - // if options.once is true, after invoke once remove listener here - // only browser need to do this, nodejs eventEmitter will cal removeListener - // inside EventEmitter.once - const delegate = task.originalDelegate ? task.originalDelegate : task.callback; - target[REMOVE_EVENT_LISTENER].call(target, event.type, delegate, options); - } - }; - // global shared zoneAwareCallback to handle all event callback with capture = false - const globalZoneAwareCallback = function (event) { - // https://github.com/angular/zone.js/issues/911, in IE, sometimes - // event will be undefined, so we need to use window.event - event = event || _global.event; - if (!event) { - return; - } - // event.target is needed for Samsung TV and SourceBuffer - // || global is needed https://github.com/angular/zone.js/issues/190 - const target = this || event.target || _global; - const tasks = target[zoneSymbolEventNames$1[event.type][FALSE_STR]]; - if (tasks) { - // invoke all tasks which attached to current target with given event.type and capture = false - // for performance concern, if task.length === 1, just invoke - if (tasks.length === 1) { - invokeTask(tasks[0], target, event); - } - else { - // https://github.com/angular/zone.js/issues/836 - // copy the tasks array before invoke, to avoid - // the callback will remove itself or other listener - const copyTasks = tasks.slice(); - for (let i = 0; i < copyTasks.length; i++) { - if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) { - break; - } - invokeTask(copyTasks[i], target, event); - } - } - } - }; - // global shared zoneAwareCallback to handle all event callback with capture = true - const globalZoneAwareCaptureCallback = function (event) { - // https://github.com/angular/zone.js/issues/911, in IE, sometimes - // event will be undefined, so we need to use window.event - event = event || _global.event; - if (!event) { - return; - } - // event.target is needed for Samsung TV and SourceBuffer - // || global is needed https://github.com/angular/zone.js/issues/190 - const target = this || event.target || _global; - const tasks = target[zoneSymbolEventNames$1[event.type][TRUE_STR]]; - if (tasks) { - // invoke all tasks which attached to current target with given event.type and capture = false - // for performance concern, if task.length === 1, just invoke - if (tasks.length === 1) { - invokeTask(tasks[0], target, event); - } - else { - // https://github.com/angular/zone.js/issues/836 - // copy the tasks array before invoke, to avoid - // the callback will remove itself or other listener - const copyTasks = tasks.slice(); - for (let i = 0; i < copyTasks.length; i++) { - if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) { - break; - } - invokeTask(copyTasks[i], target, event); - } - } - } - }; - function patchEventTargetMethods(obj, patchOptions) { - if (!obj) { - return false; - } - let useGlobalCallback = true; - if (patchOptions && patchOptions.useG !== undefined) { - useGlobalCallback = patchOptions.useG; - } - const validateHandler = patchOptions && patchOptions.vh; - let checkDuplicate = true; - if (patchOptions && patchOptions.chkDup !== undefined) { - checkDuplicate = patchOptions.chkDup; - } - let returnTarget = false; - if (patchOptions && patchOptions.rt !== undefined) { - returnTarget = patchOptions.rt; - } - let proto = obj; - while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) { - proto = ObjectGetPrototypeOf(proto); - } - if (!proto && obj[ADD_EVENT_LISTENER]) { - // somehow we did not find it, but we can see it. This happens on IE for Window properties. - proto = obj; - } - if (!proto) { - return false; - } - if (proto[zoneSymbolAddEventListener]) { - return false; - } - const eventNameToString = patchOptions && patchOptions.eventNameToString; - // a shared global taskData to pass data for scheduleEventTask - // so we do not need to create a new object just for pass some data - const taskData = {}; - const nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER]; - const nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] = - proto[REMOVE_EVENT_LISTENER]; - const nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] = - proto[LISTENERS_EVENT_LISTENER]; - const nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] = - proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER]; - let nativePrependEventListener; - if (patchOptions && patchOptions.prepend) { - nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] = - proto[patchOptions.prepend]; - } - function checkIsPassive(task) { - if (!passiveSupported && typeof taskData.options !== 'boolean' && - typeof taskData.options !== 'undefined' && taskData.options !== null) { - // options is a non-null non-undefined object - // passive is not supported - // don't pass options as object - // just pass capture as a boolean - task.options = !!taskData.options.capture; - taskData.options = task.options; - } - } - const customScheduleGlobal = function (task) { - // if there is already a task for the eventName + capture, - // just return, because we use the shared globalZoneAwareCallback here. - if (taskData.isExisting) { - return; - } - checkIsPassive(task); - return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options); - }; - const customCancelGlobal = function (task) { - // if task is not marked as isRemoved, this call is directly - // from Zone.prototype.cancelTask, we should remove the task - // from tasksList of target first - if (!task.isRemoved) { - const symbolEventNames = zoneSymbolEventNames$1[task.eventName]; - let symbolEventName; - if (symbolEventNames) { - symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR]; - } - const existingTasks = symbolEventName && task.target[symbolEventName]; - if (existingTasks) { - for (let i = 0; i < existingTasks.length; i++) { - const existingTask = existingTasks[i]; - if (existingTask === task) { - existingTasks.splice(i, 1); - // set isRemoved to data for faster invokeTask check - task.isRemoved = true; - if (existingTasks.length === 0) { - // all tasks for the eventName + capture have gone, - // remove globalZoneAwareCallback and remove the task cache from target - task.allRemoved = true; - task.target[symbolEventName] = null; - } - break; - } - } - } - } - // if all tasks for the eventName + capture have gone, - // we will really remove the global event callback, - // if not, return - if (!task.allRemoved) { - return; - } - return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options); - }; - const customScheduleNonGlobal = function (task) { - checkIsPassive(task); - return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options); - }; - const customSchedulePrepend = function (task) { - return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options); - }; - const customCancelNonGlobal = function (task) { - return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options); - }; - const customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal; - const customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal; - const compareTaskCallbackVsDelegate = function (task, delegate) { - const typeOfDelegate = typeof delegate; - return (typeOfDelegate === 'function' && task.callback === delegate) || - (typeOfDelegate === 'object' && task.originalDelegate === delegate); - }; - const compare = (patchOptions && patchOptions.diff) ? patchOptions.diff : compareTaskCallbackVsDelegate; - const blackListedEvents = Zone[Zone.__symbol__('BLACK_LISTED_EVENTS')]; - const makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget = false, prepend = false) { - return function () { - const target = this || _global; - const eventName = arguments[0]; - let delegate = arguments[1]; - if (!delegate) { - return nativeListener.apply(this, arguments); - } - if (isNode && eventName === 'uncaughtException') { - // don't patch uncaughtException of nodejs to prevent endless loop - return nativeListener.apply(this, arguments); - } - // don't create the bind delegate function for handleEvent - // case here to improve addEventListener performance - // we will create the bind delegate when invoke - let isHandleEvent = false; - if (typeof delegate !== 'function') { - if (!delegate.handleEvent) { - return nativeListener.apply(this, arguments); - } - isHandleEvent = true; - } - if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) { - return; - } - const options = arguments[2]; - if (blackListedEvents) { - // check black list - for (let i = 0; i < blackListedEvents.length; i++) { - if (eventName === blackListedEvents[i]) { - return nativeListener.apply(this, arguments); - } - } - } - let capture; - let once = false; - if (options === undefined) { - capture = false; - } - else if (options === true) { - capture = true; - } - else if (options === false) { - capture = false; - } - else { - capture = options ? !!options.capture : false; - once = options ? !!options.once : false; - } - const zone = Zone.current; - const symbolEventNames = zoneSymbolEventNames$1[eventName]; - let symbolEventName; - if (!symbolEventNames) { - // the code is duplicate, but I just want to get some better performance - const falseEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + FALSE_STR; - const trueEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + TRUE_STR; - const symbol = ZONE_SYMBOL_PREFIX + falseEventName; - const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; - zoneSymbolEventNames$1[eventName] = {}; - zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol; - zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture; - symbolEventName = capture ? symbolCapture : symbol; - } - else { - symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR]; - } - let existingTasks = target[symbolEventName]; - let isExisting = false; - if (existingTasks) { - // already have task registered - isExisting = true; - if (checkDuplicate) { - for (let i = 0; i < existingTasks.length; i++) { - if (compare(existingTasks[i], delegate)) { - // same callback, same capture, same event name, just return - return; - } - } - } - } - else { - existingTasks = target[symbolEventName] = []; - } - let source; - const constructorName = target.constructor['name']; - const targetSource = globalSources[constructorName]; - if (targetSource) { - source = targetSource[eventName]; - } - if (!source) { - source = constructorName + addSource + - (eventNameToString ? eventNameToString(eventName) : eventName); - } - // do not create a new object as task.data to pass those things - // just use the global shared one - taskData.options = options; - if (once) { - // if addEventListener with once options, we don't pass it to - // native addEventListener, instead we keep the once setting - // and handle ourselves. - taskData.options.once = false; - } - taskData.target = target; - taskData.capture = capture; - taskData.eventName = eventName; - taskData.isExisting = isExisting; - const data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : undefined; - // keep taskData into data to allow onScheduleEventTask to access the task information - if (data) { - data.taskData = taskData; - } - const task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn); - // should clear taskData.target to avoid memory leak - // issue, https://github.com/angular/angular/issues/20442 - taskData.target = null; - // need to clear up taskData because it is a global object - if (data) { - data.taskData = null; - } - // have to save those information to task in case - // application may call task.zone.cancelTask() directly - if (once) { - options.once = true; - } - if (!(!passiveSupported && typeof task.options === 'boolean')) { - // if not support passive, and we pass an option object - // to addEventListener, we should save the options to task - task.options = options; - } - task.target = target; - task.capture = capture; - task.eventName = eventName; - if (isHandleEvent) { - // save original delegate for compare to check duplicate - task.originalDelegate = delegate; - } - if (!prepend) { - existingTasks.push(task); - } - else { - existingTasks.unshift(task); - } - if (returnTarget) { - return target; - } - }; - }; - proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget); - if (nativePrependEventListener) { - proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true); - } - proto[REMOVE_EVENT_LISTENER] = function () { - const target = this || _global; - const eventName = arguments[0]; - const options = arguments[2]; - let capture; - if (options === undefined) { - capture = false; - } - else if (options === true) { - capture = true; - } - else if (options === false) { - capture = false; - } - else { - capture = options ? !!options.capture : false; - } - const delegate = arguments[1]; - if (!delegate) { - return nativeRemoveEventListener.apply(this, arguments); - } - if (validateHandler && - !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) { - return; - } - const symbolEventNames = zoneSymbolEventNames$1[eventName]; - let symbolEventName; - if (symbolEventNames) { - symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR]; - } - const existingTasks = symbolEventName && target[symbolEventName]; - if (existingTasks) { - for (let i = 0; i < existingTasks.length; i++) { - const existingTask = existingTasks[i]; - if (compare(existingTask, delegate)) { - existingTasks.splice(i, 1); - // set isRemoved to data for faster invokeTask check - existingTask.isRemoved = true; - if (existingTasks.length === 0) { - // all tasks for the eventName + capture have gone, - // remove globalZoneAwareCallback and remove the task cache from target - existingTask.allRemoved = true; - target[symbolEventName] = null; - } - existingTask.zone.cancelTask(existingTask); - if (returnTarget) { - return target; - } - return; - } - } - } - // issue 930, didn't find the event name or callback - // from zone kept existingTasks, the callback maybe - // added outside of zone, we need to call native removeEventListener - // to try to remove it. - return nativeRemoveEventListener.apply(this, arguments); - }; - proto[LISTENERS_EVENT_LISTENER] = function () { - const target = this || _global; - const eventName = arguments[0]; - const listeners = []; - const tasks = findEventTasks(target, eventNameToString ? eventNameToString(eventName) : eventName); - for (let i = 0; i < tasks.length; i++) { - const task = tasks[i]; - let delegate = task.originalDelegate ? task.originalDelegate : task.callback; - listeners.push(delegate); - } - return listeners; - }; - proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () { - const target = this || _global; - const eventName = arguments[0]; - if (!eventName) { - const keys = Object.keys(target); - for (let i = 0; i < keys.length; i++) { - const prop = keys[i]; - const match = EVENT_NAME_SYMBOL_REGX.exec(prop); - let evtName = match && match[1]; - // in nodejs EventEmitter, removeListener event is - // used for monitoring the removeListener call, - // so just keep removeListener eventListener until - // all other eventListeners are removed - if (evtName && evtName !== 'removeListener') { - this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName); - } - } - // remove removeListener listener finally - this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener'); - } - else { - const symbolEventNames = zoneSymbolEventNames$1[eventName]; - if (symbolEventNames) { - const symbolEventName = symbolEventNames[FALSE_STR]; - const symbolCaptureEventName = symbolEventNames[TRUE_STR]; - const tasks = target[symbolEventName]; - const captureTasks = target[symbolCaptureEventName]; - if (tasks) { - const removeTasks = tasks.slice(); - for (let i = 0; i < removeTasks.length; i++) { - const task = removeTasks[i]; - let delegate = task.originalDelegate ? task.originalDelegate : task.callback; - this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options); - } - } - if (captureTasks) { - const removeTasks = captureTasks.slice(); - for (let i = 0; i < removeTasks.length; i++) { - const task = removeTasks[i]; - let delegate = task.originalDelegate ? task.originalDelegate : task.callback; - this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options); - } - } - } - } - if (returnTarget) { - return this; - } - }; - // for native toString patch - attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener); - attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener); - if (nativeRemoveAllListeners) { - attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners); - } - if (nativeListeners) { - attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners); - } - return true; - } - let results = []; - for (let i = 0; i < apis.length; i++) { - results[i] = patchEventTargetMethods(apis[i], patchOptions); - } - return results; -} -function findEventTasks(target, eventName) { - const foundTasks = []; - for (let prop in target) { - const match = EVENT_NAME_SYMBOL_REGX.exec(prop); - let evtName = match && match[1]; - if (evtName && (!eventName || evtName === eventName)) { - const tasks = target[prop]; - if (tasks) { - for (let i = 0; i < tasks.length; i++) { - foundTasks.push(tasks[i]); - } - } - } - } - return foundTasks; -} -function patchEventPrototype(global, api) { - const Event = global['Event']; - if (Event && Event.prototype) { - api.patchMethod(Event.prototype, 'stopImmediatePropagation', (delegate) => function (self, args) { - self[IMMEDIATE_PROPAGATION_SYMBOL] = true; - // we need to call the native stopImmediatePropagation - // in case in some hybrid application, some part of - // application will be controlled by zone, some are not - delegate && delegate.apply(self, args); - }); - } -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function patchCallbacks(api, target, targetName, method, callbacks) { - const symbol = Zone.__symbol__(method); - if (target[symbol]) { - return; - } - const nativeDelegate = target[symbol] = target[method]; - target[method] = function (name, opts, options) { - if (opts && opts.prototype) { - callbacks.forEach(function (callback) { - const source = `${targetName}.${method}::` + callback; - const prototype = opts.prototype; - if (prototype.hasOwnProperty(callback)) { - const descriptor = api.ObjectGetOwnPropertyDescriptor(prototype, callback); - if (descriptor && descriptor.value) { - descriptor.value = api.wrapWithCurrentZone(descriptor.value, source); - api._redefineProperty(opts.prototype, callback, descriptor); - } - else if (prototype[callback]) { - prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source); - } - } - else if (prototype[callback]) { - prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source); - } - }); - } - return nativeDelegate.call(target, name, opts, options); - }; - api.attachOriginToPatched(target[method], nativeDelegate); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/* - * This is necessary for Chrome and Chrome mobile, to enable - * things like redefining `createdCallback` on an element. - */ -const zoneSymbol$1 = Zone.__symbol__; -const _defineProperty = Object[zoneSymbol$1('defineProperty')] = Object.defineProperty; -const _getOwnPropertyDescriptor = Object[zoneSymbol$1('getOwnPropertyDescriptor')] = - Object.getOwnPropertyDescriptor; -const _create = Object.create; -const unconfigurablesKey = zoneSymbol$1('unconfigurables'); -function propertyPatch() { - Object.defineProperty = function (obj, prop, desc) { - if (isUnconfigurable(obj, prop)) { - throw new TypeError('Cannot assign to read only property \'' + prop + '\' of ' + obj); - } - const originalConfigurableFlag = desc.configurable; - if (prop !== 'prototype') { - desc = rewriteDescriptor(obj, prop, desc); - } - return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); - }; - Object.defineProperties = function (obj, props) { - Object.keys(props).forEach(function (prop) { - Object.defineProperty(obj, prop, props[prop]); - }); - return obj; - }; - Object.create = function (obj, proto) { - if (typeof proto === 'object' && !Object.isFrozen(proto)) { - Object.keys(proto).forEach(function (prop) { - proto[prop] = rewriteDescriptor(obj, prop, proto[prop]); - }); - } - return _create(obj, proto); - }; - Object.getOwnPropertyDescriptor = function (obj, prop) { - const desc = _getOwnPropertyDescriptor(obj, prop); - if (desc && isUnconfigurable(obj, prop)) { - desc.configurable = false; - } - return desc; - }; -} -function _redefineProperty(obj, prop, desc) { - const originalConfigurableFlag = desc.configurable; - desc = rewriteDescriptor(obj, prop, desc); - return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); -} -function isUnconfigurable(obj, prop) { - return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop]; -} -function rewriteDescriptor(obj, prop, desc) { - // issue-927, if the desc is frozen, don't try to change the desc - if (!Object.isFrozen(desc)) { - desc.configurable = true; - } - if (!desc.configurable) { - // issue-927, if the obj is frozen, don't try to set the desc to obj - if (!obj[unconfigurablesKey] && !Object.isFrozen(obj)) { - _defineProperty(obj, unconfigurablesKey, { writable: true, value: {} }); - } - if (obj[unconfigurablesKey]) { - obj[unconfigurablesKey][prop] = true; - } - } - return desc; -} -function _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) { - try { - return _defineProperty(obj, prop, desc); - } - catch (error) { - if (desc.configurable) { - // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's - // retry with the original flag value - if (typeof originalConfigurableFlag == 'undefined') { - delete desc.configurable; - } - else { - desc.configurable = originalConfigurableFlag; - } - try { - return _defineProperty(obj, prop, desc); - } - catch (error) { - let descJson = null; - try { - descJson = JSON.stringify(desc); - } - catch (error) { - descJson = desc.toString(); - } - console.log(`Attempting to configure '${prop}' with descriptor '${descJson}' on object '${obj}' and got error, giving up: ${error}`); - } - } - else { - throw error; - } - } -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @fileoverview - * @suppress {globalThis} - */ -const globalEventHandlersEventNames = [ - 'abort', - 'animationcancel', - 'animationend', - 'animationiteration', - 'auxclick', - 'beforeinput', - 'blur', - 'cancel', - 'canplay', - 'canplaythrough', - 'change', - 'compositionstart', - 'compositionupdate', - 'compositionend', - 'cuechange', - 'click', - 'close', - 'contextmenu', - 'curechange', - 'dblclick', - 'drag', - 'dragend', - 'dragenter', - 'dragexit', - 'dragleave', - 'dragover', - 'drop', - 'durationchange', - 'emptied', - 'ended', - 'error', - 'focus', - 'focusin', - 'focusout', - 'gotpointercapture', - 'input', - 'invalid', - 'keydown', - 'keypress', - 'keyup', - 'load', - 'loadstart', - 'loadeddata', - 'loadedmetadata', - 'lostpointercapture', - 'mousedown', - 'mouseenter', - 'mouseleave', - 'mousemove', - 'mouseout', - 'mouseover', - 'mouseup', - 'mousewheel', - 'orientationchange', - 'pause', - 'play', - 'playing', - 'pointercancel', - 'pointerdown', - 'pointerenter', - 'pointerleave', - 'pointerlockchange', - 'mozpointerlockchange', - 'webkitpointerlockerchange', - 'pointerlockerror', - 'mozpointerlockerror', - 'webkitpointerlockerror', - 'pointermove', - 'pointout', - 'pointerover', - 'pointerup', - 'progress', - 'ratechange', - 'reset', - 'resize', - 'scroll', - 'seeked', - 'seeking', - 'select', - 'selectionchange', - 'selectstart', - 'show', - 'sort', - 'stalled', - 'submit', - 'suspend', - 'timeupdate', - 'volumechange', - 'touchcancel', - 'touchmove', - 'touchstart', - 'touchend', - 'transitioncancel', - 'transitionend', - 'waiting', - 'wheel' -]; -const documentEventNames = [ - 'afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'freeze', 'fullscreenchange', - 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror', - 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange', - 'visibilitychange', 'resume' -]; -const windowEventNames = [ - 'absolutedeviceorientation', - 'afterinput', - 'afterprint', - 'appinstalled', - 'beforeinstallprompt', - 'beforeprint', - 'beforeunload', - 'devicelight', - 'devicemotion', - 'deviceorientation', - 'deviceorientationabsolute', - 'deviceproximity', - 'hashchange', - 'languagechange', - 'message', - 'mozbeforepaint', - 'offline', - 'online', - 'paint', - 'pageshow', - 'pagehide', - 'popstate', - 'rejectionhandled', - 'storage', - 'unhandledrejection', - 'unload', - 'userproximity', - 'vrdisplyconnected', - 'vrdisplaydisconnected', - 'vrdisplaypresentchange' -]; -const htmlElementEventNames = [ - 'beforecopy', 'beforecut', 'beforepaste', 'copy', 'cut', 'paste', 'dragstart', 'loadend', - 'animationstart', 'search', 'transitionrun', 'transitionstart', 'webkitanimationend', - 'webkitanimationiteration', 'webkitanimationstart', 'webkittransitionend' -]; -const mediaElementEventNames = ['encrypted', 'waitingforkey', 'msneedkey', 'mozinterruptbegin', 'mozinterruptend']; -const ieElementEventNames = [ - 'activate', - 'afterupdate', - 'ariarequest', - 'beforeactivate', - 'beforedeactivate', - 'beforeeditfocus', - 'beforeupdate', - 'cellchange', - 'controlselect', - 'dataavailable', - 'datasetchanged', - 'datasetcomplete', - 'errorupdate', - 'filterchange', - 'layoutcomplete', - 'losecapture', - 'move', - 'moveend', - 'movestart', - 'propertychange', - 'resizeend', - 'resizestart', - 'rowenter', - 'rowexit', - 'rowsdelete', - 'rowsinserted', - 'command', - 'compassneedscalibration', - 'deactivate', - 'help', - 'mscontentzoom', - 'msmanipulationstatechanged', - 'msgesturechange', - 'msgesturedoubletap', - 'msgestureend', - 'msgesturehold', - 'msgesturestart', - 'msgesturetap', - 'msgotpointercapture', - 'msinertiastart', - 'mslostpointercapture', - 'mspointercancel', - 'mspointerdown', - 'mspointerenter', - 'mspointerhover', - 'mspointerleave', - 'mspointermove', - 'mspointerout', - 'mspointerover', - 'mspointerup', - 'pointerout', - 'mssitemodejumplistitemremoved', - 'msthumbnailclick', - 'stop', - 'storagecommit' -]; -const webglEventNames = ['webglcontextrestored', 'webglcontextlost', 'webglcontextcreationerror']; -const formEventNames = ['autocomplete', 'autocompleteerror']; -const detailEventNames = ['toggle']; -const frameEventNames = ['load']; -const frameSetEventNames = ['blur', 'error', 'focus', 'load', 'resize', 'scroll', 'messageerror']; -const marqueeEventNames = ['bounce', 'finish', 'start']; -const XMLHttpRequestEventNames = [ - 'loadstart', 'progress', 'abort', 'error', 'load', 'progress', 'timeout', 'loadend', - 'readystatechange' -]; -const IDBIndexEventNames = ['upgradeneeded', 'complete', 'abort', 'success', 'error', 'blocked', 'versionchange', 'close']; -const websocketEventNames = ['close', 'error', 'open', 'message']; -const workerEventNames = ['error', 'message']; -const eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames); -function filterProperties(target, onProperties, ignoreProperties) { - if (!ignoreProperties || ignoreProperties.length === 0) { - return onProperties; - } - const tip = ignoreProperties.filter(ip => ip.target === target); - if (!tip || tip.length === 0) { - return onProperties; - } - const targetIgnoreProperties = tip[0].ignoreProperties; - return onProperties.filter(op => targetIgnoreProperties.indexOf(op) === -1); -} -function patchFilteredProperties(target, onProperties, ignoreProperties, prototype) { - // check whether target is available, sometimes target will be undefined - // because different browser or some 3rd party plugin. - if (!target) { - return; - } - const filteredProperties = filterProperties(target, onProperties, ignoreProperties); - patchOnProperties(target, filteredProperties, prototype); -} -function propertyDescriptorPatch(api, _global) { - if (isNode && !isMix) { - return; - } - if (Zone[api.symbol('patchEvents')]) { - // events are already been patched by legacy patch. - return; - } - const supportsWebSocket = typeof WebSocket !== 'undefined'; - const ignoreProperties = _global['__Zone_ignore_on_properties']; - // for browsers that we can patch the descriptor: Chrome & Firefox - if (isBrowser) { - const internalWindow = window; - const ignoreErrorProperties = isIE ? [{ target: internalWindow, ignoreProperties: ['error'] }] : []; - // in IE/Edge, onProp not exist in window object, but in WindowPrototype - // so we need to pass WindowPrototype to check onProp exist or not - patchFilteredProperties(internalWindow, eventNames.concat(['messageerror']), ignoreProperties ? ignoreProperties.concat(ignoreErrorProperties) : ignoreProperties, ObjectGetPrototypeOf(internalWindow)); - patchFilteredProperties(Document.prototype, eventNames, ignoreProperties); - if (typeof internalWindow['SVGElement'] !== 'undefined') { - patchFilteredProperties(internalWindow['SVGElement'].prototype, eventNames, ignoreProperties); - } - patchFilteredProperties(Element.prototype, eventNames, ignoreProperties); - patchFilteredProperties(HTMLElement.prototype, eventNames, ignoreProperties); - patchFilteredProperties(HTMLMediaElement.prototype, mediaElementEventNames, ignoreProperties); - patchFilteredProperties(HTMLFrameSetElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties); - patchFilteredProperties(HTMLBodyElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties); - patchFilteredProperties(HTMLFrameElement.prototype, frameEventNames, ignoreProperties); - patchFilteredProperties(HTMLIFrameElement.prototype, frameEventNames, ignoreProperties); - const HTMLMarqueeElement = internalWindow['HTMLMarqueeElement']; - if (HTMLMarqueeElement) { - patchFilteredProperties(HTMLMarqueeElement.prototype, marqueeEventNames, ignoreProperties); - } - const Worker = internalWindow['Worker']; - if (Worker) { - patchFilteredProperties(Worker.prototype, workerEventNames, ignoreProperties); - } - } - const XMLHttpRequest = _global['XMLHttpRequest']; - if (XMLHttpRequest) { - // XMLHttpRequest is not available in ServiceWorker, so we need to check here - patchFilteredProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames, ignoreProperties); - } - const XMLHttpRequestEventTarget = _global['XMLHttpRequestEventTarget']; - if (XMLHttpRequestEventTarget) { - patchFilteredProperties(XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype, XMLHttpRequestEventNames, ignoreProperties); - } - if (typeof IDBIndex !== 'undefined') { - patchFilteredProperties(IDBIndex.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBRequest.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBOpenDBRequest.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBDatabase.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBTransaction.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBCursor.prototype, IDBIndexEventNames, ignoreProperties); - } - if (supportsWebSocket) { - patchFilteredProperties(WebSocket.prototype, websocketEventNames, ignoreProperties); - } -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -Zone.__load_patch('util', (global, Zone, api) => { - api.patchOnProperties = patchOnProperties; - api.patchMethod = patchMethod; - api.bindArguments = bindArguments; - api.patchMacroTask = patchMacroTask; - // In earlier version of zone.js (<0.9.0), we use env name `__zone_symbol__BLACK_LISTED_EVENTS` to - // define which events will not be patched by `Zone.js`. - // In newer version (>=0.9.0), we change the env name to `__zone_symbol__UNPATCHED_EVENTS` to keep - // the name consistent with angular repo. - // The `__zone_symbol__BLACK_LISTED_EVENTS` is deprecated, but it is still be supported for - // backwards compatibility. - const SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS'); - const SYMBOL_UNPATCHED_EVENTS = Zone.__symbol__('UNPATCHED_EVENTS'); - if (global[SYMBOL_UNPATCHED_EVENTS]) { - global[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_UNPATCHED_EVENTS]; - } - if (global[SYMBOL_BLACK_LISTED_EVENTS]) { - Zone[SYMBOL_BLACK_LISTED_EVENTS] = Zone[SYMBOL_UNPATCHED_EVENTS] = - global[SYMBOL_BLACK_LISTED_EVENTS]; - } - api.patchEventPrototype = patchEventPrototype; - api.patchEventTarget = patchEventTarget; - api.isIEOrEdge = isIEOrEdge; - api.ObjectDefineProperty = ObjectDefineProperty; - api.ObjectGetOwnPropertyDescriptor = ObjectGetOwnPropertyDescriptor; - api.ObjectCreate = ObjectCreate; - api.ArraySlice = ArraySlice; - api.patchClass = patchClass; - api.wrapWithCurrentZone = wrapWithCurrentZone; - api.filterProperties = filterProperties; - api.attachOriginToPatched = attachOriginToPatched; - api._redefineProperty = _redefineProperty; - api.patchCallbacks = patchCallbacks; - api.getGlobalObjects = () => ({ - globalSources, - zoneSymbolEventNames: zoneSymbolEventNames$1, - eventNames, - isBrowser, - isMix, - isNode, - TRUE_STR, - FALSE_STR, - ZONE_SYMBOL_PREFIX, - ADD_EVENT_LISTENER_STR, - REMOVE_EVENT_LISTENER_STR - }); -}); - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @fileoverview - * @suppress {missingRequire} - */ -const taskSymbol = zoneSymbol('zoneTask'); -function patchTimer(window, setName, cancelName, nameSuffix) { - let setNative = null; - let clearNative = null; - setName += nameSuffix; - cancelName += nameSuffix; - const tasksByHandleId = {}; - function scheduleTask(task) { - const data = task.data; - function timer() { - try { - task.invoke.apply(this, arguments); - } - finally { - // issue-934, task will be cancelled - // even it is a periodic task such as - // setInterval - if (!(task.data && task.data.isPeriodic)) { - if (typeof data.handleId === 'number') { - // in non-nodejs env, we remove timerId - // from local cache - delete tasksByHandleId[data.handleId]; - } - else if (data.handleId) { - // Node returns complex objects as handleIds - // we remove task reference from timer object - data.handleId[taskSymbol] = null; - } - } - } - } - data.args[0] = timer; - data.handleId = setNative.apply(window, data.args); - return task; - } - function clearTask(task) { - return clearNative(task.data.handleId); - } - setNative = - patchMethod(window, setName, (delegate) => function (self, args) { - if (typeof args[0] === 'function') { - const options = { - isPeriodic: nameSuffix === 'Interval', - delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 : - undefined, - args: args - }; - const task = scheduleMacroTaskWithCurrentZone(setName, args[0], options, scheduleTask, clearTask); - if (!task) { - return task; - } - // Node.js must additionally support the ref and unref functions. - const handle = task.data.handleId; - if (typeof handle === 'number') { - // for non nodejs env, we save handleId: task - // mapping in local cache for clearTimeout - tasksByHandleId[handle] = task; - } - else if (handle) { - // for nodejs env, we save task - // reference in timerId Object for clearTimeout - handle[taskSymbol] = task; - } - // check whether handle is null, because some polyfill or browser - // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame - if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' && - typeof handle.unref === 'function') { - task.ref = handle.ref.bind(handle); - task.unref = handle.unref.bind(handle); - } - if (typeof handle === 'number' || handle) { - return handle; - } - return task; - } - else { - // cause an error by calling it directly. - return delegate.apply(window, args); - } - }); - clearNative = - patchMethod(window, cancelName, (delegate) => function (self, args) { - const id = args[0]; - let task; - if (typeof id === 'number') { - // non nodejs env. - task = tasksByHandleId[id]; - } - else { - // nodejs env. - task = id && id[taskSymbol]; - // other environments. - if (!task) { - task = id; - } - } - if (task && typeof task.type === 'string') { - if (task.state !== 'notScheduled' && - (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) { - if (typeof id === 'number') { - delete tasksByHandleId[id]; - } - else if (id) { - id[taskSymbol] = null; - } - // Do not cancel already canceled functions - task.zone.cancelTask(task); - } - } - else { - // cause an error by calling it directly. - delegate.apply(window, args); - } - }); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function patchCustomElements(_global, api) { - const { isBrowser, isMix } = api.getGlobalObjects(); - if ((!isBrowser && !isMix) || !_global['customElements'] || !('customElements' in _global)) { - return; - } - const callbacks = ['connectedCallback', 'disconnectedCallback', 'adoptedCallback', 'attributeChangedCallback']; - api.patchCallbacks(api, _global.customElements, 'customElements', 'define', callbacks); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function eventTargetPatch(_global, api) { - if (Zone[api.symbol('patchEventTarget')]) { - // EventTarget is already patched. - return; - } - const { eventNames, zoneSymbolEventNames, TRUE_STR, FALSE_STR, ZONE_SYMBOL_PREFIX } = api.getGlobalObjects(); - // predefine all __zone_symbol__ + eventName + true/false string - for (let i = 0; i < eventNames.length; i++) { - const eventName = eventNames[i]; - const falseEventName = eventName + FALSE_STR; - const trueEventName = eventName + TRUE_STR; - const symbol = ZONE_SYMBOL_PREFIX + falseEventName; - const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; - zoneSymbolEventNames[eventName] = {}; - zoneSymbolEventNames[eventName][FALSE_STR] = symbol; - zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture; - } - const EVENT_TARGET = _global['EventTarget']; - if (!EVENT_TARGET || !EVENT_TARGET.prototype) { - return; - } - api.patchEventTarget(_global, [EVENT_TARGET && EVENT_TARGET.prototype]); - return true; -} -function patchEvent(global, api) { - api.patchEventPrototype(global, api); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @fileoverview - * @suppress {missingRequire} - */ -Zone.__load_patch('legacy', (global) => { - const legacyPatch = global[Zone.__symbol__('legacyPatch')]; - if (legacyPatch) { - legacyPatch(); - } -}); -Zone.__load_patch('timers', (global) => { - const set = 'set'; - const clear = 'clear'; - patchTimer(global, set, clear, 'Timeout'); - patchTimer(global, set, clear, 'Interval'); - patchTimer(global, set, clear, 'Immediate'); -}); -Zone.__load_patch('requestAnimationFrame', (global) => { - patchTimer(global, 'request', 'cancel', 'AnimationFrame'); - patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame'); - patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame'); -}); -Zone.__load_patch('blocking', (global, Zone) => { - const blockingMethods = ['alert', 'prompt', 'confirm']; - for (let i = 0; i < blockingMethods.length; i++) { - const name = blockingMethods[i]; - patchMethod(global, name, (delegate, symbol, name) => { - return function (s, args) { - return Zone.current.run(delegate, global, args, name); - }; - }); - } -}); -Zone.__load_patch('EventTarget', (global, Zone, api) => { - patchEvent(global, api); - eventTargetPatch(global, api); - // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener - const XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget']; - if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) { - api.patchEventTarget(global, [XMLHttpRequestEventTarget.prototype]); - } - patchClass('MutationObserver'); - patchClass('WebKitMutationObserver'); - patchClass('IntersectionObserver'); - patchClass('FileReader'); -}); -Zone.__load_patch('on_property', (global, Zone, api) => { - propertyDescriptorPatch(api, global); - propertyPatch(); -}); -Zone.__load_patch('customElements', (global, Zone, api) => { - patchCustomElements(global, api); -}); -Zone.__load_patch('XHR', (global, Zone) => { - // Treat XMLHttpRequest as a macrotask. - patchXHR(global); - const XHR_TASK = zoneSymbol('xhrTask'); - const XHR_SYNC = zoneSymbol('xhrSync'); - const XHR_LISTENER = zoneSymbol('xhrListener'); - const XHR_SCHEDULED = zoneSymbol('xhrScheduled'); - const XHR_URL = zoneSymbol('xhrURL'); - const XHR_ERROR_BEFORE_SCHEDULED = zoneSymbol('xhrErrorBeforeScheduled'); - function patchXHR(window) { - const XMLHttpRequest = window['XMLHttpRequest']; - if (!XMLHttpRequest) { - // XMLHttpRequest is not available in service worker - return; - } - const XMLHttpRequestPrototype = XMLHttpRequest.prototype; - function findPendingTask(target) { - return target[XHR_TASK]; - } - let oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER]; - let oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; - if (!oriAddListener) { - const XMLHttpRequestEventTarget = window['XMLHttpRequestEventTarget']; - if (XMLHttpRequestEventTarget) { - const XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget.prototype; - oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER]; - oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; - } - } - const READY_STATE_CHANGE = 'readystatechange'; - const SCHEDULED = 'scheduled'; - function scheduleTask(task) { - const data = task.data; - const target = data.target; - target[XHR_SCHEDULED] = false; - target[XHR_ERROR_BEFORE_SCHEDULED] = false; - // remove existing event listener - const listener = target[XHR_LISTENER]; - if (!oriAddListener) { - oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER]; - oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; - } - if (listener) { - oriRemoveListener.call(target, READY_STATE_CHANGE, listener); - } - const newListener = target[XHR_LISTENER] = () => { - if (target.readyState === target.DONE) { - // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with - // readyState=4 multiple times, so we need to check task state here - if (!data.aborted && target[XHR_SCHEDULED] && task.state === SCHEDULED) { - // check whether the xhr has registered onload listener - // if that is the case, the task should invoke after all - // onload listeners finish. - const loadTasks = target['__zone_symbol__loadfalse']; - if (loadTasks && loadTasks.length > 0) { - const oriInvoke = task.invoke; - task.invoke = function () { - // need to load the tasks again, because in other - // load listener, they may remove themselves - const loadTasks = target['__zone_symbol__loadfalse']; - for (let i = 0; i < loadTasks.length; i++) { - if (loadTasks[i] === task) { - loadTasks.splice(i, 1); - } - } - if (!data.aborted && task.state === SCHEDULED) { - oriInvoke.call(task); - } - }; - loadTasks.push(task); - } - else { - task.invoke(); - } - } - else if (!data.aborted && target[XHR_SCHEDULED] === false) { - // error occurs when xhr.send() - target[XHR_ERROR_BEFORE_SCHEDULED] = true; - } - } - }; - oriAddListener.call(target, READY_STATE_CHANGE, newListener); - const storedTask = target[XHR_TASK]; - if (!storedTask) { - target[XHR_TASK] = task; - } - sendNative.apply(target, data.args); - target[XHR_SCHEDULED] = true; - return task; - } - function placeholderCallback() { } - function clearTask(task) { - const data = task.data; - // Note - ideally, we would call data.target.removeEventListener here, but it's too late - // to prevent it from firing. So instead, we store info for the event listener. - data.aborted = true; - return abortNative.apply(data.target, data.args); - } - const openNative = patchMethod(XMLHttpRequestPrototype, 'open', () => function (self, args) { - self[XHR_SYNC] = args[2] == false; - self[XHR_URL] = args[1]; - return openNative.apply(self, args); - }); - const XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send'; - const fetchTaskAborting = zoneSymbol('fetchTaskAborting'); - const fetchTaskScheduling = zoneSymbol('fetchTaskScheduling'); - const sendNative = patchMethod(XMLHttpRequestPrototype, 'send', () => function (self, args) { - if (Zone.current[fetchTaskScheduling] === true) { - // a fetch is scheduling, so we are using xhr to polyfill fetch - // and because we already schedule macroTask for fetch, we should - // not schedule a macroTask for xhr again - return sendNative.apply(self, args); - } - if (self[XHR_SYNC]) { - // if the XHR is sync there is no task to schedule, just execute the code. - return sendNative.apply(self, args); - } - else { - const options = { target: self, url: self[XHR_URL], isPeriodic: false, args: args, aborted: false }; - const task = scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask); - if (self && self[XHR_ERROR_BEFORE_SCHEDULED] === true && !options.aborted && - task.state === SCHEDULED) { - // xhr request throw error when send - // we should invoke task instead of leaving a scheduled - // pending macroTask - task.invoke(); - } - } - }); - const abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', () => function (self, args) { - const task = findPendingTask(self); - if (task && typeof task.type == 'string') { - // If the XHR has already completed, do nothing. - // If the XHR has already been aborted, do nothing. - // Fix #569, call abort multiple times before done will cause - // macroTask task count be negative number - if (task.cancelFn == null || (task.data && task.data.aborted)) { - return; - } - task.zone.cancelTask(task); - } - else if (Zone.current[fetchTaskAborting] === true) { - // the abort is called from fetch polyfill, we need to call native abort of XHR. - return abortNative.apply(self, args); - } - // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no - // task - // to cancel. Do nothing. - }); - } -}); -Zone.__load_patch('geolocation', (global) => { - /// GEO_LOCATION - if (global['navigator'] && global['navigator'].geolocation) { - patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']); - } -}); -Zone.__load_patch('PromiseRejectionEvent', (global, Zone) => { - // handle unhandled promise rejection - function findPromiseRejectionHandler(evtName) { - return function (e) { - const eventTasks = findEventTasks(global, evtName); - eventTasks.forEach(eventTask => { - // windows has added unhandledrejection event listener - // trigger the event listener - const PromiseRejectionEvent = global['PromiseRejectionEvent']; - if (PromiseRejectionEvent) { - const evt = new PromiseRejectionEvent(evtName, { promise: e.promise, reason: e.rejection }); - eventTask.invoke(evt); - } - }); - }; - } - if (global['PromiseRejectionEvent']) { - Zone[zoneSymbol('unhandledPromiseRejectionHandler')] = - findPromiseRejectionHandler('unhandledrejection'); - Zone[zoneSymbol('rejectionHandledHandler')] = - findPromiseRejectionHandler('rejectionhandled'); - } -}); - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - -/***/ }), - -/***/ "./src/polyfills.ts": -/*!**************************!*\ - !*** ./src/polyfills.ts ***! - \**************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zone.js/dist/zone */ "./node_modules/zone.js/dist/zone-evergreen.js"); -/* harmony import */ var zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1__); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), - * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ -/*************************************************************************************************** - * BROWSER POLYFILLS - */ -/** IE9, IE10 and IE11 requires all of the following polyfills. **/ -// import 'core-js/es6/symbol'; -// import 'core-js/es6/object'; -// import 'core-js/es6/function'; -// import 'core-js/es6/parse-int'; -// import 'core-js/es6/parse-float'; -// import 'core-js/es6/number'; -// import 'core-js/es6/math'; -// import 'core-js/es6/string'; -// import 'core-js/es6/date'; -// import 'core-js/es6/array'; -// import 'core-js/es6/regexp'; -// import 'core-js/es6/map'; -// import 'core-js/es6/weak-map'; -// import 'core-js/es6/set'; -/** - * If the application will be indexed by Google Search, the following is required. - * Googlebot uses a renderer based on Chrome 41. - * https://developers.google.com/search/docs/guides/rendering - **/ -// import 'core-js/es6/array'; -/** IE10 and IE11 requires the following for NgClass support on SVG elements */ -// import 'classlist.js'; // Run `npm install --save classlist.js`. -/** IE10 and IE11 requires the following for the Reflect API. */ -// import 'core-js/es6/reflect'; -/** - * Web Animations `@angular/platform-browser/animations` - * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. - * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). - **/ -// import 'web-animations-js'; // Run `npm install --save web-animations-js`. -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - */ -// (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame -// (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick -// (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames -/* -* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js -* with the following flag, it will bypass `zone.js` patch for IE/Edge -*/ -// (window as any).__Zone_enable_cross_context_check = true; -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ - // Included with Angular CLI. -/*************************************************************************************************** - * APPLICATION IMPORTS - */ - - -/***/ }), - -/***/ 2: -/*!***************************************************************************************************************************!*\ - !*** multi ./src/polyfills.ts ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js ***! - \***************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(/*! C:\Users\Noelia\Desktop\DAA\daaexample\src\main\angular\src\polyfills.ts */"./src/polyfills.ts"); -module.exports = __webpack_require__(/*! C:\Users\Noelia\Desktop\DAA\daaexample\src\main\angular\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models\jit-polyfills.js */"./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js"); - - -/***/ }) - -},[[2,"runtime"]]]); -//# sourceMappingURL=polyfills-es2015.js.map \ No newline at end of file diff --git a/target/DAAExample/polyfills-es2015.js.map b/target/DAAExample/polyfills-es2015.js.map deleted file mode 100644 index 253988edc38edeedc72cb4f6d838d2d4e713b145..0000000000000000000000000000000000000000 --- a/target/DAAExample/polyfills-es2015.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-weak.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-iterator-constructor.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.define-metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.delete-metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata.js","./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js","./node_modules/tslib/tslib.es6.js","./node_modules/zone.js/dist/zone-evergreen.js","./src/polyfills.ts"],"names":[],"mappings":"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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,kCAAkC;AAClC,oCAAoC;AACpC,cAAc;AACd,KAAK;;AAEL;AACA;AACA;AACA;;;;;;;;;;;;;ACzLa;AACb,kBAAkB,mBAAO,CAAC,8HAA2B;AACrD,kBAAkB,mBAAO,CAAC,wIAAgC;AAC1D,eAAe,mBAAO,CAAC,wHAAwB;AAC/C,eAAe,mBAAO,CAAC,wHAAwB;AAC/C,iBAAiB,mBAAO,CAAC,4HAA0B;AACnD,cAAc,mBAAO,CAAC,oHAAsB;AAC5C,2BAA2B,mBAAO,CAAC,oIAA8B;AACjE,WAAW,mBAAO,CAAC,4GAAkB;AACrC,0BAA0B,mBAAO,CAAC,kIAA6B;;AAE/D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;;;;;;;;;;;;ACxHa;AACb,QAAQ,mBAAO,CAAC,kHAAqB;AACrC,aAAa,mBAAO,CAAC,kHAAqB;AAC1C,eAAe,mBAAO,CAAC,wHAAwB;AAC/C,eAAe,mBAAO,CAAC,sHAAuB;AAC9C,6BAA6B,mBAAO,CAAC,wIAAgC;AACrE,cAAc,mBAAO,CAAC,oHAAsB;AAC5C,iBAAiB,mBAAO,CAAC,4HAA0B;AACnD,eAAe,mBAAO,CAAC,wHAAwB;AAC/C,YAAY,mBAAO,CAAC,gHAAoB;AACxC,kCAAkC,mBAAO,CAAC,kKAA6C;AACvF,qBAAqB,mBAAO,CAAC,wIAAgC;AAC7D,wBAAwB,mBAAO,CAAC,4IAAkC;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,qDAAqD;AACrD;AACA,kDAAkD,iBAAiB,EAAE;AACrE;AACA;AACA,4EAA4E,iCAAiC,EAAE;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK,yDAAyD;;AAE9D;;AAEA;;AAEA;AACA;;;;;;;;;;;;AClGA,UAAU,mBAAO,CAAC,4GAAkB;AACpC,cAAc,mBAAO,CAAC,sHAAuB;AAC7C,qCAAqC,mBAAO,CAAC,0KAAiD;AAC9F,2BAA2B,mBAAO,CAAC,kJAAqC;;AAExE;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;;;;;;;;;;;;ACbA,YAAY,mBAAO,CAAC,gHAAoB;;AAExC;AACA,gBAAgB;AAChB;AACA;AACA,CAAC;;;;;;;;;;;;;ACNY;AACb,wBAAwB,mBAAO,CAAC,kIAA6B;AAC7D,aAAa,mBAAO,CAAC,gIAA4B;AACjD,+BAA+B,mBAAO,CAAC,0JAAyC;AAChF,qBAAqB,mBAAO,CAAC,wIAAgC;AAC7D,gBAAgB,mBAAO,CAAC,wHAAwB;;AAEhD,8BAA8B,aAAa;;AAE3C;AACA;AACA,6DAA6D,0CAA0C;AACvG;AACA;AACA;AACA;;;;;;;;;;;;ACfA,kBAAkB,mBAAO,CAAC,4HAA0B;AACpD,2BAA2B,mBAAO,CAAC,kJAAqC;AACxE,+BAA+B,mBAAO,CAAC,0JAAyC;;AAEhF;AACA;AACA,CAAC;AACD;AACA;AACA;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACPa;AACb,QAAQ,mBAAO,CAAC,kHAAqB;AACrC,gCAAgC,mBAAO,CAAC,4JAA0C;AAClF,qBAAqB,mBAAO,CAAC,oJAAsC;AACnE,qBAAqB,mBAAO,CAAC,oJAAsC;AACnE,qBAAqB,mBAAO,CAAC,wIAAgC;AAC7D,kCAAkC,mBAAO,CAAC,kKAA6C;AACvF,eAAe,mBAAO,CAAC,sHAAuB;AAC9C,sBAAsB,mBAAO,CAAC,wIAAgC;AAC9D,cAAc,mBAAO,CAAC,oHAAsB;AAC5C,gBAAgB,mBAAO,CAAC,wHAAwB;AAChD,oBAAoB,mBAAO,CAAC,kIAA6B;;AAEzD;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,aAAa;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,4CAA4C;AACrF,6CAA6C,4CAA4C;AACzF,+CAA+C,4CAA4C;AAC3F,KAAK,qBAAqB,sCAAsC;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,mBAAmB;AACnC;AACA;AACA,yCAAyC,kCAAkC;AAC3E;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,SAAS,qFAAqF;AACnG;;AAEA;AACA;;;;;;;;;;;;ACzFA,YAAY,mBAAO,CAAC,gHAAoB;;AAExC;AACA;AACA,iCAAiC,MAAM,mBAAmB,UAAU,EAAE,EAAE;AACxE,CAAC;;;;;;;;;;;;ACLD,aAAa,mBAAO,CAAC,kHAAqB;AAC1C,eAAe,mBAAO,CAAC,wHAAwB;;AAE/C;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACTA,aAAa,mBAAO,CAAC,kHAAqB;AAC1C,+BAA+B,mBAAO,CAAC,0KAAiD;AACxF,kCAAkC,mBAAO,CAAC,kKAA6C;AACvF,eAAe,mBAAO,CAAC,sHAAuB;AAC9C,gBAAgB,mBAAO,CAAC,0HAAyB;AACjD,gCAAgC,mBAAO,CAAC,4JAA0C;AAClF,eAAe,mBAAO,CAAC,wHAAwB;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,mDAAmD;AACnD,GAAG;AACH,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;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;;;;;ACzLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,UAAU,6CAA6C,eAAe;AACxI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0BAA0B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU,IAAI,YAAY,4BAA4B,QAAQ,sBAAsB,WAAW,GAAG,+CAA+C,SAAS,YAAY;AACzM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4HAA4H,wBAAwB,oCAAoC;AACxL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,sEAAsE;AACtJ;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oDAAoD;AAC5F;AACA;AACA;AACA;AACA;AACA,2BAA2B,mCAAmC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,uEAAuE,gBAAgB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,EAAE;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,8BAA8B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,0BAA0B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0BAA0B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iBAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,WAAW,GAAG,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,0BAA0B,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,KAAK,qBAAqB,SAAS,eAAe,IAAI,8BAA8B,MAAM;AAClJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sDAAsD;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,4EAA4E;AACvF;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,0CAA0C;AAC9G;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5+FA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAEH;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AAEH,mEAAmE;AACnE,+BAA+B;AAC/B,+BAA+B;AAC/B,iCAAiC;AACjC,kCAAkC;AAClC,oCAAoC;AACpC,+BAA+B;AAC/B,6BAA6B;AAC7B,+BAA+B;AAC/B,6BAA6B;AAC7B,8BAA8B;AAC9B,+BAA+B;AAC/B,4BAA4B;AAC5B,iCAAiC;AACjC,4BAA4B;AAE5B;;;;IAII;AACJ,8BAA8B;AAE9B,+EAA+E;AAC/E,oEAAoE;AAEpE,gEAAgE;AAChE,gCAAgC;AAEhC;;;;IAII;AACJ,8EAA8E;AAE9E;;;GAGG;AAEF,sGAAsG;AACtG,iGAAiG;AACjG,sHAAsH;AAEtH;;;EAGE;AACH,4DAA4D;AAE5D;;GAEG;AACwB,CAAE,6BAA6B;AAG1D;;GAEG","file":"polyfills-es2015.js","sourcesContent":["module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('../internals/redefine-all');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar ArrayIterationModule = require('../internals/array-iteration');\nvar $has = require('../internals/has');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (store) {\n return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n return find(store.entries, function (it) {\n return it[0] === key;\n });\n};\n\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.entries.push([key, value]);\n },\n 'delete': function (key) {\n var index = findIndex(this.entries, function (it) {\n return it[0] === key;\n });\n if (~index) this.entries.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: undefined\n });\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var data = getWeakData(anObject(key), true);\n if (data === true) uncaughtFrozenStore(state).set(key, value);\n else data[state.id] = value;\n return that;\n };\n\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n return data && $has(data, state.id) && delete data[state.id];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).has(key);\n return data && $has(data, state.id);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n var state = getInternalState(this);\n if (isObject(key)) {\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).get(key);\n return data ? data[state.id] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key, value);\n }\n } : {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return define(this, value, true);\n }\n });\n\n return C;\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n // eslint-disable-next-line max-len\n if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n })))) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = {};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = false;\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES\n ? boundFunction(anObject(step = iterable[index])[0], step[1])\n : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n\niterate.stop = function (result) {\n return new Result(true, result);\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nvar Map = require('../modules/es.map');\nvar WeakMap = require('../modules/es.weak-map');\nvar shared = require('../internals/shared');\n\nvar metadata = shared('metadata');\nvar store = metadata.store || (metadata.store = new WeakMap());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\n\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\n\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\n\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\n\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\n\nvar toMetadataKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\n\nmodule.exports = {\n store: store,\n getMap: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n toKey: toMetadataKey\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.6.4',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.github.io/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.github.io/ecma262/#sec-set-objects\nmodule.exports = collection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar global = require('../internals/global');\nvar redefineAll = require('../internals/redefine-all');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\nvar isObject = require('../internals/is-object');\nvar enforceIternalState = require('../internals/internal-state').enforce;\nvar NATIVE_WEAK_MAP = require('../internals/native-weak-map');\n\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar isExtensible = Object.isExtensible;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n return function WeakMap() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n};\n\n// `WeakMap` constructor\n// https://tc39.github.io/ecma262/#sec-weakmap-constructor\nvar $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak);\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n InternalMetadataModule.REQUIRED = true;\n var WeakMapPrototype = $WeakMap.prototype;\n var nativeDelete = WeakMapPrototype['delete'];\n var nativeHas = WeakMapPrototype.has;\n var nativeGet = WeakMapPrototype.get;\n var nativeSet = WeakMapPrototype.set;\n redefineAll(WeakMapPrototype, {\n 'delete': function (key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeDelete.call(this, key) || state.frozen['delete'](key);\n } return nativeDelete.call(this, key);\n },\n has: function has(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) || state.frozen.has(key);\n } return nativeHas.call(this, key);\n },\n get: function get(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);\n } return nativeGet.call(this, key);\n },\n set: function set(key, value) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);\n } else nativeSet.call(this, key, value);\n return this;\n }\n });\n}\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar toMetadataKey = ReflectMetadataModule.toKey;\nvar ordinaryDefineOwnMetadata = ReflectMetadataModule.set;\n\n// `Reflect.defineMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n defineMetadata: function defineMetadata(metadataKey, metadataValue, target /* , targetKey */) {\n var targetKey = arguments.length < 4 ? undefined : toMetadataKey(arguments[3]);\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), targetKey);\n }\n});\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar toMetadataKey = ReflectMetadataModule.toKey;\nvar getOrCreateMetadataMap = ReflectMetadataModule.getMap;\nvar store = ReflectMetadataModule.store;\n\n// `Reflect.deleteMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n }\n});\n","var $ = require('../internals/export');\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nvar Set = require('../modules/es.set');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar iterate = require('../internals/iterate');\n\nvar ordinaryOwnMetadataKeys = ReflectMetadataModule.keys;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\nvar from = function (iter) {\n var result = [];\n iterate(iter, result.push, result);\n return result;\n};\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\n// `Reflect.getMetadataKeys` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]);\n return ordinaryMetadataKeys(anObject(target), targetKey);\n }\n});\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\nvar ordinaryHasOwnMetadata = ReflectMetadataModule.has;\nvar ordinaryGetOwnMetadata = ReflectMetadataModule.get;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\n// `Reflect.getMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);\n return ordinaryGetMetadata(metadataKey, anObject(target), targetKey);\n }\n});\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar ordinaryOwnMetadataKeys = ReflectMetadataModule.keys;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\n// `Reflect.getOwnMetadataKeys` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]);\n return ordinaryOwnMetadataKeys(anObject(target), targetKey);\n }\n});\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar ordinaryGetOwnMetadata = ReflectMetadataModule.get;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\n// `Reflect.getOwnMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);\n return ordinaryGetOwnMetadata(metadataKey, anObject(target), targetKey);\n }\n});\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\nvar ordinaryHasOwnMetadata = ReflectMetadataModule.has;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\n// `Reflect.hasMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);\n return ordinaryHasMetadata(metadataKey, anObject(target), targetKey);\n }\n});\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar ordinaryHasOwnMetadata = ReflectMetadataModule.has;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\n// `Reflect.hasOwnMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);\n return ordinaryHasOwnMetadata(metadataKey, anObject(target), targetKey);\n }\n});\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar toMetadataKey = ReflectMetadataModule.toKey;\nvar ordinaryDefineOwnMetadata = ReflectMetadataModule.set;\n\n// `Reflect.metadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, key) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetadataKey(key));\n };\n }\n});\n","require('../modules/esnext.reflect.define-metadata');\nrequire('../modules/esnext.reflect.delete-metadata');\nrequire('../modules/esnext.reflect.get-metadata');\nrequire('../modules/esnext.reflect.get-metadata-keys');\nrequire('../modules/esnext.reflect.get-own-metadata');\nrequire('../modules/esnext.reflect.get-own-metadata-keys');\nrequire('../modules/esnext.reflect.has-metadata');\nrequire('../modules/esnext.reflect.has-own-metadata');\nrequire('../modules/esnext.reflect.metadata');\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport 'core-js/proposals/reflect-metadata';\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","/**\n* @license\n* Copyright Google Inc. All Rights Reserved.\n*\n* Use of this source code is governed by an MIT-style license that can be\n* found in the LICENSE file at https://angular.io/license\n*/\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst Zone$1 = (function (global) {\n const performance = global['performance'];\n function mark(name) {\n performance && performance['mark'] && performance['mark'](name);\n }\n function performanceMeasure(name, label) {\n performance && performance['measure'] && performance['measure'](name, label);\n }\n mark('Zone');\n const checkDuplicate = global[('__zone_symbol__forceDuplicateZoneCheck')] === true;\n if (global['Zone']) {\n // if global['Zone'] already exists (maybe zone.js was already loaded or\n // some other lib also registered a global object named Zone), we may need\n // to throw an error, but sometimes user may not want this error.\n // For example,\n // we have two web pages, page1 includes zone.js, page2 doesn't.\n // and the 1st time user load page1 and page2, everything work fine,\n // but when user load page2 again, error occurs because global['Zone'] already exists.\n // so we add a flag to let user choose whether to throw this error or not.\n // By default, if existing Zone is from zone.js, we will not throw the error.\n if (checkDuplicate || typeof global['Zone'].__symbol__ !== 'function') {\n throw new Error('Zone already loaded.');\n }\n else {\n return global['Zone'];\n }\n }\n class Zone {\n constructor(parent, zoneSpec) {\n this._parent = parent;\n this._name = zoneSpec ? zoneSpec.name || 'unnamed' : '';\n this._properties = zoneSpec && zoneSpec.properties || {};\n this._zoneDelegate =\n new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec);\n }\n static assertZonePatched() {\n if (global['Promise'] !== patches['ZoneAwarePromise']) {\n throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' +\n 'has been overwritten.\\n' +\n 'Most likely cause is that a Promise polyfill has been loaded ' +\n 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' +\n 'If you must load one, do so before loading zone.js.)');\n }\n }\n static get root() {\n let zone = Zone.current;\n while (zone.parent) {\n zone = zone.parent;\n }\n return zone;\n }\n static get current() {\n return _currentZoneFrame.zone;\n }\n static get currentTask() {\n return _currentTask;\n }\n static __load_patch(name, fn) {\n if (patches.hasOwnProperty(name)) {\n if (checkDuplicate) {\n throw Error('Already loaded patch: ' + name);\n }\n }\n else if (!global['__Zone_disable_' + name]) {\n const perfName = 'Zone:' + name;\n mark(perfName);\n patches[name] = fn(global, Zone, _api);\n performanceMeasure(perfName, perfName);\n }\n }\n get parent() {\n return this._parent;\n }\n get name() {\n return this._name;\n }\n get(key) {\n const zone = this.getZoneWith(key);\n if (zone)\n return zone._properties[key];\n }\n getZoneWith(key) {\n let current = this;\n while (current) {\n if (current._properties.hasOwnProperty(key)) {\n return current;\n }\n current = current._parent;\n }\n return null;\n }\n fork(zoneSpec) {\n if (!zoneSpec)\n throw new Error('ZoneSpec required!');\n return this._zoneDelegate.fork(this, zoneSpec);\n }\n wrap(callback, source) {\n if (typeof callback !== 'function') {\n throw new Error('Expecting function got: ' + callback);\n }\n const _callback = this._zoneDelegate.intercept(this, callback, source);\n const zone = this;\n return function () {\n return zone.runGuarded(_callback, this, arguments, source);\n };\n }\n run(callback, applyThis, applyArgs, source) {\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n }\n runGuarded(callback, applyThis = null, applyArgs, source) {\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n }\n runTask(task, applyThis, applyArgs) {\n if (task.zone != this) {\n throw new Error('A task can only be run in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n }\n // https://github.com/angular/zone.js/issues/778, sometimes eventTask\n // will run in notScheduled(canceled) state, we should not try to\n // run such kind of task but just return\n if (task.state === notScheduled && (task.type === eventTask || task.type === macroTask)) {\n return;\n }\n const reEntryGuard = task.state != running;\n reEntryGuard && task._transitionTo(running, scheduled);\n task.runCount++;\n const previousTask = _currentTask;\n _currentTask = task;\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n if (task.type == macroTask && task.data && !task.data.isPeriodic) {\n task.cancelFn = undefined;\n }\n try {\n return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n // if the task's state is notScheduled or unknown, then it has already been cancelled\n // we should not reset the state to scheduled\n if (task.state !== notScheduled && task.state !== unknown) {\n if (task.type == eventTask || (task.data && task.data.isPeriodic)) {\n reEntryGuard && task._transitionTo(scheduled, running);\n }\n else {\n task.runCount = 0;\n this._updateTaskCount(task, -1);\n reEntryGuard &&\n task._transitionTo(notScheduled, running, notScheduled);\n }\n }\n _currentZoneFrame = _currentZoneFrame.parent;\n _currentTask = previousTask;\n }\n }\n scheduleTask(task) {\n if (task.zone && task.zone !== this) {\n // check if the task was rescheduled, the newZone\n // should not be the children of the original zone\n let newZone = this;\n while (newZone) {\n if (newZone === task.zone) {\n throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${task.zone.name}`);\n }\n newZone = newZone.parent;\n }\n }\n task._transitionTo(scheduling, notScheduled);\n const zoneDelegates = [];\n task._zoneDelegates = zoneDelegates;\n task._zone = this;\n try {\n task = this._zoneDelegate.scheduleTask(this, task);\n }\n catch (err) {\n // should set task's state to unknown when scheduleTask throw error\n // because the err may from reschedule, so the fromState maybe notScheduled\n task._transitionTo(unknown, scheduling, notScheduled);\n // TODO: @JiaLiPassion, should we check the result from handleError?\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n if (task._zoneDelegates === zoneDelegates) {\n // we have to check because internally the delegate can reschedule the task.\n this._updateTaskCount(task, 1);\n }\n if (task.state == scheduling) {\n task._transitionTo(scheduled, scheduling);\n }\n return task;\n }\n scheduleMicroTask(source, callback, data, customSchedule) {\n return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, undefined));\n }\n scheduleMacroTask(source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel));\n }\n scheduleEventTask(source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel));\n }\n cancelTask(task) {\n if (task.zone != this)\n throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n task._transitionTo(canceling, scheduled, running);\n try {\n this._zoneDelegate.cancelTask(this, task);\n }\n catch (err) {\n // if error occurs when cancelTask, transit the state to unknown\n task._transitionTo(unknown, canceling);\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n this._updateTaskCount(task, -1);\n task._transitionTo(notScheduled, canceling);\n task.runCount = 0;\n return task;\n }\n _updateTaskCount(task, count) {\n const zoneDelegates = task._zoneDelegates;\n if (count == -1) {\n task._zoneDelegates = null;\n }\n for (let i = 0; i < zoneDelegates.length; i++) {\n zoneDelegates[i]._updateTaskCount(task.type, count);\n }\n }\n }\n Zone.__symbol__ = __symbol__;\n const DELEGATE_ZS = {\n name: '',\n onHasTask: (delegate, _, target, hasTaskState) => delegate.hasTask(target, hasTaskState),\n onScheduleTask: (delegate, _, target, task) => delegate.scheduleTask(target, task),\n onInvokeTask: (delegate, _, target, task, applyThis, applyArgs) => delegate.invokeTask(target, task, applyThis, applyArgs),\n onCancelTask: (delegate, _, target, task) => delegate.cancelTask(target, task)\n };\n class ZoneDelegate {\n constructor(zone, parentDelegate, zoneSpec) {\n this._taskCounts = { 'microTask': 0, 'macroTask': 0, 'eventTask': 0 };\n this.zone = zone;\n this._parentDelegate = parentDelegate;\n this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS);\n this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt);\n this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone);\n this._interceptZS =\n zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS);\n this._interceptDlgt =\n zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt);\n this._interceptCurrZone =\n zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone);\n this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS);\n this._invokeDlgt =\n zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt);\n this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone);\n this._handleErrorZS =\n zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS);\n this._handleErrorDlgt =\n zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt);\n this._handleErrorCurrZone =\n zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone);\n this._scheduleTaskZS =\n zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS);\n this._scheduleTaskDlgt = zoneSpec &&\n (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt);\n this._scheduleTaskCurrZone =\n zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone);\n this._invokeTaskZS =\n zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS);\n this._invokeTaskDlgt =\n zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt);\n this._invokeTaskCurrZone =\n zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone);\n this._cancelTaskZS =\n zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS);\n this._cancelTaskDlgt =\n zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt);\n this._cancelTaskCurrZone =\n zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone);\n this._hasTaskZS = null;\n this._hasTaskDlgt = null;\n this._hasTaskDlgtOwner = null;\n this._hasTaskCurrZone = null;\n const zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask;\n const parentHasTask = parentDelegate && parentDelegate._hasTaskZS;\n if (zoneSpecHasTask || parentHasTask) {\n // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such\n // a case all task related interceptors must go through this ZD. We can't short circuit it.\n this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS;\n this._hasTaskDlgt = parentDelegate;\n this._hasTaskDlgtOwner = this;\n this._hasTaskCurrZone = zone;\n if (!zoneSpec.onScheduleTask) {\n this._scheduleTaskZS = DELEGATE_ZS;\n this._scheduleTaskDlgt = parentDelegate;\n this._scheduleTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onInvokeTask) {\n this._invokeTaskZS = DELEGATE_ZS;\n this._invokeTaskDlgt = parentDelegate;\n this._invokeTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onCancelTask) {\n this._cancelTaskZS = DELEGATE_ZS;\n this._cancelTaskDlgt = parentDelegate;\n this._cancelTaskCurrZone = this.zone;\n }\n }\n }\n fork(targetZone, zoneSpec) {\n return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) :\n new Zone(targetZone, zoneSpec);\n }\n intercept(targetZone, callback, source) {\n return this._interceptZS ?\n this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) :\n callback;\n }\n invoke(targetZone, callback, applyThis, applyArgs, source) {\n return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) :\n callback.apply(applyThis, applyArgs);\n }\n handleError(targetZone, error) {\n return this._handleErrorZS ?\n this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) :\n true;\n }\n scheduleTask(targetZone, task) {\n let returnTask = task;\n if (this._scheduleTaskZS) {\n if (this._hasTaskZS) {\n returnTask._zoneDelegates.push(this._hasTaskDlgtOwner);\n }\n returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task);\n if (!returnTask)\n returnTask = task;\n }\n else {\n if (task.scheduleFn) {\n task.scheduleFn(task);\n }\n else if (task.type == microTask) {\n scheduleMicroTask(task);\n }\n else {\n throw new Error('Task is missing scheduleFn.');\n }\n }\n return returnTask;\n }\n invokeTask(targetZone, task, applyThis, applyArgs) {\n return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) :\n task.callback.apply(applyThis, applyArgs);\n }\n cancelTask(targetZone, task) {\n let value;\n if (this._cancelTaskZS) {\n value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task);\n }\n else {\n if (!task.cancelFn) {\n throw Error('Task is not cancelable');\n }\n value = task.cancelFn(task);\n }\n return value;\n }\n hasTask(targetZone, isEmpty) {\n // hasTask should not throw error so other ZoneDelegate\n // can still trigger hasTask callback\n try {\n this._hasTaskZS &&\n this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty);\n }\n catch (err) {\n this.handleError(targetZone, err);\n }\n }\n _updateTaskCount(type, count) {\n const counts = this._taskCounts;\n const prev = counts[type];\n const next = counts[type] = prev + count;\n if (next < 0) {\n throw new Error('More tasks executed then were scheduled.');\n }\n if (prev == 0 || next == 0) {\n const isEmpty = {\n microTask: counts['microTask'] > 0,\n macroTask: counts['macroTask'] > 0,\n eventTask: counts['eventTask'] > 0,\n change: type\n };\n this.hasTask(this.zone, isEmpty);\n }\n }\n }\n class ZoneTask {\n constructor(type, source, callback, options, scheduleFn, cancelFn) {\n this._zone = null;\n this.runCount = 0;\n this._zoneDelegates = null;\n this._state = 'notScheduled';\n this.type = type;\n this.source = source;\n this.data = options;\n this.scheduleFn = scheduleFn;\n this.cancelFn = cancelFn;\n this.callback = callback;\n const self = this;\n // TODO: @JiaLiPassion options should have interface\n if (type === eventTask && options && options.useG) {\n this.invoke = ZoneTask.invokeTask;\n }\n else {\n this.invoke = function () {\n return ZoneTask.invokeTask.call(global, self, this, arguments);\n };\n }\n }\n static invokeTask(task, target, args) {\n if (!task) {\n task = this;\n }\n _numberOfNestedTaskFrames++;\n try {\n task.runCount++;\n return task.zone.runTask(task, target, args);\n }\n finally {\n if (_numberOfNestedTaskFrames == 1) {\n drainMicroTaskQueue();\n }\n _numberOfNestedTaskFrames--;\n }\n }\n get zone() {\n return this._zone;\n }\n get state() {\n return this._state;\n }\n cancelScheduleRequest() {\n this._transitionTo(notScheduled, scheduling);\n }\n _transitionTo(toState, fromState1, fromState2) {\n if (this._state === fromState1 || this._state === fromState2) {\n this._state = toState;\n if (toState == notScheduled) {\n this._zoneDelegates = null;\n }\n }\n else {\n throw new Error(`${this.type} '${this.source}': can not transition to '${toState}', expecting state '${fromState1}'${fromState2 ? ' or \\'' + fromState2 + '\\'' : ''}, was '${this._state}'.`);\n }\n }\n toString() {\n if (this.data && typeof this.data.handleId !== 'undefined') {\n return this.data.handleId.toString();\n }\n else {\n return Object.prototype.toString.call(this);\n }\n }\n // add toJSON method to prevent cyclic error when\n // call JSON.stringify(zoneTask)\n toJSON() {\n return {\n type: this.type,\n state: this.state,\n source: this.source,\n zone: this.zone.name,\n runCount: this.runCount\n };\n }\n }\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// MICROTASK QUEUE\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n const symbolSetTimeout = __symbol__('setTimeout');\n const symbolPromise = __symbol__('Promise');\n const symbolThen = __symbol__('then');\n let _microTaskQueue = [];\n let _isDrainingMicrotaskQueue = false;\n let nativeMicroTaskQueuePromise;\n function scheduleMicroTask(task) {\n // if we are not running in any task, and there has not been anything scheduled\n // we must bootstrap the initial task creation by manually scheduling the drain\n if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) {\n // We are not running in Task, so we need to kickstart the microtask queue.\n if (!nativeMicroTaskQueuePromise) {\n if (global[symbolPromise]) {\n nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0);\n }\n }\n if (nativeMicroTaskQueuePromise) {\n let nativeThen = nativeMicroTaskQueuePromise[symbolThen];\n if (!nativeThen) {\n // native Promise is not patchable, we need to use `then` directly\n // issue 1078\n nativeThen = nativeMicroTaskQueuePromise['then'];\n }\n nativeThen.call(nativeMicroTaskQueuePromise, drainMicroTaskQueue);\n }\n else {\n global[symbolSetTimeout](drainMicroTaskQueue, 0);\n }\n }\n task && _microTaskQueue.push(task);\n }\n function drainMicroTaskQueue() {\n if (!_isDrainingMicrotaskQueue) {\n _isDrainingMicrotaskQueue = true;\n while (_microTaskQueue.length) {\n const queue = _microTaskQueue;\n _microTaskQueue = [];\n for (let i = 0; i < queue.length; i++) {\n const task = queue[i];\n try {\n task.zone.runTask(task, null, null);\n }\n catch (error) {\n _api.onUnhandledError(error);\n }\n }\n }\n _api.microtaskDrainDone();\n _isDrainingMicrotaskQueue = false;\n }\n }\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// BOOTSTRAP\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n const NO_ZONE = { name: 'NO ZONE' };\n const notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown';\n const microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask';\n const patches = {};\n const _api = {\n symbol: __symbol__,\n currentZoneFrame: () => _currentZoneFrame,\n onUnhandledError: noop,\n microtaskDrainDone: noop,\n scheduleMicroTask: scheduleMicroTask,\n showUncaughtError: () => !Zone[__symbol__('ignoreConsoleErrorUncaughtError')],\n patchEventTarget: () => [],\n patchOnProperties: noop,\n patchMethod: () => noop,\n bindArguments: () => [],\n patchThen: () => noop,\n patchMacroTask: () => noop,\n setNativePromise: (NativePromise) => {\n // sometimes NativePromise.resolve static function\n // is not ready yet, (such as core-js/es6.promise)\n // so we need to check here.\n if (NativePromise && typeof NativePromise.resolve === 'function') {\n nativeMicroTaskQueuePromise = NativePromise.resolve(0);\n }\n },\n patchEventPrototype: () => noop,\n isIEOrEdge: () => false,\n getGlobalObjects: () => undefined,\n ObjectDefineProperty: () => noop,\n ObjectGetOwnPropertyDescriptor: () => undefined,\n ObjectCreate: () => undefined,\n ArraySlice: () => [],\n patchClass: () => noop,\n wrapWithCurrentZone: () => noop,\n filterProperties: () => [],\n attachOriginToPatched: () => noop,\n _redefineProperty: () => noop,\n patchCallbacks: () => noop\n };\n let _currentZoneFrame = { parent: null, zone: new Zone(null, null) };\n let _currentTask = null;\n let _numberOfNestedTaskFrames = 0;\n function noop() { }\n function __symbol__(name) {\n return '__zone_symbol__' + name;\n }\n performanceMeasure('Zone', 'Zone');\n return global['Zone'] = Zone;\n})(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global);\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nZone.__load_patch('ZoneAwarePromise', (global, Zone, api) => {\n const ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n const ObjectDefineProperty = Object.defineProperty;\n function readableObjectToString(obj) {\n if (obj && obj.toString === Object.prototype.toString) {\n const className = obj.constructor && obj.constructor.name;\n return (className ? className : '') + ': ' + JSON.stringify(obj);\n }\n return obj ? obj.toString() : Object.prototype.toString.call(obj);\n }\n const __symbol__ = api.symbol;\n const _uncaughtPromiseErrors = [];\n const symbolPromise = __symbol__('Promise');\n const symbolThen = __symbol__('then');\n const creationTrace = '__creationTrace__';\n api.onUnhandledError = (e) => {\n if (api.showUncaughtError()) {\n const rejection = e && e.rejection;\n if (rejection) {\n console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined);\n }\n else {\n console.error(e);\n }\n }\n };\n api.microtaskDrainDone = () => {\n while (_uncaughtPromiseErrors.length) {\n while (_uncaughtPromiseErrors.length) {\n const uncaughtPromiseError = _uncaughtPromiseErrors.shift();\n try {\n uncaughtPromiseError.zone.runGuarded(() => {\n throw uncaughtPromiseError;\n });\n }\n catch (error) {\n handleUnhandledRejection(error);\n }\n }\n }\n };\n const UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler');\n function handleUnhandledRejection(e) {\n api.onUnhandledError(e);\n try {\n const handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL];\n if (handler && typeof handler === 'function') {\n handler.call(this, e);\n }\n }\n catch (err) {\n }\n }\n function isThenable(value) {\n return value && value.then;\n }\n function forwardResolution(value) {\n return value;\n }\n function forwardRejection(rejection) {\n return ZoneAwarePromise.reject(rejection);\n }\n const symbolState = __symbol__('state');\n const symbolValue = __symbol__('value');\n const symbolFinally = __symbol__('finally');\n const symbolParentPromiseValue = __symbol__('parentPromiseValue');\n const symbolParentPromiseState = __symbol__('parentPromiseState');\n const source = 'Promise.then';\n const UNRESOLVED = null;\n const RESOLVED = true;\n const REJECTED = false;\n const REJECTED_NO_CATCH = 0;\n function makeResolver(promise, state) {\n return (v) => {\n try {\n resolvePromise(promise, state, v);\n }\n catch (err) {\n resolvePromise(promise, false, err);\n }\n // Do not return value or you will break the Promise spec.\n };\n }\n const once = function () {\n let wasCalled = false;\n return function wrapper(wrappedFunction) {\n return function () {\n if (wasCalled) {\n return;\n }\n wasCalled = true;\n wrappedFunction.apply(null, arguments);\n };\n };\n };\n const TYPE_ERROR = 'Promise resolved with itself';\n const CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace');\n // Promise Resolution\n function resolvePromise(promise, state, value) {\n const onceWrapper = once();\n if (promise === value) {\n throw new TypeError(TYPE_ERROR);\n }\n if (promise[symbolState] === UNRESOLVED) {\n // should only get value.then once based on promise spec.\n let then = null;\n try {\n if (typeof value === 'object' || typeof value === 'function') {\n then = value && value.then;\n }\n }\n catch (err) {\n onceWrapper(() => {\n resolvePromise(promise, false, err);\n })();\n return promise;\n }\n // if (value instanceof ZoneAwarePromise) {\n if (state !== REJECTED && value instanceof ZoneAwarePromise &&\n value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) &&\n value[symbolState] !== UNRESOLVED) {\n clearRejectedNoCatch(value);\n resolvePromise(promise, value[symbolState], value[symbolValue]);\n }\n else if (state !== REJECTED && typeof then === 'function') {\n try {\n then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false)));\n }\n catch (err) {\n onceWrapper(() => {\n resolvePromise(promise, false, err);\n })();\n }\n }\n else {\n promise[symbolState] = state;\n const queue = promise[symbolValue];\n promise[symbolValue] = value;\n if (promise[symbolFinally] === symbolFinally) {\n // the promise is generated by Promise.prototype.finally\n if (state === RESOLVED) {\n // the state is resolved, should ignore the value\n // and use parent promise value\n promise[symbolState] = promise[symbolParentPromiseState];\n promise[symbolValue] = promise[symbolParentPromiseValue];\n }\n }\n // record task information in value when error occurs, so we can\n // do some additional work such as render longStackTrace\n if (state === REJECTED && value instanceof Error) {\n // check if longStackTraceZone is here\n const trace = Zone.currentTask && Zone.currentTask.data &&\n Zone.currentTask.data[creationTrace];\n if (trace) {\n // only keep the long stack trace into error when in longStackTraceZone\n ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { configurable: true, enumerable: false, writable: true, value: trace });\n }\n }\n for (let i = 0; i < queue.length;) {\n scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]);\n }\n if (queue.length == 0 && state == REJECTED) {\n promise[symbolState] = REJECTED_NO_CATCH;\n try {\n // try to print more readable error log\n throw new Error('Uncaught (in promise): ' + readableObjectToString(value) +\n (value && value.stack ? '\\n' + value.stack : ''));\n }\n catch (err) {\n const error = err;\n error.rejection = value;\n error.promise = promise;\n error.zone = Zone.current;\n error.task = Zone.currentTask;\n _uncaughtPromiseErrors.push(error);\n api.scheduleMicroTask(); // to make sure that it is running\n }\n }\n }\n }\n // Resolving an already resolved promise is a noop.\n return promise;\n }\n const REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler');\n function clearRejectedNoCatch(promise) {\n if (promise[symbolState] === REJECTED_NO_CATCH) {\n // if the promise is rejected no catch status\n // and queue.length > 0, means there is a error handler\n // here to handle the rejected promise, we should trigger\n // windows.rejectionhandled eventHandler or nodejs rejectionHandled\n // eventHandler\n try {\n const handler = Zone[REJECTION_HANDLED_HANDLER];\n if (handler && typeof handler === 'function') {\n handler.call(this, { rejection: promise[symbolValue], promise: promise });\n }\n }\n catch (err) {\n }\n promise[symbolState] = REJECTED;\n for (let i = 0; i < _uncaughtPromiseErrors.length; i++) {\n if (promise === _uncaughtPromiseErrors[i].promise) {\n _uncaughtPromiseErrors.splice(i, 1);\n }\n }\n }\n }\n function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) {\n clearRejectedNoCatch(promise);\n const promiseState = promise[symbolState];\n const delegate = promiseState ?\n (typeof onFulfilled === 'function') ? onFulfilled : forwardResolution :\n (typeof onRejected === 'function') ? onRejected : forwardRejection;\n zone.scheduleMicroTask(source, () => {\n try {\n const parentPromiseValue = promise[symbolValue];\n const isFinallyPromise = chainPromise && symbolFinally === chainPromise[symbolFinally];\n if (isFinallyPromise) {\n // if the promise is generated from finally call, keep parent promise's state and value\n chainPromise[symbolParentPromiseValue] = parentPromiseValue;\n chainPromise[symbolParentPromiseState] = promiseState;\n }\n // should not pass value to finally callback\n const value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ?\n [] :\n [parentPromiseValue]);\n resolvePromise(chainPromise, true, value);\n }\n catch (error) {\n // if error occurs, should always return this error\n resolvePromise(chainPromise, false, error);\n }\n }, chainPromise);\n }\n const ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }';\n class ZoneAwarePromise {\n constructor(executor) {\n const promise = this;\n if (!(promise instanceof ZoneAwarePromise)) {\n throw new Error('Must be an instanceof Promise.');\n }\n promise[symbolState] = UNRESOLVED;\n promise[symbolValue] = []; // queue;\n try {\n executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED));\n }\n catch (error) {\n resolvePromise(promise, false, error);\n }\n }\n static toString() {\n return ZONE_AWARE_PROMISE_TO_STRING;\n }\n static resolve(value) {\n return resolvePromise(new this(null), RESOLVED, value);\n }\n static reject(error) {\n return resolvePromise(new this(null), REJECTED, error);\n }\n static race(values) {\n let resolve;\n let reject;\n let promise = new this((res, rej) => {\n resolve = res;\n reject = rej;\n });\n function onResolve(value) {\n resolve(value);\n }\n function onReject(error) {\n reject(error);\n }\n for (let value of values) {\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n value.then(onResolve, onReject);\n }\n return promise;\n }\n static all(values) {\n let resolve;\n let reject;\n let promise = new this((res, rej) => {\n resolve = res;\n reject = rej;\n });\n // Start at 2 to prevent prematurely resolving if .then is called immediately.\n let unresolvedCount = 2;\n let valueIndex = 0;\n const resolvedValues = [];\n for (let value of values) {\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n const curValueIndex = valueIndex;\n value.then((value) => {\n resolvedValues[curValueIndex] = value;\n unresolvedCount--;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n }, reject);\n unresolvedCount++;\n valueIndex++;\n }\n // Make the unresolvedCount zero-based again.\n unresolvedCount -= 2;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n return promise;\n }\n get [Symbol.toStringTag]() {\n return 'Promise';\n }\n then(onFulfilled, onRejected) {\n const chainPromise = new this.constructor(null);\n const zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected);\n }\n return chainPromise;\n }\n catch(onRejected) {\n return this.then(null, onRejected);\n }\n finally(onFinally) {\n const chainPromise = new this.constructor(null);\n chainPromise[symbolFinally] = symbolFinally;\n const zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFinally, onFinally);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally);\n }\n return chainPromise;\n }\n }\n // Protect against aggressive optimizers dropping seemingly unused properties.\n // E.g. Closure Compiler in advanced mode.\n ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve;\n ZoneAwarePromise['reject'] = ZoneAwarePromise.reject;\n ZoneAwarePromise['race'] = ZoneAwarePromise.race;\n ZoneAwarePromise['all'] = ZoneAwarePromise.all;\n const NativePromise = global[symbolPromise] = global['Promise'];\n const ZONE_AWARE_PROMISE = Zone.__symbol__('ZoneAwarePromise');\n let desc = ObjectGetOwnPropertyDescriptor(global, 'Promise');\n if (!desc || desc.configurable) {\n desc && delete desc.writable;\n desc && delete desc.value;\n if (!desc) {\n desc = { configurable: true, enumerable: true };\n }\n desc.get = function () {\n // if we already set ZoneAwarePromise, use patched one\n // otherwise return native one.\n return global[ZONE_AWARE_PROMISE] ? global[ZONE_AWARE_PROMISE] : global[symbolPromise];\n };\n desc.set = function (NewNativePromise) {\n if (NewNativePromise === ZoneAwarePromise) {\n // if the NewNativePromise is ZoneAwarePromise\n // save to global\n global[ZONE_AWARE_PROMISE] = NewNativePromise;\n }\n else {\n // if the NewNativePromise is not ZoneAwarePromise\n // for example: after load zone.js, some library just\n // set es6-promise to global, if we set it to global\n // directly, assertZonePatched will fail and angular\n // will not loaded, so we just set the NewNativePromise\n // to global[symbolPromise], so the result is just like\n // we load ES6 Promise before zone.js\n global[symbolPromise] = NewNativePromise;\n if (!NewNativePromise.prototype[symbolThen]) {\n patchThen(NewNativePromise);\n }\n api.setNativePromise(NewNativePromise);\n }\n };\n ObjectDefineProperty(global, 'Promise', desc);\n }\n global['Promise'] = ZoneAwarePromise;\n const symbolThenPatched = __symbol__('thenPatched');\n function patchThen(Ctor) {\n const proto = Ctor.prototype;\n const prop = ObjectGetOwnPropertyDescriptor(proto, 'then');\n if (prop && (prop.writable === false || !prop.configurable)) {\n // check Ctor.prototype.then propertyDescriptor is writable or not\n // in meteor env, writable is false, we should ignore such case\n return;\n }\n const originalThen = proto.then;\n // Keep a reference to the original method.\n proto[symbolThen] = originalThen;\n Ctor.prototype.then = function (onResolve, onReject) {\n const wrapped = new ZoneAwarePromise((resolve, reject) => {\n originalThen.call(this, resolve, reject);\n });\n return wrapped.then(onResolve, onReject);\n };\n Ctor[symbolThenPatched] = true;\n }\n api.patchThen = patchThen;\n function zoneify(fn) {\n return function () {\n let resultPromise = fn.apply(this, arguments);\n if (resultPromise instanceof ZoneAwarePromise) {\n return resultPromise;\n }\n let ctor = resultPromise.constructor;\n if (!ctor[symbolThenPatched]) {\n patchThen(ctor);\n }\n return resultPromise;\n };\n }\n if (NativePromise) {\n patchThen(NativePromise);\n const fetch = global['fetch'];\n if (typeof fetch == 'function') {\n global[api.symbol('fetch')] = fetch;\n global['fetch'] = zoneify(fetch);\n }\n }\n // This is not part of public API, but it is useful for tests, so we expose it.\n Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors;\n return ZoneAwarePromise;\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Suppress closure compiler errors about unknown 'Zone' variable\n * @fileoverview\n * @suppress {undefinedVars,globalThis,missingRequire}\n */\n// issue #989, to reduce bundle size, use short name\n/** Object.getOwnPropertyDescriptor */\nconst ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n/** Object.defineProperty */\nconst ObjectDefineProperty = Object.defineProperty;\n/** Object.getPrototypeOf */\nconst ObjectGetPrototypeOf = Object.getPrototypeOf;\n/** Object.create */\nconst ObjectCreate = Object.create;\n/** Array.prototype.slice */\nconst ArraySlice = Array.prototype.slice;\n/** addEventListener string const */\nconst ADD_EVENT_LISTENER_STR = 'addEventListener';\n/** removeEventListener string const */\nconst REMOVE_EVENT_LISTENER_STR = 'removeEventListener';\n/** zoneSymbol addEventListener */\nconst ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR);\n/** zoneSymbol removeEventListener */\nconst ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR);\n/** true string const */\nconst TRUE_STR = 'true';\n/** false string const */\nconst FALSE_STR = 'false';\n/** __zone_symbol__ string const */\nconst ZONE_SYMBOL_PREFIX = '__zone_symbol__';\nfunction wrapWithCurrentZone(callback, source) {\n return Zone.current.wrap(callback, source);\n}\nfunction scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) {\n return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel);\n}\nconst zoneSymbol = Zone.__symbol__;\nconst isWindowExists = typeof window !== 'undefined';\nconst internalWindow = isWindowExists ? window : undefined;\nconst _global = isWindowExists && internalWindow || typeof self === 'object' && self || global;\nconst REMOVE_ATTRIBUTE = 'removeAttribute';\nconst NULL_ON_PROP_VALUE = [null];\nfunction bindArguments(args, source) {\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n args[i] = wrapWithCurrentZone(args[i], source + '_' + i);\n }\n }\n return args;\n}\nfunction patchPrototype(prototype, fnNames) {\n const source = prototype.constructor['name'];\n for (let i = 0; i < fnNames.length; i++) {\n const name = fnNames[i];\n const delegate = prototype[name];\n if (delegate) {\n const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name);\n if (!isPropertyWritable(prototypeDesc)) {\n continue;\n }\n prototype[name] = ((delegate) => {\n const patched = function () {\n return delegate.apply(this, bindArguments(arguments, source + '.' + name));\n };\n attachOriginToPatched(patched, delegate);\n return patched;\n })(delegate);\n }\n }\n}\nfunction isPropertyWritable(propertyDesc) {\n if (!propertyDesc) {\n return true;\n }\n if (propertyDesc.writable === false) {\n return false;\n }\n return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined');\n}\nconst isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope);\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nconst isNode = (!('nw' in _global) && typeof _global.process !== 'undefined' &&\n {}.toString.call(_global.process) === '[object process]');\nconst isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']);\n// we are in electron of nw, so we are both browser and nodejs\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nconst isMix = typeof _global.process !== 'undefined' &&\n {}.toString.call(_global.process) === '[object process]' && !isWebWorker &&\n !!(isWindowExists && internalWindow['HTMLElement']);\nconst zoneSymbolEventNames = {};\nconst wrapFn = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n let eventNameSymbol = zoneSymbolEventNames[event.type];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames[event.type] = zoneSymbol('ON_PROPERTY' + event.type);\n }\n const target = this || event.target || _global;\n const listener = target[eventNameSymbol];\n let result;\n if (isBrowser && target === internalWindow && event.type === 'error') {\n // window.onerror have different signiture\n // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#window.onerror\n // and onerror callback will prevent default when callback return true\n const errorEvent = event;\n result = listener &&\n listener.call(this, errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error);\n if (result === true) {\n event.preventDefault();\n }\n }\n else {\n result = listener && listener.apply(this, arguments);\n if (result != undefined && !result) {\n event.preventDefault();\n }\n }\n return result;\n};\nfunction patchProperty(obj, prop, prototype) {\n let desc = ObjectGetOwnPropertyDescriptor(obj, prop);\n if (!desc && prototype) {\n // when patch window object, use prototype to check prop exist or not\n const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop);\n if (prototypeDesc) {\n desc = { enumerable: true, configurable: true };\n }\n }\n // if the descriptor not exists or is not configurable\n // just return\n if (!desc || !desc.configurable) {\n return;\n }\n const onPropPatchedSymbol = zoneSymbol('on' + prop + 'patched');\n if (obj.hasOwnProperty(onPropPatchedSymbol) && obj[onPropPatchedSymbol]) {\n return;\n }\n // A property descriptor cannot have getter/setter and be writable\n // deleting the writable and value properties avoids this error:\n //\n // TypeError: property descriptors must not specify a value or be writable when a\n // getter or setter has been specified\n delete desc.writable;\n delete desc.value;\n const originalDescGet = desc.get;\n const originalDescSet = desc.set;\n // substr(2) cuz 'onclick' -> 'click', etc\n const eventName = prop.substr(2);\n let eventNameSymbol = zoneSymbolEventNames[eventName];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames[eventName] = zoneSymbol('ON_PROPERTY' + eventName);\n }\n desc.set = function (newValue) {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n let target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return;\n }\n let previousValue = target[eventNameSymbol];\n if (previousValue) {\n target.removeEventListener(eventName, wrapFn);\n }\n // issue #978, when onload handler was added before loading zone.js\n // we should remove it with originalDescSet\n if (originalDescSet) {\n originalDescSet.apply(target, NULL_ON_PROP_VALUE);\n }\n if (typeof newValue === 'function') {\n target[eventNameSymbol] = newValue;\n target.addEventListener(eventName, wrapFn, false);\n }\n else {\n target[eventNameSymbol] = null;\n }\n };\n // The getter would return undefined for unassigned properties but the default value of an\n // unassigned property is null\n desc.get = function () {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n let target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return null;\n }\n const listener = target[eventNameSymbol];\n if (listener) {\n return listener;\n }\n else if (originalDescGet) {\n // result will be null when use inline event attribute,\n // such as \n // because the onclick function is internal raw uncompiled handler\n // the onclick will be evaluated when first time event was triggered or\n // the property is accessed, https://github.com/angular/zone.js/issues/525\n // so we should use original native get to retrieve the handler\n let value = originalDescGet && originalDescGet.call(this);\n if (value) {\n desc.set.call(this, value);\n if (typeof target[REMOVE_ATTRIBUTE] === 'function') {\n target.removeAttribute(prop);\n }\n return value;\n }\n }\n return null;\n };\n ObjectDefineProperty(obj, prop, desc);\n obj[onPropPatchedSymbol] = true;\n}\nfunction patchOnProperties(obj, properties, prototype) {\n if (properties) {\n for (let i = 0; i < properties.length; i++) {\n patchProperty(obj, 'on' + properties[i], prototype);\n }\n }\n else {\n const onProperties = [];\n for (const prop in obj) {\n if (prop.substr(0, 2) == 'on') {\n onProperties.push(prop);\n }\n }\n for (let j = 0; j < onProperties.length; j++) {\n patchProperty(obj, onProperties[j], prototype);\n }\n }\n}\nconst originalInstanceKey = zoneSymbol('originalInstance');\n// wrap some native API on `window`\nfunction patchClass(className) {\n const OriginalClass = _global[className];\n if (!OriginalClass)\n return;\n // keep original class in global\n _global[zoneSymbol(className)] = OriginalClass;\n _global[className] = function () {\n const a = bindArguments(arguments, className);\n switch (a.length) {\n case 0:\n this[originalInstanceKey] = new OriginalClass();\n break;\n case 1:\n this[originalInstanceKey] = new OriginalClass(a[0]);\n break;\n case 2:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1]);\n break;\n case 3:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]);\n break;\n case 4:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]);\n break;\n default:\n throw new Error('Arg list too long.');\n }\n };\n // attach original delegate to patched function\n attachOriginToPatched(_global[className], OriginalClass);\n const instance = new OriginalClass(function () { });\n let prop;\n for (prop in instance) {\n // https://bugs.webkit.org/show_bug.cgi?id=44721\n if (className === 'XMLHttpRequest' && prop === 'responseBlob')\n continue;\n (function (prop) {\n if (typeof instance[prop] === 'function') {\n _global[className].prototype[prop] = function () {\n return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments);\n };\n }\n else {\n ObjectDefineProperty(_global[className].prototype, prop, {\n set: function (fn) {\n if (typeof fn === 'function') {\n this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop);\n // keep callback in wrapped function so we can\n // use it in Function.prototype.toString to return\n // the native one.\n attachOriginToPatched(this[originalInstanceKey][prop], fn);\n }\n else {\n this[originalInstanceKey][prop] = fn;\n }\n },\n get: function () {\n return this[originalInstanceKey][prop];\n }\n });\n }\n }(prop));\n }\n for (prop in OriginalClass) {\n if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) {\n _global[className][prop] = OriginalClass[prop];\n }\n }\n}\nfunction copySymbolProperties(src, dest) {\n if (typeof Object.getOwnPropertySymbols !== 'function') {\n return;\n }\n const symbols = Object.getOwnPropertySymbols(src);\n symbols.forEach((symbol) => {\n const desc = Object.getOwnPropertyDescriptor(src, symbol);\n Object.defineProperty(dest, symbol, {\n get: function () {\n return src[symbol];\n },\n set: function (value) {\n if (desc && (!desc.writable || typeof desc.set !== 'function')) {\n // if src[symbol] is not writable or not have a setter, just return\n return;\n }\n src[symbol] = value;\n },\n enumerable: desc ? desc.enumerable : true,\n configurable: desc ? desc.configurable : true\n });\n });\n}\nlet shouldCopySymbolProperties = false;\n\nfunction patchMethod(target, name, patchFn) {\n let proto = target;\n while (proto && !proto.hasOwnProperty(name)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && target[name]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = target;\n }\n const delegateName = zoneSymbol(name);\n let delegate = null;\n if (proto && !(delegate = proto[delegateName])) {\n delegate = proto[delegateName] = proto[name];\n // check whether proto[name] is writable\n // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob\n const desc = proto && ObjectGetOwnPropertyDescriptor(proto, name);\n if (isPropertyWritable(desc)) {\n const patchDelegate = patchFn(delegate, delegateName, name);\n proto[name] = function () {\n return patchDelegate(this, arguments);\n };\n attachOriginToPatched(proto[name], delegate);\n if (shouldCopySymbolProperties) {\n copySymbolProperties(delegate, proto[name]);\n }\n }\n }\n return delegate;\n}\n// TODO: @JiaLiPassion, support cancel task later if necessary\nfunction patchMacroTask(obj, funcName, metaCreator) {\n let setNative = null;\n function scheduleTask(task) {\n const data = task.data;\n data.args[data.cbIdx] = function () {\n task.invoke.apply(this, arguments);\n };\n setNative.apply(data.target, data.args);\n return task;\n }\n setNative = patchMethod(obj, funcName, (delegate) => function (self, args) {\n const meta = metaCreator(self, args);\n if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') {\n return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask);\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(self, args);\n }\n });\n}\n\nfunction attachOriginToPatched(patched, original) {\n patched[zoneSymbol('OriginalDelegate')] = original;\n}\nlet isDetectedIEOrEdge = false;\nlet ieOrEdge = false;\nfunction isIE() {\n try {\n const ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1) {\n return true;\n }\n }\n catch (error) {\n }\n return false;\n}\nfunction isIEOrEdge() {\n if (isDetectedIEOrEdge) {\n return ieOrEdge;\n }\n isDetectedIEOrEdge = true;\n try {\n const ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) {\n ieOrEdge = true;\n }\n }\n catch (error) {\n }\n return ieOrEdge;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// override Function.prototype.toString to make zone.js patched function\n// look like native function\nZone.__load_patch('toString', (global) => {\n // patch Func.prototype.toString to let them look like native\n const originalFunctionToString = Function.prototype.toString;\n const ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate');\n const PROMISE_SYMBOL = zoneSymbol('Promise');\n const ERROR_SYMBOL = zoneSymbol('Error');\n const newFunctionToString = function toString() {\n if (typeof this === 'function') {\n const originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL];\n if (originalDelegate) {\n if (typeof originalDelegate === 'function') {\n return originalFunctionToString.call(originalDelegate);\n }\n else {\n return Object.prototype.toString.call(originalDelegate);\n }\n }\n if (this === Promise) {\n const nativePromise = global[PROMISE_SYMBOL];\n if (nativePromise) {\n return originalFunctionToString.call(nativePromise);\n }\n }\n if (this === Error) {\n const nativeError = global[ERROR_SYMBOL];\n if (nativeError) {\n return originalFunctionToString.call(nativeError);\n }\n }\n }\n return originalFunctionToString.call(this);\n };\n newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString;\n Function.prototype.toString = newFunctionToString;\n // patch Object.prototype.toString to let them look like native\n const originalObjectToString = Object.prototype.toString;\n const PROMISE_OBJECT_TO_STRING = '[object Promise]';\n Object.prototype.toString = function () {\n if (this instanceof Promise) {\n return PROMISE_OBJECT_TO_STRING;\n }\n return originalObjectToString.call(this);\n };\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nlet passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n const options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n }\n });\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\n// an identifier to tell ZoneTask do not create a new invoke closure\nconst OPTIMIZED_ZONE_EVENT_TASK_DATA = {\n useG: true\n};\nconst zoneSymbolEventNames$1 = {};\nconst globalSources = {};\nconst EVENT_NAME_SYMBOL_REGX = /^__zone_symbol__(\\w+)(true|false)$/;\nconst IMMEDIATE_PROPAGATION_SYMBOL = ('__zone_symbol__propagationStopped');\nfunction patchEventTarget(_global, apis, patchOptions) {\n const ADD_EVENT_LISTENER = (patchOptions && patchOptions.add) || ADD_EVENT_LISTENER_STR;\n const REMOVE_EVENT_LISTENER = (patchOptions && patchOptions.rm) || REMOVE_EVENT_LISTENER_STR;\n const LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.listeners) || 'eventListeners';\n const REMOVE_ALL_LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.rmAll) || 'removeAllListeners';\n const zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER);\n const ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':';\n const PREPEND_EVENT_LISTENER = 'prependListener';\n const PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':';\n const invokeTask = function (task, target, event) {\n // for better performance, check isRemoved which is set\n // by removeEventListener\n if (task.isRemoved) {\n return;\n }\n const delegate = task.callback;\n if (typeof delegate === 'object' && delegate.handleEvent) {\n // create the bind version of handleEvent when invoke\n task.callback = (event) => delegate.handleEvent(event);\n task.originalDelegate = delegate;\n }\n // invoke static task.invoke\n task.invoke(task, target, [event]);\n const options = task.options;\n if (options && typeof options === 'object' && options.once) {\n // if options.once is true, after invoke once remove listener here\n // only browser need to do this, nodejs eventEmitter will cal removeListener\n // inside EventEmitter.once\n const delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n target[REMOVE_EVENT_LISTENER].call(target, event.type, delegate, options);\n }\n };\n // global shared zoneAwareCallback to handle all event callback with capture = false\n const globalZoneAwareCallback = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n const target = this || event.target || _global;\n const tasks = target[zoneSymbolEventNames$1[event.type][FALSE_STR]];\n if (tasks) {\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n invokeTask(tasks[0], target, event);\n }\n else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n const copyTasks = tasks.slice();\n for (let i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n invokeTask(copyTasks[i], target, event);\n }\n }\n }\n };\n // global shared zoneAwareCallback to handle all event callback with capture = true\n const globalZoneAwareCaptureCallback = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n const target = this || event.target || _global;\n const tasks = target[zoneSymbolEventNames$1[event.type][TRUE_STR]];\n if (tasks) {\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n invokeTask(tasks[0], target, event);\n }\n else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n const copyTasks = tasks.slice();\n for (let i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n invokeTask(copyTasks[i], target, event);\n }\n }\n }\n };\n function patchEventTargetMethods(obj, patchOptions) {\n if (!obj) {\n return false;\n }\n let useGlobalCallback = true;\n if (patchOptions && patchOptions.useG !== undefined) {\n useGlobalCallback = patchOptions.useG;\n }\n const validateHandler = patchOptions && patchOptions.vh;\n let checkDuplicate = true;\n if (patchOptions && patchOptions.chkDup !== undefined) {\n checkDuplicate = patchOptions.chkDup;\n }\n let returnTarget = false;\n if (patchOptions && patchOptions.rt !== undefined) {\n returnTarget = patchOptions.rt;\n }\n let proto = obj;\n while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && obj[ADD_EVENT_LISTENER]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = obj;\n }\n if (!proto) {\n return false;\n }\n if (proto[zoneSymbolAddEventListener]) {\n return false;\n }\n const eventNameToString = patchOptions && patchOptions.eventNameToString;\n // a shared global taskData to pass data for scheduleEventTask\n // so we do not need to create a new object just for pass some data\n const taskData = {};\n const nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER];\n const nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] =\n proto[REMOVE_EVENT_LISTENER];\n const nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] =\n proto[LISTENERS_EVENT_LISTENER];\n const nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] =\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER];\n let nativePrependEventListener;\n if (patchOptions && patchOptions.prepend) {\n nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] =\n proto[patchOptions.prepend];\n }\n function checkIsPassive(task) {\n if (!passiveSupported && typeof taskData.options !== 'boolean' &&\n typeof taskData.options !== 'undefined' && taskData.options !== null) {\n // options is a non-null non-undefined object\n // passive is not supported\n // don't pass options as object\n // just pass capture as a boolean\n task.options = !!taskData.options.capture;\n taskData.options = task.options;\n }\n }\n const customScheduleGlobal = function (task) {\n // if there is already a task for the eventName + capture,\n // just return, because we use the shared globalZoneAwareCallback here.\n if (taskData.isExisting) {\n return;\n }\n checkIsPassive(task);\n return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options);\n };\n const customCancelGlobal = function (task) {\n // if task is not marked as isRemoved, this call is directly\n // from Zone.prototype.cancelTask, we should remove the task\n // from tasksList of target first\n if (!task.isRemoved) {\n const symbolEventNames = zoneSymbolEventNames$1[task.eventName];\n let symbolEventName;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR];\n }\n const existingTasks = symbolEventName && task.target[symbolEventName];\n if (existingTasks) {\n for (let i = 0; i < existingTasks.length; i++) {\n const existingTask = existingTasks[i];\n if (existingTask === task) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n task.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n task.allRemoved = true;\n task.target[symbolEventName] = null;\n }\n break;\n }\n }\n }\n }\n // if all tasks for the eventName + capture have gone,\n // we will really remove the global event callback,\n // if not, return\n if (!task.allRemoved) {\n return;\n }\n return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options);\n };\n const customScheduleNonGlobal = function (task) {\n checkIsPassive(task);\n return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n const customSchedulePrepend = function (task) {\n return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n const customCancelNonGlobal = function (task) {\n return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options);\n };\n const customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal;\n const customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal;\n const compareTaskCallbackVsDelegate = function (task, delegate) {\n const typeOfDelegate = typeof delegate;\n return (typeOfDelegate === 'function' && task.callback === delegate) ||\n (typeOfDelegate === 'object' && task.originalDelegate === delegate);\n };\n const compare = (patchOptions && patchOptions.diff) ? patchOptions.diff : compareTaskCallbackVsDelegate;\n const blackListedEvents = Zone[Zone.__symbol__('BLACK_LISTED_EVENTS')];\n const makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget = false, prepend = false) {\n return function () {\n const target = this || _global;\n const eventName = arguments[0];\n let delegate = arguments[1];\n if (!delegate) {\n return nativeListener.apply(this, arguments);\n }\n if (isNode && eventName === 'uncaughtException') {\n // don't patch uncaughtException of nodejs to prevent endless loop\n return nativeListener.apply(this, arguments);\n }\n // don't create the bind delegate function for handleEvent\n // case here to improve addEventListener performance\n // we will create the bind delegate when invoke\n let isHandleEvent = false;\n if (typeof delegate !== 'function') {\n if (!delegate.handleEvent) {\n return nativeListener.apply(this, arguments);\n }\n isHandleEvent = true;\n }\n if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) {\n return;\n }\n const options = arguments[2];\n if (blackListedEvents) {\n // check black list\n for (let i = 0; i < blackListedEvents.length; i++) {\n if (eventName === blackListedEvents[i]) {\n return nativeListener.apply(this, arguments);\n }\n }\n }\n let capture;\n let once = false;\n if (options === undefined) {\n capture = false;\n }\n else if (options === true) {\n capture = true;\n }\n else if (options === false) {\n capture = false;\n }\n else {\n capture = options ? !!options.capture : false;\n once = options ? !!options.once : false;\n }\n const zone = Zone.current;\n const symbolEventNames = zoneSymbolEventNames$1[eventName];\n let symbolEventName;\n if (!symbolEventNames) {\n // the code is duplicate, but I just want to get some better performance\n const falseEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + FALSE_STR;\n const trueEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + TRUE_STR;\n const symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames$1[eventName] = {};\n zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture;\n symbolEventName = capture ? symbolCapture : symbol;\n }\n else {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n let existingTasks = target[symbolEventName];\n let isExisting = false;\n if (existingTasks) {\n // already have task registered\n isExisting = true;\n if (checkDuplicate) {\n for (let i = 0; i < existingTasks.length; i++) {\n if (compare(existingTasks[i], delegate)) {\n // same callback, same capture, same event name, just return\n return;\n }\n }\n }\n }\n else {\n existingTasks = target[symbolEventName] = [];\n }\n let source;\n const constructorName = target.constructor['name'];\n const targetSource = globalSources[constructorName];\n if (targetSource) {\n source = targetSource[eventName];\n }\n if (!source) {\n source = constructorName + addSource +\n (eventNameToString ? eventNameToString(eventName) : eventName);\n }\n // do not create a new object as task.data to pass those things\n // just use the global shared one\n taskData.options = options;\n if (once) {\n // if addEventListener with once options, we don't pass it to\n // native addEventListener, instead we keep the once setting\n // and handle ourselves.\n taskData.options.once = false;\n }\n taskData.target = target;\n taskData.capture = capture;\n taskData.eventName = eventName;\n taskData.isExisting = isExisting;\n const data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : undefined;\n // keep taskData into data to allow onScheduleEventTask to access the task information\n if (data) {\n data.taskData = taskData;\n }\n const task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn);\n // should clear taskData.target to avoid memory leak\n // issue, https://github.com/angular/angular/issues/20442\n taskData.target = null;\n // need to clear up taskData because it is a global object\n if (data) {\n data.taskData = null;\n }\n // have to save those information to task in case\n // application may call task.zone.cancelTask() directly\n if (once) {\n options.once = true;\n }\n if (!(!passiveSupported && typeof task.options === 'boolean')) {\n // if not support passive, and we pass an option object\n // to addEventListener, we should save the options to task\n task.options = options;\n }\n task.target = target;\n task.capture = capture;\n task.eventName = eventName;\n if (isHandleEvent) {\n // save original delegate for compare to check duplicate\n task.originalDelegate = delegate;\n }\n if (!prepend) {\n existingTasks.push(task);\n }\n else {\n existingTasks.unshift(task);\n }\n if (returnTarget) {\n return target;\n }\n };\n };\n proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget);\n if (nativePrependEventListener) {\n proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true);\n }\n proto[REMOVE_EVENT_LISTENER] = function () {\n const target = this || _global;\n const eventName = arguments[0];\n const options = arguments[2];\n let capture;\n if (options === undefined) {\n capture = false;\n }\n else if (options === true) {\n capture = true;\n }\n else if (options === false) {\n capture = false;\n }\n else {\n capture = options ? !!options.capture : false;\n }\n const delegate = arguments[1];\n if (!delegate) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n if (validateHandler &&\n !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) {\n return;\n }\n const symbolEventNames = zoneSymbolEventNames$1[eventName];\n let symbolEventName;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n const existingTasks = symbolEventName && target[symbolEventName];\n if (existingTasks) {\n for (let i = 0; i < existingTasks.length; i++) {\n const existingTask = existingTasks[i];\n if (compare(existingTask, delegate)) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n existingTask.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n existingTask.allRemoved = true;\n target[symbolEventName] = null;\n }\n existingTask.zone.cancelTask(existingTask);\n if (returnTarget) {\n return target;\n }\n return;\n }\n }\n }\n // issue 930, didn't find the event name or callback\n // from zone kept existingTasks, the callback maybe\n // added outside of zone, we need to call native removeEventListener\n // to try to remove it.\n return nativeRemoveEventListener.apply(this, arguments);\n };\n proto[LISTENERS_EVENT_LISTENER] = function () {\n const target = this || _global;\n const eventName = arguments[0];\n const listeners = [];\n const tasks = findEventTasks(target, eventNameToString ? eventNameToString(eventName) : eventName);\n for (let i = 0; i < tasks.length; i++) {\n const task = tasks[i];\n let delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n listeners.push(delegate);\n }\n return listeners;\n };\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () {\n const target = this || _global;\n const eventName = arguments[0];\n if (!eventName) {\n const keys = Object.keys(target);\n for (let i = 0; i < keys.length; i++) {\n const prop = keys[i];\n const match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n let evtName = match && match[1];\n // in nodejs EventEmitter, removeListener event is\n // used for monitoring the removeListener call,\n // so just keep removeListener eventListener until\n // all other eventListeners are removed\n if (evtName && evtName !== 'removeListener') {\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName);\n }\n }\n // remove removeListener listener finally\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener');\n }\n else {\n const symbolEventNames = zoneSymbolEventNames$1[eventName];\n if (symbolEventNames) {\n const symbolEventName = symbolEventNames[FALSE_STR];\n const symbolCaptureEventName = symbolEventNames[TRUE_STR];\n const tasks = target[symbolEventName];\n const captureTasks = target[symbolCaptureEventName];\n if (tasks) {\n const removeTasks = tasks.slice();\n for (let i = 0; i < removeTasks.length; i++) {\n const task = removeTasks[i];\n let delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n if (captureTasks) {\n const removeTasks = captureTasks.slice();\n for (let i = 0; i < removeTasks.length; i++) {\n const task = removeTasks[i];\n let delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n }\n }\n if (returnTarget) {\n return this;\n }\n };\n // for native toString patch\n attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener);\n attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener);\n if (nativeRemoveAllListeners) {\n attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners);\n }\n if (nativeListeners) {\n attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners);\n }\n return true;\n }\n let results = [];\n for (let i = 0; i < apis.length; i++) {\n results[i] = patchEventTargetMethods(apis[i], patchOptions);\n }\n return results;\n}\nfunction findEventTasks(target, eventName) {\n const foundTasks = [];\n for (let prop in target) {\n const match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n let evtName = match && match[1];\n if (evtName && (!eventName || evtName === eventName)) {\n const tasks = target[prop];\n if (tasks) {\n for (let i = 0; i < tasks.length; i++) {\n foundTasks.push(tasks[i]);\n }\n }\n }\n }\n return foundTasks;\n}\nfunction patchEventPrototype(global, api) {\n const Event = global['Event'];\n if (Event && Event.prototype) {\n api.patchMethod(Event.prototype, 'stopImmediatePropagation', (delegate) => function (self, args) {\n self[IMMEDIATE_PROPAGATION_SYMBOL] = true;\n // we need to call the native stopImmediatePropagation\n // in case in some hybrid application, some part of\n // application will be controlled by zone, some are not\n delegate && delegate.apply(self, args);\n });\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction patchCallbacks(api, target, targetName, method, callbacks) {\n const symbol = Zone.__symbol__(method);\n if (target[symbol]) {\n return;\n }\n const nativeDelegate = target[symbol] = target[method];\n target[method] = function (name, opts, options) {\n if (opts && opts.prototype) {\n callbacks.forEach(function (callback) {\n const source = `${targetName}.${method}::` + callback;\n const prototype = opts.prototype;\n if (prototype.hasOwnProperty(callback)) {\n const descriptor = api.ObjectGetOwnPropertyDescriptor(prototype, callback);\n if (descriptor && descriptor.value) {\n descriptor.value = api.wrapWithCurrentZone(descriptor.value, source);\n api._redefineProperty(opts.prototype, callback, descriptor);\n }\n else if (prototype[callback]) {\n prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source);\n }\n }\n else if (prototype[callback]) {\n prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source);\n }\n });\n }\n return nativeDelegate.call(target, name, opts, options);\n };\n api.attachOriginToPatched(target[method], nativeDelegate);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/*\n * This is necessary for Chrome and Chrome mobile, to enable\n * things like redefining `createdCallback` on an element.\n */\nconst zoneSymbol$1 = Zone.__symbol__;\nconst _defineProperty = Object[zoneSymbol$1('defineProperty')] = Object.defineProperty;\nconst _getOwnPropertyDescriptor = Object[zoneSymbol$1('getOwnPropertyDescriptor')] =\n Object.getOwnPropertyDescriptor;\nconst _create = Object.create;\nconst unconfigurablesKey = zoneSymbol$1('unconfigurables');\nfunction propertyPatch() {\n Object.defineProperty = function (obj, prop, desc) {\n if (isUnconfigurable(obj, prop)) {\n throw new TypeError('Cannot assign to read only property \\'' + prop + '\\' of ' + obj);\n }\n const originalConfigurableFlag = desc.configurable;\n if (prop !== 'prototype') {\n desc = rewriteDescriptor(obj, prop, desc);\n }\n return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);\n };\n Object.defineProperties = function (obj, props) {\n Object.keys(props).forEach(function (prop) {\n Object.defineProperty(obj, prop, props[prop]);\n });\n return obj;\n };\n Object.create = function (obj, proto) {\n if (typeof proto === 'object' && !Object.isFrozen(proto)) {\n Object.keys(proto).forEach(function (prop) {\n proto[prop] = rewriteDescriptor(obj, prop, proto[prop]);\n });\n }\n return _create(obj, proto);\n };\n Object.getOwnPropertyDescriptor = function (obj, prop) {\n const desc = _getOwnPropertyDescriptor(obj, prop);\n if (desc && isUnconfigurable(obj, prop)) {\n desc.configurable = false;\n }\n return desc;\n };\n}\nfunction _redefineProperty(obj, prop, desc) {\n const originalConfigurableFlag = desc.configurable;\n desc = rewriteDescriptor(obj, prop, desc);\n return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);\n}\nfunction isUnconfigurable(obj, prop) {\n return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop];\n}\nfunction rewriteDescriptor(obj, prop, desc) {\n // issue-927, if the desc is frozen, don't try to change the desc\n if (!Object.isFrozen(desc)) {\n desc.configurable = true;\n }\n if (!desc.configurable) {\n // issue-927, if the obj is frozen, don't try to set the desc to obj\n if (!obj[unconfigurablesKey] && !Object.isFrozen(obj)) {\n _defineProperty(obj, unconfigurablesKey, { writable: true, value: {} });\n }\n if (obj[unconfigurablesKey]) {\n obj[unconfigurablesKey][prop] = true;\n }\n }\n return desc;\n}\nfunction _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) {\n try {\n return _defineProperty(obj, prop, desc);\n }\n catch (error) {\n if (desc.configurable) {\n // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's\n // retry with the original flag value\n if (typeof originalConfigurableFlag == 'undefined') {\n delete desc.configurable;\n }\n else {\n desc.configurable = originalConfigurableFlag;\n }\n try {\n return _defineProperty(obj, prop, desc);\n }\n catch (error) {\n let descJson = null;\n try {\n descJson = JSON.stringify(desc);\n }\n catch (error) {\n descJson = desc.toString();\n }\n console.log(`Attempting to configure '${prop}' with descriptor '${descJson}' on object '${obj}' and got error, giving up: ${error}`);\n }\n }\n else {\n throw error;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {globalThis}\n */\nconst globalEventHandlersEventNames = [\n 'abort',\n 'animationcancel',\n 'animationend',\n 'animationiteration',\n 'auxclick',\n 'beforeinput',\n 'blur',\n 'cancel',\n 'canplay',\n 'canplaythrough',\n 'change',\n 'compositionstart',\n 'compositionupdate',\n 'compositionend',\n 'cuechange',\n 'click',\n 'close',\n 'contextmenu',\n 'curechange',\n 'dblclick',\n 'drag',\n 'dragend',\n 'dragenter',\n 'dragexit',\n 'dragleave',\n 'dragover',\n 'drop',\n 'durationchange',\n 'emptied',\n 'ended',\n 'error',\n 'focus',\n 'focusin',\n 'focusout',\n 'gotpointercapture',\n 'input',\n 'invalid',\n 'keydown',\n 'keypress',\n 'keyup',\n 'load',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'lostpointercapture',\n 'mousedown',\n 'mouseenter',\n 'mouseleave',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'mousewheel',\n 'orientationchange',\n 'pause',\n 'play',\n 'playing',\n 'pointercancel',\n 'pointerdown',\n 'pointerenter',\n 'pointerleave',\n 'pointerlockchange',\n 'mozpointerlockchange',\n 'webkitpointerlockerchange',\n 'pointerlockerror',\n 'mozpointerlockerror',\n 'webkitpointerlockerror',\n 'pointermove',\n 'pointout',\n 'pointerover',\n 'pointerup',\n 'progress',\n 'ratechange',\n 'reset',\n 'resize',\n 'scroll',\n 'seeked',\n 'seeking',\n 'select',\n 'selectionchange',\n 'selectstart',\n 'show',\n 'sort',\n 'stalled',\n 'submit',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'touchcancel',\n 'touchmove',\n 'touchstart',\n 'touchend',\n 'transitioncancel',\n 'transitionend',\n 'waiting',\n 'wheel'\n];\nconst documentEventNames = [\n 'afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'freeze', 'fullscreenchange',\n 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror',\n 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange',\n 'visibilitychange', 'resume'\n];\nconst windowEventNames = [\n 'absolutedeviceorientation',\n 'afterinput',\n 'afterprint',\n 'appinstalled',\n 'beforeinstallprompt',\n 'beforeprint',\n 'beforeunload',\n 'devicelight',\n 'devicemotion',\n 'deviceorientation',\n 'deviceorientationabsolute',\n 'deviceproximity',\n 'hashchange',\n 'languagechange',\n 'message',\n 'mozbeforepaint',\n 'offline',\n 'online',\n 'paint',\n 'pageshow',\n 'pagehide',\n 'popstate',\n 'rejectionhandled',\n 'storage',\n 'unhandledrejection',\n 'unload',\n 'userproximity',\n 'vrdisplyconnected',\n 'vrdisplaydisconnected',\n 'vrdisplaypresentchange'\n];\nconst htmlElementEventNames = [\n 'beforecopy', 'beforecut', 'beforepaste', 'copy', 'cut', 'paste', 'dragstart', 'loadend',\n 'animationstart', 'search', 'transitionrun', 'transitionstart', 'webkitanimationend',\n 'webkitanimationiteration', 'webkitanimationstart', 'webkittransitionend'\n];\nconst mediaElementEventNames = ['encrypted', 'waitingforkey', 'msneedkey', 'mozinterruptbegin', 'mozinterruptend'];\nconst ieElementEventNames = [\n 'activate',\n 'afterupdate',\n 'ariarequest',\n 'beforeactivate',\n 'beforedeactivate',\n 'beforeeditfocus',\n 'beforeupdate',\n 'cellchange',\n 'controlselect',\n 'dataavailable',\n 'datasetchanged',\n 'datasetcomplete',\n 'errorupdate',\n 'filterchange',\n 'layoutcomplete',\n 'losecapture',\n 'move',\n 'moveend',\n 'movestart',\n 'propertychange',\n 'resizeend',\n 'resizestart',\n 'rowenter',\n 'rowexit',\n 'rowsdelete',\n 'rowsinserted',\n 'command',\n 'compassneedscalibration',\n 'deactivate',\n 'help',\n 'mscontentzoom',\n 'msmanipulationstatechanged',\n 'msgesturechange',\n 'msgesturedoubletap',\n 'msgestureend',\n 'msgesturehold',\n 'msgesturestart',\n 'msgesturetap',\n 'msgotpointercapture',\n 'msinertiastart',\n 'mslostpointercapture',\n 'mspointercancel',\n 'mspointerdown',\n 'mspointerenter',\n 'mspointerhover',\n 'mspointerleave',\n 'mspointermove',\n 'mspointerout',\n 'mspointerover',\n 'mspointerup',\n 'pointerout',\n 'mssitemodejumplistitemremoved',\n 'msthumbnailclick',\n 'stop',\n 'storagecommit'\n];\nconst webglEventNames = ['webglcontextrestored', 'webglcontextlost', 'webglcontextcreationerror'];\nconst formEventNames = ['autocomplete', 'autocompleteerror'];\nconst detailEventNames = ['toggle'];\nconst frameEventNames = ['load'];\nconst frameSetEventNames = ['blur', 'error', 'focus', 'load', 'resize', 'scroll', 'messageerror'];\nconst marqueeEventNames = ['bounce', 'finish', 'start'];\nconst XMLHttpRequestEventNames = [\n 'loadstart', 'progress', 'abort', 'error', 'load', 'progress', 'timeout', 'loadend',\n 'readystatechange'\n];\nconst IDBIndexEventNames = ['upgradeneeded', 'complete', 'abort', 'success', 'error', 'blocked', 'versionchange', 'close'];\nconst websocketEventNames = ['close', 'error', 'open', 'message'];\nconst workerEventNames = ['error', 'message'];\nconst eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames);\nfunction filterProperties(target, onProperties, ignoreProperties) {\n if (!ignoreProperties || ignoreProperties.length === 0) {\n return onProperties;\n }\n const tip = ignoreProperties.filter(ip => ip.target === target);\n if (!tip || tip.length === 0) {\n return onProperties;\n }\n const targetIgnoreProperties = tip[0].ignoreProperties;\n return onProperties.filter(op => targetIgnoreProperties.indexOf(op) === -1);\n}\nfunction patchFilteredProperties(target, onProperties, ignoreProperties, prototype) {\n // check whether target is available, sometimes target will be undefined\n // because different browser or some 3rd party plugin.\n if (!target) {\n return;\n }\n const filteredProperties = filterProperties(target, onProperties, ignoreProperties);\n patchOnProperties(target, filteredProperties, prototype);\n}\nfunction propertyDescriptorPatch(api, _global) {\n if (isNode && !isMix) {\n return;\n }\n if (Zone[api.symbol('patchEvents')]) {\n // events are already been patched by legacy patch.\n return;\n }\n const supportsWebSocket = typeof WebSocket !== 'undefined';\n const ignoreProperties = _global['__Zone_ignore_on_properties'];\n // for browsers that we can patch the descriptor: Chrome & Firefox\n if (isBrowser) {\n const internalWindow = window;\n const ignoreErrorProperties = isIE ? [{ target: internalWindow, ignoreProperties: ['error'] }] : [];\n // in IE/Edge, onProp not exist in window object, but in WindowPrototype\n // so we need to pass WindowPrototype to check onProp exist or not\n patchFilteredProperties(internalWindow, eventNames.concat(['messageerror']), ignoreProperties ? ignoreProperties.concat(ignoreErrorProperties) : ignoreProperties, ObjectGetPrototypeOf(internalWindow));\n patchFilteredProperties(Document.prototype, eventNames, ignoreProperties);\n if (typeof internalWindow['SVGElement'] !== 'undefined') {\n patchFilteredProperties(internalWindow['SVGElement'].prototype, eventNames, ignoreProperties);\n }\n patchFilteredProperties(Element.prototype, eventNames, ignoreProperties);\n patchFilteredProperties(HTMLElement.prototype, eventNames, ignoreProperties);\n patchFilteredProperties(HTMLMediaElement.prototype, mediaElementEventNames, ignoreProperties);\n patchFilteredProperties(HTMLFrameSetElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties);\n patchFilteredProperties(HTMLBodyElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties);\n patchFilteredProperties(HTMLFrameElement.prototype, frameEventNames, ignoreProperties);\n patchFilteredProperties(HTMLIFrameElement.prototype, frameEventNames, ignoreProperties);\n const HTMLMarqueeElement = internalWindow['HTMLMarqueeElement'];\n if (HTMLMarqueeElement) {\n patchFilteredProperties(HTMLMarqueeElement.prototype, marqueeEventNames, ignoreProperties);\n }\n const Worker = internalWindow['Worker'];\n if (Worker) {\n patchFilteredProperties(Worker.prototype, workerEventNames, ignoreProperties);\n }\n }\n const XMLHttpRequest = _global['XMLHttpRequest'];\n if (XMLHttpRequest) {\n // XMLHttpRequest is not available in ServiceWorker, so we need to check here\n patchFilteredProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames, ignoreProperties);\n }\n const XMLHttpRequestEventTarget = _global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget) {\n patchFilteredProperties(XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype, XMLHttpRequestEventNames, ignoreProperties);\n }\n if (typeof IDBIndex !== 'undefined') {\n patchFilteredProperties(IDBIndex.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBRequest.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBOpenDBRequest.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBDatabase.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBTransaction.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBCursor.prototype, IDBIndexEventNames, ignoreProperties);\n }\n if (supportsWebSocket) {\n patchFilteredProperties(WebSocket.prototype, websocketEventNames, ignoreProperties);\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nZone.__load_patch('util', (global, Zone, api) => {\n api.patchOnProperties = patchOnProperties;\n api.patchMethod = patchMethod;\n api.bindArguments = bindArguments;\n api.patchMacroTask = patchMacroTask;\n // In earlier version of zone.js (<0.9.0), we use env name `__zone_symbol__BLACK_LISTED_EVENTS` to\n // define which events will not be patched by `Zone.js`.\n // In newer version (>=0.9.0), we change the env name to `__zone_symbol__UNPATCHED_EVENTS` to keep\n // the name consistent with angular repo.\n // The `__zone_symbol__BLACK_LISTED_EVENTS` is deprecated, but it is still be supported for\n // backwards compatibility.\n const SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS');\n const SYMBOL_UNPATCHED_EVENTS = Zone.__symbol__('UNPATCHED_EVENTS');\n if (global[SYMBOL_UNPATCHED_EVENTS]) {\n global[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_UNPATCHED_EVENTS];\n }\n if (global[SYMBOL_BLACK_LISTED_EVENTS]) {\n Zone[SYMBOL_BLACK_LISTED_EVENTS] = Zone[SYMBOL_UNPATCHED_EVENTS] =\n global[SYMBOL_BLACK_LISTED_EVENTS];\n }\n api.patchEventPrototype = patchEventPrototype;\n api.patchEventTarget = patchEventTarget;\n api.isIEOrEdge = isIEOrEdge;\n api.ObjectDefineProperty = ObjectDefineProperty;\n api.ObjectGetOwnPropertyDescriptor = ObjectGetOwnPropertyDescriptor;\n api.ObjectCreate = ObjectCreate;\n api.ArraySlice = ArraySlice;\n api.patchClass = patchClass;\n api.wrapWithCurrentZone = wrapWithCurrentZone;\n api.filterProperties = filterProperties;\n api.attachOriginToPatched = attachOriginToPatched;\n api._redefineProperty = _redefineProperty;\n api.patchCallbacks = patchCallbacks;\n api.getGlobalObjects = () => ({\n globalSources,\n zoneSymbolEventNames: zoneSymbolEventNames$1,\n eventNames,\n isBrowser,\n isMix,\n isNode,\n TRUE_STR,\n FALSE_STR,\n ZONE_SYMBOL_PREFIX,\n ADD_EVENT_LISTENER_STR,\n REMOVE_EVENT_LISTENER_STR\n });\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nconst taskSymbol = zoneSymbol('zoneTask');\nfunction patchTimer(window, setName, cancelName, nameSuffix) {\n let setNative = null;\n let clearNative = null;\n setName += nameSuffix;\n cancelName += nameSuffix;\n const tasksByHandleId = {};\n function scheduleTask(task) {\n const data = task.data;\n function timer() {\n try {\n task.invoke.apply(this, arguments);\n }\n finally {\n // issue-934, task will be cancelled\n // even it is a periodic task such as\n // setInterval\n if (!(task.data && task.data.isPeriodic)) {\n if (typeof data.handleId === 'number') {\n // in non-nodejs env, we remove timerId\n // from local cache\n delete tasksByHandleId[data.handleId];\n }\n else if (data.handleId) {\n // Node returns complex objects as handleIds\n // we remove task reference from timer object\n data.handleId[taskSymbol] = null;\n }\n }\n }\n }\n data.args[0] = timer;\n data.handleId = setNative.apply(window, data.args);\n return task;\n }\n function clearTask(task) {\n return clearNative(task.data.handleId);\n }\n setNative =\n patchMethod(window, setName, (delegate) => function (self, args) {\n if (typeof args[0] === 'function') {\n const options = {\n isPeriodic: nameSuffix === 'Interval',\n delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 :\n undefined,\n args: args\n };\n const task = scheduleMacroTaskWithCurrentZone(setName, args[0], options, scheduleTask, clearTask);\n if (!task) {\n return task;\n }\n // Node.js must additionally support the ref and unref functions.\n const handle = task.data.handleId;\n if (typeof handle === 'number') {\n // for non nodejs env, we save handleId: task\n // mapping in local cache for clearTimeout\n tasksByHandleId[handle] = task;\n }\n else if (handle) {\n // for nodejs env, we save task\n // reference in timerId Object for clearTimeout\n handle[taskSymbol] = task;\n }\n // check whether handle is null, because some polyfill or browser\n // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame\n if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' &&\n typeof handle.unref === 'function') {\n task.ref = handle.ref.bind(handle);\n task.unref = handle.unref.bind(handle);\n }\n if (typeof handle === 'number' || handle) {\n return handle;\n }\n return task;\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(window, args);\n }\n });\n clearNative =\n patchMethod(window, cancelName, (delegate) => function (self, args) {\n const id = args[0];\n let task;\n if (typeof id === 'number') {\n // non nodejs env.\n task = tasksByHandleId[id];\n }\n else {\n // nodejs env.\n task = id && id[taskSymbol];\n // other environments.\n if (!task) {\n task = id;\n }\n }\n if (task && typeof task.type === 'string') {\n if (task.state !== 'notScheduled' &&\n (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) {\n if (typeof id === 'number') {\n delete tasksByHandleId[id];\n }\n else if (id) {\n id[taskSymbol] = null;\n }\n // Do not cancel already canceled functions\n task.zone.cancelTask(task);\n }\n }\n else {\n // cause an error by calling it directly.\n delegate.apply(window, args);\n }\n });\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction patchCustomElements(_global, api) {\n const { isBrowser, isMix } = api.getGlobalObjects();\n if ((!isBrowser && !isMix) || !_global['customElements'] || !('customElements' in _global)) {\n return;\n }\n const callbacks = ['connectedCallback', 'disconnectedCallback', 'adoptedCallback', 'attributeChangedCallback'];\n api.patchCallbacks(api, _global.customElements, 'customElements', 'define', callbacks);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction eventTargetPatch(_global, api) {\n if (Zone[api.symbol('patchEventTarget')]) {\n // EventTarget is already patched.\n return;\n }\n const { eventNames, zoneSymbolEventNames, TRUE_STR, FALSE_STR, ZONE_SYMBOL_PREFIX } = api.getGlobalObjects();\n // predefine all __zone_symbol__ + eventName + true/false string\n for (let i = 0; i < eventNames.length; i++) {\n const eventName = eventNames[i];\n const falseEventName = eventName + FALSE_STR;\n const trueEventName = eventName + TRUE_STR;\n const symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames[eventName] = {};\n zoneSymbolEventNames[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture;\n }\n const EVENT_TARGET = _global['EventTarget'];\n if (!EVENT_TARGET || !EVENT_TARGET.prototype) {\n return;\n }\n api.patchEventTarget(_global, [EVENT_TARGET && EVENT_TARGET.prototype]);\n return true;\n}\nfunction patchEvent(global, api) {\n api.patchEventPrototype(global, api);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nZone.__load_patch('legacy', (global) => {\n const legacyPatch = global[Zone.__symbol__('legacyPatch')];\n if (legacyPatch) {\n legacyPatch();\n }\n});\nZone.__load_patch('timers', (global) => {\n const set = 'set';\n const clear = 'clear';\n patchTimer(global, set, clear, 'Timeout');\n patchTimer(global, set, clear, 'Interval');\n patchTimer(global, set, clear, 'Immediate');\n});\nZone.__load_patch('requestAnimationFrame', (global) => {\n patchTimer(global, 'request', 'cancel', 'AnimationFrame');\n patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame');\n patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame');\n});\nZone.__load_patch('blocking', (global, Zone) => {\n const blockingMethods = ['alert', 'prompt', 'confirm'];\n for (let i = 0; i < blockingMethods.length; i++) {\n const name = blockingMethods[i];\n patchMethod(global, name, (delegate, symbol, name) => {\n return function (s, args) {\n return Zone.current.run(delegate, global, args, name);\n };\n });\n }\n});\nZone.__load_patch('EventTarget', (global, Zone, api) => {\n patchEvent(global, api);\n eventTargetPatch(global, api);\n // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener\n const XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) {\n api.patchEventTarget(global, [XMLHttpRequestEventTarget.prototype]);\n }\n patchClass('MutationObserver');\n patchClass('WebKitMutationObserver');\n patchClass('IntersectionObserver');\n patchClass('FileReader');\n});\nZone.__load_patch('on_property', (global, Zone, api) => {\n propertyDescriptorPatch(api, global);\n propertyPatch();\n});\nZone.__load_patch('customElements', (global, Zone, api) => {\n patchCustomElements(global, api);\n});\nZone.__load_patch('XHR', (global, Zone) => {\n // Treat XMLHttpRequest as a macrotask.\n patchXHR(global);\n const XHR_TASK = zoneSymbol('xhrTask');\n const XHR_SYNC = zoneSymbol('xhrSync');\n const XHR_LISTENER = zoneSymbol('xhrListener');\n const XHR_SCHEDULED = zoneSymbol('xhrScheduled');\n const XHR_URL = zoneSymbol('xhrURL');\n const XHR_ERROR_BEFORE_SCHEDULED = zoneSymbol('xhrErrorBeforeScheduled');\n function patchXHR(window) {\n const XMLHttpRequest = window['XMLHttpRequest'];\n if (!XMLHttpRequest) {\n // XMLHttpRequest is not available in service worker\n return;\n }\n const XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n function findPendingTask(target) {\n return target[XHR_TASK];\n }\n let oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n let oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n if (!oriAddListener) {\n const XMLHttpRequestEventTarget = window['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget) {\n const XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget.prototype;\n oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n }\n const READY_STATE_CHANGE = 'readystatechange';\n const SCHEDULED = 'scheduled';\n function scheduleTask(task) {\n const data = task.data;\n const target = data.target;\n target[XHR_SCHEDULED] = false;\n target[XHR_ERROR_BEFORE_SCHEDULED] = false;\n // remove existing event listener\n const listener = target[XHR_LISTENER];\n if (!oriAddListener) {\n oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n if (listener) {\n oriRemoveListener.call(target, READY_STATE_CHANGE, listener);\n }\n const newListener = target[XHR_LISTENER] = () => {\n if (target.readyState === target.DONE) {\n // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with\n // readyState=4 multiple times, so we need to check task state here\n if (!data.aborted && target[XHR_SCHEDULED] && task.state === SCHEDULED) {\n // check whether the xhr has registered onload listener\n // if that is the case, the task should invoke after all\n // onload listeners finish.\n const loadTasks = target['__zone_symbol__loadfalse'];\n if (loadTasks && loadTasks.length > 0) {\n const oriInvoke = task.invoke;\n task.invoke = function () {\n // need to load the tasks again, because in other\n // load listener, they may remove themselves\n const loadTasks = target['__zone_symbol__loadfalse'];\n for (let i = 0; i < loadTasks.length; i++) {\n if (loadTasks[i] === task) {\n loadTasks.splice(i, 1);\n }\n }\n if (!data.aborted && task.state === SCHEDULED) {\n oriInvoke.call(task);\n }\n };\n loadTasks.push(task);\n }\n else {\n task.invoke();\n }\n }\n else if (!data.aborted && target[XHR_SCHEDULED] === false) {\n // error occurs when xhr.send()\n target[XHR_ERROR_BEFORE_SCHEDULED] = true;\n }\n }\n };\n oriAddListener.call(target, READY_STATE_CHANGE, newListener);\n const storedTask = target[XHR_TASK];\n if (!storedTask) {\n target[XHR_TASK] = task;\n }\n sendNative.apply(target, data.args);\n target[XHR_SCHEDULED] = true;\n return task;\n }\n function placeholderCallback() { }\n function clearTask(task) {\n const data = task.data;\n // Note - ideally, we would call data.target.removeEventListener here, but it's too late\n // to prevent it from firing. So instead, we store info for the event listener.\n data.aborted = true;\n return abortNative.apply(data.target, data.args);\n }\n const openNative = patchMethod(XMLHttpRequestPrototype, 'open', () => function (self, args) {\n self[XHR_SYNC] = args[2] == false;\n self[XHR_URL] = args[1];\n return openNative.apply(self, args);\n });\n const XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send';\n const fetchTaskAborting = zoneSymbol('fetchTaskAborting');\n const fetchTaskScheduling = zoneSymbol('fetchTaskScheduling');\n const sendNative = patchMethod(XMLHttpRequestPrototype, 'send', () => function (self, args) {\n if (Zone.current[fetchTaskScheduling] === true) {\n // a fetch is scheduling, so we are using xhr to polyfill fetch\n // and because we already schedule macroTask for fetch, we should\n // not schedule a macroTask for xhr again\n return sendNative.apply(self, args);\n }\n if (self[XHR_SYNC]) {\n // if the XHR is sync there is no task to schedule, just execute the code.\n return sendNative.apply(self, args);\n }\n else {\n const options = { target: self, url: self[XHR_URL], isPeriodic: false, args: args, aborted: false };\n const task = scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask);\n if (self && self[XHR_ERROR_BEFORE_SCHEDULED] === true && !options.aborted &&\n task.state === SCHEDULED) {\n // xhr request throw error when send\n // we should invoke task instead of leaving a scheduled\n // pending macroTask\n task.invoke();\n }\n }\n });\n const abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', () => function (self, args) {\n const task = findPendingTask(self);\n if (task && typeof task.type == 'string') {\n // If the XHR has already completed, do nothing.\n // If the XHR has already been aborted, do nothing.\n // Fix #569, call abort multiple times before done will cause\n // macroTask task count be negative number\n if (task.cancelFn == null || (task.data && task.data.aborted)) {\n return;\n }\n task.zone.cancelTask(task);\n }\n else if (Zone.current[fetchTaskAborting] === true) {\n // the abort is called from fetch polyfill, we need to call native abort of XHR.\n return abortNative.apply(self, args);\n }\n // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no\n // task\n // to cancel. Do nothing.\n });\n }\n});\nZone.__load_patch('geolocation', (global) => {\n /// GEO_LOCATION\n if (global['navigator'] && global['navigator'].geolocation) {\n patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']);\n }\n});\nZone.__load_patch('PromiseRejectionEvent', (global, Zone) => {\n // handle unhandled promise rejection\n function findPromiseRejectionHandler(evtName) {\n return function (e) {\n const eventTasks = findEventTasks(global, evtName);\n eventTasks.forEach(eventTask => {\n // windows has added unhandledrejection event listener\n // trigger the event listener\n const PromiseRejectionEvent = global['PromiseRejectionEvent'];\n if (PromiseRejectionEvent) {\n const evt = new PromiseRejectionEvent(evtName, { promise: e.promise, reason: e.rejection });\n eventTask.invoke(evt);\n }\n });\n };\n }\n if (global['PromiseRejectionEvent']) {\n Zone[zoneSymbol('unhandledPromiseRejectionHandler')] =\n findPromiseRejectionHandler('unhandledrejection');\n Zone[zoneSymbol('rejectionHandledHandler')] =\n findPromiseRejectionHandler('rejectionhandled');\n }\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\n/**\r\n * This file includes polyfills needed by Angular and is loaded before the app.\r\n * You can add your own extra polyfills to this file.\r\n *\r\n * This file is divided into 2 sections:\r\n * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\r\n * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\r\n * file.\r\n *\r\n * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\r\n * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\r\n * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\r\n *\r\n * Learn more in https://angular.io/guide/browser-support\r\n */\r\n\r\n/***************************************************************************************************\r\n * BROWSER POLYFILLS\r\n */\r\n\r\n/** IE9, IE10 and IE11 requires all of the following polyfills. **/\r\n// import 'core-js/es6/symbol';\r\n// import 'core-js/es6/object';\r\n// import 'core-js/es6/function';\r\n// import 'core-js/es6/parse-int';\r\n// import 'core-js/es6/parse-float';\r\n// import 'core-js/es6/number';\r\n// import 'core-js/es6/math';\r\n// import 'core-js/es6/string';\r\n// import 'core-js/es6/date';\r\n// import 'core-js/es6/array';\r\n// import 'core-js/es6/regexp';\r\n// import 'core-js/es6/map';\r\n// import 'core-js/es6/weak-map';\r\n// import 'core-js/es6/set';\r\n\r\n/**\r\n * If the application will be indexed by Google Search, the following is required.\r\n * Googlebot uses a renderer based on Chrome 41.\r\n * https://developers.google.com/search/docs/guides/rendering\r\n **/\r\n// import 'core-js/es6/array';\r\n\r\n/** IE10 and IE11 requires the following for NgClass support on SVG elements */\r\n// import 'classlist.js'; // Run `npm install --save classlist.js`.\r\n\r\n/** IE10 and IE11 requires the following for the Reflect API. */\r\n// import 'core-js/es6/reflect';\r\n\r\n/**\r\n * Web Animations `@angular/platform-browser/animations`\r\n * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.\r\n * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).\r\n **/\r\n// import 'web-animations-js'; // Run `npm install --save web-animations-js`.\r\n\r\n/**\r\n * By default, zone.js will patch all possible macroTask and DomEvents\r\n * user can disable parts of macroTask/DomEvents patch by setting following flags\r\n */\r\n\r\n // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame\r\n // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick\r\n // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames\r\n\r\n /*\r\n * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js\r\n * with the following flag, it will bypass `zone.js` patch for IE/Edge\r\n */\r\n// (window as any).__Zone_enable_cross_context_check = true;\r\n\r\n/***************************************************************************************************\r\n * Zone JS is required by default for Angular itself.\r\n */\r\nimport 'zone.js/dist/zone'; // Included with Angular CLI.\r\n\r\n\r\n/***************************************************************************************************\r\n * APPLICATION IMPORTS\r\n */\r\n"],"sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/target/DAAExample/polyfills-es5.js b/target/DAAExample/polyfills-es5.js deleted file mode 100644 index 75e6d4d0bd6ff39fd3717663d52f979a07cfccd0..0000000000000000000000000000000000000000 --- a/target/DAAExample/polyfills-es5.js +++ /dev/null @@ -1,20931 +0,0 @@ -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["polyfills-es5"], { - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/date/index.js": - /*!******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/date/index.js ***! - \******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsEsDateIndexJs(module, exports, __webpack_require__) { - __webpack_require__( - /*! ../../modules/es.date.now */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.now.js"); - - __webpack_require__( - /*! ../../modules/es.date.to-json */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-json.js"); - - __webpack_require__( - /*! ../../modules/es.date.to-iso-string */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-iso-string.js"); - - __webpack_require__( - /*! ../../modules/es.date.to-string */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-string.js"); - - __webpack_require__( - /*! ../../modules/es.date.to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-primitive.js"); - - var path = __webpack_require__( - /*! ../../internals/path */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js"); - - module.exports = path.Date; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/math/index.js": - /*!******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/math/index.js ***! - \******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsEsMathIndexJs(module, exports, __webpack_require__) { - __webpack_require__( - /*! ../../modules/es.math.acosh */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.acosh.js"); - - __webpack_require__( - /*! ../../modules/es.math.asinh */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.asinh.js"); - - __webpack_require__( - /*! ../../modules/es.math.atanh */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.atanh.js"); - - __webpack_require__( - /*! ../../modules/es.math.cbrt */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.cbrt.js"); - - __webpack_require__( - /*! ../../modules/es.math.clz32 */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.clz32.js"); - - __webpack_require__( - /*! ../../modules/es.math.cosh */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.cosh.js"); - - __webpack_require__( - /*! ../../modules/es.math.expm1 */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.expm1.js"); - - __webpack_require__( - /*! ../../modules/es.math.fround */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.fround.js"); - - __webpack_require__( - /*! ../../modules/es.math.hypot */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.hypot.js"); - - __webpack_require__( - /*! ../../modules/es.math.imul */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.imul.js"); - - __webpack_require__( - /*! ../../modules/es.math.log10 */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log10.js"); - - __webpack_require__( - /*! ../../modules/es.math.log1p */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log1p.js"); - - __webpack_require__( - /*! ../../modules/es.math.log2 */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log2.js"); - - __webpack_require__( - /*! ../../modules/es.math.sign */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.sign.js"); - - __webpack_require__( - /*! ../../modules/es.math.sinh */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.sinh.js"); - - __webpack_require__( - /*! ../../modules/es.math.tanh */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.tanh.js"); - - __webpack_require__( - /*! ../../modules/es.math.to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.to-string-tag.js"); - - __webpack_require__( - /*! ../../modules/es.math.trunc */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.trunc.js"); - - var path = __webpack_require__( - /*! ../../internals/path */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js"); - - module.exports = path.Math; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/number/index.js": - /*!********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/number/index.js ***! - \********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsEsNumberIndexJs(module, exports, __webpack_require__) { - __webpack_require__( - /*! ../../modules/es.number.constructor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.constructor.js"); - - __webpack_require__( - /*! ../../modules/es.number.epsilon */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.epsilon.js"); - - __webpack_require__( - /*! ../../modules/es.number.is-finite */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-finite.js"); - - __webpack_require__( - /*! ../../modules/es.number.is-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-integer.js"); - - __webpack_require__( - /*! ../../modules/es.number.is-nan */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-nan.js"); - - __webpack_require__( - /*! ../../modules/es.number.is-safe-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-safe-integer.js"); - - __webpack_require__( - /*! ../../modules/es.number.max-safe-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.max-safe-integer.js"); - - __webpack_require__( - /*! ../../modules/es.number.min-safe-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.min-safe-integer.js"); - - __webpack_require__( - /*! ../../modules/es.number.parse-float */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.parse-float.js"); - - __webpack_require__( - /*! ../../modules/es.number.parse-int */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.parse-int.js"); - - __webpack_require__( - /*! ../../modules/es.number.to-fixed */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.to-fixed.js"); - - __webpack_require__( - /*! ../../modules/es.number.to-precision */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.to-precision.js"); - - var path = __webpack_require__( - /*! ../../internals/path */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js"); - - module.exports = path.Number; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/reflect/index.js": - /*!*********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/reflect/index.js ***! - \*********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsEsReflectIndexJs(module, exports, __webpack_require__) { - __webpack_require__( - /*! ../../modules/es.reflect.apply */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.apply.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.construct */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.construct.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.define-property.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.delete-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.delete-property.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.get */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get-prototype-of.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.has.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.is-extensible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.is-extensible.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.own-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.own-keys.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.prevent-extensions */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.prevent-extensions.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.set */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.set.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.set-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.set-prototype-of.js"); - - var path = __webpack_require__( - /*! ../../internals/path */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js"); - - module.exports = path.Reflect; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/symbol/index.js": - /*!********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/symbol/index.js ***! - \********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsEsSymbolIndexJs(module, exports, __webpack_require__) { - __webpack_require__( - /*! ../../modules/es.array.concat */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.concat.js"); - - __webpack_require__( - /*! ../../modules/es.object.to-string */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.to-string.js"); - - __webpack_require__( - /*! ../../modules/es.symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.async-iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.async-iterator.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.description */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.description.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.has-instance */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.has-instance.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.is-concat-spreadable */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.iterator.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.match */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.match.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.match-all */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.match-all.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.replace */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.replace.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.search */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.search.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.species */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.species.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.split */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.split.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.to-primitive.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.to-string-tag.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.unscopables */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.unscopables.js"); - - __webpack_require__( - /*! ../../modules/es.math.to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.to-string-tag.js"); - - __webpack_require__( - /*! ../../modules/es.json.to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.json.to-string-tag.js"); - - var path = __webpack_require__( - /*! ../../internals/path */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js"); - - module.exports = path.Symbol; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsAFunctionJs(module, exports) { - module.exports = function (it) { - if (typeof it != 'function') { - throw TypeError(String(it) + ' is not a function'); - } - - return it; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsAPossiblePrototypeJs(module, exports, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - module.exports = function (it) { - if (!isObject(it) && it !== null) { - throw TypeError("Can't set " + String(it) + ' as a prototype'); - } - - return it; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/add-to-unscopables.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/add-to-unscopables.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsAddToUnscopablesJs(module, exports, __webpack_require__) { - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var create = __webpack_require__( - /*! ../internals/object-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var UNSCOPABLES = wellKnownSymbol('unscopables'); - var ArrayPrototype = Array.prototype; // Array.prototype[@@unscopables] - // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables - - if (ArrayPrototype[UNSCOPABLES] == undefined) { - definePropertyModule.f(ArrayPrototype, UNSCOPABLES, { - configurable: true, - value: create(null) - }); - } // add a key to Array.prototype[@@unscopables] - - - module.exports = function (key) { - ArrayPrototype[UNSCOPABLES][key] = true; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/advance-string-index.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/advance-string-index.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsAdvanceStringIndexJs(module, exports, __webpack_require__) { - "use strict"; - - var charAt = __webpack_require__( - /*! ../internals/string-multibyte */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-multibyte.js").charAt; // `AdvanceStringIndex` abstract operation - // https://tc39.github.io/ecma262/#sec-advancestringindex - - - module.exports = function (S, index, unicode) { - return index + (unicode ? charAt(S, index).length : 1); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsAnInstanceJs(module, exports) { - module.exports = function (it, Constructor, name) { - if (!(it instanceof Constructor)) { - throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation'); - } - - return it; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsAnObjectJs(module, exports, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - module.exports = function (it) { - if (!isObject(it)) { - throw TypeError(String(it) + ' is not an object'); - } - - return it; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-copy-within.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-copy-within.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayCopyWithinJs(module, exports, __webpack_require__) { - "use strict"; - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var toAbsoluteIndex = __webpack_require__( - /*! ../internals/to-absolute-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var min = Math.min; // `Array.prototype.copyWithin` method implementation - // https://tc39.github.io/ecma262/#sec-array.prototype.copywithin - - module.exports = [].copyWithin || function copyWithin(target - /* = 0 */ - , start - /* = 0, end = @length */ - ) { - var O = toObject(this); - var len = toLength(O.length); - var to = toAbsoluteIndex(target, len); - var from = toAbsoluteIndex(start, len); - var end = arguments.length > 2 ? arguments[2] : undefined; - var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); - var inc = 1; - - if (from < to && to < from + count) { - inc = -1; - from += count - 1; - to += count - 1; - } - - while (count-- > 0) { - if (from in O) O[to] = O[from];else delete O[to]; - to += inc; - from += inc; - } - - return O; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-fill.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-fill.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayFillJs(module, exports, __webpack_require__) { - "use strict"; - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var toAbsoluteIndex = __webpack_require__( - /*! ../internals/to-absolute-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); // `Array.prototype.fill` method implementation - // https://tc39.github.io/ecma262/#sec-array.prototype.fill - - - module.exports = function fill(value - /* , start = 0, end = @length */ - ) { - var O = toObject(this); - var length = toLength(O.length); - var argumentsLength = arguments.length; - var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length); - var end = argumentsLength > 2 ? arguments[2] : undefined; - var endPos = end === undefined ? length : toAbsoluteIndex(end, length); - - while (endPos > index) { - O[index++] = value; - } - - return O; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-for-each.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-for-each.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayForEachJs(module, exports, __webpack_require__) { - "use strict"; - - var $forEach = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js").forEach; - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var STRICT_METHOD = arrayMethodIsStrict('forEach'); - var USES_TO_LENGTH = arrayMethodUsesToLength('forEach'); // `Array.prototype.forEach` method implementation - // https://tc39.github.io/ecma262/#sec-array.prototype.foreach - - module.exports = !STRICT_METHOD || !USES_TO_LENGTH ? function forEach(callbackfn - /* , thisArg */ - ) { - return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } : [].forEach; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-from.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-from.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayFromJs(module, exports, __webpack_require__) { - "use strict"; - - var bind = __webpack_require__( - /*! ../internals/function-bind-context */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var callWithSafeIterationClosing = __webpack_require__( - /*! ../internals/call-with-safe-iteration-closing */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js"); - - var isArrayIteratorMethod = __webpack_require__( - /*! ../internals/is-array-iterator-method */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var createProperty = __webpack_require__( - /*! ../internals/create-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property.js"); - - var getIteratorMethod = __webpack_require__( - /*! ../internals/get-iterator-method */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js"); // `Array.from` method implementation - // https://tc39.github.io/ecma262/#sec-array.from - - - module.exports = function from(arrayLike - /* , mapfn = undefined, thisArg = undefined */ - ) { - var O = toObject(arrayLike); - var C = typeof this == 'function' ? this : Array; - var argumentsLength = arguments.length; - var mapfn = argumentsLength > 1 ? arguments[1] : undefined; - var mapping = mapfn !== undefined; - var iteratorMethod = getIteratorMethod(O); - var index = 0; - var length, result, step, iterator, next, value; - if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2); // if the target is not iterable or it's an array with the default iterator - use a simple case - - if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) { - iterator = iteratorMethod.call(O); - next = iterator.next; - result = new C(); - - for (; !(step = next.call(iterator)).done; index++) { - value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value; - createProperty(result, index, value); - } - } else { - length = toLength(O.length); - result = new C(length); - - for (; length > index; index++) { - value = mapping ? mapfn(O[index], index) : O[index]; - createProperty(result, index, value); - } - } - - result.length = index; - return result; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayIncludesJs(module, exports, __webpack_require__) { - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var toAbsoluteIndex = __webpack_require__( - /*! ../internals/to-absolute-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js"); // `Array.prototype.{ indexOf, includes }` methods implementation - - - var createMethod = function createMethod(IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare - - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; // eslint-disable-next-line no-self-compare - - if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not - } else for (; length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; - } - return !IS_INCLUDES && -1; - }; - }; - - module.exports = { - // `Array.prototype.includes` method - // https://tc39.github.io/ecma262/#sec-array.prototype.includes - includes: createMethod(true), - // `Array.prototype.indexOf` method - // https://tc39.github.io/ecma262/#sec-array.prototype.indexof - indexOf: createMethod(false) - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayIterationJs(module, exports, __webpack_require__) { - var bind = __webpack_require__( - /*! ../internals/function-bind-context */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js"); - - var IndexedObject = __webpack_require__( - /*! ../internals/indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var arraySpeciesCreate = __webpack_require__( - /*! ../internals/array-species-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js"); - - var push = [].push; // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation - - var createMethod = function createMethod(TYPE) { - var IS_MAP = TYPE == 1; - var IS_FILTER = TYPE == 2; - var IS_SOME = TYPE == 3; - var IS_EVERY = TYPE == 4; - var IS_FIND_INDEX = TYPE == 6; - var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; - return function ($this, callbackfn, that, specificCreate) { - var O = toObject($this); - var self = IndexedObject(O); - var boundFunction = bind(callbackfn, that, 3); - var length = toLength(self.length); - var index = 0; - var create = specificCreate || arraySpeciesCreate; - var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; - var value, result; - - for (; length > index; index++) { - if (NO_HOLES || index in self) { - value = self[index]; - result = boundFunction(value, index, O); - - if (TYPE) { - if (IS_MAP) target[index] = result; // map - else if (result) switch (TYPE) { - case 3: - return true; - // some - - case 5: - return value; - // find - - case 6: - return index; - // findIndex - - case 2: - push.call(target, value); - // filter - } else if (IS_EVERY) return false; // every - } - } - } - - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; - }; - }; - - module.exports = { - // `Array.prototype.forEach` method - // https://tc39.github.io/ecma262/#sec-array.prototype.foreach - forEach: createMethod(0), - // `Array.prototype.map` method - // https://tc39.github.io/ecma262/#sec-array.prototype.map - map: createMethod(1), - // `Array.prototype.filter` method - // https://tc39.github.io/ecma262/#sec-array.prototype.filter - filter: createMethod(2), - // `Array.prototype.some` method - // https://tc39.github.io/ecma262/#sec-array.prototype.some - some: createMethod(3), - // `Array.prototype.every` method - // https://tc39.github.io/ecma262/#sec-array.prototype.every - every: createMethod(4), - // `Array.prototype.find` method - // https://tc39.github.io/ecma262/#sec-array.prototype.find - find: createMethod(5), - // `Array.prototype.findIndex` method - // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex - findIndex: createMethod(6) - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-last-index-of.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-last-index-of.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayLastIndexOfJs(module, exports, __webpack_require__) { - "use strict"; - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var min = Math.min; - var nativeLastIndexOf = [].lastIndexOf; - var NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0; - var STRICT_METHOD = arrayMethodIsStrict('lastIndexOf'); // For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method - - var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { - ACCESSORS: true, - 1: 0 - }); - var FORCED = NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH; // `Array.prototype.lastIndexOf` method implementation - // https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof - - module.exports = FORCED ? function lastIndexOf(searchElement - /* , fromIndex = @[*-1] */ - ) { - // convert -0 to +0 - if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0; - var O = toIndexedObject(this); - var length = toLength(O.length); - var index = length - 1; - if (arguments.length > 1) index = min(index, toInteger(arguments[1])); - if (index < 0) index = length + index; - - for (; index >= 0; index--) { - if (index in O && O[index] === searchElement) return index || 0; - } - - return -1; - } : nativeLastIndexOf; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-has-species-support.js": - /*!***********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-has-species-support.js ***! - \***********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayMethodHasSpeciesSupportJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var V8_VERSION = __webpack_require__( - /*! ../internals/engine-v8-version */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-v8-version.js"); - - var SPECIES = wellKnownSymbol('species'); - - module.exports = function (METHOD_NAME) { - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/677 - return V8_VERSION >= 51 || !fails(function () { - var array = []; - var constructor = array.constructor = {}; - - constructor[SPECIES] = function () { - return { - foo: 1 - }; - }; - - return array[METHOD_NAME](Boolean).foo !== 1; - }); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js": - /*!*************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js ***! - \*************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayMethodIsStrictJs(module, exports, __webpack_require__) { - "use strict"; - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - module.exports = function (METHOD_NAME, argument) { - var method = [][METHOD_NAME]; - return !!method && fails(function () { - // eslint-disable-next-line no-useless-call,no-throw-literal - method.call(null, argument || function () { - throw 1; - }, 1); - }); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js": - /*!******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js ***! - \******************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayMethodUsesToLengthJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var defineProperty = Object.defineProperty; - var cache = {}; - - var thrower = function thrower(it) { - throw it; - }; - - module.exports = function (METHOD_NAME, options) { - if (has(cache, METHOD_NAME)) return cache[METHOD_NAME]; - if (!options) options = {}; - var method = [][METHOD_NAME]; - var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false; - var argument0 = has(options, 0) ? options[0] : thrower; - var argument1 = has(options, 1) ? options[1] : undefined; - return cache[METHOD_NAME] = !!method && !fails(function () { - if (ACCESSORS && !DESCRIPTORS) return true; - var O = { - length: -1 - }; - if (ACCESSORS) defineProperty(O, 1, { - enumerable: true, - get: thrower - });else O[1] = 1; - method.call(O, argument0, argument1); - }); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-reduce.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-reduce.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayReduceJs(module, exports, __webpack_require__) { - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var IndexedObject = __webpack_require__( - /*! ../internals/indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); // `Array.prototype.{ reduce, reduceRight }` methods implementation - - - var createMethod = function createMethod(IS_RIGHT) { - return function (that, callbackfn, argumentsLength, memo) { - aFunction(callbackfn); - var O = toObject(that); - var self = IndexedObject(O); - var length = toLength(O.length); - var index = IS_RIGHT ? length - 1 : 0; - var i = IS_RIGHT ? -1 : 1; - if (argumentsLength < 2) while (true) { - if (index in self) { - memo = self[index]; - index += i; - break; - } - - index += i; - - if (IS_RIGHT ? index < 0 : length <= index) { - throw TypeError('Reduce of empty array with no initial value'); - } - } - - for (; IS_RIGHT ? index >= 0 : length > index; index += i) { - if (index in self) { - memo = callbackfn(memo, self[index], index, O); - } - } - - return memo; - }; - }; - - module.exports = { - // `Array.prototype.reduce` method - // https://tc39.github.io/ecma262/#sec-array.prototype.reduce - left: createMethod(false), - // `Array.prototype.reduceRight` method - // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright - right: createMethod(true) - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArraySpeciesCreateJs(module, exports, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var isArray = __webpack_require__( - /*! ../internals/is-array */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var SPECIES = wellKnownSymbol('species'); // `ArraySpeciesCreate` abstract operation - // https://tc39.github.io/ecma262/#sec-arrayspeciescreate - - module.exports = function (originalArray, length) { - var C; - - if (isArray(originalArray)) { - C = originalArray.constructor; // cross-realm fallback - - if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;else if (isObject(C)) { - C = C[SPECIES]; - if (C === null) C = undefined; - } - } - - return new (C === undefined ? Array : C)(length === 0 ? 0 : length); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js": - /*!***********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js ***! - \***********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCallWithSafeIterationClosingJs(module, exports, __webpack_require__) { - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); // call something on iterator step with safe closing on error - - - module.exports = function (iterator, fn, value, ENTRIES) { - try { - return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); // 7.4.6 IteratorClose(iterator, completion) - } catch (error) { - var returnMethod = iterator['return']; - if (returnMethod !== undefined) anObject(returnMethod.call(iterator)); - throw error; - } - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js": - /*!*********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js ***! - \*********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCheckCorrectnessOfIterationJs(module, exports, __webpack_require__) { - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var ITERATOR = wellKnownSymbol('iterator'); - var SAFE_CLOSING = false; - - try { - var called = 0; - var iteratorWithReturn = { - next: function next() { - return { - done: !!called++ - }; - }, - 'return': function _return() { - SAFE_CLOSING = true; - } - }; - - iteratorWithReturn[ITERATOR] = function () { - return this; - }; // eslint-disable-next-line no-throw-literal - - - Array.from(iteratorWithReturn, function () { - throw 2; - }); - } catch (error) { - /* empty */ - } - - module.exports = function (exec, SKIP_CLOSING) { - if (!SKIP_CLOSING && !SAFE_CLOSING) return false; - var ITERATION_SUPPORT = false; - - try { - var object = {}; - - object[ITERATOR] = function () { - return { - next: function next() { - return { - done: ITERATION_SUPPORT = true - }; - } - }; - }; - - exec(object); - } catch (error) { - /* empty */ - } - - return ITERATION_SUPPORT; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsClassofRawJs(module, exports) { - var toString = {}.toString; - - module.exports = function (it) { - return toString.call(it).slice(8, -1); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js": - /*!**********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js ***! - \**********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsClassofJs(module, exports, __webpack_require__) { - var TO_STRING_TAG_SUPPORT = __webpack_require__( - /*! ../internals/to-string-tag-support */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js"); - - var classofRaw = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var TO_STRING_TAG = wellKnownSymbol('toStringTag'); // ES3 wrong here - - var CORRECT_ARGUMENTS = classofRaw(function () { - return arguments; - }()) == 'Arguments'; // fallback for IE11 Script Access Denied error - - var tryGet = function tryGet(it, key) { - try { - return it[key]; - } catch (error) { - /* empty */ - } - }; // getting tag from ES6+ `Object.prototype.toString` - - - module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case - : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag // builtinTag case - : CORRECT_ARGUMENTS ? classofRaw(O) // ES3 arguments fallback - : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCollectionStrongJs(module, exports, __webpack_require__) { - "use strict"; - - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; - - var create = __webpack_require__( - /*! ../internals/object-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); - - var redefineAll = __webpack_require__( - /*! ../internals/redefine-all */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js"); - - var bind = __webpack_require__( - /*! ../internals/function-bind-context */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js"); - - var anInstance = __webpack_require__( - /*! ../internals/an-instance */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js"); - - var iterate = __webpack_require__( - /*! ../internals/iterate */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); - - var defineIterator = __webpack_require__( - /*! ../internals/define-iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js"); - - var setSpecies = __webpack_require__( - /*! ../internals/set-species */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var fastKey = __webpack_require__( - /*! ../internals/internal-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js").fastKey; - - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - - var setInternalState = InternalStateModule.set; - var internalStateGetterFor = InternalStateModule.getterFor; - module.exports = { - getConstructor: function getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { - var C = wrapper(function (that, iterable) { - anInstance(that, C, CONSTRUCTOR_NAME); - setInternalState(that, { - type: CONSTRUCTOR_NAME, - index: create(null), - first: undefined, - last: undefined, - size: 0 - }); - if (!DESCRIPTORS) that.size = 0; - if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); - }); - var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); - - var define = function define(that, key, value) { - var state = getInternalState(that); - var entry = getEntry(that, key); - var previous, index; // change existing entry - - if (entry) { - entry.value = value; // create new entry - } else { - state.last = entry = { - index: index = fastKey(key, true), - key: key, - value: value, - previous: previous = state.last, - next: undefined, - removed: false - }; - if (!state.first) state.first = entry; - if (previous) previous.next = entry; - if (DESCRIPTORS) state.size++;else that.size++; // add to index - - if (index !== 'F') state.index[index] = entry; - } - - return that; - }; - - var getEntry = function getEntry(that, key) { - var state = getInternalState(that); // fast case - - var index = fastKey(key); - var entry; - if (index !== 'F') return state.index[index]; // frozen object case - - for (entry = state.first; entry; entry = entry.next) { - if (entry.key == key) return entry; - } - }; - - redefineAll(C.prototype, { - // 23.1.3.1 Map.prototype.clear() - // 23.2.3.2 Set.prototype.clear() - clear: function clear() { - var that = this; - var state = getInternalState(that); - var data = state.index; - var entry = state.first; - - while (entry) { - entry.removed = true; - if (entry.previous) entry.previous = entry.previous.next = undefined; - delete data[entry.index]; - entry = entry.next; - } - - state.first = state.last = undefined; - if (DESCRIPTORS) state.size = 0;else that.size = 0; - }, - // 23.1.3.3 Map.prototype.delete(key) - // 23.2.3.4 Set.prototype.delete(value) - 'delete': function _delete(key) { - var that = this; - var state = getInternalState(that); - var entry = getEntry(that, key); - - if (entry) { - var next = entry.next; - var prev = entry.previous; - delete state.index[entry.index]; - entry.removed = true; - if (prev) prev.next = next; - if (next) next.previous = prev; - if (state.first == entry) state.first = next; - if (state.last == entry) state.last = prev; - if (DESCRIPTORS) state.size--;else that.size--; - } - - return !!entry; - }, - // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) - // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) - forEach: function forEach(callbackfn - /* , that = undefined */ - ) { - var state = getInternalState(this); - var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); - var entry; - - while (entry = entry ? entry.next : state.first) { - boundFunction(entry.value, entry.key, this); // revert to the last existing entry - - while (entry && entry.removed) { - entry = entry.previous; - } - } - }, - // 23.1.3.7 Map.prototype.has(key) - // 23.2.3.7 Set.prototype.has(value) - has: function has(key) { - return !!getEntry(this, key); - } - }); - redefineAll(C.prototype, IS_MAP ? { - // 23.1.3.6 Map.prototype.get(key) - get: function get(key) { - var entry = getEntry(this, key); - return entry && entry.value; - }, - // 23.1.3.9 Map.prototype.set(key, value) - set: function set(key, value) { - return define(this, key === 0 ? 0 : key, value); - } - } : { - // 23.2.3.1 Set.prototype.add(value) - add: function add(value) { - return define(this, value = value === 0 ? 0 : value, value); - } - }); - if (DESCRIPTORS) defineProperty(C.prototype, 'size', { - get: function get() { - return getInternalState(this).size; - } - }); - return C; - }, - setStrong: function setStrong(C, CONSTRUCTOR_NAME, IS_MAP) { - var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator'; - var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME); - var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME); // add .keys, .values, .entries, [@@iterator] - // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 - - defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) { - setInternalState(this, { - type: ITERATOR_NAME, - target: iterated, - state: getInternalCollectionState(iterated), - kind: kind, - last: undefined - }); - }, function () { - var state = getInternalIteratorState(this); - var kind = state.kind; - var entry = state.last; // revert to the last existing entry - - while (entry && entry.removed) { - entry = entry.previous; - } // get next entry - - - if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) { - // or finish the iteration - state.target = undefined; - return { - value: undefined, - done: true - }; - } // return step by kind - - - if (kind == 'keys') return { - value: entry.key, - done: false - }; - if (kind == 'values') return { - value: entry.value, - done: false - }; - return { - value: [entry.key, entry.value], - done: false - }; - }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); // add [@@species], 23.1.2.2, 23.2.2.2 - - setSpecies(CONSTRUCTOR_NAME); - } - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-weak.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-weak.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCollectionWeakJs(module, exports, __webpack_require__) { - "use strict"; - - var redefineAll = __webpack_require__( - /*! ../internals/redefine-all */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js"); - - var getWeakData = __webpack_require__( - /*! ../internals/internal-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js").getWeakData; - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var anInstance = __webpack_require__( - /*! ../internals/an-instance */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js"); - - var iterate = __webpack_require__( - /*! ../internals/iterate */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); - - var ArrayIterationModule = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js"); - - var $has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - - var setInternalState = InternalStateModule.set; - var internalStateGetterFor = InternalStateModule.getterFor; - var find = ArrayIterationModule.find; - var findIndex = ArrayIterationModule.findIndex; - var id = 0; // fallback for uncaught frozen keys - - var uncaughtFrozenStore = function uncaughtFrozenStore(store) { - return store.frozen || (store.frozen = new UncaughtFrozenStore()); - }; - - var UncaughtFrozenStore = function UncaughtFrozenStore() { - this.entries = []; - }; - - var findUncaughtFrozen = function findUncaughtFrozen(store, key) { - return find(store.entries, function (it) { - return it[0] === key; - }); - }; - - UncaughtFrozenStore.prototype = { - get: function get(key) { - var entry = findUncaughtFrozen(this, key); - if (entry) return entry[1]; - }, - has: function has(key) { - return !!findUncaughtFrozen(this, key); - }, - set: function set(key, value) { - var entry = findUncaughtFrozen(this, key); - if (entry) entry[1] = value;else this.entries.push([key, value]); - }, - 'delete': function _delete(key) { - var index = findIndex(this.entries, function (it) { - return it[0] === key; - }); - if (~index) this.entries.splice(index, 1); - return !!~index; - } - }; - module.exports = { - getConstructor: function getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { - var C = wrapper(function (that, iterable) { - anInstance(that, C, CONSTRUCTOR_NAME); - setInternalState(that, { - type: CONSTRUCTOR_NAME, - id: id++, - frozen: undefined - }); - if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); - }); - var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); - - var define = function define(that, key, value) { - var state = getInternalState(that); - var data = getWeakData(anObject(key), true); - if (data === true) uncaughtFrozenStore(state).set(key, value);else data[state.id] = value; - return that; - }; - - redefineAll(C.prototype, { - // 23.3.3.2 WeakMap.prototype.delete(key) - // 23.4.3.3 WeakSet.prototype.delete(value) - 'delete': function _delete(key) { - var state = getInternalState(this); - if (!isObject(key)) return false; - var data = getWeakData(key); - if (data === true) return uncaughtFrozenStore(state)['delete'](key); - return data && $has(data, state.id) && delete data[state.id]; - }, - // 23.3.3.4 WeakMap.prototype.has(key) - // 23.4.3.4 WeakSet.prototype.has(value) - has: function has(key) { - var state = getInternalState(this); - if (!isObject(key)) return false; - var data = getWeakData(key); - if (data === true) return uncaughtFrozenStore(state).has(key); - return data && $has(data, state.id); - } - }); - redefineAll(C.prototype, IS_MAP ? { - // 23.3.3.3 WeakMap.prototype.get(key) - get: function get(key) { - var state = getInternalState(this); - - if (isObject(key)) { - var data = getWeakData(key); - if (data === true) return uncaughtFrozenStore(state).get(key); - return data ? data[state.id] : undefined; - } - }, - // 23.3.3.5 WeakMap.prototype.set(key, value) - set: function set(key, value) { - return define(this, key, value); - } - } : { - // 23.4.3.1 WeakSet.prototype.add(value) - add: function add(value) { - return define(this, value, true); - } - }); - return C; - } - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCollectionJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var isForced = __webpack_require__( - /*! ../internals/is-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var InternalMetadataModule = __webpack_require__( - /*! ../internals/internal-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js"); - - var iterate = __webpack_require__( - /*! ../internals/iterate */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); - - var anInstance = __webpack_require__( - /*! ../internals/an-instance */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var checkCorrectnessOfIteration = __webpack_require__( - /*! ../internals/check-correctness-of-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js"); - - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); - - var inheritIfRequired = __webpack_require__( - /*! ../internals/inherit-if-required */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js"); - - module.exports = function (CONSTRUCTOR_NAME, wrapper, common) { - var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1; - var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1; - var ADDER = IS_MAP ? 'set' : 'add'; - var NativeConstructor = global[CONSTRUCTOR_NAME]; - var NativePrototype = NativeConstructor && NativeConstructor.prototype; - var Constructor = NativeConstructor; - var exported = {}; - - var fixMethod = function fixMethod(KEY) { - var nativeMethod = NativePrototype[KEY]; - redefine(NativePrototype, KEY, KEY == 'add' ? function add(value) { - nativeMethod.call(this, value === 0 ? 0 : value); - return this; - } : KEY == 'delete' ? function (key) { - return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); - } : KEY == 'get' ? function get(key) { - return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key); - } : KEY == 'has' ? function has(key) { - return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); - } : function set(key, value) { - nativeMethod.call(this, key === 0 ? 0 : key, value); - return this; - }); - }; // eslint-disable-next-line max-len - - - if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () { - new NativeConstructor().entries().next(); - })))) { - // create collection constructor - Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); - InternalMetadataModule.REQUIRED = true; - } else if (isForced(CONSTRUCTOR_NAME, true)) { - var instance = new Constructor(); // early implementations not supports chaining - - var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false - - var THROWS_ON_PRIMITIVES = fails(function () { - instance.has(1); - }); // most early implementations doesn't supports iterables, most modern - not close it correctly - // eslint-disable-next-line no-new - - var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { - new NativeConstructor(iterable); - }); // for early implementations -0 and +0 not the same - - var BUGGY_ZERO = !IS_WEAK && fails(function () { - // V8 ~ Chromium 42- fails only with 5+ elements - var $instance = new NativeConstructor(); - var index = 5; - - while (index--) { - $instance[ADDER](index, index); - } - - return !$instance.has(-0); - }); - - if (!ACCEPT_ITERABLES) { - Constructor = wrapper(function (dummy, iterable) { - anInstance(dummy, Constructor, CONSTRUCTOR_NAME); - var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor); - if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); - return that; - }); - Constructor.prototype = NativePrototype; - NativePrototype.constructor = Constructor; - } - - if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { - fixMethod('delete'); - fixMethod('has'); - IS_MAP && fixMethod('get'); - } - - if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); // weak collections should not contains .clear method - - if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear; - } - - exported[CONSTRUCTOR_NAME] = Constructor; - $({ - global: true, - forced: Constructor != NativeConstructor - }, exported); - setToStringTag(Constructor, CONSTRUCTOR_NAME); - if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); - return Constructor; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js": - /*!******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js ***! - \******************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCopyConstructorPropertiesJs(module, exports, __webpack_require__) { - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var ownKeys = __webpack_require__( - /*! ../internals/own-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js"); - - var getOwnPropertyDescriptorModule = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - module.exports = function (target, source) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-is-regexp-logic.js": - /*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-is-regexp-logic.js ***! - \**************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCorrectIsRegexpLogicJs(module, exports, __webpack_require__) { - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var MATCH = wellKnownSymbol('match'); - - module.exports = function (METHOD_NAME) { - var regexp = /./; - - try { - '/./'[METHOD_NAME](regexp); - } catch (e) { - try { - regexp[MATCH] = false; - return '/./'[METHOD_NAME](regexp); - } catch (f) { - /* empty */ - } - } - - return false; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCorrectPrototypeGetterJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - module.exports = !fails(function () { - function F() { - /* empty */ - } - - F.prototype.constructor = null; - return Object.getPrototypeOf(new F()) !== F.prototype; - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCreateHtmlJs(module, exports, __webpack_require__) { - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var quot = /"/g; // B.2.3.2.1 CreateHTML(string, tag, attribute, value) - // https://tc39.github.io/ecma262/#sec-createhtml - - module.exports = function (string, tag, attribute, value) { - var S = String(requireObjectCoercible(string)); - var p1 = '<' + tag; - if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"'; - return p1 + '>' + S + ''; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-iterator-constructor.js": - /*!******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-iterator-constructor.js ***! - \******************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCreateIteratorConstructorJs(module, exports, __webpack_require__) { - "use strict"; - - var IteratorPrototype = __webpack_require__( - /*! ../internals/iterators-core */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js").IteratorPrototype; - - var create = __webpack_require__( - /*! ../internals/object-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); - - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); - - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); - - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); - - var returnThis = function returnThis() { - return this; - }; - - module.exports = function (IteratorConstructor, NAME, next) { - var TO_STRING_TAG = NAME + ' Iterator'; - IteratorConstructor.prototype = create(IteratorPrototype, { - next: createPropertyDescriptor(1, next) - }); - setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); - Iterators[TO_STRING_TAG] = returnThis; - return IteratorConstructor; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js": - /*!*********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js ***! - \*********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCreateNonEnumerablePropertyJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); - - module.exports = DESCRIPTORS ? function (object, key, value) { - return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); - } : function (object, key, value) { - object[key] = value; - return object; - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js": - /*!*****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js ***! - \*****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCreatePropertyDescriptorJs(module, exports) { - module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCreatePropertyJs(module, exports, __webpack_require__) { - "use strict"; - - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); - - module.exports = function (object, key, value) { - var propertyKey = toPrimitive(key); - if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));else object[propertyKey] = value; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/date-to-iso-string.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/date-to-iso-string.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsDateToIsoStringJs(module, exports, __webpack_require__) { - "use strict"; - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var padStart = __webpack_require__( - /*! ../internals/string-pad */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-pad.js").start; - - var abs = Math.abs; - var DatePrototype = Date.prototype; - var getTime = DatePrototype.getTime; - var nativeDateToISOString = DatePrototype.toISOString; // `Date.prototype.toISOString` method implementation - // https://tc39.github.io/ecma262/#sec-date.prototype.toisostring - // PhantomJS / old WebKit fails here: - - module.exports = fails(function () { - return nativeDateToISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z'; - }) || !fails(function () { - nativeDateToISOString.call(new Date(NaN)); - }) ? function toISOString() { - if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value'); - var date = this; - var year = date.getUTCFullYear(); - var milliseconds = date.getUTCMilliseconds(); - var sign = year < 0 ? '-' : year > 9999 ? '+' : ''; - return sign + padStart(abs(year), sign ? 6 : 4, 0) + '-' + padStart(date.getUTCMonth() + 1, 2, 0) + '-' + padStart(date.getUTCDate(), 2, 0) + 'T' + padStart(date.getUTCHours(), 2, 0) + ':' + padStart(date.getUTCMinutes(), 2, 0) + ':' + padStart(date.getUTCSeconds(), 2, 0) + '.' + padStart(milliseconds, 3, 0) + 'Z'; - } : nativeDateToISOString; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/date-to-primitive.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/date-to-primitive.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsDateToPrimitiveJs(module, exports, __webpack_require__) { - "use strict"; - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - - module.exports = function (hint) { - if (hint !== 'string' && hint !== 'number' && hint !== 'default') { - throw TypeError('Incorrect hint'); - } - - return toPrimitive(anObject(this), hint !== 'number'); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsDefineIteratorJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createIteratorConstructor = __webpack_require__( - /*! ../internals/create-iterator-constructor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-iterator-constructor.js"); - - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var setPrototypeOf = __webpack_require__( - /*! ../internals/object-set-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js"); - - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); - - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); - - var IteratorsCore = __webpack_require__( - /*! ../internals/iterators-core */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js"); - - var IteratorPrototype = IteratorsCore.IteratorPrototype; - var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; - var ITERATOR = wellKnownSymbol('iterator'); - var KEYS = 'keys'; - var VALUES = 'values'; - var ENTRIES = 'entries'; - - var returnThis = function returnThis() { - return this; - }; - - module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { - createIteratorConstructor(IteratorConstructor, NAME, next); - - var getIterationMethod = function getIterationMethod(KIND) { - if (KIND === DEFAULT && defaultIterator) return defaultIterator; - if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; - - switch (KIND) { - case KEYS: - return function keys() { - return new IteratorConstructor(this, KIND); - }; - - case VALUES: - return function values() { - return new IteratorConstructor(this, KIND); - }; - - case ENTRIES: - return function entries() { - return new IteratorConstructor(this, KIND); - }; - } - - return function () { - return new IteratorConstructor(this); - }; - }; - - var TO_STRING_TAG = NAME + ' Iterator'; - var INCORRECT_VALUES_NAME = false; - var IterablePrototype = Iterable.prototype; - var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype['@@iterator'] || DEFAULT && IterablePrototype[DEFAULT]; - var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); - var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; - var CurrentIteratorPrototype, methods, KEY; // fix native - - if (anyNativeIterator) { - CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); - - if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { - if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { - if (setPrototypeOf) { - setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); - } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') { - createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis); - } - } // Set @@toStringTag to native iterators - - - setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); - if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; - } - } // fix Array#{values, @@iterator}.name in V8 / FF - - - if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { - INCORRECT_VALUES_NAME = true; - - defaultIterator = function values() { - return nativeIterator.call(this); - }; - } // define iterator - - - if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { - createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator); - } - - Iterators[NAME] = defaultIterator; // export additional methods - - if (DEFAULT) { - methods = { - values: getIterationMethod(VALUES), - keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), - entries: getIterationMethod(ENTRIES) - }; - if (FORCED) for (KEY in methods) { - if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { - redefine(IterablePrototype, KEY, methods[KEY]); - } - } else $({ - target: NAME, - proto: true, - forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME - }, methods); - } - - return methods; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsDefineWellKnownSymbolJs(module, exports, __webpack_require__) { - var path = __webpack_require__( - /*! ../internals/path */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var wrappedWellKnownSymbolModule = __webpack_require__( - /*! ../internals/well-known-symbol-wrapped */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol-wrapped.js"); - - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; - - module.exports = function (NAME) { - var Symbol = path.Symbol || (path.Symbol = {}); - if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, { - value: wrappedWellKnownSymbolModule.f(NAME) - }); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsDescriptorsJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); // Thank's IE8 for his funny defineProperty - - - module.exports = !fails(function () { - return Object.defineProperty({}, 1, { - get: function get() { - return 7; - } - })[1] != 7; - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js": - /*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js ***! - \**************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsDocumentCreateElementJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var document = global.document; // typeof document.createElement is 'object' in old IE - - var EXISTS = isObject(document) && isObject(document.createElement); - - module.exports = function (it) { - return EXISTS ? document.createElement(it) : {}; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/dom-iterables.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/dom-iterables.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsDomIterablesJs(module, exports) { - // iterable DOM collections - // flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods - module.exports = { - CSSRuleList: 0, - CSSStyleDeclaration: 0, - CSSValueList: 0, - ClientRectList: 0, - DOMRectList: 0, - DOMStringList: 0, - DOMTokenList: 1, - DataTransferItemList: 0, - FileList: 0, - HTMLAllCollection: 0, - HTMLCollection: 0, - HTMLFormElement: 0, - HTMLSelectElement: 0, - MediaList: 0, - MimeTypeArray: 0, - NamedNodeMap: 0, - NodeList: 1, - PaintRequestList: 0, - Plugin: 0, - PluginArray: 0, - SVGLengthList: 0, - SVGNumberList: 0, - SVGPathSegList: 0, - SVGPointList: 0, - SVGStringList: 0, - SVGTransformList: 0, - SourceBufferList: 0, - StyleSheetList: 0, - TextTrackCueList: 0, - TextTrackList: 0, - TouchList: 0 - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-is-ios.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-is-ios.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsEngineIsIosJs(module, exports, __webpack_require__) { - var userAgent = __webpack_require__( - /*! ../internals/engine-user-agent */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-user-agent.js"); - - module.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-user-agent.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-user-agent.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsEngineUserAgentJs(module, exports, __webpack_require__) { - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - module.exports = getBuiltIn('navigator', 'userAgent') || ''; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-v8-version.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-v8-version.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsEngineV8VersionJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var userAgent = __webpack_require__( - /*! ../internals/engine-user-agent */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-user-agent.js"); - - var process = global.process; - var versions = process && process.versions; - var v8 = versions && versions.v8; - var match, version; - - if (v8) { - match = v8.split('.'); - version = match[0] + match[1]; - } else if (userAgent) { - match = userAgent.match(/Edge\/(\d+)/); - - if (!match || match[1] >= 74) { - match = userAgent.match(/Chrome\/(\d+)/); - if (match) version = match[1]; - } - } - - module.exports = version && +version; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsEnumBugKeysJs(module, exports) { - // IE8- don't enum bug keys - module.exports = ['constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf']; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js": - /*!*********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js ***! - \*********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsExportJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var getOwnPropertyDescriptor = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js").f; - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var setGlobal = __webpack_require__( - /*! ../internals/set-global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js"); - - var copyConstructorProperties = __webpack_require__( - /*! ../internals/copy-constructor-properties */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js"); - - var isForced = __webpack_require__( - /*! ../internals/is-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js"); - /* - options.target - name of the target object - options.global - target is the global object - options.stat - export as static methods of target - options.proto - export as prototype methods of target - options.real - real prototype method for the `pure` version - options.forced - export even if the native feature is available - options.bind - bind methods to the target, required for the `pure` version - options.wrap - wrap constructors to preventing global pollution, required for the `pure` version - options.unsafe - use the simple assignment of property instead of delete + defineProperty - options.sham - add a flag to not completely full polyfills - options.enumerable - export as enumerable property - options.noTargetGet - prevent calling a getter on target - */ - - - module.exports = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - - if (GLOBAL) { - target = global; - } else if (STATIC) { - target = global[TARGET] || setGlobal(TARGET, {}); - } else { - target = (global[TARGET] || {}).prototype; - } - - if (target) for (key in source) { - sourceProperty = source[key]; - - if (options.noTargetGet) { - descriptor = getOwnPropertyDescriptor(target, key); - targetProperty = descriptor && descriptor.value; - } else targetProperty = target[key]; - - FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); // contained in target - - if (!FORCED && targetProperty !== undefined) { - if (typeof sourceProperty === typeof targetProperty) continue; - copyConstructorProperties(sourceProperty, targetProperty); - } // add a flag to not completely full polyfills - - - if (options.sham || targetProperty && targetProperty.sham) { - createNonEnumerableProperty(sourceProperty, 'sham', true); - } // extend global - - - redefine(target, key, sourceProperty, options); - } - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js": - /*!********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js ***! - \********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsFailsJs(module, exports) { - module.exports = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js": - /*!*************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js ***! - \*************************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsFixRegexpWellKnownSymbolLogicJs(module, exports, __webpack_require__) { - "use strict"; // TODO: Remove from `core-js@4` since it's moved to entry points - - __webpack_require__( - /*! ../modules/es.regexp.exec */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.exec.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var regexpExec = __webpack_require__( - /*! ../internals/regexp-exec */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var SPECIES = wellKnownSymbol('species'); - var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { - // #replace needs built-in support for named groups. - // #match works fine because it just return the exec results, even if it has - // a "grops" property. - var re = /./; - - re.exec = function () { - var result = []; - result.groups = { - a: '7' - }; - return result; - }; - - return ''.replace(re, '$') !== '7'; - }); // IE <= 11 replaces $0 with the whole match, as if it was $& - // https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 - - var REPLACE_KEEPS_$0 = function () { - return 'a'.replace(/./, '$0') === '$0'; - }(); - - var REPLACE = wellKnownSymbol('replace'); // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string - - var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = function () { - if (/./[REPLACE]) { - return /./[REPLACE]('a', '$0') === ''; - } - - return false; - }(); // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec - // Weex JS has frozen built-in prototypes, so use try / catch wrapper - - - var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () { - var re = /(?:)/; - var originalExec = re.exec; - - re.exec = function () { - return originalExec.apply(this, arguments); - }; - - var result = 'ab'.split(re); - return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; - }); - - module.exports = function (KEY, length, exec, sham) { - var SYMBOL = wellKnownSymbol(KEY); - var DELEGATES_TO_SYMBOL = !fails(function () { - // String methods call symbol-named RegEp methods - var O = {}; - - O[SYMBOL] = function () { - return 7; - }; - - return ''[KEY](O) != 7; - }); - var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () { - // Symbol-named RegExp methods call .exec - var execCalled = false; - var re = /a/; - - if (KEY === 'split') { - // We can't use real regex here since it causes deoptimization - // and serious performance degradation in V8 - // https://github.com/zloirock/core-js/issues/306 - re = {}; // RegExp[@@split] doesn't call the regex's exec method, but first creates - // a new one. We need to return the patched regex when creating the new one. - - re.constructor = {}; - - re.constructor[SPECIES] = function () { - return re; - }; - - re.flags = ''; - re[SYMBOL] = /./[SYMBOL]; - } - - re.exec = function () { - execCalled = true; - return null; - }; - - re[SYMBOL](''); - return !execCalled; - }); - - if (!DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || KEY === 'replace' && !(REPLACE_SUPPORTS_NAMED_GROUPS && REPLACE_KEEPS_$0 && !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE) || KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) { - var nativeRegExpMethod = /./[SYMBOL]; - var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { - if (regexp.exec === regexpExec) { - if (DELEGATES_TO_SYMBOL && !forceStringMethod) { - // The native String method already delegates to @@method (this - // polyfilled function), leasing to infinite recursion. - // We avoid it by directly calling the native @@method method. - return { - done: true, - value: nativeRegExpMethod.call(regexp, str, arg2) - }; - } - - return { - done: true, - value: nativeMethod.call(str, regexp, arg2) - }; - } - - return { - done: false - }; - }, { - REPLACE_KEEPS_$0: REPLACE_KEEPS_$0, - REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE - }); - var stringMethod = methods[0]; - var regexMethod = methods[1]; - redefine(String.prototype, KEY, stringMethod); - redefine(RegExp.prototype, SYMBOL, length == 2 // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) - // 21.2.5.11 RegExp.prototype[@@split](string, limit) - ? function (string, arg) { - return regexMethod.call(string, this, arg); - } // 21.2.5.6 RegExp.prototype[@@match](string) - // 21.2.5.9 RegExp.prototype[@@search](string) - : function (string) { - return regexMethod.call(string, this); - }); - } - - if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js": - /*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js ***! - \***********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsFreezingJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - module.exports = !fails(function () { - return Object.isExtensible(Object.preventExtensions({})); - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js": - /*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js ***! - \************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsFunctionBindContextJs(module, exports, __webpack_require__) { - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); // optional / simple context binding - - - module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - - switch (length) { - case 0: - return function () { - return fn.call(that); - }; - - case 1: - return function (a) { - return fn.call(that, a); - }; - - case 2: - return function (a, b) { - return fn.call(that, a, b); - }; - - case 3: - return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - - return function () - /* ...args */ - { - return fn.apply(that, arguments); - }; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsFunctionBindJs(module, exports, __webpack_require__) { - "use strict"; - - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var slice = [].slice; - var factories = {}; - - var construct = function construct(C, argsLength, args) { - if (!(argsLength in factories)) { - for (var list = [], i = 0; i < argsLength; i++) { - list[i] = 'a[' + i + ']'; - } // eslint-disable-next-line no-new-func - - - factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')'); - } - - return factories[argsLength](C, args); - }; // `Function.prototype.bind` method implementation - // https://tc39.github.io/ecma262/#sec-function.prototype.bind - - - module.exports = Function.bind || function bind(that - /* , ...args */ - ) { - var fn = aFunction(this); - var partArgs = slice.call(arguments, 1); - - var boundFunction = function bound() - /* args... */ - { - var args = partArgs.concat(slice.call(arguments)); - return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args); - }; - - if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype; - return boundFunction; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsGetBuiltInJs(module, exports, __webpack_require__) { - var path = __webpack_require__( - /*! ../internals/path */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js"); - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var aFunction = function aFunction(variable) { - return typeof variable == 'function' ? variable : undefined; - }; - - module.exports = function (namespace, method) { - return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method]; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsGetIteratorMethodJs(module, exports, __webpack_require__) { - var classof = __webpack_require__( - /*! ../internals/classof */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js"); - - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var ITERATOR = wellKnownSymbol('iterator'); - - module.exports = function (it) { - if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)]; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js": - /*!*********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js ***! - \*********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsGlobalJs(module, exports) { - var check = function check(it) { - return it && it.Math == Math && it; - }; // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 - - - module.exports = // eslint-disable-next-line no-undef - check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || check(typeof self == 'object' && self) || check(typeof global == 'object' && global) || // eslint-disable-next-line no-new-func - Function('return this')(); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js": - /*!******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js ***! - \******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsHasJs(module, exports) { - var hasOwnProperty = {}.hasOwnProperty; - - module.exports = function (it, key) { - return hasOwnProperty.call(it, key); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsHiddenKeysJs(module, exports) { - module.exports = {}; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/host-report-errors.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/host-report-errors.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsHostReportErrorsJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - module.exports = function (a, b) { - var console = global.console; - - if (console && console.error) { - arguments.length === 1 ? console.error(a) : console.error(a, b); - } - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js": - /*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js ***! - \*******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsHtmlJs(module, exports, __webpack_require__) { - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - module.exports = getBuiltIn('document', 'documentElement'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIe8DomDefineJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var createElement = __webpack_require__( - /*! ../internals/document-create-element */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js"); // Thank's IE8 for his funny defineProperty - - - module.exports = !DESCRIPTORS && !fails(function () { - return Object.defineProperty(createElement('div'), 'a', { - get: function get() { - return 7; - } - }).a != 7; - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIndexedObjectJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - - var split = ''.split; // fallback for non-array-like ES3 and non-enumerable old V8 strings - - module.exports = fails(function () { - // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins - return !Object('z').propertyIsEnumerable(0); - }) ? function (it) { - return classof(it) == 'String' ? split.call(it, '') : Object(it); - } : Object; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsInheritIfRequiredJs(module, exports, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var setPrototypeOf = __webpack_require__( - /*! ../internals/object-set-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js"); // makes subclassing work correct for wrapped built-ins - - - module.exports = function ($this, dummy, Wrapper) { - var NewTarget, NewTargetPrototype; - if ( // it can work only with native `setPrototypeOf` - setPrototypeOf && // we haven't completely correct pre-ES6 way for getting `new.target`, so use this - typeof (NewTarget = dummy.constructor) == 'function' && NewTarget !== Wrapper && isObject(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype) setPrototypeOf($this, NewTargetPrototype); - return $this; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsInspectSourceJs(module, exports, __webpack_require__) { - var store = __webpack_require__( - /*! ../internals/shared-store */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js"); - - var functionToString = Function.toString; // this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper - - if (typeof store.inspectSource != 'function') { - store.inspectSource = function (it) { - return functionToString.call(it); - }; - } - - module.exports = store.inspectSource; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsInternalMetadataJs(module, exports, __webpack_require__) { - var hiddenKeys = __webpack_require__( - /*! ../internals/hidden-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; - - var uid = __webpack_require__( - /*! ../internals/uid */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js"); - - var FREEZING = __webpack_require__( - /*! ../internals/freezing */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js"); - - var METADATA = uid('meta'); - var id = 0; - - var isExtensible = Object.isExtensible || function () { - return true; - }; - - var setMetadata = function setMetadata(it) { - defineProperty(it, METADATA, { - value: { - objectID: 'O' + ++id, - // object ID - weakData: {} // weak collections IDs - - } - }); - }; - - var fastKey = function fastKey(it, create) { - // return a primitive with prefix - if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - - if (!has(it, METADATA)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return 'F'; // not necessary to add metadata - - if (!create) return 'E'; // add missing metadata - - setMetadata(it); // return object ID - } - - return it[METADATA].objectID; - }; - - var getWeakData = function getWeakData(it, create) { - if (!has(it, METADATA)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return true; // not necessary to add metadata - - if (!create) return false; // add missing metadata - - setMetadata(it); // return the store of weak collections IDs - } - - return it[METADATA].weakData; - }; // add metadata on freeze-family methods calling - - - var onFreeze = function onFreeze(it) { - if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it); - return it; - }; - - var meta = module.exports = { - REQUIRED: false, - fastKey: fastKey, - getWeakData: getWeakData, - onFreeze: onFreeze - }; - hiddenKeys[METADATA] = true; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsInternalStateJs(module, exports, __webpack_require__) { - var NATIVE_WEAK_MAP = __webpack_require__( - /*! ../internals/native-weak-map */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js"); - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var objectHas = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var sharedKey = __webpack_require__( - /*! ../internals/shared-key */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js"); - - var hiddenKeys = __webpack_require__( - /*! ../internals/hidden-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); - - var WeakMap = global.WeakMap; - var set, get, has; - - var enforce = function enforce(it) { - return has(it) ? get(it) : set(it, {}); - }; - - var getterFor = function getterFor(TYPE) { - return function (it) { - var state; - - if (!isObject(it) || (state = get(it)).type !== TYPE) { - throw TypeError('Incompatible receiver, ' + TYPE + ' required'); - } - - return state; - }; - }; - - if (NATIVE_WEAK_MAP) { - var store = new WeakMap(); - var wmget = store.get; - var wmhas = store.has; - var wmset = store.set; - - set = function set(it, metadata) { - wmset.call(store, it, metadata); - return metadata; - }; - - get = function get(it) { - return wmget.call(store, it) || {}; - }; - - has = function has(it) { - return wmhas.call(store, it); - }; - } else { - var STATE = sharedKey('state'); - hiddenKeys[STATE] = true; - - set = function set(it, metadata) { - createNonEnumerableProperty(it, STATE, metadata); - return metadata; - }; - - get = function get(it) { - return objectHas(it, STATE) ? it[STATE] : {}; - }; - - has = function has(it) { - return objectHas(it, STATE); - }; - } - - module.exports = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIsArrayIteratorMethodJs(module, exports, __webpack_require__) { - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); - - var ITERATOR = wellKnownSymbol('iterator'); - var ArrayPrototype = Array.prototype; // check on default Array iterator - - module.exports = function (it) { - return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js": - /*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js ***! - \***********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIsArrayJs(module, exports, __webpack_require__) { - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); // `IsArray` abstract operation - // https://tc39.github.io/ecma262/#sec-isarray - - - module.exports = Array.isArray || function isArray(arg) { - return classof(arg) == 'Array'; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIsForcedJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var replacement = /#|\.prototype\./; - - var isForced = function isForced(feature, detection) { - var value = data[normalize(feature)]; - return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == 'function' ? fails(detection) : !!detection; - }; - - var normalize = isForced.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); - }; - - var data = isForced.data = {}; - var NATIVE = isForced.NATIVE = 'N'; - var POLYFILL = isForced.POLYFILL = 'P'; - module.exports = isForced; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-integer.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-integer.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIsIntegerJs(module, exports, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var floor = Math.floor; // `Number.isInteger` method implementation - // https://tc39.github.io/ecma262/#sec-number.isinteger - - module.exports = function isInteger(it) { - return !isObject(it) && isFinite(it) && floor(it) === it; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIsObjectJs(module, exports) { - module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js": - /*!**********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js ***! - \**********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIsPureJs(module, exports) { - module.exports = false; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-regexp.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-regexp.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIsRegexpJs(module, exports, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var MATCH = wellKnownSymbol('match'); // `IsRegExp` abstract operation - // https://tc39.github.io/ecma262/#sec-isregexp - - module.exports = function (it) { - var isRegExp; - return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp'); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js": - /*!**********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js ***! - \**********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIterateJs(module, exports, __webpack_require__) { - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var isArrayIteratorMethod = __webpack_require__( - /*! ../internals/is-array-iterator-method */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var bind = __webpack_require__( - /*! ../internals/function-bind-context */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js"); - - var getIteratorMethod = __webpack_require__( - /*! ../internals/get-iterator-method */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js"); - - var callWithSafeIterationClosing = __webpack_require__( - /*! ../internals/call-with-safe-iteration-closing */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js"); - - var Result = function Result(stopped, result) { - this.stopped = stopped; - this.result = result; - }; - - var iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) { - var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1); - var iterator, iterFn, index, length, result, next, step; - - if (IS_ITERATOR) { - iterator = iterable; - } else { - iterFn = getIteratorMethod(iterable); - if (typeof iterFn != 'function') throw TypeError('Target is not iterable'); // optimisation for array iterators - - if (isArrayIteratorMethod(iterFn)) { - for (index = 0, length = toLength(iterable.length); length > index; index++) { - result = AS_ENTRIES ? boundFunction(anObject(step = iterable[index])[0], step[1]) : boundFunction(iterable[index]); - if (result && result instanceof Result) return result; - } - - return new Result(false); - } - - iterator = iterFn.call(iterable); - } - - next = iterator.next; - - while (!(step = next.call(iterator)).done) { - result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES); - if (typeof result == 'object' && result && result instanceof Result) return result; - } - - return new Result(false); - }; - - iterate.stop = function (result) { - return new Result(true, result); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIteratorsCoreJs(module, exports, __webpack_require__) { - "use strict"; - - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); - - var ITERATOR = wellKnownSymbol('iterator'); - var BUGGY_SAFARI_ITERATORS = false; - - var returnThis = function returnThis() { - return this; - }; // `%IteratorPrototype%` object - // https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object - - - var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; - - if ([].keys) { - arrayIterator = [].keys(); // Safari 8 has buggy iterators w/o `next` - - if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;else { - PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); - if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; - } - } - - if (IteratorPrototype == undefined) IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() - - if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) { - createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis); - } - - module.exports = { - IteratorPrototype: IteratorPrototype, - BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIteratorsJs(module, exports) { - module.exports = {}; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-expm1.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-expm1.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsMathExpm1Js(module, exports) { - var nativeExpm1 = Math.expm1; - var exp = Math.exp; // `Math.expm1` method implementation - // https://tc39.github.io/ecma262/#sec-math.expm1 - - module.exports = !nativeExpm1 // Old FF bug - || nativeExpm1(10) > 22025.465794806719 || nativeExpm1(10) < 22025.4657948067165168 // Tor Browser bug - || nativeExpm1(-2e-17) != -2e-17 ? function expm1(x) { - return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : exp(x) - 1; - } : nativeExpm1; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-fround.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-fround.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsMathFroundJs(module, exports, __webpack_require__) { - var sign = __webpack_require__( - /*! ../internals/math-sign */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-sign.js"); - - var abs = Math.abs; - var pow = Math.pow; - var EPSILON = pow(2, -52); - var EPSILON32 = pow(2, -23); - var MAX32 = pow(2, 127) * (2 - EPSILON32); - var MIN32 = pow(2, -126); - - var roundTiesToEven = function roundTiesToEven(n) { - return n + 1 / EPSILON - 1 / EPSILON; - }; // `Math.fround` method implementation - // https://tc39.github.io/ecma262/#sec-math.fround - - - module.exports = Math.fround || function fround(x) { - var $abs = abs(x); - var $sign = sign(x); - var a, result; - if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32; - a = (1 + EPSILON32 / EPSILON) * $abs; - result = a - (a - $abs); // eslint-disable-next-line no-self-compare - - if (result > MAX32 || result != result) return $sign * Infinity; - return $sign * result; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-log1p.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-log1p.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsMathLog1pJs(module, exports) { - var log = Math.log; // `Math.log1p` method implementation - // https://tc39.github.io/ecma262/#sec-math.log1p - - module.exports = Math.log1p || function log1p(x) { - return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : log(1 + x); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-sign.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-sign.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsMathSignJs(module, exports) { - // `Math.sign` method implementation - // https://tc39.github.io/ecma262/#sec-math.sign - module.exports = Math.sign || function sign(x) { - // eslint-disable-next-line no-self-compare - return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/microtask.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/microtask.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsMicrotaskJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var getOwnPropertyDescriptor = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js").f; - - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - - var macrotask = __webpack_require__( - /*! ../internals/task */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/task.js").set; - - var IS_IOS = __webpack_require__( - /*! ../internals/engine-is-ios */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-is-ios.js"); - - var MutationObserver = global.MutationObserver || global.WebKitMutationObserver; - var process = global.process; - var Promise = global.Promise; - var IS_NODE = classof(process) == 'process'; // Node.js 11 shows ExperimentalWarning on getting `queueMicrotask` - - var queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask'); - var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value; - var flush, head, last, notify, toggle, node, promise, then; // modern engines have queueMicrotask method - - if (!queueMicrotask) { - flush = function flush() { - var parent, fn; - if (IS_NODE && (parent = process.domain)) parent.exit(); - - while (head) { - fn = head.fn; - head = head.next; - - try { - fn(); - } catch (error) { - if (head) notify();else last = undefined; - throw error; - } - } - - last = undefined; - if (parent) parent.enter(); - }; // Node.js - - - if (IS_NODE) { - notify = function notify() { - process.nextTick(flush); - }; // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 - - } else if (MutationObserver && !IS_IOS) { - toggle = true; - node = document.createTextNode(''); - new MutationObserver(flush).observe(node, { - characterData: true - }); - - notify = function notify() { - node.data = toggle = !toggle; - }; // environments with maybe non-completely correct, but existent Promise - - } else if (Promise && Promise.resolve) { - // Promise.resolve without an argument throws an error in LG WebOS 2 - promise = Promise.resolve(undefined); - then = promise.then; - - notify = function notify() { - then.call(promise, flush); - }; // for other environments - macrotask based on: - // - setImmediate - // - MessageChannel - // - window.postMessag - // - onreadystatechange - // - setTimeout - - } else { - notify = function notify() { - // strange IE + webpack dev server bug - use .call(global) - macrotask.call(global, flush); - }; - } - } - - module.exports = queueMicrotask || function (fn) { - var task = { - fn: fn, - next: undefined - }; - if (last) last.next = task; - - if (!head) { - head = task; - notify(); - } - - last = task; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-promise-constructor.js": - /*!*****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-promise-constructor.js ***! - \*****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsNativePromiseConstructorJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - module.exports = global.Promise; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsNativeSymbolJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - module.exports = !!Object.getOwnPropertySymbols && !fails(function () { - // Chrome 38 Symbol has incorrect toString conversion - // eslint-disable-next-line no-undef - return !String(Symbol()); - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsNativeWeakMapJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var inspectSource = __webpack_require__( - /*! ../internals/inspect-source */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js"); - - var WeakMap = global.WeakMap; - module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap)); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/new-promise-capability.js": - /*!*************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/new-promise-capability.js ***! - \*************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsNewPromiseCapabilityJs(module, exports, __webpack_require__) { - "use strict"; - - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - - var PromiseCapability = function PromiseCapability(C) { - var resolve, reject; - this.promise = new C(function ($$resolve, $$reject) { - if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); - resolve = $$resolve; - reject = $$reject; - }); - this.resolve = aFunction(resolve); - this.reject = aFunction(reject); - }; // 25.4.1.5 NewPromiseCapability(C) - - - module.exports.f = function (C) { - return new PromiseCapability(C); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/not-a-regexp.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/not-a-regexp.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsNotARegexpJs(module, exports, __webpack_require__) { - var isRegExp = __webpack_require__( - /*! ../internals/is-regexp */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-regexp.js"); - - module.exports = function (it) { - if (isRegExp(it)) { - throw TypeError("The method doesn't accept regular expressions"); - } - - return it; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-is-finite.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-is-finite.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsNumberIsFiniteJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var globalIsFinite = global.isFinite; // `Number.isFinite` method - // https://tc39.github.io/ecma262/#sec-number.isfinite - - module.exports = Number.isFinite || function isFinite(it) { - return typeof it == 'number' && globalIsFinite(it); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-float.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-float.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsNumberParseFloatJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var trim = __webpack_require__( - /*! ../internals/string-trim */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim.js").trim; - - var whitespaces = __webpack_require__( - /*! ../internals/whitespaces */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/whitespaces.js"); - - var $parseFloat = global.parseFloat; - var FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity; // `parseFloat` method - // https://tc39.github.io/ecma262/#sec-parsefloat-string - - module.exports = FORCED ? function parseFloat(string) { - var trimmedString = trim(String(string)); - var result = $parseFloat(trimmedString); - return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result; - } : $parseFloat; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-int.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-int.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsNumberParseIntJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var trim = __webpack_require__( - /*! ../internals/string-trim */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim.js").trim; - - var whitespaces = __webpack_require__( - /*! ../internals/whitespaces */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/whitespaces.js"); - - var $parseInt = global.parseInt; - var hex = /^[+-]?0[Xx]/; - var FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22; // `parseInt` method - // https://tc39.github.io/ecma262/#sec-parseint-string-radix - - module.exports = FORCED ? function parseInt(string, radix) { - var S = trim(String(string)); - return $parseInt(S, radix >>> 0 || (hex.test(S) ? 16 : 10)); - } : $parseInt; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-assign.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-assign.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectAssignJs(module, exports, __webpack_require__) { - "use strict"; - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var objectKeys = __webpack_require__( - /*! ../internals/object-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js"); - - var getOwnPropertySymbolsModule = __webpack_require__( - /*! ../internals/object-get-own-property-symbols */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js"); - - var propertyIsEnumerableModule = __webpack_require__( - /*! ../internals/object-property-is-enumerable */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var IndexedObject = __webpack_require__( - /*! ../internals/indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js"); - - var nativeAssign = Object.assign; - var defineProperty = Object.defineProperty; // `Object.assign` method - // https://tc39.github.io/ecma262/#sec-object.assign - - module.exports = !nativeAssign || fails(function () { - // should have correct order of operations (Edge bug) - if (DESCRIPTORS && nativeAssign({ - b: 1 - }, nativeAssign(defineProperty({}, 'a', { - enumerable: true, - get: function get() { - defineProperty(this, 'b', { - value: 3, - enumerable: false - }); - } - }), { - b: 2 - })).b !== 1) return true; // should work with symbols and should have deterministic property order (V8 bug) - - var A = {}; - var B = {}; // eslint-disable-next-line no-undef - - var symbol = Symbol(); - var alphabet = 'abcdefghijklmnopqrst'; - A[symbol] = 7; - alphabet.split('').forEach(function (chr) { - B[chr] = chr; - }); - return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet; - }) ? function assign(target, source) { - // eslint-disable-line no-unused-vars - var T = toObject(target); - var argumentsLength = arguments.length; - var index = 1; - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - var propertyIsEnumerable = propertyIsEnumerableModule.f; - - while (argumentsLength > index) { - var S = IndexedObject(arguments[index++]); - var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S); - var length = keys.length; - var j = 0; - var key; - - while (length > j) { - key = keys[j++]; - if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key]; - } - } - - return T; - } : nativeAssign; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectCreateJs(module, exports, __webpack_require__) { - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var defineProperties = __webpack_require__( - /*! ../internals/object-define-properties */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js"); - - var enumBugKeys = __webpack_require__( - /*! ../internals/enum-bug-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js"); - - var hiddenKeys = __webpack_require__( - /*! ../internals/hidden-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); - - var html = __webpack_require__( - /*! ../internals/html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js"); - - var documentCreateElement = __webpack_require__( - /*! ../internals/document-create-element */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js"); - - var sharedKey = __webpack_require__( - /*! ../internals/shared-key */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js"); - - var GT = '>'; - var LT = '<'; - var PROTOTYPE = 'prototype'; - var SCRIPT = 'script'; - var IE_PROTO = sharedKey('IE_PROTO'); - - var EmptyConstructor = function EmptyConstructor() { - /* empty */ - }; - - var scriptTag = function scriptTag(content) { - return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; - }; // Create object with fake `null` prototype: use ActiveX Object with cleared prototype - - - var NullProtoObjectViaActiveX = function NullProtoObjectViaActiveX(activeXDocument) { - activeXDocument.write(scriptTag('')); - activeXDocument.close(); - var temp = activeXDocument.parentWindow.Object; - activeXDocument = null; // avoid memory leak - - return temp; - }; // Create object with fake `null` prototype: use iframe Object with cleared prototype - - - var NullProtoObjectViaIFrame = function NullProtoObjectViaIFrame() { - // Thrash, waste and sodomy: IE GC bug - var iframe = documentCreateElement('iframe'); - var JS = 'java' + SCRIPT + ':'; - var iframeDocument; - iframe.style.display = 'none'; - html.appendChild(iframe); // https://github.com/zloirock/core-js/issues/475 - - iframe.src = String(JS); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(scriptTag('document.F=Object')); - iframeDocument.close(); - return iframeDocument.F; - }; // Check for document.domain and active x support - // No need to use active x approach when document.domain is not set - // see https://github.com/es-shims/es5-shim/issues/150 - // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 - // avoid IE GC bug - - - var activeXDocument; - - var _NullProtoObject = function NullProtoObject() { - try { - /* global ActiveXObject */ - activeXDocument = document.domain && new ActiveXObject('htmlfile'); - } catch (error) { - /* ignore */ - } - - _NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame(); - var length = enumBugKeys.length; - - while (length--) { - delete _NullProtoObject[PROTOTYPE][enumBugKeys[length]]; - } - - return _NullProtoObject(); - }; - - hiddenKeys[IE_PROTO] = true; // `Object.create` method - // https://tc39.github.io/ecma262/#sec-object.create - - module.exports = Object.create || function create(O, Properties) { - var result; - - if (O !== null) { - EmptyConstructor[PROTOTYPE] = anObject(O); - result = new EmptyConstructor(); - EmptyConstructor[PROTOTYPE] = null; // add "__proto__" for Object.getPrototypeOf polyfill - - result[IE_PROTO] = O; - } else result = _NullProtoObject(); - - return Properties === undefined ? result : defineProperties(result, Properties); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectDefinePropertiesJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var objectKeys = __webpack_require__( - /*! ../internals/object-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js"); // `Object.defineProperties` method - // https://tc39.github.io/ecma262/#sec-object.defineproperties - - - module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = objectKeys(Properties); - var length = keys.length; - var index = 0; - var key; - - while (length > index) { - definePropertyModule.f(O, key = keys[index++], Properties[key]); - } - - return O; - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js": - /*!*************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js ***! - \*************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectDefinePropertyJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var IE8_DOM_DEFINE = __webpack_require__( - /*! ../internals/ie8-dom-define */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - - var nativeDefineProperty = Object.defineProperty; // `Object.defineProperty` method - // https://tc39.github.io/ecma262/#sec-object.defineproperty - - exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return nativeDefineProperty(O, P, Attributes); - } catch (error) { - /* empty */ - } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js": - /*!*************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js ***! - \*************************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectGetOwnPropertyDescriptorJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var propertyIsEnumerableModule = __webpack_require__( - /*! ../internals/object-property-is-enumerable */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js"); - - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var IE8_DOM_DEFINE = __webpack_require__( - /*! ../internals/ie8-dom-define */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js"); - - var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method - // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor - - exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return nativeGetOwnPropertyDescriptor(O, P); - } catch (error) { - /* empty */ - } - if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names-external.js": - /*!*****************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names-external.js ***! - \*****************************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectGetOwnPropertyNamesExternalJs(module, exports, __webpack_require__) { - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var nativeGetOwnPropertyNames = __webpack_require__( - /*! ../internals/object-get-own-property-names */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js").f; - - var toString = {}.toString; - var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; - - var getWindowNames = function getWindowNames(it) { - try { - return nativeGetOwnPropertyNames(it); - } catch (error) { - return windowNames.slice(); - } - }; // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window - - - module.exports.f = function getOwnPropertyNames(it) { - return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : nativeGetOwnPropertyNames(toIndexedObject(it)); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js": - /*!********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js ***! - \********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectGetOwnPropertyNamesJs(module, exports, __webpack_require__) { - var internalObjectKeys = __webpack_require__( - /*! ../internals/object-keys-internal */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js"); - - var enumBugKeys = __webpack_require__( - /*! ../internals/enum-bug-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js"); - - var hiddenKeys = enumBugKeys.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method - // https://tc39.github.io/ecma262/#sec-object.getownpropertynames - - exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys(O, hiddenKeys); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js": - /*!**********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js ***! - \**********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectGetOwnPropertySymbolsJs(module, exports) { - exports.f = Object.getOwnPropertySymbols; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js": - /*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js ***! - \**************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectGetPrototypeOfJs(module, exports, __webpack_require__) { - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var sharedKey = __webpack_require__( - /*! ../internals/shared-key */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js"); - - var CORRECT_PROTOTYPE_GETTER = __webpack_require__( - /*! ../internals/correct-prototype-getter */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js"); - - var IE_PROTO = sharedKey('IE_PROTO'); - var ObjectPrototype = Object.prototype; // `Object.getPrototypeOf` method - // https://tc39.github.io/ecma262/#sec-object.getprototypeof - - module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) return O[IE_PROTO]; - - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } - - return O instanceof Object ? ObjectPrototype : null; - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectKeysInternalJs(module, exports, __webpack_require__) { - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var indexOf = __webpack_require__( - /*! ../internals/array-includes */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js").indexOf; - - var hiddenKeys = __webpack_require__( - /*! ../internals/hidden-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); - - module.exports = function (object, names) { - var O = toIndexedObject(object); - var i = 0; - var result = []; - var key; - - for (key in O) { - !has(hiddenKeys, key) && has(O, key) && result.push(key); - } // Don't enum bug & hidden keys - - - while (names.length > i) { - if (has(O, key = names[i++])) { - ~indexOf(result, key) || result.push(key); - } - } - - return result; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectKeysJs(module, exports, __webpack_require__) { - var internalObjectKeys = __webpack_require__( - /*! ../internals/object-keys-internal */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js"); - - var enumBugKeys = __webpack_require__( - /*! ../internals/enum-bug-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js"); // `Object.keys` method - // https://tc39.github.io/ecma262/#sec-object.keys - - - module.exports = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js": - /*!********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js ***! - \********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectPropertyIsEnumerableJs(module, exports, __webpack_require__) { - "use strict"; - - var nativePropertyIsEnumerable = {}.propertyIsEnumerable; - var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // Nashorn ~ JDK8 bug - - var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ - 1: 2 - }, 1); // `Object.prototype.propertyIsEnumerable` method implementation - // https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable - - exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor(this, V); - return !!descriptor && descriptor.enumerable; - } : nativePropertyIsEnumerable; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js": - /*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js ***! - \**************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectSetPrototypeOfJs(module, exports, __webpack_require__) { - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var aPossiblePrototype = __webpack_require__( - /*! ../internals/a-possible-prototype */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js"); // `Object.setPrototypeOf` method - // https://tc39.github.io/ecma262/#sec-object.setprototypeof - // Works with __proto__ only. Old v8 can't work with null proto objects. - - /* eslint-disable no-proto */ - - - module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { - var CORRECT_SETTER = false; - var test = {}; - var setter; - - try { - setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; - setter.call(test, []); - CORRECT_SETTER = test instanceof Array; - } catch (error) { - /* empty */ - } - - return function setPrototypeOf(O, proto) { - anObject(O); - aPossiblePrototype(proto); - if (CORRECT_SETTER) setter.call(O, proto);else O.__proto__ = proto; - return O; - }; - }() : undefined); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-to-string.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-to-string.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectToStringJs(module, exports, __webpack_require__) { - "use strict"; - - var TO_STRING_TAG_SUPPORT = __webpack_require__( - /*! ../internals/to-string-tag-support */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js"); - - var classof = __webpack_require__( - /*! ../internals/classof */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js"); // `Object.prototype.toString` method implementation - // https://tc39.github.io/ecma262/#sec-object.prototype.tostring - - - module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() { - return '[object ' + classof(this) + ']'; - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js": - /*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js ***! - \***********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsOwnKeysJs(module, exports, __webpack_require__) { - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - var getOwnPropertyNamesModule = __webpack_require__( - /*! ../internals/object-get-own-property-names */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js"); - - var getOwnPropertySymbolsModule = __webpack_require__( - /*! ../internals/object-get-own-property-symbols */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); // all object keys, includes non-enumerable and symbols - - - module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js": - /*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js ***! - \*******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsPathJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - module.exports = global; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/perform.js": - /*!**********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/perform.js ***! - \**********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsPerformJs(module, exports) { - module.exports = function (exec) { - try { - return { - error: false, - value: exec() - }; - } catch (error) { - return { - error: true, - value: error - }; - } - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/promise-resolve.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/promise-resolve.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsPromiseResolveJs(module, exports, __webpack_require__) { - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var newPromiseCapability = __webpack_require__( - /*! ../internals/new-promise-capability */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/new-promise-capability.js"); - - module.exports = function (C, x) { - anObject(C); - if (isObject(x) && x.constructor === C) return x; - var promiseCapability = newPromiseCapability.f(C); - var resolve = promiseCapability.resolve; - resolve(x); - return promiseCapability.promise; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsRedefineAllJs(module, exports, __webpack_require__) { - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - module.exports = function (target, src, options) { - for (var key in src) { - redefine(target, key, src[key], options); - } - - return target; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js": - /*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js ***! - \***********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsRedefineJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var setGlobal = __webpack_require__( - /*! ../internals/set-global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js"); - - var inspectSource = __webpack_require__( - /*! ../internals/inspect-source */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js"); - - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - - var getInternalState = InternalStateModule.get; - var enforceInternalState = InternalStateModule.enforce; - var TEMPLATE = String(String).split('String'); - (module.exports = function (O, key, value, options) { - var unsafe = options ? !!options.unsafe : false; - var simple = options ? !!options.enumerable : false; - var noTargetGet = options ? !!options.noTargetGet : false; - - if (typeof value == 'function') { - if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key); - enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); - } - - if (O === global) { - if (simple) O[key] = value;else setGlobal(key, value); - return; - } else if (!unsafe) { - delete O[key]; - } else if (!noTargetGet && O[key]) { - simple = true; - } - - if (simple) O[key] = value;else createNonEnumerableProperty(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative - })(Function.prototype, 'toString', function toString() { - return typeof this == 'function' && getInternalState(this).source || inspectSource(this); - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsReflectMetadataJs(module, exports, __webpack_require__) { - // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` - var Map = __webpack_require__( - /*! ../modules/es.map */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js"); - - var WeakMap = __webpack_require__( - /*! ../modules/es.weak-map */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js"); - - var shared = __webpack_require__( - /*! ../internals/shared */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js"); - - var metadata = shared('metadata'); - var store = metadata.store || (metadata.store = new WeakMap()); - - var getOrCreateMetadataMap = function getOrCreateMetadataMap(target, targetKey, create) { - var targetMetadata = store.get(target); - - if (!targetMetadata) { - if (!create) return; - store.set(target, targetMetadata = new Map()); - } - - var keyMetadata = targetMetadata.get(targetKey); - - if (!keyMetadata) { - if (!create) return; - targetMetadata.set(targetKey, keyMetadata = new Map()); - } - - return keyMetadata; - }; - - var ordinaryHasOwnMetadata = function ordinaryHasOwnMetadata(MetadataKey, O, P) { - var metadataMap = getOrCreateMetadataMap(O, P, false); - return metadataMap === undefined ? false : metadataMap.has(MetadataKey); - }; - - var ordinaryGetOwnMetadata = function ordinaryGetOwnMetadata(MetadataKey, O, P) { - var metadataMap = getOrCreateMetadataMap(O, P, false); - return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey); - }; - - var ordinaryDefineOwnMetadata = function ordinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) { - getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue); - }; - - var ordinaryOwnMetadataKeys = function ordinaryOwnMetadataKeys(target, targetKey) { - var metadataMap = getOrCreateMetadataMap(target, targetKey, false); - var keys = []; - if (metadataMap) metadataMap.forEach(function (_, key) { - keys.push(key); - }); - return keys; - }; - - var toMetadataKey = function toMetadataKey(it) { - return it === undefined || typeof it == 'symbol' ? it : String(it); - }; - - module.exports = { - store: store, - getMap: getOrCreateMetadataMap, - has: ordinaryHasOwnMetadata, - get: ordinaryGetOwnMetadata, - set: ordinaryDefineOwnMetadata, - keys: ordinaryOwnMetadataKeys, - toKey: toMetadataKey - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec-abstract.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec-abstract.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsRegexpExecAbstractJs(module, exports, __webpack_require__) { - var classof = __webpack_require__( - /*! ./classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - - var regexpExec = __webpack_require__( - /*! ./regexp-exec */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec.js"); // `RegExpExec` abstract operation - // https://tc39.github.io/ecma262/#sec-regexpexec - - - module.exports = function (R, S) { - var exec = R.exec; - - if (typeof exec === 'function') { - var result = exec.call(R, S); - - if (typeof result !== 'object') { - throw TypeError('RegExp exec method returned something other than an Object or null'); - } - - return result; - } - - if (classof(R) !== 'RegExp') { - throw TypeError('RegExp#exec called on incompatible receiver'); - } - - return regexpExec.call(R, S); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsRegexpExecJs(module, exports, __webpack_require__) { - "use strict"; - - var regexpFlags = __webpack_require__( - /*! ./regexp-flags */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-flags.js"); - - var stickyHelpers = __webpack_require__( - /*! ./regexp-sticky-helpers */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-sticky-helpers.js"); - - var nativeExec = RegExp.prototype.exec; // This always refers to the native implementation, because the - // String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, - // which loads this file before patching the method. - - var nativeReplace = String.prototype.replace; - var patchedExec = nativeExec; - - var UPDATES_LAST_INDEX_WRONG = function () { - var re1 = /a/; - var re2 = /b*/g; - nativeExec.call(re1, 'a'); - nativeExec.call(re2, 'a'); - return re1.lastIndex !== 0 || re2.lastIndex !== 0; - }(); - - var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET; // nonparticipating capturing group, copied from es5-shim's String#split patch. - - var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; - var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y; - - if (PATCH) { - patchedExec = function exec(str) { - var re = this; - var lastIndex, reCopy, match, i; - var sticky = UNSUPPORTED_Y && re.sticky; - var flags = regexpFlags.call(re); - var source = re.source; - var charsAdded = 0; - var strCopy = str; - - if (sticky) { - flags = flags.replace('y', ''); - - if (flags.indexOf('g') === -1) { - flags += 'g'; - } - - strCopy = String(str).slice(re.lastIndex); // Support anchored sticky behavior. - - if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\n')) { - source = '(?: ' + source + ')'; - strCopy = ' ' + strCopy; - charsAdded++; - } // ^(? + rx + ) is needed, in combination with some str slicing, to - // simulate the 'y' flag. - - - reCopy = new RegExp('^(?:' + source + ')', flags); - } - - if (NPCG_INCLUDED) { - reCopy = new RegExp('^' + source + '$(?!\\s)', flags); - } - - if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; - match = nativeExec.call(sticky ? reCopy : re, strCopy); - - if (sticky) { - if (match) { - match.input = match.input.slice(charsAdded); - match[0] = match[0].slice(charsAdded); - match.index = re.lastIndex; - re.lastIndex += match[0].length; - } else re.lastIndex = 0; - } else if (UPDATES_LAST_INDEX_WRONG && match) { - re.lastIndex = re.global ? match.index + match[0].length : lastIndex; - } - - if (NPCG_INCLUDED && match && match.length > 1) { - // Fix browsers whose `exec` methods don't consistently return `undefined` - // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ - nativeReplace.call(match[0], reCopy, function () { - for (i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === undefined) match[i] = undefined; - } - }); - } - - return match; - }; - } - - module.exports = patchedExec; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-flags.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-flags.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsRegexpFlagsJs(module, exports, __webpack_require__) { - "use strict"; - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); // `RegExp.prototype.flags` getter implementation - // https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags - - - module.exports = function () { - var that = anObject(this); - var result = ''; - if (that.global) result += 'g'; - if (that.ignoreCase) result += 'i'; - if (that.multiline) result += 'm'; - if (that.dotAll) result += 's'; - if (that.unicode) result += 'u'; - if (that.sticky) result += 'y'; - return result; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-sticky-helpers.js": - /*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-sticky-helpers.js ***! - \************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsRegexpStickyHelpersJs(module, exports, __webpack_require__) { - "use strict"; - - var fails = __webpack_require__( - /*! ./fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError, - // so we use an intermediate function. - - - function RE(s, f) { - return RegExp(s, f); - } - - exports.UNSUPPORTED_Y = fails(function () { - // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError - var re = RE('a', 'y'); - re.lastIndex = 2; - return re.exec('abcd') != null; - }); - exports.BROKEN_CARET = fails(function () { - // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 - var re = RE('^r', 'gy'); - re.lastIndex = 2; - return re.exec('str') != null; - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsRequireObjectCoercibleJs(module, exports) { - // `RequireObjectCoercible` abstract operation - // https://tc39.github.io/ecma262/#sec-requireobjectcoercible - module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/same-value.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/same-value.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsSameValueJs(module, exports) { - // `SameValue` abstract operation - // https://tc39.github.io/ecma262/#sec-samevalue - module.exports = Object.is || function is(x, y) { - // eslint-disable-next-line no-self-compare - return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsSetGlobalJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - module.exports = function (key, value) { - try { - createNonEnumerableProperty(global, key, value); - } catch (error) { - global[key] = value; - } - - return value; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsSetSpeciesJs(module, exports, __webpack_require__) { - "use strict"; - - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var SPECIES = wellKnownSymbol('species'); - - module.exports = function (CONSTRUCTOR_NAME) { - var Constructor = getBuiltIn(CONSTRUCTOR_NAME); - var defineProperty = definePropertyModule.f; - - if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { - defineProperty(Constructor, SPECIES, { - configurable: true, - get: function get() { - return this; - } - }); - } - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsSetToStringTagJs(module, exports, __webpack_require__) { - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var TO_STRING_TAG = wellKnownSymbol('toStringTag'); - - module.exports = function (it, TAG, STATIC) { - if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { - defineProperty(it, TO_STRING_TAG, { - configurable: true, - value: TAG - }); - } - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsSharedKeyJs(module, exports, __webpack_require__) { - var shared = __webpack_require__( - /*! ../internals/shared */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js"); - - var uid = __webpack_require__( - /*! ../internals/uid */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js"); - - var keys = shared('keys'); - - module.exports = function (key) { - return keys[key] || (keys[key] = uid(key)); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsSharedStoreJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var setGlobal = __webpack_require__( - /*! ../internals/set-global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js"); - - var SHARED = '__core-js_shared__'; - var store = global[SHARED] || setGlobal(SHARED, {}); - module.exports = store; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js": - /*!*********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js ***! - \*********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsSharedJs(module, exports, __webpack_require__) { - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); - - var store = __webpack_require__( - /*! ../internals/shared-store */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js"); - - (module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); - })('versions', []).push({ - version: '3.6.4', - mode: IS_PURE ? 'pure' : 'global', - copyright: '© 2020 Denis Pushkarev (zloirock.ru)' - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/species-constructor.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/species-constructor.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsSpeciesConstructorJs(module, exports, __webpack_require__) { - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var SPECIES = wellKnownSymbol('species'); // `SpeciesConstructor` abstract operation - // https://tc39.github.io/ecma262/#sec-speciesconstructor - - module.exports = function (O, defaultConstructor) { - var C = anObject(O).constructor; - var S; - return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsStringHtmlForcedJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); // check the existence of a method, lowercase - // of a tag and escaping quotes in arguments - - - module.exports = function (METHOD_NAME) { - return fails(function () { - var test = ''[METHOD_NAME]('"'); - return test !== test.toLowerCase() || test.split('"').length > 3; - }); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-multibyte.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-multibyte.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsStringMultibyteJs(module, exports, __webpack_require__) { - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); // `String.prototype.{ codePointAt, at }` methods implementation - - - var createMethod = function createMethod(CONVERT_TO_STRING) { - return function ($this, pos) { - var S = String(requireObjectCoercible($this)); - var position = toInteger(pos); - var size = S.length; - var first, second; - if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; - first = S.charCodeAt(position); - return first < 0xD800 || first > 0xDBFF || position + 1 === size || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; - }; - }; - - module.exports = { - // `String.prototype.codePointAt` method - // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat - codeAt: createMethod(false), - // `String.prototype.at` method - // https://github.com/mathiasbynens/String.prototype.at - charAt: createMethod(true) - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-pad.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-pad.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsStringPadJs(module, exports, __webpack_require__) { - // https://github.com/tc39/proposal-string-pad-start-end - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var repeat = __webpack_require__( - /*! ../internals/string-repeat */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-repeat.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var ceil = Math.ceil; // `String.prototype.{ padStart, padEnd }` methods implementation - - var createMethod = function createMethod(IS_END) { - return function ($this, maxLength, fillString) { - var S = String(requireObjectCoercible($this)); - var stringLength = S.length; - var fillStr = fillString === undefined ? ' ' : String(fillString); - var intMaxLength = toLength(maxLength); - var fillLen, stringFiller; - if (intMaxLength <= stringLength || fillStr == '') return S; - fillLen = intMaxLength - stringLength; - stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length)); - if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen); - return IS_END ? S + stringFiller : stringFiller + S; - }; - }; - - module.exports = { - // `String.prototype.padStart` method - // https://tc39.github.io/ecma262/#sec-string.prototype.padstart - start: createMethod(false), - // `String.prototype.padEnd` method - // https://tc39.github.io/ecma262/#sec-string.prototype.padend - end: createMethod(true) - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-repeat.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-repeat.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsStringRepeatJs(module, exports, __webpack_require__) { - "use strict"; - - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); // `String.prototype.repeat` method implementation - // https://tc39.github.io/ecma262/#sec-string.prototype.repeat - - - module.exports = ''.repeat || function repeat(count) { - var str = String(requireObjectCoercible(this)); - var result = ''; - var n = toInteger(count); - if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions'); - - for (; n > 0; (n >>>= 1) && (str += str)) { - if (n & 1) result += str; - } - - return result; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim-forced.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim-forced.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsStringTrimForcedJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var whitespaces = __webpack_require__( - /*! ../internals/whitespaces */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/whitespaces.js"); - - var non = "\u200B\x85\u180E"; // check that a method works with the correct list - // of whitespaces and has a correct name - - module.exports = function (METHOD_NAME) { - return fails(function () { - return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME; - }); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsStringTrimJs(module, exports, __webpack_require__) { - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var whitespaces = __webpack_require__( - /*! ../internals/whitespaces */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/whitespaces.js"); - - var whitespace = '[' + whitespaces + ']'; - var ltrim = RegExp('^' + whitespace + whitespace + '*'); - var rtrim = RegExp(whitespace + whitespace + '*$'); // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation - - var createMethod = function createMethod(TYPE) { - return function ($this) { - var string = String(requireObjectCoercible($this)); - if (TYPE & 1) string = string.replace(ltrim, ''); - if (TYPE & 2) string = string.replace(rtrim, ''); - return string; - }; - }; - - module.exports = { - // `String.prototype.{ trimLeft, trimStart }` methods - // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart - start: createMethod(1), - // `String.prototype.{ trimRight, trimEnd }` methods - // https://tc39.github.io/ecma262/#sec-string.prototype.trimend - end: createMethod(2), - // `String.prototype.trim` method - // https://tc39.github.io/ecma262/#sec-string.prototype.trim - trim: createMethod(3) - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/task.js": - /*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/task.js ***! - \*******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsTaskJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - - var bind = __webpack_require__( - /*! ../internals/function-bind-context */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js"); - - var html = __webpack_require__( - /*! ../internals/html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js"); - - var createElement = __webpack_require__( - /*! ../internals/document-create-element */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js"); - - var IS_IOS = __webpack_require__( - /*! ../internals/engine-is-ios */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-is-ios.js"); - - var location = global.location; - var set = global.setImmediate; - var clear = global.clearImmediate; - var process = global.process; - var MessageChannel = global.MessageChannel; - var Dispatch = global.Dispatch; - var counter = 0; - var queue = {}; - var ONREADYSTATECHANGE = 'onreadystatechange'; - var defer, channel, port; - - var run = function run(id) { - // eslint-disable-next-line no-prototype-builtins - if (queue.hasOwnProperty(id)) { - var fn = queue[id]; - delete queue[id]; - fn(); - } - }; - - var runner = function runner(id) { - return function () { - run(id); - }; - }; - - var listener = function listener(event) { - run(event.data); - }; - - var post = function post(id) { - // old engines have not location.origin - global.postMessage(id + '', location.protocol + '//' + location.host); - }; // Node.js 0.9+ & IE10+ has setImmediate, otherwise: - - - if (!set || !clear) { - set = function setImmediate(fn) { - var args = []; - var i = 1; - - while (arguments.length > i) { - args.push(arguments[i++]); - } - - queue[++counter] = function () { - // eslint-disable-next-line no-new-func - (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args); - }; - - defer(counter); - return counter; - }; - - clear = function clearImmediate(id) { - delete queue[id]; - }; // Node.js 0.8- - - - if (classof(process) == 'process') { - defer = function defer(id) { - process.nextTick(runner(id)); - }; // Sphere (JS game engine) Dispatch API - - } else if (Dispatch && Dispatch.now) { - defer = function defer(id) { - Dispatch.now(runner(id)); - }; // Browsers with MessageChannel, includes WebWorkers - // except iOS - https://github.com/zloirock/core-js/issues/624 - - } else if (MessageChannel && !IS_IOS) { - channel = new MessageChannel(); - port = channel.port2; - channel.port1.onmessage = listener; - defer = bind(port.postMessage, port, 1); // Browsers with postMessage, skip WebWorkers - // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' - } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts && !fails(post)) { - defer = post; - global.addEventListener('message', listener, false); // IE8- - } else if (ONREADYSTATECHANGE in createElement('script')) { - defer = function defer(id) { - html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () { - html.removeChild(this); - run(id); - }; - }; // Rest old browsers - - } else { - defer = function defer(id) { - setTimeout(runner(id), 0); - }; - } - } - - module.exports = { - set: set, - clear: clear - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/this-number-value.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/this-number-value.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsThisNumberValueJs(module, exports, __webpack_require__) { - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); // `thisNumberValue` abstract operation - // https://tc39.github.io/ecma262/#sec-thisnumbervalue - - - module.exports = function (value) { - if (typeof value != 'number' && classof(value) != 'Number') { - throw TypeError('Incorrect invocation'); - } - - return +value; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsToAbsoluteIndexJs(module, exports, __webpack_require__) { - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - - var max = Math.max; - var min = Math.min; // Helper for a popular repeating case of the spec: - // Let integer be ? ToInteger(index). - // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). - - module.exports = function (index, length) { - var integer = toInteger(index); - return integer < 0 ? max(integer + length, 0) : min(integer, length); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsToIndexedObjectJs(module, exports, __webpack_require__) { - // toObject with fallback for non-array-like ES3 strings - var IndexedObject = __webpack_require__( - /*! ../internals/indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - module.exports = function (it) { - return IndexedObject(requireObjectCoercible(it)); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsToIntegerJs(module, exports) { - var ceil = Math.ceil; - var floor = Math.floor; // `ToInteger` abstract operation - // https://tc39.github.io/ecma262/#sec-tointeger - - module.exports = function (argument) { - return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsToLengthJs(module, exports, __webpack_require__) { - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - - var min = Math.min; // `ToLength` abstract operation - // https://tc39.github.io/ecma262/#sec-tolength - - module.exports = function (argument) { - return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsToObjectJs(module, exports, __webpack_require__) { - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); // `ToObject` abstract operation - // https://tc39.github.io/ecma262/#sec-toobject - - - module.exports = function (argument) { - return Object(requireObjectCoercible(argument)); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsToPrimitiveJs(module, exports, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); // `ToPrimitive` abstract operation - // https://tc39.github.io/ecma262/#sec-toprimitive - // instead of the ES6 spec version, we didn't implement @@toPrimitive case - // and the second argument - flag - preferred type is a string - - - module.exports = function (input, PREFERRED_STRING) { - if (!isObject(input)) return input; - var fn, val; - if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; - if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; - if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; - throw TypeError("Can't convert object to primitive value"); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js": - /*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js ***! - \************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsToStringTagSupportJs(module, exports, __webpack_require__) { - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var TO_STRING_TAG = wellKnownSymbol('toStringTag'); - var test = {}; - test[TO_STRING_TAG] = 'z'; - module.exports = String(test) === '[object z]'; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js": - /*!******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js ***! - \******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsUidJs(module, exports) { - var id = 0; - var postfix = Math.random(); - - module.exports = function (key) { - return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsUseSymbolAsUidJs(module, exports, __webpack_require__) { - var NATIVE_SYMBOL = __webpack_require__( - /*! ../internals/native-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js"); - - module.exports = NATIVE_SYMBOL // eslint-disable-next-line no-undef - && !Symbol.sham // eslint-disable-next-line no-undef - && typeof Symbol.iterator == 'symbol'; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol-wrapped.js": - /*!****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol-wrapped.js ***! - \****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsWellKnownSymbolWrappedJs(module, exports, __webpack_require__) { - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - exports.f = wellKnownSymbol; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsWellKnownSymbolJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var shared = __webpack_require__( - /*! ../internals/shared */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var uid = __webpack_require__( - /*! ../internals/uid */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js"); - - var NATIVE_SYMBOL = __webpack_require__( - /*! ../internals/native-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js"); - - var USE_SYMBOL_AS_UID = __webpack_require__( - /*! ../internals/use-symbol-as-uid */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js"); - - var WellKnownSymbolsStore = shared('wks'); - var Symbol = global.Symbol; - var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid; - - module.exports = function (name) { - if (!has(WellKnownSymbolsStore, name)) { - if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name); - } - - return WellKnownSymbolsStore[name]; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/whitespaces.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/whitespaces.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsWhitespacesJs(module, exports) { - // a string of all valid unicode whitespaces - // eslint-disable-next-line max-len - module.exports = "\t\n\x0B\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF"; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.concat.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.concat.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayConcatJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var isArray = __webpack_require__( - /*! ../internals/is-array */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var createProperty = __webpack_require__( - /*! ../internals/create-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property.js"); - - var arraySpeciesCreate = __webpack_require__( - /*! ../internals/array-species-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js"); - - var arrayMethodHasSpeciesSupport = __webpack_require__( - /*! ../internals/array-method-has-species-support */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-has-species-support.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var V8_VERSION = __webpack_require__( - /*! ../internals/engine-v8-version */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-v8-version.js"); - - var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable'); - var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; - var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded'; // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/679 - - var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () { - var array = []; - array[IS_CONCAT_SPREADABLE] = false; - return array.concat()[0] !== array; - }); - var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat'); - - var isConcatSpreadable = function isConcatSpreadable(O) { - if (!isObject(O)) return false; - var spreadable = O[IS_CONCAT_SPREADABLE]; - return spreadable !== undefined ? !!spreadable : isArray(O); - }; - - var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT; // `Array.prototype.concat` method - // https://tc39.github.io/ecma262/#sec-array.prototype.concat - // with adding support of @@isConcatSpreadable and @@species - - $({ - target: 'Array', - proto: true, - forced: FORCED - }, { - concat: function concat(arg) { - // eslint-disable-line no-unused-vars - var O = toObject(this); - var A = arraySpeciesCreate(O, 0); - var n = 0; - var i, k, length, len, E; - - for (i = -1, length = arguments.length; i < length; i++) { - E = i === -1 ? O : arguments[i]; - - if (isConcatSpreadable(E)) { - len = toLength(E.length); - if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); - - for (k = 0; k < len; k++, n++) { - if (k in E) createProperty(A, n, E[k]); - } - } else { - if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); - createProperty(A, n++, E); - } - } - - A.length = n; - return A; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.copy-within.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.copy-within.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayCopyWithinJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var copyWithin = __webpack_require__( - /*! ../internals/array-copy-within */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-copy-within.js"); - - var addToUnscopables = __webpack_require__( - /*! ../internals/add-to-unscopables */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/add-to-unscopables.js"); // `Array.prototype.copyWithin` method - // https://tc39.github.io/ecma262/#sec-array.prototype.copywithin - - - $({ - target: 'Array', - proto: true - }, { - copyWithin: copyWithin - }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables - - addToUnscopables('copyWithin'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.every.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.every.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayEveryJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $every = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js").every; - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var STRICT_METHOD = arrayMethodIsStrict('every'); - var USES_TO_LENGTH = arrayMethodUsesToLength('every'); // `Array.prototype.every` method - // https://tc39.github.io/ecma262/#sec-array.prototype.every - - $({ - target: 'Array', - proto: true, - forced: !STRICT_METHOD || !USES_TO_LENGTH - }, { - every: function every(callbackfn - /* , thisArg */ - ) { - return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.fill.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.fill.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayFillJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fill = __webpack_require__( - /*! ../internals/array-fill */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-fill.js"); - - var addToUnscopables = __webpack_require__( - /*! ../internals/add-to-unscopables */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/add-to-unscopables.js"); // `Array.prototype.fill` method - // https://tc39.github.io/ecma262/#sec-array.prototype.fill - - - $({ - target: 'Array', - proto: true - }, { - fill: fill - }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables - - addToUnscopables('fill'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.filter.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.filter.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayFilterJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $filter = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js").filter; - - var arrayMethodHasSpeciesSupport = __webpack_require__( - /*! ../internals/array-method-has-species-support */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-has-species-support.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter'); // Edge 14- issue - - var USES_TO_LENGTH = arrayMethodUsesToLength('filter'); // `Array.prototype.filter` method - // https://tc39.github.io/ecma262/#sec-array.prototype.filter - // with adding support of @@species - - $({ - target: 'Array', - proto: true, - forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH - }, { - filter: function filter(callbackfn - /* , thisArg */ - ) { - return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.find-index.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.find-index.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayFindIndexJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $findIndex = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js").findIndex; - - var addToUnscopables = __webpack_require__( - /*! ../internals/add-to-unscopables */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/add-to-unscopables.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var FIND_INDEX = 'findIndex'; - var SKIPS_HOLES = true; - var USES_TO_LENGTH = arrayMethodUsesToLength(FIND_INDEX); // Shouldn't skip holes - - if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { - SKIPS_HOLES = false; - }); // `Array.prototype.findIndex` method - // https://tc39.github.io/ecma262/#sec-array.prototype.findindex - - $({ - target: 'Array', - proto: true, - forced: SKIPS_HOLES || !USES_TO_LENGTH - }, { - findIndex: function findIndex(callbackfn - /* , that = undefined */ - ) { - return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables - - addToUnscopables(FIND_INDEX); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.find.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.find.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayFindJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $find = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js").find; - - var addToUnscopables = __webpack_require__( - /*! ../internals/add-to-unscopables */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/add-to-unscopables.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var FIND = 'find'; - var SKIPS_HOLES = true; - var USES_TO_LENGTH = arrayMethodUsesToLength(FIND); // Shouldn't skip holes - - if (FIND in []) Array(1)[FIND](function () { - SKIPS_HOLES = false; - }); // `Array.prototype.find` method - // https://tc39.github.io/ecma262/#sec-array.prototype.find - - $({ - target: 'Array', - proto: true, - forced: SKIPS_HOLES || !USES_TO_LENGTH - }, { - find: function find(callbackfn - /* , that = undefined */ - ) { - return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables - - addToUnscopables(FIND); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.for-each.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.for-each.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayForEachJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var forEach = __webpack_require__( - /*! ../internals/array-for-each */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-for-each.js"); // `Array.prototype.forEach` method - // https://tc39.github.io/ecma262/#sec-array.prototype.foreach - - - $({ - target: 'Array', - proto: true, - forced: [].forEach != forEach - }, { - forEach: forEach - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.from.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.from.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayFromJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var from = __webpack_require__( - /*! ../internals/array-from */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-from.js"); - - var checkCorrectnessOfIteration = __webpack_require__( - /*! ../internals/check-correctness-of-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js"); - - var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) { - Array.from(iterable); - }); // `Array.from` method - // https://tc39.github.io/ecma262/#sec-array.from - - $({ - target: 'Array', - stat: true, - forced: INCORRECT_ITERATION - }, { - from: from - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.index-of.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.index-of.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayIndexOfJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $indexOf = __webpack_require__( - /*! ../internals/array-includes */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js").indexOf; - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var nativeIndexOf = [].indexOf; - var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0; - var STRICT_METHOD = arrayMethodIsStrict('indexOf'); - var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { - ACCESSORS: true, - 1: 0 - }); // `Array.prototype.indexOf` method - // https://tc39.github.io/ecma262/#sec-array.prototype.indexof - - $({ - target: 'Array', - proto: true, - forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH - }, { - indexOf: function indexOf(searchElement - /* , fromIndex = 0 */ - ) { - return NEGATIVE_ZERO // convert -0 to +0 - ? nativeIndexOf.apply(this, arguments) || 0 : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.is-array.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.is-array.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayIsArrayJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var isArray = __webpack_require__( - /*! ../internals/is-array */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js"); // `Array.isArray` method - // https://tc39.github.io/ecma262/#sec-array.isarray - - - $({ - target: 'Array', - stat: true - }, { - isArray: isArray - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.iterator.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.iterator.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayIteratorJs(module, exports, __webpack_require__) { - "use strict"; - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var addToUnscopables = __webpack_require__( - /*! ../internals/add-to-unscopables */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/add-to-unscopables.js"); - - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); - - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - - var defineIterator = __webpack_require__( - /*! ../internals/define-iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js"); - - var ARRAY_ITERATOR = 'Array Iterator'; - var setInternalState = InternalStateModule.set; - var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); // `Array.prototype.entries` method - // https://tc39.github.io/ecma262/#sec-array.prototype.entries - // `Array.prototype.keys` method - // https://tc39.github.io/ecma262/#sec-array.prototype.keys - // `Array.prototype.values` method - // https://tc39.github.io/ecma262/#sec-array.prototype.values - // `Array.prototype[@@iterator]` method - // https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator - // `CreateArrayIterator` internal method - // https://tc39.github.io/ecma262/#sec-createarrayiterator - - module.exports = defineIterator(Array, 'Array', function (iterated, kind) { - setInternalState(this, { - type: ARRAY_ITERATOR, - target: toIndexedObject(iterated), - // target - index: 0, - // next index - kind: kind // kind - - }); // `%ArrayIteratorPrototype%.next` method - // https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next - }, function () { - var state = getInternalState(this); - var target = state.target; - var kind = state.kind; - var index = state.index++; - - if (!target || index >= target.length) { - state.target = undefined; - return { - value: undefined, - done: true - }; - } - - if (kind == 'keys') return { - value: index, - done: false - }; - if (kind == 'values') return { - value: target[index], - done: false - }; - return { - value: [index, target[index]], - done: false - }; - }, 'values'); // argumentsList[@@iterator] is %ArrayProto_values% - // https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject - // https://tc39.github.io/ecma262/#sec-createmappedargumentsobject - - Iterators.Arguments = Iterators.Array; // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables - - addToUnscopables('keys'); - addToUnscopables('values'); - addToUnscopables('entries'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.join.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.join.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayJoinJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var IndexedObject = __webpack_require__( - /*! ../internals/indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js"); - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var nativeJoin = [].join; - var ES3_STRINGS = IndexedObject != Object; - var STRICT_METHOD = arrayMethodIsStrict('join', ','); // `Array.prototype.join` method - // https://tc39.github.io/ecma262/#sec-array.prototype.join - - $({ - target: 'Array', - proto: true, - forced: ES3_STRINGS || !STRICT_METHOD - }, { - join: function join(separator) { - return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.last-index-of.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.last-index-of.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayLastIndexOfJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var lastIndexOf = __webpack_require__( - /*! ../internals/array-last-index-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-last-index-of.js"); // `Array.prototype.lastIndexOf` method - // https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof - - - $({ - target: 'Array', - proto: true, - forced: lastIndexOf !== [].lastIndexOf - }, { - lastIndexOf: lastIndexOf - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.map.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.map.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayMapJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $map = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js").map; - - var arrayMethodHasSpeciesSupport = __webpack_require__( - /*! ../internals/array-method-has-species-support */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-has-species-support.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map'); // FF49- issue - - var USES_TO_LENGTH = arrayMethodUsesToLength('map'); // `Array.prototype.map` method - // https://tc39.github.io/ecma262/#sec-array.prototype.map - // with adding support of @@species - - $({ - target: 'Array', - proto: true, - forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH - }, { - map: function map(callbackfn - /* , thisArg */ - ) { - return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.of.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.of.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayOfJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var createProperty = __webpack_require__( - /*! ../internals/create-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property.js"); - - var ISNT_GENERIC = fails(function () { - function F() { - /* empty */ - } - - return !(Array.of.call(F) instanceof F); - }); // `Array.of` method - // https://tc39.github.io/ecma262/#sec-array.of - // WebKit Array.of isn't generic - - $({ - target: 'Array', - stat: true, - forced: ISNT_GENERIC - }, { - of: function of() - /* ...args */ - { - var index = 0; - var argumentsLength = arguments.length; - var result = new (typeof this == 'function' ? this : Array)(argumentsLength); - - while (argumentsLength > index) { - createProperty(result, index, arguments[index++]); - } - - result.length = argumentsLength; - return result; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.reduce-right.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.reduce-right.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayReduceRightJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $reduceRight = __webpack_require__( - /*! ../internals/array-reduce */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-reduce.js").right; - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var STRICT_METHOD = arrayMethodIsStrict('reduceRight'); // For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method - - var USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { - 1: 0 - }); // `Array.prototype.reduceRight` method - // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright - - $({ - target: 'Array', - proto: true, - forced: !STRICT_METHOD || !USES_TO_LENGTH - }, { - reduceRight: function reduceRight(callbackfn - /* , initialValue */ - ) { - return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.reduce.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.reduce.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayReduceJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $reduce = __webpack_require__( - /*! ../internals/array-reduce */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-reduce.js").left; - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var STRICT_METHOD = arrayMethodIsStrict('reduce'); - var USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { - 1: 0 - }); // `Array.prototype.reduce` method - // https://tc39.github.io/ecma262/#sec-array.prototype.reduce - - $({ - target: 'Array', - proto: true, - forced: !STRICT_METHOD || !USES_TO_LENGTH - }, { - reduce: function reduce(callbackfn - /* , initialValue */ - ) { - return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.slice.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.slice.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArraySliceJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var isArray = __webpack_require__( - /*! ../internals/is-array */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js"); - - var toAbsoluteIndex = __webpack_require__( - /*! ../internals/to-absolute-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var createProperty = __webpack_require__( - /*! ../internals/create-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var arrayMethodHasSpeciesSupport = __webpack_require__( - /*! ../internals/array-method-has-species-support */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-has-species-support.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice'); - var USES_TO_LENGTH = arrayMethodUsesToLength('slice', { - ACCESSORS: true, - 0: 0, - 1: 2 - }); - var SPECIES = wellKnownSymbol('species'); - var nativeSlice = [].slice; - var max = Math.max; // `Array.prototype.slice` method - // https://tc39.github.io/ecma262/#sec-array.prototype.slice - // fallback for not array-like ES3 strings and DOM objects - - $({ - target: 'Array', - proto: true, - forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH - }, { - slice: function slice(start, end) { - var O = toIndexedObject(this); - var length = toLength(O.length); - var k = toAbsoluteIndex(start, length); - var fin = toAbsoluteIndex(end === undefined ? length : end, length); // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible - - var Constructor, result, n; - - if (isArray(O)) { - Constructor = O.constructor; // cross-realm fallback - - if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) { - Constructor = undefined; - } else if (isObject(Constructor)) { - Constructor = Constructor[SPECIES]; - if (Constructor === null) Constructor = undefined; - } - - if (Constructor === Array || Constructor === undefined) { - return nativeSlice.call(O, k, fin); - } - } - - result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0)); - - for (n = 0; k < fin; k++, n++) { - if (k in O) createProperty(result, n, O[k]); - } - - result.length = n; - return result; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.some.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.some.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArraySomeJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $some = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js").some; - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var STRICT_METHOD = arrayMethodIsStrict('some'); - var USES_TO_LENGTH = arrayMethodUsesToLength('some'); // `Array.prototype.some` method - // https://tc39.github.io/ecma262/#sec-array.prototype.some - - $({ - target: 'Array', - proto: true, - forced: !STRICT_METHOD || !USES_TO_LENGTH - }, { - some: function some(callbackfn - /* , thisArg */ - ) { - return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.sort.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.sort.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArraySortJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var test = []; - var nativeSort = test.sort; // IE8- - - var FAILS_ON_UNDEFINED = fails(function () { - test.sort(undefined); - }); // V8 bug - - var FAILS_ON_NULL = fails(function () { - test.sort(null); - }); // Old WebKit - - var STRICT_METHOD = arrayMethodIsStrict('sort'); - var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD; // `Array.prototype.sort` method - // https://tc39.github.io/ecma262/#sec-array.prototype.sort - - $({ - target: 'Array', - proto: true, - forced: FORCED - }, { - sort: function sort(comparefn) { - return comparefn === undefined ? nativeSort.call(toObject(this)) : nativeSort.call(toObject(this), aFunction(comparefn)); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.splice.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.splice.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArraySpliceJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var toAbsoluteIndex = __webpack_require__( - /*! ../internals/to-absolute-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js"); - - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var arraySpeciesCreate = __webpack_require__( - /*! ../internals/array-species-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js"); - - var createProperty = __webpack_require__( - /*! ../internals/create-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property.js"); - - var arrayMethodHasSpeciesSupport = __webpack_require__( - /*! ../internals/array-method-has-species-support */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-has-species-support.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice'); - var USES_TO_LENGTH = arrayMethodUsesToLength('splice', { - ACCESSORS: true, - 0: 0, - 1: 2 - }); - var max = Math.max; - var min = Math.min; - var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; - var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded'; // `Array.prototype.splice` method - // https://tc39.github.io/ecma262/#sec-array.prototype.splice - // with adding support of @@species - - $({ - target: 'Array', - proto: true, - forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH - }, { - splice: function splice(start, deleteCount - /* , ...items */ - ) { - var O = toObject(this); - var len = toLength(O.length); - var actualStart = toAbsoluteIndex(start, len); - var argumentsLength = arguments.length; - var insertCount, actualDeleteCount, A, k, from, to; - - if (argumentsLength === 0) { - insertCount = actualDeleteCount = 0; - } else if (argumentsLength === 1) { - insertCount = 0; - actualDeleteCount = len - actualStart; - } else { - insertCount = argumentsLength - 2; - actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart); - } - - if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) { - throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED); - } - - A = arraySpeciesCreate(O, actualDeleteCount); - - for (k = 0; k < actualDeleteCount; k++) { - from = actualStart + k; - if (from in O) createProperty(A, k, O[from]); - } - - A.length = actualDeleteCount; - - if (insertCount < actualDeleteCount) { - for (k = actualStart; k < len - actualDeleteCount; k++) { - from = k + actualDeleteCount; - to = k + insertCount; - if (from in O) O[to] = O[from];else delete O[to]; - } - - for (k = len; k > len - actualDeleteCount + insertCount; k--) { - delete O[k - 1]; - } - } else if (insertCount > actualDeleteCount) { - for (k = len - actualDeleteCount; k > actualStart; k--) { - from = k + actualDeleteCount - 1; - to = k + insertCount - 1; - if (from in O) O[to] = O[from];else delete O[to]; - } - } - - for (k = 0; k < insertCount; k++) { - O[k + actualStart] = arguments[k + 2]; - } - - O.length = len - actualDeleteCount + insertCount; - return A; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.now.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.now.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsDateNowJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); // `Date.now` method - // https://tc39.github.io/ecma262/#sec-date.now - - - $({ - target: 'Date', - stat: true - }, { - now: function now() { - return new Date().getTime(); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-iso-string.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-iso-string.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsDateToIsoStringJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var toISOString = __webpack_require__( - /*! ../internals/date-to-iso-string */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/date-to-iso-string.js"); // `Date.prototype.toISOString` method - // https://tc39.github.io/ecma262/#sec-date.prototype.toisostring - // PhantomJS / old WebKit has a broken implementations - - - $({ - target: 'Date', - proto: true, - forced: Date.prototype.toISOString !== toISOString - }, { - toISOString: toISOString - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-json.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-json.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsDateToJsonJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - - var FORCED = fails(function () { - return new Date(NaN).toJSON() !== null || Date.prototype.toJSON.call({ - toISOString: function toISOString() { - return 1; - } - }) !== 1; - }); // `Date.prototype.toJSON` method - // https://tc39.github.io/ecma262/#sec-date.prototype.tojson - - $({ - target: 'Date', - proto: true, - forced: FORCED - }, { - // eslint-disable-next-line no-unused-vars - toJSON: function toJSON(key) { - var O = toObject(this); - var pv = toPrimitive(O); - return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString(); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-primitive.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-primitive.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsDateToPrimitiveJs(module, exports, __webpack_require__) { - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var dateToPrimitive = __webpack_require__( - /*! ../internals/date-to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/date-to-primitive.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); - var DatePrototype = Date.prototype; // `Date.prototype[@@toPrimitive]` method - // https://tc39.github.io/ecma262/#sec-date.prototype-@@toprimitive - - if (!(TO_PRIMITIVE in DatePrototype)) { - createNonEnumerableProperty(DatePrototype, TO_PRIMITIVE, dateToPrimitive); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-string.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-string.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsDateToStringJs(module, exports, __webpack_require__) { - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var DatePrototype = Date.prototype; - var INVALID_DATE = 'Invalid Date'; - var TO_STRING = 'toString'; - var nativeDateToString = DatePrototype[TO_STRING]; - var getTime = DatePrototype.getTime; // `Date.prototype.toString` method - // https://tc39.github.io/ecma262/#sec-date.prototype.tostring - - if (new Date(NaN) + '' != INVALID_DATE) { - redefine(DatePrototype, TO_STRING, function toString() { - var value = getTime.call(this); // eslint-disable-next-line no-self-compare - - return value === value ? nativeDateToString.call(this) : INVALID_DATE; - }); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.bind.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.bind.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsFunctionBindJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var bind = __webpack_require__( - /*! ../internals/function-bind */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind.js"); // `Function.prototype.bind` method - // https://tc39.github.io/ecma262/#sec-function.prototype.bind - - - $({ - target: 'Function', - proto: true - }, { - bind: bind - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.has-instance.js": - /*!*************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.has-instance.js ***! - \*************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsFunctionHasInstanceJs(module, exports, __webpack_require__) { - "use strict"; - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var HAS_INSTANCE = wellKnownSymbol('hasInstance'); - var FunctionPrototype = Function.prototype; // `Function.prototype[@@hasInstance]` method - // https://tc39.github.io/ecma262/#sec-function.prototype-@@hasinstance - - if (!(HAS_INSTANCE in FunctionPrototype)) { - definePropertyModule.f(FunctionPrototype, HAS_INSTANCE, { - value: function value(O) { - if (typeof this != 'function' || !isObject(O)) return false; - if (!isObject(this.prototype)) return O instanceof this; // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this: - - while (O = getPrototypeOf(O)) { - if (this.prototype === O) return true; - } - - return false; - } - }); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.name.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.name.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsFunctionNameJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; - - var FunctionPrototype = Function.prototype; - var FunctionPrototypeToString = FunctionPrototype.toString; - var nameRE = /^\s*function ([^ (]*)/; - var NAME = 'name'; // Function instances `.name` property - // https://tc39.github.io/ecma262/#sec-function-instances-name - - if (DESCRIPTORS && !(NAME in FunctionPrototype)) { - defineProperty(FunctionPrototype, NAME, { - configurable: true, - get: function get() { - try { - return FunctionPrototypeToString.call(this).match(nameRE)[1]; - } catch (error) { - return ''; - } - } - }); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.json.to-string-tag.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.json.to-string-tag.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsJsonToStringTagJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); // JSON[@@toStringTag] property - // https://tc39.github.io/ecma262/#sec-json-@@tostringtag - - - setToStringTag(global.JSON, 'JSON', true); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js": - /*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js ***! - \*******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMapJs(module, exports, __webpack_require__) { - "use strict"; - - var collection = __webpack_require__( - /*! ../internals/collection */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js"); - - var collectionStrong = __webpack_require__( - /*! ../internals/collection-strong */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js"); // `Map` constructor - // https://tc39.github.io/ecma262/#sec-map-objects - - - module.exports = collection('Map', function (init) { - return function Map() { - return init(this, arguments.length ? arguments[0] : undefined); - }; - }, collectionStrong); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.acosh.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.acosh.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathAcoshJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var log1p = __webpack_require__( - /*! ../internals/math-log1p */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-log1p.js"); - - var nativeAcosh = Math.acosh; - var log = Math.log; - var sqrt = Math.sqrt; - var LN2 = Math.LN2; - var FORCED = !nativeAcosh // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509 - || Math.floor(nativeAcosh(Number.MAX_VALUE)) != 710 // Tor Browser bug: Math.acosh(Infinity) -> NaN - || nativeAcosh(Infinity) != Infinity; // `Math.acosh` method - // https://tc39.github.io/ecma262/#sec-math.acosh - - $({ - target: 'Math', - stat: true, - forced: FORCED - }, { - acosh: function acosh(x) { - return (x = +x) < 1 ? NaN : x > 94906265.62425156 ? log(x) + LN2 : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1)); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.asinh.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.asinh.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathAsinhJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var nativeAsinh = Math.asinh; - var log = Math.log; - var sqrt = Math.sqrt; - - function asinh(x) { - return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : log(x + sqrt(x * x + 1)); - } // `Math.asinh` method - // https://tc39.github.io/ecma262/#sec-math.asinh - // Tor Browser bug: Math.asinh(0) -> -0 - - - $({ - target: 'Math', - stat: true, - forced: !(nativeAsinh && 1 / nativeAsinh(0) > 0) - }, { - asinh: asinh - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.atanh.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.atanh.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathAtanhJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var nativeAtanh = Math.atanh; - var log = Math.log; // `Math.atanh` method - // https://tc39.github.io/ecma262/#sec-math.atanh - // Tor Browser bug: Math.atanh(-0) -> 0 - - $({ - target: 'Math', - stat: true, - forced: !(nativeAtanh && 1 / nativeAtanh(-0) < 0) - }, { - atanh: function atanh(x) { - return (x = +x) == 0 ? x : log((1 + x) / (1 - x)) / 2; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.cbrt.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.cbrt.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathCbrtJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var sign = __webpack_require__( - /*! ../internals/math-sign */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-sign.js"); - - var abs = Math.abs; - var pow = Math.pow; // `Math.cbrt` method - // https://tc39.github.io/ecma262/#sec-math.cbrt - - $({ - target: 'Math', - stat: true - }, { - cbrt: function cbrt(x) { - return sign(x = +x) * pow(abs(x), 1 / 3); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.clz32.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.clz32.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathClz32Js(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var floor = Math.floor; - var log = Math.log; - var LOG2E = Math.LOG2E; // `Math.clz32` method - // https://tc39.github.io/ecma262/#sec-math.clz32 - - $({ - target: 'Math', - stat: true - }, { - clz32: function clz32(x) { - return (x >>>= 0) ? 31 - floor(log(x + 0.5) * LOG2E) : 32; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.cosh.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.cosh.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathCoshJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var expm1 = __webpack_require__( - /*! ../internals/math-expm1 */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-expm1.js"); - - var nativeCosh = Math.cosh; - var abs = Math.abs; - var E = Math.E; // `Math.cosh` method - // https://tc39.github.io/ecma262/#sec-math.cosh - - $({ - target: 'Math', - stat: true, - forced: !nativeCosh || nativeCosh(710) === Infinity - }, { - cosh: function cosh(x) { - var t = expm1(abs(x) - 1) + 1; - return (t + 1 / (t * E * E)) * (E / 2); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.expm1.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.expm1.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathExpm1Js(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var expm1 = __webpack_require__( - /*! ../internals/math-expm1 */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-expm1.js"); // `Math.expm1` method - // https://tc39.github.io/ecma262/#sec-math.expm1 - - - $({ - target: 'Math', - stat: true, - forced: expm1 != Math.expm1 - }, { - expm1: expm1 - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.fround.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.fround.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathFroundJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fround = __webpack_require__( - /*! ../internals/math-fround */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-fround.js"); // `Math.fround` method - // https://tc39.github.io/ecma262/#sec-math.fround - - - $({ - target: 'Math', - stat: true - }, { - fround: fround - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.hypot.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.hypot.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathHypotJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $hypot = Math.hypot; - var abs = Math.abs; - var sqrt = Math.sqrt; // Chrome 77 bug - // https://bugs.chromium.org/p/v8/issues/detail?id=9546 - - var BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity; // `Math.hypot` method - // https://tc39.github.io/ecma262/#sec-math.hypot - - $({ - target: 'Math', - stat: true, - forced: BUGGY - }, { - hypot: function hypot(value1, value2) { - // eslint-disable-line no-unused-vars - var sum = 0; - var i = 0; - var aLen = arguments.length; - var larg = 0; - var arg, div; - - while (i < aLen) { - arg = abs(arguments[i++]); - - if (larg < arg) { - div = larg / arg; - sum = sum * div * div + 1; - larg = arg; - } else if (arg > 0) { - div = arg / larg; - sum += div * div; - } else sum += arg; - } - - return larg === Infinity ? Infinity : larg * sqrt(sum); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.imul.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.imul.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathImulJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var nativeImul = Math.imul; - var FORCED = fails(function () { - return nativeImul(0xFFFFFFFF, 5) != -5 || nativeImul.length != 2; - }); // `Math.imul` method - // https://tc39.github.io/ecma262/#sec-math.imul - // some WebKit versions fails with big numbers, some has wrong arity - - $({ - target: 'Math', - stat: true, - forced: FORCED - }, { - imul: function imul(x, y) { - var UINT16 = 0xFFFF; - var xn = +x; - var yn = +y; - var xl = UINT16 & xn; - var yl = UINT16 & yn; - return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log10.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log10.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathLog10Js(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var log = Math.log; - var LOG10E = Math.LOG10E; // `Math.log10` method - // https://tc39.github.io/ecma262/#sec-math.log10 - - $({ - target: 'Math', - stat: true - }, { - log10: function log10(x) { - return log(x) * LOG10E; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log1p.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log1p.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathLog1pJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var log1p = __webpack_require__( - /*! ../internals/math-log1p */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-log1p.js"); // `Math.log1p` method - // https://tc39.github.io/ecma262/#sec-math.log1p - - - $({ - target: 'Math', - stat: true - }, { - log1p: log1p - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log2.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log2.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathLog2Js(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var log = Math.log; - var LN2 = Math.LN2; // `Math.log2` method - // https://tc39.github.io/ecma262/#sec-math.log2 - - $({ - target: 'Math', - stat: true - }, { - log2: function log2(x) { - return log(x) / LN2; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.sign.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.sign.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathSignJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var sign = __webpack_require__( - /*! ../internals/math-sign */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-sign.js"); // `Math.sign` method - // https://tc39.github.io/ecma262/#sec-math.sign - - - $({ - target: 'Math', - stat: true - }, { - sign: sign - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.sinh.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.sinh.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathSinhJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var expm1 = __webpack_require__( - /*! ../internals/math-expm1 */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-expm1.js"); - - var abs = Math.abs; - var exp = Math.exp; - var E = Math.E; - var FORCED = fails(function () { - return Math.sinh(-2e-17) != -2e-17; - }); // `Math.sinh` method - // https://tc39.github.io/ecma262/#sec-math.sinh - // V8 near Chromium 38 has a problem with very small numbers - - $({ - target: 'Math', - stat: true, - forced: FORCED - }, { - sinh: function sinh(x) { - return abs(x = +x) < 1 ? (expm1(x) - expm1(-x)) / 2 : (exp(x - 1) - exp(-x - 1)) * (E / 2); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.tanh.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.tanh.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathTanhJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var expm1 = __webpack_require__( - /*! ../internals/math-expm1 */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-expm1.js"); - - var exp = Math.exp; // `Math.tanh` method - // https://tc39.github.io/ecma262/#sec-math.tanh - - $({ - target: 'Math', - stat: true - }, { - tanh: function tanh(x) { - var a = expm1(x = +x); - var b = expm1(-x); - return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x)); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.to-string-tag.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.to-string-tag.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathToStringTagJs(module, exports, __webpack_require__) { - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); // Math[@@toStringTag] property - // https://tc39.github.io/ecma262/#sec-math-@@tostringtag - - - setToStringTag(Math, 'Math', true); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.trunc.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.trunc.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathTruncJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ceil = Math.ceil; - var floor = Math.floor; // `Math.trunc` method - // https://tc39.github.io/ecma262/#sec-math.trunc - - $({ - target: 'Math', - stat: true - }, { - trunc: function trunc(it) { - return (it > 0 ? floor : ceil)(it); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.constructor.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.constructor.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberConstructorJs(module, exports, __webpack_require__) { - "use strict"; - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var isForced = __webpack_require__( - /*! ../internals/is-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - - var inheritIfRequired = __webpack_require__( - /*! ../internals/inherit-if-required */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js"); - - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var create = __webpack_require__( - /*! ../internals/object-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); - - var getOwnPropertyNames = __webpack_require__( - /*! ../internals/object-get-own-property-names */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js").f; - - var getOwnPropertyDescriptor = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js").f; - - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; - - var trim = __webpack_require__( - /*! ../internals/string-trim */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim.js").trim; - - var NUMBER = 'Number'; - var NativeNumber = global[NUMBER]; - var NumberPrototype = NativeNumber.prototype; // Opera ~12 has broken Object#toString - - var BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER; // `ToNumber` abstract operation - // https://tc39.github.io/ecma262/#sec-tonumber - - var toNumber = function toNumber(argument) { - var it = toPrimitive(argument, false); - var first, third, radix, maxCode, digits, length, index, code; - - if (typeof it == 'string' && it.length > 2) { - it = trim(it); - first = it.charCodeAt(0); - - if (first === 43 || first === 45) { - third = it.charCodeAt(2); - if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix - } else if (first === 48) { - switch (it.charCodeAt(1)) { - case 66: - case 98: - radix = 2; - maxCode = 49; - break; - // fast equal of /^0b[01]+$/i - - case 79: - case 111: - radix = 8; - maxCode = 55; - break; - // fast equal of /^0o[0-7]+$/i - - default: - return +it; - } - - digits = it.slice(2); - length = digits.length; - - for (index = 0; index < length; index++) { - code = digits.charCodeAt(index); // parseInt parses a string to a first unavailable symbol - // but ToNumber should return NaN if a string contains unavailable symbols - - if (code < 48 || code > maxCode) return NaN; - } - - return parseInt(digits, radix); - } - } - - return +it; - }; // `Number` constructor - // https://tc39.github.io/ecma262/#sec-number-constructor - - - if (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) { - var NumberWrapper = function Number(value) { - var it = arguments.length < 1 ? 0 : value; - var dummy = this; - return dummy instanceof NumberWrapper // check on 1..constructor(foo) case - && (BROKEN_CLASSOF ? fails(function () { - NumberPrototype.valueOf.call(dummy); - }) : classof(dummy) != NUMBER) ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it); - }; - - for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : ( // ES3: - 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + // ES2015 (in case, if modules with ES2015 Number statics required before): - 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' + 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger').split(','), j = 0, key; keys.length > j; j++) { - if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) { - defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key)); - } - } - - NumberWrapper.prototype = NumberPrototype; - NumberPrototype.constructor = NumberWrapper; - redefine(global, NUMBER, NumberWrapper); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.epsilon.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.epsilon.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberEpsilonJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); // `Number.EPSILON` constant - // https://tc39.github.io/ecma262/#sec-number.epsilon - - - $({ - target: 'Number', - stat: true - }, { - EPSILON: Math.pow(2, -52) - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-finite.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-finite.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberIsFiniteJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var numberIsFinite = __webpack_require__( - /*! ../internals/number-is-finite */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-is-finite.js"); // `Number.isFinite` method - // https://tc39.github.io/ecma262/#sec-number.isfinite - - - $({ - target: 'Number', - stat: true - }, { - isFinite: numberIsFinite - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-integer.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-integer.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberIsIntegerJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var isInteger = __webpack_require__( - /*! ../internals/is-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-integer.js"); // `Number.isInteger` method - // https://tc39.github.io/ecma262/#sec-number.isinteger - - - $({ - target: 'Number', - stat: true - }, { - isInteger: isInteger - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-nan.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-nan.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberIsNanJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); // `Number.isNaN` method - // https://tc39.github.io/ecma262/#sec-number.isnan - - - $({ - target: 'Number', - stat: true - }, { - isNaN: function isNaN(number) { - // eslint-disable-next-line no-self-compare - return number != number; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-safe-integer.js": - /*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-safe-integer.js ***! - \**************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberIsSafeIntegerJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var isInteger = __webpack_require__( - /*! ../internals/is-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-integer.js"); - - var abs = Math.abs; // `Number.isSafeInteger` method - // https://tc39.github.io/ecma262/#sec-number.issafeinteger - - $({ - target: 'Number', - stat: true - }, { - isSafeInteger: function isSafeInteger(number) { - return isInteger(number) && abs(number) <= 0x1FFFFFFFFFFFFF; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.max-safe-integer.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.max-safe-integer.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberMaxSafeIntegerJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); // `Number.MAX_SAFE_INTEGER` constant - // https://tc39.github.io/ecma262/#sec-number.max_safe_integer - - - $({ - target: 'Number', - stat: true - }, { - MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.min-safe-integer.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.min-safe-integer.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberMinSafeIntegerJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); // `Number.MIN_SAFE_INTEGER` constant - // https://tc39.github.io/ecma262/#sec-number.min_safe_integer - - - $({ - target: 'Number', - stat: true - }, { - MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.parse-float.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.parse-float.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberParseFloatJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var parseFloat = __webpack_require__( - /*! ../internals/number-parse-float */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-float.js"); // `Number.parseFloat` method - // https://tc39.github.io/ecma262/#sec-number.parseFloat - - - $({ - target: 'Number', - stat: true, - forced: Number.parseFloat != parseFloat - }, { - parseFloat: parseFloat - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.parse-int.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.parse-int.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberParseIntJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var parseInt = __webpack_require__( - /*! ../internals/number-parse-int */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-int.js"); // `Number.parseInt` method - // https://tc39.github.io/ecma262/#sec-number.parseint - - - $({ - target: 'Number', - stat: true, - forced: Number.parseInt != parseInt - }, { - parseInt: parseInt - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.to-fixed.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.to-fixed.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberToFixedJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - - var thisNumberValue = __webpack_require__( - /*! ../internals/this-number-value */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/this-number-value.js"); - - var repeat = __webpack_require__( - /*! ../internals/string-repeat */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-repeat.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var nativeToFixed = 1.0.toFixed; - var floor = Math.floor; - - var pow = function pow(x, n, acc) { - return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc); - }; - - var log = function log(x) { - var n = 0; - var x2 = x; - - while (x2 >= 4096) { - n += 12; - x2 /= 4096; - } - - while (x2 >= 2) { - n += 1; - x2 /= 2; - } - - return n; - }; - - var FORCED = nativeToFixed && (0.00008.toFixed(3) !== '0.000' || 0.9.toFixed(0) !== '1' || 1.255.toFixed(2) !== '1.25' || 1000000000000000128.0.toFixed(0) !== '1000000000000000128') || !fails(function () { - // V8 ~ Android 4.3- - nativeToFixed.call({}); - }); // `Number.prototype.toFixed` method - // https://tc39.github.io/ecma262/#sec-number.prototype.tofixed - - $({ - target: 'Number', - proto: true, - forced: FORCED - }, { - // eslint-disable-next-line max-statements - toFixed: function toFixed(fractionDigits) { - var number = thisNumberValue(this); - var fractDigits = toInteger(fractionDigits); - var data = [0, 0, 0, 0, 0, 0]; - var sign = ''; - var result = '0'; - var e, z, j, k; - - var multiply = function multiply(n, c) { - var index = -1; - var c2 = c; - - while (++index < 6) { - c2 += n * data[index]; - data[index] = c2 % 1e7; - c2 = floor(c2 / 1e7); - } - }; - - var divide = function divide(n) { - var index = 6; - var c = 0; - - while (--index >= 0) { - c += data[index]; - data[index] = floor(c / n); - c = c % n * 1e7; - } - }; - - var dataToString = function dataToString() { - var index = 6; - var s = ''; - - while (--index >= 0) { - if (s !== '' || index === 0 || data[index] !== 0) { - var t = String(data[index]); - s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t; - } - } - - return s; - }; - - if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits'); // eslint-disable-next-line no-self-compare - - if (number != number) return 'NaN'; - if (number <= -1e21 || number >= 1e21) return String(number); - - if (number < 0) { - sign = '-'; - number = -number; - } - - if (number > 1e-21) { - e = log(number * pow(2, 69, 1)) - 69; - z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1); - z *= 0x10000000000000; - e = 52 - e; - - if (e > 0) { - multiply(0, z); - j = fractDigits; - - while (j >= 7) { - multiply(1e7, 0); - j -= 7; - } - - multiply(pow(10, j, 1), 0); - j = e - 1; - - while (j >= 23) { - divide(1 << 23); - j -= 23; - } - - divide(1 << j); - multiply(1, 1); - divide(2); - result = dataToString(); - } else { - multiply(0, z); - multiply(1 << -e, 0); - result = dataToString() + repeat.call('0', fractDigits); - } - } - - if (fractDigits > 0) { - k = result.length; - result = sign + (k <= fractDigits ? '0.' + repeat.call('0', fractDigits - k) + result : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits)); - } else { - result = sign + result; - } - - return result; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.to-precision.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.to-precision.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberToPrecisionJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var thisNumberValue = __webpack_require__( - /*! ../internals/this-number-value */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/this-number-value.js"); - - var nativeToPrecision = 1.0.toPrecision; - var FORCED = fails(function () { - // IE7- - return nativeToPrecision.call(1, undefined) !== '1'; - }) || !fails(function () { - // V8 ~ Android 4.3- - nativeToPrecision.call({}); - }); // `Number.prototype.toPrecision` method - // https://tc39.github.io/ecma262/#sec-number.prototype.toprecision - - $({ - target: 'Number', - proto: true, - forced: FORCED - }, { - toPrecision: function toPrecision(precision) { - return precision === undefined ? nativeToPrecision.call(thisNumberValue(this)) : nativeToPrecision.call(thisNumberValue(this), precision); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.assign.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.assign.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectAssignJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var assign = __webpack_require__( - /*! ../internals/object-assign */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-assign.js"); // `Object.assign` method - // https://tc39.github.io/ecma262/#sec-object.assign - - - $({ - target: 'Object', - stat: true, - forced: Object.assign !== assign - }, { - assign: assign - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.create.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.create.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectCreateJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var create = __webpack_require__( - /*! ../internals/object-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); // `Object.create` method - // https://tc39.github.io/ecma262/#sec-object.create - - - $({ - target: 'Object', - stat: true, - sham: !DESCRIPTORS - }, { - create: create - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.define-properties.js": - /*!****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.define-properties.js ***! - \****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectDefinePropertiesJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var defineProperties = __webpack_require__( - /*! ../internals/object-define-properties */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js"); // `Object.defineProperties` method - // https://tc39.github.io/ecma262/#sec-object.defineproperties - - - $({ - target: 'Object', - stat: true, - forced: !DESCRIPTORS, - sham: !DESCRIPTORS - }, { - defineProperties: defineProperties - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.define-property.js": - /*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.define-property.js ***! - \**************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectDefinePropertyJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var objectDefinePropertyModile = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); // `Object.defineProperty` method - // https://tc39.github.io/ecma262/#sec-object.defineproperty - - - $({ - target: 'Object', - stat: true, - forced: !DESCRIPTORS, - sham: !DESCRIPTORS - }, { - defineProperty: objectDefinePropertyModile.f - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.freeze.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.freeze.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectFreezeJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var FREEZING = __webpack_require__( - /*! ../internals/freezing */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var onFreeze = __webpack_require__( - /*! ../internals/internal-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js").onFreeze; - - var nativeFreeze = Object.freeze; - var FAILS_ON_PRIMITIVES = fails(function () { - nativeFreeze(1); - }); // `Object.freeze` method - // https://tc39.github.io/ecma262/#sec-object.freeze - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES, - sham: !FREEZING - }, { - freeze: function freeze(it) { - return nativeFreeze && isObject(it) ? nativeFreeze(onFreeze(it)) : it; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-own-property-descriptor.js": - /*!**************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-own-property-descriptor.js ***! - \**************************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectGetOwnPropertyDescriptorJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var nativeGetOwnPropertyDescriptor = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js").f; - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var FAILS_ON_PRIMITIVES = fails(function () { - nativeGetOwnPropertyDescriptor(1); - }); - var FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES; // `Object.getOwnPropertyDescriptor` method - // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor - - $({ - target: 'Object', - stat: true, - forced: FORCED, - sham: !DESCRIPTORS - }, { - getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) { - return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-own-property-names.js": - /*!*********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-own-property-names.js ***! - \*********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectGetOwnPropertyNamesJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var nativeGetOwnPropertyNames = __webpack_require__( - /*! ../internals/object-get-own-property-names-external */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names-external.js").f; - - var FAILS_ON_PRIMITIVES = fails(function () { - return !Object.getOwnPropertyNames(1); - }); // `Object.getOwnPropertyNames` method - // https://tc39.github.io/ecma262/#sec-object.getownpropertynames - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES - }, { - getOwnPropertyNames: nativeGetOwnPropertyNames - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-prototype-of.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-prototype-of.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectGetPrototypeOfJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var nativeGetPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var CORRECT_PROTOTYPE_GETTER = __webpack_require__( - /*! ../internals/correct-prototype-getter */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js"); - - var FAILS_ON_PRIMITIVES = fails(function () { - nativeGetPrototypeOf(1); - }); // `Object.getPrototypeOf` method - // https://tc39.github.io/ecma262/#sec-object.getprototypeof - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES, - sham: !CORRECT_PROTOTYPE_GETTER - }, { - getPrototypeOf: function getPrototypeOf(it) { - return nativeGetPrototypeOf(toObject(it)); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-extensible.js": - /*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-extensible.js ***! - \************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectIsExtensibleJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var nativeIsExtensible = Object.isExtensible; - var FAILS_ON_PRIMITIVES = fails(function () { - nativeIsExtensible(1); - }); // `Object.isExtensible` method - // https://tc39.github.io/ecma262/#sec-object.isextensible - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES - }, { - isExtensible: function isExtensible(it) { - return isObject(it) ? nativeIsExtensible ? nativeIsExtensible(it) : true : false; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-frozen.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-frozen.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectIsFrozenJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var nativeIsFrozen = Object.isFrozen; - var FAILS_ON_PRIMITIVES = fails(function () { - nativeIsFrozen(1); - }); // `Object.isFrozen` method - // https://tc39.github.io/ecma262/#sec-object.isfrozen - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES - }, { - isFrozen: function isFrozen(it) { - return isObject(it) ? nativeIsFrozen ? nativeIsFrozen(it) : false : true; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-sealed.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-sealed.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectIsSealedJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var nativeIsSealed = Object.isSealed; - var FAILS_ON_PRIMITIVES = fails(function () { - nativeIsSealed(1); - }); // `Object.isSealed` method - // https://tc39.github.io/ecma262/#sec-object.issealed - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES - }, { - isSealed: function isSealed(it) { - return isObject(it) ? nativeIsSealed ? nativeIsSealed(it) : false : true; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectIsJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var is = __webpack_require__( - /*! ../internals/same-value */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/same-value.js"); // `Object.is` method - // https://tc39.github.io/ecma262/#sec-object.is - - - $({ - target: 'Object', - stat: true - }, { - is: is - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.keys.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.keys.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectKeysJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var nativeKeys = __webpack_require__( - /*! ../internals/object-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var FAILS_ON_PRIMITIVES = fails(function () { - nativeKeys(1); - }); // `Object.keys` method - // https://tc39.github.io/ecma262/#sec-object.keys - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES - }, { - keys: function keys(it) { - return nativeKeys(toObject(it)); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.prevent-extensions.js": - /*!*****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.prevent-extensions.js ***! - \*****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectPreventExtensionsJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var onFreeze = __webpack_require__( - /*! ../internals/internal-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js").onFreeze; - - var FREEZING = __webpack_require__( - /*! ../internals/freezing */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var nativePreventExtensions = Object.preventExtensions; - var FAILS_ON_PRIMITIVES = fails(function () { - nativePreventExtensions(1); - }); // `Object.preventExtensions` method - // https://tc39.github.io/ecma262/#sec-object.preventextensions - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES, - sham: !FREEZING - }, { - preventExtensions: function preventExtensions(it) { - return nativePreventExtensions && isObject(it) ? nativePreventExtensions(onFreeze(it)) : it; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.seal.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.seal.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectSealJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var onFreeze = __webpack_require__( - /*! ../internals/internal-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js").onFreeze; - - var FREEZING = __webpack_require__( - /*! ../internals/freezing */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var nativeSeal = Object.seal; - var FAILS_ON_PRIMITIVES = fails(function () { - nativeSeal(1); - }); // `Object.seal` method - // https://tc39.github.io/ecma262/#sec-object.seal - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES, - sham: !FREEZING - }, { - seal: function seal(it) { - return nativeSeal && isObject(it) ? nativeSeal(onFreeze(it)) : it; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.set-prototype-of.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.set-prototype-of.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectSetPrototypeOfJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var setPrototypeOf = __webpack_require__( - /*! ../internals/object-set-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js"); // `Object.setPrototypeOf` method - // https://tc39.github.io/ecma262/#sec-object.setprototypeof - - - $({ - target: 'Object', - stat: true - }, { - setPrototypeOf: setPrototypeOf - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.to-string.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.to-string.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectToStringJs(module, exports, __webpack_require__) { - var TO_STRING_TAG_SUPPORT = __webpack_require__( - /*! ../internals/to-string-tag-support */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var toString = __webpack_require__( - /*! ../internals/object-to-string */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-to-string.js"); // `Object.prototype.toString` method - // https://tc39.github.io/ecma262/#sec-object.prototype.tostring - - - if (!TO_STRING_TAG_SUPPORT) { - redefine(Object.prototype, 'toString', toString, { - unsafe: true - }); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.parse-float.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.parse-float.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsParseFloatJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var parseFloatImplementation = __webpack_require__( - /*! ../internals/number-parse-float */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-float.js"); // `parseFloat` method - // https://tc39.github.io/ecma262/#sec-parsefloat-string - - - $({ - global: true, - forced: parseFloat != parseFloatImplementation - }, { - parseFloat: parseFloatImplementation - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.parse-int.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.parse-int.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsParseIntJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var parseIntImplementation = __webpack_require__( - /*! ../internals/number-parse-int */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-int.js"); // `parseInt` method - // https://tc39.github.io/ecma262/#sec-parseint-string-radix - - - $({ - global: true, - forced: parseInt != parseIntImplementation - }, { - parseInt: parseIntImplementation - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.promise.js": - /*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.promise.js ***! - \***********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsPromiseJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - var NativePromise = __webpack_require__( - /*! ../internals/native-promise-constructor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-promise-constructor.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var redefineAll = __webpack_require__( - /*! ../internals/redefine-all */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js"); - - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); - - var setSpecies = __webpack_require__( - /*! ../internals/set-species */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - - var anInstance = __webpack_require__( - /*! ../internals/an-instance */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js"); - - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - - var inspectSource = __webpack_require__( - /*! ../internals/inspect-source */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js"); - - var iterate = __webpack_require__( - /*! ../internals/iterate */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); - - var checkCorrectnessOfIteration = __webpack_require__( - /*! ../internals/check-correctness-of-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js"); - - var speciesConstructor = __webpack_require__( - /*! ../internals/species-constructor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/species-constructor.js"); - - var task = __webpack_require__( - /*! ../internals/task */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/task.js").set; - - var microtask = __webpack_require__( - /*! ../internals/microtask */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/microtask.js"); - - var promiseResolve = __webpack_require__( - /*! ../internals/promise-resolve */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/promise-resolve.js"); - - var hostReportErrors = __webpack_require__( - /*! ../internals/host-report-errors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/host-report-errors.js"); - - var newPromiseCapabilityModule = __webpack_require__( - /*! ../internals/new-promise-capability */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/new-promise-capability.js"); - - var perform = __webpack_require__( - /*! ../internals/perform */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/perform.js"); - - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - - var isForced = __webpack_require__( - /*! ../internals/is-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var V8_VERSION = __webpack_require__( - /*! ../internals/engine-v8-version */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-v8-version.js"); - - var SPECIES = wellKnownSymbol('species'); - var PROMISE = 'Promise'; - var getInternalState = InternalStateModule.get; - var setInternalState = InternalStateModule.set; - var getInternalPromiseState = InternalStateModule.getterFor(PROMISE); - var PromiseConstructor = NativePromise; - var TypeError = global.TypeError; - var document = global.document; - var process = global.process; - var $fetch = getBuiltIn('fetch'); - var newPromiseCapability = newPromiseCapabilityModule.f; - var newGenericPromiseCapability = newPromiseCapability; - var IS_NODE = classof(process) == 'process'; - var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent); - var UNHANDLED_REJECTION = 'unhandledrejection'; - var REJECTION_HANDLED = 'rejectionhandled'; - var PENDING = 0; - var FULFILLED = 1; - var REJECTED = 2; - var HANDLED = 1; - var UNHANDLED = 2; - var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; - var FORCED = isForced(PROMISE, function () { - var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor); - - if (!GLOBAL_CORE_JS_PROMISE) { - // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables - // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 - // We can't detect it synchronously, so just check versions - if (V8_VERSION === 66) return true; // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test - - if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true; - } // We need Promise#finally in the pure version for preventing prototype pollution - - - if (IS_PURE && !PromiseConstructor.prototype['finally']) return true; // We can't use @@species feature detection in V8 since it causes - // deoptimization and performance degradation - // https://github.com/zloirock/core-js/issues/679 - - if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false; // Detect correctness of subclassing with @@species support - - var promise = PromiseConstructor.resolve(1); - - var FakePromise = function FakePromise(exec) { - exec(function () { - /* empty */ - }, function () { - /* empty */ - }); - }; - - var constructor = promise.constructor = {}; - constructor[SPECIES] = FakePromise; - return !(promise.then(function () { - /* empty */ - }) instanceof FakePromise); - }); - var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) { - PromiseConstructor.all(iterable)['catch'](function () { - /* empty */ - }); - }); // helpers - - var isThenable = function isThenable(it) { - var then; - return isObject(it) && typeof (then = it.then) == 'function' ? then : false; - }; - - var notify = function notify(promise, state, isReject) { - if (state.notified) return; - state.notified = true; - var chain = state.reactions; - microtask(function () { - var value = state.value; - var ok = state.state == FULFILLED; - var index = 0; // variable length - can't use forEach - - while (chain.length > index) { - var reaction = chain[index++]; - var handler = ok ? reaction.ok : reaction.fail; - var resolve = reaction.resolve; - var reject = reaction.reject; - var domain = reaction.domain; - var result, then, exited; - - try { - if (handler) { - if (!ok) { - if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state); - state.rejection = HANDLED; - } - - if (handler === true) result = value;else { - if (domain) domain.enter(); - result = handler(value); // can throw - - if (domain) { - domain.exit(); - exited = true; - } - } - - if (result === reaction.promise) { - reject(TypeError('Promise-chain cycle')); - } else if (then = isThenable(result)) { - then.call(result, resolve, reject); - } else resolve(result); - } else reject(value); - } catch (error) { - if (domain && !exited) domain.exit(); - reject(error); - } - } - - state.reactions = []; - state.notified = false; - if (isReject && !state.rejection) onUnhandled(promise, state); - }); - }; - - var dispatchEvent = function dispatchEvent(name, promise, reason) { - var event, handler; - - if (DISPATCH_EVENT) { - event = document.createEvent('Event'); - event.promise = promise; - event.reason = reason; - event.initEvent(name, false, true); - global.dispatchEvent(event); - } else event = { - promise: promise, - reason: reason - }; - - if (handler = global['on' + name]) handler(event);else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason); - }; - - var onUnhandled = function onUnhandled(promise, state) { - task.call(global, function () { - var value = state.value; - var IS_UNHANDLED = isUnhandled(state); - var result; - - if (IS_UNHANDLED) { - result = perform(function () { - if (IS_NODE) { - process.emit('unhandledRejection', value, promise); - } else dispatchEvent(UNHANDLED_REJECTION, promise, value); - }); // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should - - state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED; - if (result.error) throw result.value; - } - }); - }; - - var isUnhandled = function isUnhandled(state) { - return state.rejection !== HANDLED && !state.parent; - }; - - var onHandleUnhandled = function onHandleUnhandled(promise, state) { - task.call(global, function () { - if (IS_NODE) { - process.emit('rejectionHandled', promise); - } else dispatchEvent(REJECTION_HANDLED, promise, state.value); - }); - }; - - var bind = function bind(fn, promise, state, unwrap) { - return function (value) { - fn(promise, state, value, unwrap); - }; - }; - - var internalReject = function internalReject(promise, state, value, unwrap) { - if (state.done) return; - state.done = true; - if (unwrap) state = unwrap; - state.value = value; - state.state = REJECTED; - notify(promise, state, true); - }; - - var internalResolve = function internalResolve(promise, state, value, unwrap) { - if (state.done) return; - state.done = true; - if (unwrap) state = unwrap; - - try { - if (promise === value) throw TypeError("Promise can't be resolved itself"); - var then = isThenable(value); - - if (then) { - microtask(function () { - var wrapper = { - done: false - }; - - try { - then.call(value, bind(internalResolve, promise, wrapper, state), bind(internalReject, promise, wrapper, state)); - } catch (error) { - internalReject(promise, wrapper, error, state); - } - }); - } else { - state.value = value; - state.state = FULFILLED; - notify(promise, state, false); - } - } catch (error) { - internalReject(promise, { - done: false - }, error, state); - } - }; // constructor polyfill - - - if (FORCED) { - // 25.4.3.1 Promise(executor) - PromiseConstructor = function Promise(executor) { - anInstance(this, PromiseConstructor, PROMISE); - aFunction(executor); - Internal.call(this); - var state = getInternalState(this); - - try { - executor(bind(internalResolve, this, state), bind(internalReject, this, state)); - } catch (error) { - internalReject(this, state, error); - } - }; // eslint-disable-next-line no-unused-vars - - - Internal = function Promise(executor) { - setInternalState(this, { - type: PROMISE, - done: false, - notified: false, - parent: false, - reactions: [], - rejection: false, - state: PENDING, - value: undefined - }); - }; - - Internal.prototype = redefineAll(PromiseConstructor.prototype, { - // `Promise.prototype.then` method - // https://tc39.github.io/ecma262/#sec-promise.prototype.then - then: function then(onFulfilled, onRejected) { - var state = getInternalPromiseState(this); - var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor)); - reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; - reaction.fail = typeof onRejected == 'function' && onRejected; - reaction.domain = IS_NODE ? process.domain : undefined; - state.parent = true; - state.reactions.push(reaction); - if (state.state != PENDING) notify(this, state, false); - return reaction.promise; - }, - // `Promise.prototype.catch` method - // https://tc39.github.io/ecma262/#sec-promise.prototype.catch - 'catch': function _catch(onRejected) { - return this.then(undefined, onRejected); - } - }); - - OwnPromiseCapability = function OwnPromiseCapability() { - var promise = new Internal(); - var state = getInternalState(promise); - this.promise = promise; - this.resolve = bind(internalResolve, promise, state); - this.reject = bind(internalReject, promise, state); - }; - - newPromiseCapabilityModule.f = newPromiseCapability = function newPromiseCapability(C) { - return C === PromiseConstructor || C === PromiseWrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C); - }; - - if (!IS_PURE && typeof NativePromise == 'function') { - nativeThen = NativePromise.prototype.then; // wrap native Promise#then for native async functions - - redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) { - var that = this; - return new PromiseConstructor(function (resolve, reject) { - nativeThen.call(that, resolve, reject); - }).then(onFulfilled, onRejected); // https://github.com/zloirock/core-js/issues/640 - }, { - unsafe: true - }); // wrap fetch result - - if (typeof $fetch == 'function') $({ - global: true, - enumerable: true, - forced: true - }, { - // eslint-disable-next-line no-unused-vars - fetch: function fetch(input - /* , init */ - ) { - return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments)); - } - }); - } - } - - $({ - global: true, - wrap: true, - forced: FORCED - }, { - Promise: PromiseConstructor - }); - setToStringTag(PromiseConstructor, PROMISE, false, true); - setSpecies(PROMISE); - PromiseWrapper = getBuiltIn(PROMISE); // statics - - $({ - target: PROMISE, - stat: true, - forced: FORCED - }, { - // `Promise.reject` method - // https://tc39.github.io/ecma262/#sec-promise.reject - reject: function reject(r) { - var capability = newPromiseCapability(this); - capability.reject.call(undefined, r); - return capability.promise; - } - }); - $({ - target: PROMISE, - stat: true, - forced: IS_PURE || FORCED - }, { - // `Promise.resolve` method - // https://tc39.github.io/ecma262/#sec-promise.resolve - resolve: function resolve(x) { - return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x); - } - }); - $({ - target: PROMISE, - stat: true, - forced: INCORRECT_ITERATION - }, { - // `Promise.all` method - // https://tc39.github.io/ecma262/#sec-promise.all - all: function all(iterable) { - var C = this; - var capability = newPromiseCapability(C); - var resolve = capability.resolve; - var reject = capability.reject; - var result = perform(function () { - var $promiseResolve = aFunction(C.resolve); - var values = []; - var counter = 0; - var remaining = 1; - iterate(iterable, function (promise) { - var index = counter++; - var alreadyCalled = false; - values.push(undefined); - remaining++; - $promiseResolve.call(C, promise).then(function (value) { - if (alreadyCalled) return; - alreadyCalled = true; - values[index] = value; - --remaining || resolve(values); - }, reject); - }); - --remaining || resolve(values); - }); - if (result.error) reject(result.value); - return capability.promise; - }, - // `Promise.race` method - // https://tc39.github.io/ecma262/#sec-promise.race - race: function race(iterable) { - var C = this; - var capability = newPromiseCapability(C); - var reject = capability.reject; - var result = perform(function () { - var $promiseResolve = aFunction(C.resolve); - iterate(iterable, function (promise) { - $promiseResolve.call(C, promise).then(capability.resolve, reject); - }); - }); - if (result.error) reject(result.value); - return capability.promise; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.apply.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.apply.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectApplyJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var nativeApply = getBuiltIn('Reflect', 'apply'); - var functionApply = Function.apply; // MS Edge argumentsList argument is optional - - var OPTIONAL_ARGUMENTS_LIST = !fails(function () { - nativeApply(function () { - /* empty */ - }); - }); // `Reflect.apply` method - // https://tc39.github.io/ecma262/#sec-reflect.apply - - $({ - target: 'Reflect', - stat: true, - forced: OPTIONAL_ARGUMENTS_LIST - }, { - apply: function apply(target, thisArgument, argumentsList) { - aFunction(target); - anObject(argumentsList); - return nativeApply ? nativeApply(target, thisArgument, argumentsList) : functionApply.call(target, thisArgument, argumentsList); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.construct.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.construct.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectConstructJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var create = __webpack_require__( - /*! ../internals/object-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); - - var bind = __webpack_require__( - /*! ../internals/function-bind */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var nativeConstruct = getBuiltIn('Reflect', 'construct'); // `Reflect.construct` method - // https://tc39.github.io/ecma262/#sec-reflect.construct - // MS Edge supports only 2 arguments and argumentsList argument is optional - // FF Nightly sets third argument as `new.target`, but does not create `this` from it - - var NEW_TARGET_BUG = fails(function () { - function F() { - /* empty */ - } - - return !(nativeConstruct(function () { - /* empty */ - }, [], F) instanceof F); - }); - var ARGS_BUG = !fails(function () { - nativeConstruct(function () { - /* empty */ - }); - }); - var FORCED = NEW_TARGET_BUG || ARGS_BUG; - $({ - target: 'Reflect', - stat: true, - forced: FORCED, - sham: FORCED - }, { - construct: function construct(Target, args - /* , newTarget */ - ) { - aFunction(Target); - anObject(args); - var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]); - if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget); - - if (Target == newTarget) { - // w/o altered newTarget, optimization for 0-4 arguments - switch (args.length) { - case 0: - return new Target(); - - case 1: - return new Target(args[0]); - - case 2: - return new Target(args[0], args[1]); - - case 3: - return new Target(args[0], args[1], args[2]); - - case 4: - return new Target(args[0], args[1], args[2], args[3]); - } // w/o altered newTarget, lot of arguments case - - - var $args = [null]; - $args.push.apply($args, args); - return new (bind.apply(Target, $args))(); - } // with altered newTarget, not support built-in constructors - - - var proto = newTarget.prototype; - var instance = create(isObject(proto) ? proto : Object.prototype); - var result = Function.apply.call(Target, instance, args); - return isObject(result) ? result : instance; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.define-property.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.define-property.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectDefinePropertyJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); // MS Edge has broken Reflect.defineProperty - throwing instead of returning false - - - var ERROR_INSTEAD_OF_FALSE = fails(function () { - // eslint-disable-next-line no-undef - Reflect.defineProperty(definePropertyModule.f({}, 1, { - value: 1 - }), 1, { - value: 2 - }); - }); // `Reflect.defineProperty` method - // https://tc39.github.io/ecma262/#sec-reflect.defineproperty - - $({ - target: 'Reflect', - stat: true, - forced: ERROR_INSTEAD_OF_FALSE, - sham: !DESCRIPTORS - }, { - defineProperty: function defineProperty(target, propertyKey, attributes) { - anObject(target); - var key = toPrimitive(propertyKey, true); - anObject(attributes); - - try { - definePropertyModule.f(target, key, attributes); - return true; - } catch (error) { - return false; - } - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.delete-property.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.delete-property.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectDeletePropertyJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var getOwnPropertyDescriptor = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js").f; // `Reflect.deleteProperty` method - // https://tc39.github.io/ecma262/#sec-reflect.deleteproperty - - - $({ - target: 'Reflect', - stat: true - }, { - deleteProperty: function deleteProperty(target, propertyKey) { - var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey); - return descriptor && !descriptor.configurable ? false : delete target[propertyKey]; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js": - /*!***************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js ***! - \***************************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectGetOwnPropertyDescriptorJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var getOwnPropertyDescriptorModule = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js"); // `Reflect.getOwnPropertyDescriptor` method - // https://tc39.github.io/ecma262/#sec-reflect.getownpropertydescriptor - - - $({ - target: 'Reflect', - stat: true, - sham: !DESCRIPTORS - }, { - getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) { - return getOwnPropertyDescriptorModule.f(anObject(target), propertyKey); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get-prototype-of.js": - /*!****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get-prototype-of.js ***! - \****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectGetPrototypeOfJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var objectGetPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var CORRECT_PROTOTYPE_GETTER = __webpack_require__( - /*! ../internals/correct-prototype-getter */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js"); // `Reflect.getPrototypeOf` method - // https://tc39.github.io/ecma262/#sec-reflect.getprototypeof - - - $({ - target: 'Reflect', - stat: true, - sham: !CORRECT_PROTOTYPE_GETTER - }, { - getPrototypeOf: function getPrototypeOf(target) { - return objectGetPrototypeOf(anObject(target)); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectGetJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var getOwnPropertyDescriptorModule = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js"); - - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); // `Reflect.get` method - // https://tc39.github.io/ecma262/#sec-reflect.get - - - function get(target, propertyKey - /* , receiver */ - ) { - var receiver = arguments.length < 3 ? target : arguments[2]; - var descriptor, prototype; - if (anObject(target) === receiver) return target[propertyKey]; - if (descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey)) return has(descriptor, 'value') ? descriptor.value : descriptor.get === undefined ? undefined : descriptor.get.call(receiver); - if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver); - } - - $({ - target: 'Reflect', - stat: true - }, { - get: get - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.has.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.has.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectHasJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); // `Reflect.has` method - // https://tc39.github.io/ecma262/#sec-reflect.has - - - $({ - target: 'Reflect', - stat: true - }, { - has: function has(target, propertyKey) { - return propertyKey in target; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.is-extensible.js": - /*!*************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.is-extensible.js ***! - \*************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectIsExtensibleJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var objectIsExtensible = Object.isExtensible; // `Reflect.isExtensible` method - // https://tc39.github.io/ecma262/#sec-reflect.isextensible - - $({ - target: 'Reflect', - stat: true - }, { - isExtensible: function isExtensible(target) { - anObject(target); - return objectIsExtensible ? objectIsExtensible(target) : true; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.own-keys.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.own-keys.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectOwnKeysJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ownKeys = __webpack_require__( - /*! ../internals/own-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js"); // `Reflect.ownKeys` method - // https://tc39.github.io/ecma262/#sec-reflect.ownkeys - - - $({ - target: 'Reflect', - stat: true - }, { - ownKeys: ownKeys - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.prevent-extensions.js": - /*!******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.prevent-extensions.js ***! - \******************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectPreventExtensionsJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var FREEZING = __webpack_require__( - /*! ../internals/freezing */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js"); // `Reflect.preventExtensions` method - // https://tc39.github.io/ecma262/#sec-reflect.preventextensions - - - $({ - target: 'Reflect', - stat: true, - sham: !FREEZING - }, { - preventExtensions: function preventExtensions(target) { - anObject(target); - - try { - var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions'); - if (objectPreventExtensions) objectPreventExtensions(target); - return true; - } catch (error) { - return false; - } - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.set-prototype-of.js": - /*!****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.set-prototype-of.js ***! - \****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectSetPrototypeOfJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var aPossiblePrototype = __webpack_require__( - /*! ../internals/a-possible-prototype */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js"); - - var objectSetPrototypeOf = __webpack_require__( - /*! ../internals/object-set-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js"); // `Reflect.setPrototypeOf` method - // https://tc39.github.io/ecma262/#sec-reflect.setprototypeof - - - if (objectSetPrototypeOf) $({ - target: 'Reflect', - stat: true - }, { - setPrototypeOf: function setPrototypeOf(target, proto) { - anObject(target); - aPossiblePrototype(proto); - - try { - objectSetPrototypeOf(target, proto); - return true; - } catch (error) { - return false; - } - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.set.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.set.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectSetJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var getOwnPropertyDescriptorModule = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js"); - - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); // `Reflect.set` method - // https://tc39.github.io/ecma262/#sec-reflect.set - - - function set(target, propertyKey, V - /* , receiver */ - ) { - var receiver = arguments.length < 4 ? target : arguments[3]; - var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey); - var existingDescriptor, prototype; - - if (!ownDescriptor) { - if (isObject(prototype = getPrototypeOf(target))) { - return set(prototype, propertyKey, V, receiver); - } - - ownDescriptor = createPropertyDescriptor(0); - } - - if (has(ownDescriptor, 'value')) { - if (ownDescriptor.writable === false || !isObject(receiver)) return false; - - if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) { - if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false; - existingDescriptor.value = V; - definePropertyModule.f(receiver, propertyKey, existingDescriptor); - } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V)); - - return true; - } - - return ownDescriptor.set === undefined ? false : (ownDescriptor.set.call(receiver, V), true); - } // MS Edge 17-18 Reflect.set allows setting the property to object - // with non-writable property on the prototype - - - var MS_EDGE_BUG = fails(function () { - var object = definePropertyModule.f({}, 'a', { - configurable: true - }); // eslint-disable-next-line no-undef - - return Reflect.set(getPrototypeOf(object), 'a', 1, object) !== false; - }); - $({ - target: 'Reflect', - stat: true, - forced: MS_EDGE_BUG - }, { - set: set - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.constructor.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.constructor.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsRegexpConstructorJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var isForced = __webpack_require__( - /*! ../internals/is-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js"); - - var inheritIfRequired = __webpack_require__( - /*! ../internals/inherit-if-required */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js"); - - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; - - var getOwnPropertyNames = __webpack_require__( - /*! ../internals/object-get-own-property-names */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js").f; - - var isRegExp = __webpack_require__( - /*! ../internals/is-regexp */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-regexp.js"); - - var getFlags = __webpack_require__( - /*! ../internals/regexp-flags */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-flags.js"); - - var stickyHelpers = __webpack_require__( - /*! ../internals/regexp-sticky-helpers */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-sticky-helpers.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var setInternalState = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js").set; - - var setSpecies = __webpack_require__( - /*! ../internals/set-species */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var MATCH = wellKnownSymbol('match'); - var NativeRegExp = global.RegExp; - var RegExpPrototype = NativeRegExp.prototype; - var re1 = /a/g; - var re2 = /a/g; // "new" should create a new object, old webkit bug - - var CORRECT_NEW = new NativeRegExp(re1) !== re1; - var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y; - var FORCED = DESCRIPTORS && isForced('RegExp', !CORRECT_NEW || UNSUPPORTED_Y || fails(function () { - re2[MATCH] = false; // RegExp constructor can alter flags and IsRegExp works correct with @@match - - return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i'; - })); // `RegExp` constructor - // https://tc39.github.io/ecma262/#sec-regexp-constructor - - if (FORCED) { - var RegExpWrapper = function RegExp(pattern, flags) { - var thisIsRegExp = this instanceof RegExpWrapper; - var patternIsRegExp = isRegExp(pattern); - var flagsAreUndefined = flags === undefined; - var sticky; - - if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) { - return pattern; - } - - if (CORRECT_NEW) { - if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source; - } else if (pattern instanceof RegExpWrapper) { - if (flagsAreUndefined) flags = getFlags.call(pattern); - pattern = pattern.source; - } - - if (UNSUPPORTED_Y) { - sticky = !!flags && flags.indexOf('y') > -1; - if (sticky) flags = flags.replace(/y/g, ''); - } - - var result = inheritIfRequired(CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper); - if (UNSUPPORTED_Y && sticky) setInternalState(result, { - sticky: sticky - }); - return result; - }; - - var proxy = function proxy(key) { - key in RegExpWrapper || defineProperty(RegExpWrapper, key, { - configurable: true, - get: function get() { - return NativeRegExp[key]; - }, - set: function set(it) { - NativeRegExp[key] = it; - } - }); - }; - - var keys = getOwnPropertyNames(NativeRegExp); - var index = 0; - - while (keys.length > index) { - proxy(keys[index++]); - } - - RegExpPrototype.constructor = RegExpWrapper; - RegExpWrapper.prototype = RegExpPrototype; - redefine(global, 'RegExp', RegExpWrapper); - } // https://tc39.github.io/ecma262/#sec-get-regexp-@@species - - - setSpecies('RegExp'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.exec.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.exec.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsRegexpExecJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var exec = __webpack_require__( - /*! ../internals/regexp-exec */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec.js"); - - $({ - target: 'RegExp', - proto: true, - forced: /./.exec !== exec - }, { - exec: exec - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.flags.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.flags.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsRegexpFlagsJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var objectDefinePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var regExpFlags = __webpack_require__( - /*! ../internals/regexp-flags */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-flags.js"); - - var UNSUPPORTED_Y = __webpack_require__( - /*! ../internals/regexp-sticky-helpers */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-sticky-helpers.js").UNSUPPORTED_Y; // `RegExp.prototype.flags` getter - // https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags - - - if (DESCRIPTORS && (/./g.flags != 'g' || UNSUPPORTED_Y)) { - objectDefinePropertyModule.f(RegExp.prototype, 'flags', { - configurable: true, - get: regExpFlags - }); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.to-string.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.to-string.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsRegexpToStringJs(module, exports, __webpack_require__) { - "use strict"; - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var flags = __webpack_require__( - /*! ../internals/regexp-flags */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-flags.js"); - - var TO_STRING = 'toString'; - var RegExpPrototype = RegExp.prototype; - var nativeToString = RegExpPrototype[TO_STRING]; - var NOT_GENERIC = fails(function () { - return nativeToString.call({ - source: 'a', - flags: 'b' - }) != '/a/b'; - }); // FF44- RegExp#toString has a wrong name - - var INCORRECT_NAME = nativeToString.name != TO_STRING; // `RegExp.prototype.toString` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring - - if (NOT_GENERIC || INCORRECT_NAME) { - redefine(RegExp.prototype, TO_STRING, function toString() { - var R = anObject(this); - var p = String(R.source); - var rf = R.flags; - var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf); - return '/' + p + '/' + f; - }, { - unsafe: true - }); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js": - /*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js ***! - \*******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSetJs(module, exports, __webpack_require__) { - "use strict"; - - var collection = __webpack_require__( - /*! ../internals/collection */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js"); - - var collectionStrong = __webpack_require__( - /*! ../internals/collection-strong */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js"); // `Set` constructor - // https://tc39.github.io/ecma262/#sec-set-objects - - - module.exports = collection('Set', function (init) { - return function Set() { - return init(this, arguments.length ? arguments[0] : undefined); - }; - }, collectionStrong); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.anchor.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.anchor.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringAnchorJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.anchor` method - // https://tc39.github.io/ecma262/#sec-string.prototype.anchor - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('anchor') - }, { - anchor: function anchor(name) { - return createHTML(this, 'a', 'name', name); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.big.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.big.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringBigJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.big` method - // https://tc39.github.io/ecma262/#sec-string.prototype.big - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('big') - }, { - big: function big() { - return createHTML(this, 'big', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.blink.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.blink.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringBlinkJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.blink` method - // https://tc39.github.io/ecma262/#sec-string.prototype.blink - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('blink') - }, { - blink: function blink() { - return createHTML(this, 'blink', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.bold.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.bold.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringBoldJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.bold` method - // https://tc39.github.io/ecma262/#sec-string.prototype.bold - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('bold') - }, { - bold: function bold() { - return createHTML(this, 'b', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.code-point-at.js": - /*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.code-point-at.js ***! - \************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringCodePointAtJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var codeAt = __webpack_require__( - /*! ../internals/string-multibyte */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-multibyte.js").codeAt; // `String.prototype.codePointAt` method - // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat - - - $({ - target: 'String', - proto: true - }, { - codePointAt: function codePointAt(pos) { - return codeAt(this, pos); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.ends-with.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.ends-with.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringEndsWithJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var getOwnPropertyDescriptor = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js").f; - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var notARegExp = __webpack_require__( - /*! ../internals/not-a-regexp */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/not-a-regexp.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var correctIsRegExpLogic = __webpack_require__( - /*! ../internals/correct-is-regexp-logic */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-is-regexp-logic.js"); - - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); - - var nativeEndsWith = ''.endsWith; - var min = Math.min; - var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith'); // https://github.com/zloirock/core-js/pull/702 - - var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () { - var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith'); - return descriptor && !descriptor.writable; - }(); // `String.prototype.endsWith` method - // https://tc39.github.io/ecma262/#sec-string.prototype.endswith - - $({ - target: 'String', - proto: true, - forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC - }, { - endsWith: function endsWith(searchString - /* , endPosition = @length */ - ) { - var that = String(requireObjectCoercible(this)); - notARegExp(searchString); - var endPosition = arguments.length > 1 ? arguments[1] : undefined; - var len = toLength(that.length); - var end = endPosition === undefined ? len : min(toLength(endPosition), len); - var search = String(searchString); - return nativeEndsWith ? nativeEndsWith.call(that, search, end) : that.slice(end - search.length, end) === search; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fixed.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fixed.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringFixedJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.fixed` method - // https://tc39.github.io/ecma262/#sec-string.prototype.fixed - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('fixed') - }, { - fixed: function fixed() { - return createHTML(this, 'tt', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fontcolor.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fontcolor.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringFontcolorJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.fontcolor` method - // https://tc39.github.io/ecma262/#sec-string.prototype.fontcolor - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('fontcolor') - }, { - fontcolor: function fontcolor(color) { - return createHTML(this, 'font', 'color', color); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fontsize.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fontsize.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringFontsizeJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.fontsize` method - // https://tc39.github.io/ecma262/#sec-string.prototype.fontsize - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('fontsize') - }, { - fontsize: function fontsize(size) { - return createHTML(this, 'font', 'size', size); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.from-code-point.js": - /*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.from-code-point.js ***! - \**************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringFromCodePointJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var toAbsoluteIndex = __webpack_require__( - /*! ../internals/to-absolute-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js"); - - var fromCharCode = String.fromCharCode; - var nativeFromCodePoint = String.fromCodePoint; // length should be 1, old FF problem - - var INCORRECT_LENGTH = !!nativeFromCodePoint && nativeFromCodePoint.length != 1; // `String.fromCodePoint` method - // https://tc39.github.io/ecma262/#sec-string.fromcodepoint - - $({ - target: 'String', - stat: true, - forced: INCORRECT_LENGTH - }, { - fromCodePoint: function fromCodePoint(x) { - // eslint-disable-line no-unused-vars - var elements = []; - var length = arguments.length; - var i = 0; - var code; - - while (length > i) { - code = +arguments[i++]; - if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point'); - elements.push(code < 0x10000 ? fromCharCode(code) : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00)); - } - - return elements.join(''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.includes.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.includes.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringIncludesJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var notARegExp = __webpack_require__( - /*! ../internals/not-a-regexp */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/not-a-regexp.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var correctIsRegExpLogic = __webpack_require__( - /*! ../internals/correct-is-regexp-logic */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-is-regexp-logic.js"); // `String.prototype.includes` method - // https://tc39.github.io/ecma262/#sec-string.prototype.includes - - - $({ - target: 'String', - proto: true, - forced: !correctIsRegExpLogic('includes') - }, { - includes: function includes(searchString - /* , position = 0 */ - ) { - return !!~String(requireObjectCoercible(this)).indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.italics.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.italics.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringItalicsJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.italics` method - // https://tc39.github.io/ecma262/#sec-string.prototype.italics - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('italics') - }, { - italics: function italics() { - return createHTML(this, 'i', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.iterator.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.iterator.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringIteratorJs(module, exports, __webpack_require__) { - "use strict"; - - var charAt = __webpack_require__( - /*! ../internals/string-multibyte */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-multibyte.js").charAt; - - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - - var defineIterator = __webpack_require__( - /*! ../internals/define-iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js"); - - var STRING_ITERATOR = 'String Iterator'; - var setInternalState = InternalStateModule.set; - var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); // `String.prototype[@@iterator]` method - // https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator - - defineIterator(String, 'String', function (iterated) { - setInternalState(this, { - type: STRING_ITERATOR, - string: String(iterated), - index: 0 - }); // `%StringIteratorPrototype%.next` method - // https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next - }, function next() { - var state = getInternalState(this); - var string = state.string; - var index = state.index; - var point; - if (index >= string.length) return { - value: undefined, - done: true - }; - point = charAt(string, index); - state.index += point.length; - return { - value: point, - done: false - }; - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.link.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.link.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringLinkJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.link` method - // https://tc39.github.io/ecma262/#sec-string.prototype.link - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('link') - }, { - link: function link(url) { - return createHTML(this, 'a', 'href', url); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.match.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.match.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringMatchJs(module, exports, __webpack_require__) { - "use strict"; - - var fixRegExpWellKnownSymbolLogic = __webpack_require__( - /*! ../internals/fix-regexp-well-known-symbol-logic */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var advanceStringIndex = __webpack_require__( - /*! ../internals/advance-string-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/advance-string-index.js"); - - var regExpExec = __webpack_require__( - /*! ../internals/regexp-exec-abstract */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec-abstract.js"); // @@match logic - - - fixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) { - return [// `String.prototype.match` method - // https://tc39.github.io/ecma262/#sec-string.prototype.match - function match(regexp) { - var O = requireObjectCoercible(this); - var matcher = regexp == undefined ? undefined : regexp[MATCH]; - return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); - }, // `RegExp.prototype[@@match]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match - function (regexp) { - var res = maybeCallNative(nativeMatch, regexp, this); - if (res.done) return res.value; - var rx = anObject(regexp); - var S = String(this); - if (!rx.global) return regExpExec(rx, S); - var fullUnicode = rx.unicode; - rx.lastIndex = 0; - var A = []; - var n = 0; - var result; - - while ((result = regExpExec(rx, S)) !== null) { - var matchStr = String(result[0]); - A[n] = matchStr; - if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); - n++; - } - - return n === 0 ? null : A; - }]; - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.raw.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.raw.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringRawJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); // `String.raw` method - // https://tc39.github.io/ecma262/#sec-string.raw - - - $({ - target: 'String', - stat: true - }, { - raw: function raw(template) { - var rawTemplate = toIndexedObject(template.raw); - var literalSegments = toLength(rawTemplate.length); - var argumentsLength = arguments.length; - var elements = []; - var i = 0; - - while (literalSegments > i) { - elements.push(String(rawTemplate[i++])); - if (i < argumentsLength) elements.push(String(arguments[i])); - } - - return elements.join(''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.repeat.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.repeat.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringRepeatJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var repeat = __webpack_require__( - /*! ../internals/string-repeat */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-repeat.js"); // `String.prototype.repeat` method - // https://tc39.github.io/ecma262/#sec-string.prototype.repeat - - - $({ - target: 'String', - proto: true - }, { - repeat: repeat - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.replace.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.replace.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringReplaceJs(module, exports, __webpack_require__) { - "use strict"; - - var fixRegExpWellKnownSymbolLogic = __webpack_require__( - /*! ../internals/fix-regexp-well-known-symbol-logic */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var advanceStringIndex = __webpack_require__( - /*! ../internals/advance-string-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/advance-string-index.js"); - - var regExpExec = __webpack_require__( - /*! ../internals/regexp-exec-abstract */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec-abstract.js"); - - var max = Math.max; - var min = Math.min; - var floor = Math.floor; - var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g; - var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g; - - var maybeToString = function maybeToString(it) { - return it === undefined ? it : String(it); - }; // @@replace logic - - - fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) { - var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE; - var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0; - var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; - return [// `String.prototype.replace` method - // https://tc39.github.io/ecma262/#sec-string.prototype.replace - function replace(searchValue, replaceValue) { - var O = requireObjectCoercible(this); - var replacer = searchValue == undefined ? undefined : searchValue[REPLACE]; - return replacer !== undefined ? replacer.call(searchValue, O, replaceValue) : nativeReplace.call(String(O), searchValue, replaceValue); - }, // `RegExp.prototype[@@replace]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace - function (regexp, replaceValue) { - if (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0 || typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1) { - var res = maybeCallNative(nativeReplace, regexp, this, replaceValue); - if (res.done) return res.value; - } - - var rx = anObject(regexp); - var S = String(this); - var functionalReplace = typeof replaceValue === 'function'; - if (!functionalReplace) replaceValue = String(replaceValue); - var global = rx.global; - - if (global) { - var fullUnicode = rx.unicode; - rx.lastIndex = 0; - } - - var results = []; - - while (true) { - var result = regExpExec(rx, S); - if (result === null) break; - results.push(result); - if (!global) break; - var matchStr = String(result[0]); - if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); - } - - var accumulatedResult = ''; - var nextSourcePosition = 0; - - for (var i = 0; i < results.length; i++) { - result = results[i]; - var matched = String(result[0]); - var position = max(min(toInteger(result.index), S.length), 0); - var captures = []; // NOTE: This is equivalent to - // captures = result.slice(1).map(maybeToString) - // but for some reason `nativeSlice.call(result, 1, result.length)` (called in - // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and - // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. - - for (var j = 1; j < result.length; j++) { - captures.push(maybeToString(result[j])); - } - - var namedCaptures = result.groups; - - if (functionalReplace) { - var replacerArgs = [matched].concat(captures, position, S); - if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); - var replacement = String(replaceValue.apply(undefined, replacerArgs)); - } else { - replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); - } - - if (position >= nextSourcePosition) { - accumulatedResult += S.slice(nextSourcePosition, position) + replacement; - nextSourcePosition = position + matched.length; - } - } - - return accumulatedResult + S.slice(nextSourcePosition); - }]; // https://tc39.github.io/ecma262/#sec-getsubstitution - - function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { - var tailPos = position + matched.length; - var m = captures.length; - var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; - - if (namedCaptures !== undefined) { - namedCaptures = toObject(namedCaptures); - symbols = SUBSTITUTION_SYMBOLS; - } - - return nativeReplace.call(replacement, symbols, function (match, ch) { - var capture; - - switch (ch.charAt(0)) { - case '$': - return '$'; - - case '&': - return matched; - - case '`': - return str.slice(0, position); - - case "'": - return str.slice(tailPos); - - case '<': - capture = namedCaptures[ch.slice(1, -1)]; - break; - - default: - // \d\d? - var n = +ch; - if (n === 0) return match; - - if (n > m) { - var f = floor(n / 10); - if (f === 0) return match; - if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); - return match; - } - - capture = captures[n - 1]; - } - - return capture === undefined ? '' : capture; - }); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.search.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.search.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringSearchJs(module, exports, __webpack_require__) { - "use strict"; - - var fixRegExpWellKnownSymbolLogic = __webpack_require__( - /*! ../internals/fix-regexp-well-known-symbol-logic */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var sameValue = __webpack_require__( - /*! ../internals/same-value */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/same-value.js"); - - var regExpExec = __webpack_require__( - /*! ../internals/regexp-exec-abstract */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec-abstract.js"); // @@search logic - - - fixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) { - return [// `String.prototype.search` method - // https://tc39.github.io/ecma262/#sec-string.prototype.search - function search(regexp) { - var O = requireObjectCoercible(this); - var searcher = regexp == undefined ? undefined : regexp[SEARCH]; - return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O)); - }, // `RegExp.prototype[@@search]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search - function (regexp) { - var res = maybeCallNative(nativeSearch, regexp, this); - if (res.done) return res.value; - var rx = anObject(regexp); - var S = String(this); - var previousLastIndex = rx.lastIndex; - if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; - var result = regExpExec(rx, S); - if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; - return result === null ? -1 : result.index; - }]; - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.small.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.small.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringSmallJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.small` method - // https://tc39.github.io/ecma262/#sec-string.prototype.small - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('small') - }, { - small: function small() { - return createHTML(this, 'small', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.split.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.split.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringSplitJs(module, exports, __webpack_require__) { - "use strict"; - - var fixRegExpWellKnownSymbolLogic = __webpack_require__( - /*! ../internals/fix-regexp-well-known-symbol-logic */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); - - var isRegExp = __webpack_require__( - /*! ../internals/is-regexp */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-regexp.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var speciesConstructor = __webpack_require__( - /*! ../internals/species-constructor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/species-constructor.js"); - - var advanceStringIndex = __webpack_require__( - /*! ../internals/advance-string-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/advance-string-index.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var callRegExpExec = __webpack_require__( - /*! ../internals/regexp-exec-abstract */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec-abstract.js"); - - var regexpExec = __webpack_require__( - /*! ../internals/regexp-exec */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var arrayPush = [].push; - var min = Math.min; - var MAX_UINT32 = 0xFFFFFFFF; // babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError - - var SUPPORTS_Y = !fails(function () { - return !RegExp(MAX_UINT32, 'y'); - }); // @@split logic - - fixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) { - var internalSplit; - - if ('abbc'.split(/(b)*/)[1] == 'c' || 'test'.split(/(?:)/, -1).length != 4 || 'ab'.split(/(?:ab)*/).length != 2 || '.'.split(/(.?)(.?)/).length != 4 || '.'.split(/()()/).length > 1 || ''.split(/.?/).length) { - // based on es5-shim implementation, need to rework it - internalSplit = function internalSplit(separator, limit) { - var string = String(requireObjectCoercible(this)); - var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; - if (lim === 0) return []; - if (separator === undefined) return [string]; // If `separator` is not a regex, use native split - - if (!isRegExp(separator)) { - return nativeSplit.call(string, separator, lim); - } - - var output = []; - var flags = (separator.ignoreCase ? 'i' : '') + (separator.multiline ? 'm' : '') + (separator.unicode ? 'u' : '') + (separator.sticky ? 'y' : ''); - var lastLastIndex = 0; // Make `global` and avoid `lastIndex` issues by working with a copy - - var separatorCopy = new RegExp(separator.source, flags + 'g'); - var match, lastIndex, lastLength; - - while (match = regexpExec.call(separatorCopy, string)) { - lastIndex = separatorCopy.lastIndex; - - if (lastIndex > lastLastIndex) { - output.push(string.slice(lastLastIndex, match.index)); - if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1)); - lastLength = match[0].length; - lastLastIndex = lastIndex; - if (output.length >= lim) break; - } - - if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop - } - - if (lastLastIndex === string.length) { - if (lastLength || !separatorCopy.test('')) output.push(''); - } else output.push(string.slice(lastLastIndex)); - - return output.length > lim ? output.slice(0, lim) : output; - }; // Chakra, V8 - - } else if ('0'.split(undefined, 0).length) { - internalSplit = function internalSplit(separator, limit) { - return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit); - }; - } else internalSplit = nativeSplit; - - return [// `String.prototype.split` method - // https://tc39.github.io/ecma262/#sec-string.prototype.split - function split(separator, limit) { - var O = requireObjectCoercible(this); - var splitter = separator == undefined ? undefined : separator[SPLIT]; - return splitter !== undefined ? splitter.call(separator, O, limit) : internalSplit.call(String(O), separator, limit); - }, // `RegExp.prototype[@@split]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split - // - // NOTE: This cannot be properly polyfilled in engines that don't support - // the 'y' flag. - function (regexp, limit) { - var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit); - if (res.done) return res.value; - var rx = anObject(regexp); - var S = String(this); - var C = speciesConstructor(rx, RegExp); - var unicodeMatching = rx.unicode; - var flags = (rx.ignoreCase ? 'i' : '') + (rx.multiline ? 'm' : '') + (rx.unicode ? 'u' : '') + (SUPPORTS_Y ? 'y' : 'g'); // ^(? + rx + ) is needed, in combination with some S slicing, to - // simulate the 'y' flag. - - var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); - var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; - if (lim === 0) return []; - if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; - var p = 0; - var q = 0; - var A = []; - - while (q < S.length) { - splitter.lastIndex = SUPPORTS_Y ? q : 0; - var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q)); - var e; - - if (z === null || (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p) { - q = advanceStringIndex(S, q, unicodeMatching); - } else { - A.push(S.slice(p, q)); - if (A.length === lim) return A; - - for (var i = 1; i <= z.length - 1; i++) { - A.push(z[i]); - if (A.length === lim) return A; - } - - q = p = e; - } - } - - A.push(S.slice(p)); - return A; - }]; - }, !SUPPORTS_Y); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.starts-with.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.starts-with.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringStartsWithJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var getOwnPropertyDescriptor = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js").f; - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var notARegExp = __webpack_require__( - /*! ../internals/not-a-regexp */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/not-a-regexp.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var correctIsRegExpLogic = __webpack_require__( - /*! ../internals/correct-is-regexp-logic */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-is-regexp-logic.js"); - - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); - - var nativeStartsWith = ''.startsWith; - var min = Math.min; - var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith'); // https://github.com/zloirock/core-js/pull/702 - - var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () { - var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith'); - return descriptor && !descriptor.writable; - }(); // `String.prototype.startsWith` method - // https://tc39.github.io/ecma262/#sec-string.prototype.startswith - - $({ - target: 'String', - proto: true, - forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC - }, { - startsWith: function startsWith(searchString - /* , position = 0 */ - ) { - var that = String(requireObjectCoercible(this)); - notARegExp(searchString); - var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length)); - var search = String(searchString); - return nativeStartsWith ? nativeStartsWith.call(that, search, index) : that.slice(index, index + search.length) === search; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.strike.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.strike.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringStrikeJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.strike` method - // https://tc39.github.io/ecma262/#sec-string.prototype.strike - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('strike') - }, { - strike: function strike() { - return createHTML(this, 'strike', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.sub.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.sub.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringSubJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.sub` method - // https://tc39.github.io/ecma262/#sec-string.prototype.sub - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('sub') - }, { - sub: function sub() { - return createHTML(this, 'sub', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.sup.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.sup.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringSupJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.sup` method - // https://tc39.github.io/ecma262/#sec-string.prototype.sup - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('sup') - }, { - sup: function sup() { - return createHTML(this, 'sup', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.trim.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.trim.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringTrimJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $trim = __webpack_require__( - /*! ../internals/string-trim */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim.js").trim; - - var forcedStringTrimMethod = __webpack_require__( - /*! ../internals/string-trim-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim-forced.js"); // `String.prototype.trim` method - // https://tc39.github.io/ecma262/#sec-string.prototype.trim - - - $({ - target: 'String', - proto: true, - forced: forcedStringTrimMethod('trim') - }, { - trim: function trim() { - return $trim(this); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.async-iterator.js": - /*!*************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.async-iterator.js ***! - \*************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolAsyncIteratorJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.asyncIterator` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.asynciterator - - - defineWellKnownSymbol('asyncIterator'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.description.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.description.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolDescriptionJs(module, exports, __webpack_require__) { - "use strict"; // `Symbol.prototype.description` getter - // https://tc39.github.io/ecma262/#sec-symbol.prototype.description - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; - - var copyConstructorProperties = __webpack_require__( - /*! ../internals/copy-constructor-properties */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js"); - - var NativeSymbol = global.Symbol; - - if (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) || // Safari 12 bug - NativeSymbol().description !== undefined)) { - var EmptyStringDescriptionStore = {}; // wrap Symbol constructor for correct work with undefined description - - var SymbolWrapper = function Symbol() { - var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]); - var result = this instanceof SymbolWrapper ? new NativeSymbol(description) // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)' - : description === undefined ? NativeSymbol() : NativeSymbol(description); - if (description === '') EmptyStringDescriptionStore[result] = true; - return result; - }; - - copyConstructorProperties(SymbolWrapper, NativeSymbol); - var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype; - symbolPrototype.constructor = SymbolWrapper; - var symbolToString = symbolPrototype.toString; - var native = String(NativeSymbol('test')) == 'Symbol(test)'; - var regexp = /^Symbol\((.*)\)[^)]+$/; - defineProperty(symbolPrototype, 'description', { - configurable: true, - get: function description() { - var symbol = isObject(this) ? this.valueOf() : this; - var string = symbolToString.call(symbol); - if (has(EmptyStringDescriptionStore, symbol)) return ''; - var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1'); - return desc === '' ? undefined : desc; - } - }); - $({ - global: true, - forced: true - }, { - Symbol: SymbolWrapper - }); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.has-instance.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.has-instance.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolHasInstanceJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.hasInstance` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.hasinstance - - - defineWellKnownSymbol('hasInstance'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js": - /*!*******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js ***! - \*******************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolIsConcatSpreadableJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.isConcatSpreadable` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.isconcatspreadable - - - defineWellKnownSymbol('isConcatSpreadable'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.iterator.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.iterator.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolIteratorJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.iterator` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.iterator - - - defineWellKnownSymbol('iterator'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.js": - /*!**********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.js ***! - \**********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var NATIVE_SYMBOL = __webpack_require__( - /*! ../internals/native-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js"); - - var USE_SYMBOL_AS_UID = __webpack_require__( - /*! ../internals/use-symbol-as-uid */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var isArray = __webpack_require__( - /*! ../internals/is-array */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); - - var nativeObjectCreate = __webpack_require__( - /*! ../internals/object-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); - - var objectKeys = __webpack_require__( - /*! ../internals/object-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js"); - - var getOwnPropertyNamesModule = __webpack_require__( - /*! ../internals/object-get-own-property-names */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js"); - - var getOwnPropertyNamesExternal = __webpack_require__( - /*! ../internals/object-get-own-property-names-external */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names-external.js"); - - var getOwnPropertySymbolsModule = __webpack_require__( - /*! ../internals/object-get-own-property-symbols */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js"); - - var getOwnPropertyDescriptorModule = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var propertyIsEnumerableModule = __webpack_require__( - /*! ../internals/object-property-is-enumerable */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var shared = __webpack_require__( - /*! ../internals/shared */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js"); - - var sharedKey = __webpack_require__( - /*! ../internals/shared-key */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js"); - - var hiddenKeys = __webpack_require__( - /*! ../internals/hidden-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); - - var uid = __webpack_require__( - /*! ../internals/uid */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var wrappedWellKnownSymbolModule = __webpack_require__( - /*! ../internals/well-known-symbol-wrapped */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol-wrapped.js"); - - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); - - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); - - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - - var $forEach = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js").forEach; - - var HIDDEN = sharedKey('hidden'); - var SYMBOL = 'Symbol'; - var PROTOTYPE = 'prototype'; - var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); - var setInternalState = InternalStateModule.set; - var getInternalState = InternalStateModule.getterFor(SYMBOL); - var ObjectPrototype = Object[PROTOTYPE]; - var $Symbol = global.Symbol; - var $stringify = getBuiltIn('JSON', 'stringify'); - var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - var nativeDefineProperty = definePropertyModule.f; - var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f; - var nativePropertyIsEnumerable = propertyIsEnumerableModule.f; - var AllSymbols = shared('symbols'); - var ObjectPrototypeSymbols = shared('op-symbols'); - var StringToSymbolRegistry = shared('string-to-symbol-registry'); - var SymbolToStringRegistry = shared('symbol-to-string-registry'); - var WellKnownSymbolsStore = shared('wks'); - var QObject = global.QObject; // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 - - var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 - - var setSymbolDescriptor = DESCRIPTORS && fails(function () { - return nativeObjectCreate(nativeDefineProperty({}, 'a', { - get: function get() { - return nativeDefineProperty(this, 'a', { - value: 7 - }).a; - } - })).a != 7; - }) ? function (O, P, Attributes) { - var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P); - if (ObjectPrototypeDescriptor) delete ObjectPrototype[P]; - nativeDefineProperty(O, P, Attributes); - - if (ObjectPrototypeDescriptor && O !== ObjectPrototype) { - nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor); - } - } : nativeDefineProperty; - - var wrap = function wrap(tag, description) { - var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]); - setInternalState(symbol, { - type: SYMBOL, - tag: tag, - description: description - }); - if (!DESCRIPTORS) symbol.description = description; - return symbol; - }; - - var isSymbol = USE_SYMBOL_AS_UID ? function (it) { - return typeof it == 'symbol'; - } : function (it) { - return Object(it) instanceof $Symbol; - }; - - var $defineProperty = function defineProperty(O, P, Attributes) { - if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes); - anObject(O); - var key = toPrimitive(P, true); - anObject(Attributes); - - if (has(AllSymbols, key)) { - if (!Attributes.enumerable) { - if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {})); - O[HIDDEN][key] = true; - } else { - if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false; - Attributes = nativeObjectCreate(Attributes, { - enumerable: createPropertyDescriptor(0, false) - }); - } - - return setSymbolDescriptor(O, key, Attributes); - } - - return nativeDefineProperty(O, key, Attributes); - }; - - var $defineProperties = function defineProperties(O, Properties) { - anObject(O); - var properties = toIndexedObject(Properties); - var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties)); - $forEach(keys, function (key) { - if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]); - }); - return O; - }; - - var $create = function create(O, Properties) { - return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties); - }; - - var $propertyIsEnumerable = function propertyIsEnumerable(V) { - var P = toPrimitive(V, true); - var enumerable = nativePropertyIsEnumerable.call(this, P); - if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false; - return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true; - }; - - var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) { - var it = toIndexedObject(O); - var key = toPrimitive(P, true); - if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return; - var descriptor = nativeGetOwnPropertyDescriptor(it, key); - - if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) { - descriptor.enumerable = true; - } - - return descriptor; - }; - - var $getOwnPropertyNames = function getOwnPropertyNames(O) { - var names = nativeGetOwnPropertyNames(toIndexedObject(O)); - var result = []; - $forEach(names, function (key) { - if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key); - }); - return result; - }; - - var $getOwnPropertySymbols = function getOwnPropertySymbols(O) { - var IS_OBJECT_PROTOTYPE = O === ObjectPrototype; - var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O)); - var result = []; - $forEach(names, function (key) { - if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) { - result.push(AllSymbols[key]); - } - }); - return result; - }; // `Symbol` constructor - // https://tc39.github.io/ecma262/#sec-symbol-constructor - - - if (!NATIVE_SYMBOL) { - $Symbol = function Symbol() { - if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor'); - var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]); - var tag = uid(description); - - var setter = function setter(value) { - if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value); - if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; - setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value)); - }; - - if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { - configurable: true, - set: setter - }); - return wrap(tag, description); - }; - - redefine($Symbol[PROTOTYPE], 'toString', function toString() { - return getInternalState(this).tag; - }); - redefine($Symbol, 'withoutSetter', function (description) { - return wrap(uid(description), description); - }); - propertyIsEnumerableModule.f = $propertyIsEnumerable; - definePropertyModule.f = $defineProperty; - getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor; - getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames; - getOwnPropertySymbolsModule.f = $getOwnPropertySymbols; - - wrappedWellKnownSymbolModule.f = function (name) { - return wrap(wellKnownSymbol(name), name); - }; - - if (DESCRIPTORS) { - // https://github.com/tc39/proposal-Symbol-description - nativeDefineProperty($Symbol[PROTOTYPE], 'description', { - configurable: true, - get: function description() { - return getInternalState(this).description; - } - }); - - if (!IS_PURE) { - redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { - unsafe: true - }); - } - } - } - - $({ - global: true, - wrap: true, - forced: !NATIVE_SYMBOL, - sham: !NATIVE_SYMBOL - }, { - Symbol: $Symbol - }); - $forEach(objectKeys(WellKnownSymbolsStore), function (name) { - defineWellKnownSymbol(name); - }); - $({ - target: SYMBOL, - stat: true, - forced: !NATIVE_SYMBOL - }, { - // `Symbol.for` method - // https://tc39.github.io/ecma262/#sec-symbol.for - 'for': function _for(key) { - var string = String(key); - if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string]; - var symbol = $Symbol(string); - StringToSymbolRegistry[string] = symbol; - SymbolToStringRegistry[symbol] = string; - return symbol; - }, - // `Symbol.keyFor` method - // https://tc39.github.io/ecma262/#sec-symbol.keyfor - keyFor: function keyFor(sym) { - if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol'); - if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym]; - }, - useSetter: function useSetter() { - USE_SETTER = true; - }, - useSimple: function useSimple() { - USE_SETTER = false; - } - }); - $({ - target: 'Object', - stat: true, - forced: !NATIVE_SYMBOL, - sham: !DESCRIPTORS - }, { - // `Object.create` method - // https://tc39.github.io/ecma262/#sec-object.create - create: $create, - // `Object.defineProperty` method - // https://tc39.github.io/ecma262/#sec-object.defineproperty - defineProperty: $defineProperty, - // `Object.defineProperties` method - // https://tc39.github.io/ecma262/#sec-object.defineproperties - defineProperties: $defineProperties, - // `Object.getOwnPropertyDescriptor` method - // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors - getOwnPropertyDescriptor: $getOwnPropertyDescriptor - }); - $({ - target: 'Object', - stat: true, - forced: !NATIVE_SYMBOL - }, { - // `Object.getOwnPropertyNames` method - // https://tc39.github.io/ecma262/#sec-object.getownpropertynames - getOwnPropertyNames: $getOwnPropertyNames, - // `Object.getOwnPropertySymbols` method - // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols - getOwnPropertySymbols: $getOwnPropertySymbols - }); // Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives - // https://bugs.chromium.org/p/v8/issues/detail?id=3443 - - $({ - target: 'Object', - stat: true, - forced: fails(function () { - getOwnPropertySymbolsModule.f(1); - }) - }, { - getOwnPropertySymbols: function getOwnPropertySymbols(it) { - return getOwnPropertySymbolsModule.f(toObject(it)); - } - }); // `JSON.stringify` method behavior with symbols - // https://tc39.github.io/ecma262/#sec-json.stringify - - if ($stringify) { - var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () { - var symbol = $Symbol(); // MS Edge converts symbol values to JSON as {} - - return $stringify([symbol]) != '[null]' // WebKit converts symbol values to JSON as null - || $stringify({ - a: symbol - }) != '{}' // V8 throws on boxed symbols - || $stringify(Object(symbol)) != '{}'; - }); - $({ - target: 'JSON', - stat: true, - forced: FORCED_JSON_STRINGIFY - }, { - // eslint-disable-next-line no-unused-vars - stringify: function stringify(it, replacer, space) { - var args = [it]; - var index = 1; - var $replacer; - - while (arguments.length > index) { - args.push(arguments[index++]); - } - - $replacer = replacer; - if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined - - if (!isArray(replacer)) replacer = function replacer(key, value) { - if (typeof $replacer == 'function') value = $replacer.call(this, key, value); - if (!isSymbol(value)) return value; - }; - args[1] = replacer; - return $stringify.apply(null, args); - } - }); - } // `Symbol.prototype[@@toPrimitive]` method - // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive - - - if (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) { - createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); - } // `Symbol.prototype[@@toStringTag]` property - // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag - - - setToStringTag($Symbol, SYMBOL); - hiddenKeys[HIDDEN] = true; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.match-all.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.match-all.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolMatchAllJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.matchAll` well-known symbol - - - defineWellKnownSymbol('matchAll'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.match.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.match.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolMatchJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.match` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.match - - - defineWellKnownSymbol('match'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.replace.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.replace.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolReplaceJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.replace` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.replace - - - defineWellKnownSymbol('replace'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.search.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.search.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolSearchJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.search` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.search - - - defineWellKnownSymbol('search'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.species.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.species.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolSpeciesJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.species` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.species - - - defineWellKnownSymbol('species'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.split.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.split.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolSplitJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.split` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.split - - - defineWellKnownSymbol('split'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.to-primitive.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.to-primitive.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolToPrimitiveJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.toPrimitive` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.toprimitive - - - defineWellKnownSymbol('toPrimitive'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.to-string-tag.js": - /*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.to-string-tag.js ***! - \************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolToStringTagJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.toStringTag` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.tostringtag - - - defineWellKnownSymbol('toStringTag'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.unscopables.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.unscopables.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolUnscopablesJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.unscopables` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.unscopables - - - defineWellKnownSymbol('unscopables'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsWeakMapJs(module, exports, __webpack_require__) { - "use strict"; - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var redefineAll = __webpack_require__( - /*! ../internals/redefine-all */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js"); - - var InternalMetadataModule = __webpack_require__( - /*! ../internals/internal-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js"); - - var collection = __webpack_require__( - /*! ../internals/collection */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js"); - - var collectionWeak = __webpack_require__( - /*! ../internals/collection-weak */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-weak.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var enforceIternalState = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js").enforce; - - var NATIVE_WEAK_MAP = __webpack_require__( - /*! ../internals/native-weak-map */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js"); - - var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global; - var isExtensible = Object.isExtensible; - var InternalWeakMap; - - var wrapper = function wrapper(init) { - return function WeakMap() { - return init(this, arguments.length ? arguments[0] : undefined); - }; - }; // `WeakMap` constructor - // https://tc39.github.io/ecma262/#sec-weakmap-constructor - - - var $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak); // IE11 WeakMap frozen keys fix - // We can't use feature detection because it crash some old IE builds - // https://github.com/zloirock/core-js/issues/485 - - if (NATIVE_WEAK_MAP && IS_IE11) { - InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true); - InternalMetadataModule.REQUIRED = true; - var WeakMapPrototype = $WeakMap.prototype; - var nativeDelete = WeakMapPrototype['delete']; - var nativeHas = WeakMapPrototype.has; - var nativeGet = WeakMapPrototype.get; - var nativeSet = WeakMapPrototype.set; - redefineAll(WeakMapPrototype, { - 'delete': function _delete(key) { - if (isObject(key) && !isExtensible(key)) { - var state = enforceIternalState(this); - if (!state.frozen) state.frozen = new InternalWeakMap(); - return nativeDelete.call(this, key) || state.frozen['delete'](key); - } - - return nativeDelete.call(this, key); - }, - has: function has(key) { - if (isObject(key) && !isExtensible(key)) { - var state = enforceIternalState(this); - if (!state.frozen) state.frozen = new InternalWeakMap(); - return nativeHas.call(this, key) || state.frozen.has(key); - } - - return nativeHas.call(this, key); - }, - get: function get(key) { - if (isObject(key) && !isExtensible(key)) { - var state = enforceIternalState(this); - if (!state.frozen) state.frozen = new InternalWeakMap(); - return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key); - } - - return nativeGet.call(this, key); - }, - set: function set(key, value) { - if (isObject(key) && !isExtensible(key)) { - var state = enforceIternalState(this); - if (!state.frozen) state.frozen = new InternalWeakMap(); - nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value); - } else nativeSet.call(this, key, value); - - return this; - } - }); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.define-metadata.js": - /*!*******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.define-metadata.js ***! - \*******************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectDefineMetadataJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toMetadataKey = ReflectMetadataModule.toKey; - var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; // `Reflect.defineMetadata` method - // https://github.com/rbuckton/reflect-metadata - - $({ - target: 'Reflect', - stat: true - }, { - defineMetadata: function defineMetadata(metadataKey, metadataValue, target - /* , targetKey */ - ) { - var targetKey = arguments.length < 4 ? undefined : toMetadataKey(arguments[3]); - ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), targetKey); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.delete-metadata.js": - /*!*******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.delete-metadata.js ***! - \*******************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectDeleteMetadataJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toMetadataKey = ReflectMetadataModule.toKey; - var getOrCreateMetadataMap = ReflectMetadataModule.getMap; - var store = ReflectMetadataModule.store; // `Reflect.deleteMetadata` method - // https://github.com/rbuckton/reflect-metadata - - $({ - target: 'Reflect', - stat: true - }, { - deleteMetadata: function deleteMetadata(metadataKey, target - /* , targetKey */ - ) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false); - if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false; - if (metadataMap.size) return true; - var targetMetadata = store.get(target); - targetMetadata['delete'](targetKey); - return !!targetMetadata.size || store['delete'](target); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js": - /*!*********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js ***! - \*********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectGetMetadataKeysJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` - - - var Set = __webpack_require__( - /*! ../modules/es.set */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var iterate = __webpack_require__( - /*! ../internals/iterate */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); - - var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; - var toMetadataKey = ReflectMetadataModule.toKey; - - var from = function from(iter) { - var result = []; - iterate(iter, result.push, result); - return result; - }; - - var ordinaryMetadataKeys = function ordinaryMetadataKeys(O, P) { - var oKeys = ordinaryOwnMetadataKeys(O, P); - var parent = getPrototypeOf(O); - if (parent === null) return oKeys; - var pKeys = ordinaryMetadataKeys(parent, P); - return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys; - }; // `Reflect.getMetadataKeys` method - // https://github.com/rbuckton/reflect-metadata - - - $({ - target: 'Reflect', - stat: true - }, { - getMetadataKeys: function getMetadataKeys(target - /* , targetKey */ - ) { - var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); - return ordinaryMetadataKeys(anObject(target), targetKey); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata.js": - /*!****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata.js ***! - \****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectGetMetadataJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var ordinaryHasOwnMetadata = ReflectMetadataModule.has; - var ordinaryGetOwnMetadata = ReflectMetadataModule.get; - var toMetadataKey = ReflectMetadataModule.toKey; - - var ordinaryGetMetadata = function ordinaryGetMetadata(MetadataKey, O, P) { - var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); - if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P); - var parent = getPrototypeOf(O); - return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined; - }; // `Reflect.getMetadata` method - // https://github.com/rbuckton/reflect-metadata - - - $({ - target: 'Reflect', - stat: true - }, { - getMetadata: function getMetadata(metadataKey, target - /* , targetKey */ - ) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - return ordinaryGetMetadata(metadataKey, anObject(target), targetKey); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js": - /*!*************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js ***! - \*************************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectGetOwnMetadataKeysJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; - var toMetadataKey = ReflectMetadataModule.toKey; // `Reflect.getOwnMetadataKeys` method - // https://github.com/rbuckton/reflect-metadata - - $({ - target: 'Reflect', - stat: true - }, { - getOwnMetadataKeys: function getOwnMetadataKeys(target - /* , targetKey */ - ) { - var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); - return ordinaryOwnMetadataKeys(anObject(target), targetKey); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js": - /*!********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js ***! - \********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectGetOwnMetadataJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var ordinaryGetOwnMetadata = ReflectMetadataModule.get; - var toMetadataKey = ReflectMetadataModule.toKey; // `Reflect.getOwnMetadata` method - // https://github.com/rbuckton/reflect-metadata - - $({ - target: 'Reflect', - stat: true - }, { - getOwnMetadata: function getOwnMetadata(metadataKey, target - /* , targetKey */ - ) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - return ordinaryGetOwnMetadata(metadataKey, anObject(target), targetKey); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-metadata.js": - /*!****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-metadata.js ***! - \****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectHasMetadataJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var ordinaryHasOwnMetadata = ReflectMetadataModule.has; - var toMetadataKey = ReflectMetadataModule.toKey; - - var ordinaryHasMetadata = function ordinaryHasMetadata(MetadataKey, O, P) { - var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); - if (hasOwn) return true; - var parent = getPrototypeOf(O); - return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false; - }; // `Reflect.hasMetadata` method - // https://github.com/rbuckton/reflect-metadata - - - $({ - target: 'Reflect', - stat: true - }, { - hasMetadata: function hasMetadata(metadataKey, target - /* , targetKey */ - ) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - return ordinaryHasMetadata(metadataKey, anObject(target), targetKey); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js": - /*!********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js ***! - \********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectHasOwnMetadataJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var ordinaryHasOwnMetadata = ReflectMetadataModule.has; - var toMetadataKey = ReflectMetadataModule.toKey; // `Reflect.hasOwnMetadata` method - // https://github.com/rbuckton/reflect-metadata - - $({ - target: 'Reflect', - stat: true - }, { - hasOwnMetadata: function hasOwnMetadata(metadataKey, target - /* , targetKey */ - ) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - return ordinaryHasOwnMetadata(metadataKey, anObject(target), targetKey); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.metadata.js": - /*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.metadata.js ***! - \************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectMetadataJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toMetadataKey = ReflectMetadataModule.toKey; - var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; // `Reflect.metadata` method - // https://github.com/rbuckton/reflect-metadata - - $({ - target: 'Reflect', - stat: true - }, { - metadata: function metadata(metadataKey, metadataValue) { - return function decorator(target, key) { - ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetadataKey(key)); - }; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/web.dom-collections.for-each.js": - /*!*****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/web.dom-collections.for-each.js ***! - \*****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesWebDomCollectionsForEachJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var DOMIterables = __webpack_require__( - /*! ../internals/dom-iterables */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/dom-iterables.js"); - - var forEach = __webpack_require__( - /*! ../internals/array-for-each */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-for-each.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - for (var COLLECTION_NAME in DOMIterables) { - var Collection = global[COLLECTION_NAME]; - var CollectionPrototype = Collection && Collection.prototype; // some Chrome versions have non-configurable methods on DOMTokenList - - if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try { - createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach); - } catch (error) { - CollectionPrototype.forEach = forEach; - } - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/web.dom-collections.iterator.js": - /*!*****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/web.dom-collections.iterator.js ***! - \*****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesWebDomCollectionsIteratorJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var DOMIterables = __webpack_require__( - /*! ../internals/dom-iterables */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/dom-iterables.js"); - - var ArrayIteratorMethods = __webpack_require__( - /*! ../modules/es.array.iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.iterator.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var ITERATOR = wellKnownSymbol('iterator'); - var TO_STRING_TAG = wellKnownSymbol('toStringTag'); - var ArrayValues = ArrayIteratorMethods.values; - - for (var COLLECTION_NAME in DOMIterables) { - var Collection = global[COLLECTION_NAME]; - var CollectionPrototype = Collection && Collection.prototype; - - if (CollectionPrototype) { - // some Chrome versions have non-configurable methods on DOMTokenList - if (CollectionPrototype[ITERATOR] !== ArrayValues) try { - createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues); - } catch (error) { - CollectionPrototype[ITERATOR] = ArrayValues; - } - - if (!CollectionPrototype[TO_STRING_TAG]) { - createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME); - } - - if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) { - // some Chrome versions have non-configurable methods on DOMTokenList - if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try { - createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]); - } catch (error) { - CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME]; - } - } - } - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsProposalsReflectMetadataJs(module, exports, __webpack_require__) { - __webpack_require__( - /*! ../modules/esnext.reflect.define-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.define-metadata.js"); - - __webpack_require__( - /*! ../modules/esnext.reflect.delete-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.delete-metadata.js"); - - __webpack_require__( - /*! ../modules/esnext.reflect.get-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata.js"); - - __webpack_require__( - /*! ../modules/esnext.reflect.get-metadata-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js"); - - __webpack_require__( - /*! ../modules/esnext.reflect.get-own-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js"); - - __webpack_require__( - /*! ../modules/esnext.reflect.get-own-metadata-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js"); - - __webpack_require__( - /*! ../modules/esnext.reflect.has-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-metadata.js"); - - __webpack_require__( - /*! ../modules/esnext.reflect.has-own-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js"); - - __webpack_require__( - /*! ../modules/esnext.reflect.metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.metadata.js"); - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-jit-polyfills.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-jit-polyfills.js ***! - \******************************************************************************************************/ - - /*! no exports provided */ - - /***/ - function node_modulesAngularDevkitBuildAngularSrcAngularCliFilesModelsEs5JitPolyfillsJs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony import */ - - - var core_js_es_reflect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! core-js/es/reflect */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/reflect/index.js"); - /* harmony import */ - - - var core_js_es_reflect__WEBPACK_IMPORTED_MODULE_0___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_es_reflect__WEBPACK_IMPORTED_MODULE_0__); - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-polyfills.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-polyfills.js ***! - \**************************************************************************************************/ - - /*! no exports provided */ - - /***/ - function node_modulesAngularDevkitBuildAngularSrcAngularCliFilesModelsEs5PolyfillsJs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony import */ - - - var core_js_es_symbol__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! core-js/es/symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/symbol/index.js"); - /* harmony import */ - - - var core_js_es_symbol__WEBPACK_IMPORTED_MODULE_0___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_es_symbol__WEBPACK_IMPORTED_MODULE_0__); - /* harmony import */ - - - var core_js_modules_es_function_bind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! core-js/modules/es.function.bind */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.bind.js"); - /* harmony import */ - - - var core_js_modules_es_function_bind__WEBPACK_IMPORTED_MODULE_1___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_function_bind__WEBPACK_IMPORTED_MODULE_1__); - /* harmony import */ - - - var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! core-js/modules/es.function.name */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.name.js"); - /* harmony import */ - - - var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2__); - /* harmony import */ - - - var core_js_modules_es_function_has_instance__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! core-js/modules/es.function.has-instance */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.has-instance.js"); - /* harmony import */ - - - var core_js_modules_es_function_has_instance__WEBPACK_IMPORTED_MODULE_3___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_function_has_instance__WEBPACK_IMPORTED_MODULE_3__); - /* harmony import */ - - - var core_js_modules_es_object_create__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! core-js/modules/es.object.create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.create.js"); - /* harmony import */ - - - var core_js_modules_es_object_create__WEBPACK_IMPORTED_MODULE_4___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_create__WEBPACK_IMPORTED_MODULE_4__); - /* harmony import */ - - - var core_js_modules_es_object_define_property__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( - /*! core-js/modules/es.object.define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.define-property.js"); - /* harmony import */ - - - var core_js_modules_es_object_define_property__WEBPACK_IMPORTED_MODULE_5___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_define_property__WEBPACK_IMPORTED_MODULE_5__); - /* harmony import */ - - - var core_js_modules_es_object_define_properties__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( - /*! core-js/modules/es.object.define-properties */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.define-properties.js"); - /* harmony import */ - - - var core_js_modules_es_object_define_properties__WEBPACK_IMPORTED_MODULE_6___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_define_properties__WEBPACK_IMPORTED_MODULE_6__); - /* harmony import */ - - - var core_js_modules_es_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__( - /*! core-js/modules/es.object.get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-own-property-descriptor.js"); - /* harmony import */ - - - var core_js_modules_es_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7__); - /* harmony import */ - - - var core_js_modules_es_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__( - /*! core-js/modules/es.object.get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-prototype-of.js"); - /* harmony import */ - - - var core_js_modules_es_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_8___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_8__); - /* harmony import */ - - - var core_js_modules_es_object_keys__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__( - /*! core-js/modules/es.object.keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.keys.js"); - /* harmony import */ - - - var core_js_modules_es_object_keys__WEBPACK_IMPORTED_MODULE_9___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_keys__WEBPACK_IMPORTED_MODULE_9__); - /* harmony import */ - - - var core_js_modules_es_object_get_own_property_names__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__( - /*! core-js/modules/es.object.get-own-property-names */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-own-property-names.js"); - /* harmony import */ - - - var core_js_modules_es_object_get_own_property_names__WEBPACK_IMPORTED_MODULE_10___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_get_own_property_names__WEBPACK_IMPORTED_MODULE_10__); - /* harmony import */ - - - var core_js_modules_es_object_freeze__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__( - /*! core-js/modules/es.object.freeze */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.freeze.js"); - /* harmony import */ - - - var core_js_modules_es_object_freeze__WEBPACK_IMPORTED_MODULE_11___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_freeze__WEBPACK_IMPORTED_MODULE_11__); - /* harmony import */ - - - var core_js_modules_es_object_seal__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__( - /*! core-js/modules/es.object.seal */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.seal.js"); - /* harmony import */ - - - var core_js_modules_es_object_seal__WEBPACK_IMPORTED_MODULE_12___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_seal__WEBPACK_IMPORTED_MODULE_12__); - /* harmony import */ - - - var core_js_modules_es_object_prevent_extensions__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__( - /*! core-js/modules/es.object.prevent-extensions */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.prevent-extensions.js"); - /* harmony import */ - - - var core_js_modules_es_object_prevent_extensions__WEBPACK_IMPORTED_MODULE_13___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_prevent_extensions__WEBPACK_IMPORTED_MODULE_13__); - /* harmony import */ - - - var core_js_modules_es_object_is_frozen__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__( - /*! core-js/modules/es.object.is-frozen */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-frozen.js"); - /* harmony import */ - - - var core_js_modules_es_object_is_frozen__WEBPACK_IMPORTED_MODULE_14___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_is_frozen__WEBPACK_IMPORTED_MODULE_14__); - /* harmony import */ - - - var core_js_modules_es_object_is_sealed__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__( - /*! core-js/modules/es.object.is-sealed */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-sealed.js"); - /* harmony import */ - - - var core_js_modules_es_object_is_sealed__WEBPACK_IMPORTED_MODULE_15___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_is_sealed__WEBPACK_IMPORTED_MODULE_15__); - /* harmony import */ - - - var core_js_modules_es_object_is_extensible__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__( - /*! core-js/modules/es.object.is-extensible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-extensible.js"); - /* harmony import */ - - - var core_js_modules_es_object_is_extensible__WEBPACK_IMPORTED_MODULE_16___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_is_extensible__WEBPACK_IMPORTED_MODULE_16__); - /* harmony import */ - - - var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__( - /*! core-js/modules/es.object.assign */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.assign.js"); - /* harmony import */ - - - var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_17___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_17__); - /* harmony import */ - - - var core_js_modules_es_object_is__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__( - /*! core-js/modules/es.object.is */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is.js"); - /* harmony import */ - - - var core_js_modules_es_object_is__WEBPACK_IMPORTED_MODULE_18___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_is__WEBPACK_IMPORTED_MODULE_18__); - /* harmony import */ - - - var core_js_modules_es_object_set_prototype_of__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__( - /*! core-js/modules/es.object.set-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.set-prototype-of.js"); - /* harmony import */ - - - var core_js_modules_es_object_set_prototype_of__WEBPACK_IMPORTED_MODULE_19___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_set_prototype_of__WEBPACK_IMPORTED_MODULE_19__); - /* harmony import */ - - - var core_js_modules_es_object_to_string__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__( - /*! core-js/modules/es.object.to-string */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.to-string.js"); - /* harmony import */ - - - var core_js_modules_es_object_to_string__WEBPACK_IMPORTED_MODULE_20___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_to_string__WEBPACK_IMPORTED_MODULE_20__); - /* harmony import */ - - - var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__( - /*! core-js/modules/es.array.concat */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.concat.js"); - /* harmony import */ - - - var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_21___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_21__); - /* harmony import */ - - - var core_js_modules_es_array_is_array__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__( - /*! core-js/modules/es.array.is-array */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.is-array.js"); - /* harmony import */ - - - var core_js_modules_es_array_is_array__WEBPACK_IMPORTED_MODULE_22___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_is_array__WEBPACK_IMPORTED_MODULE_22__); - /* harmony import */ - - - var core_js_modules_es_array_from__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__( - /*! core-js/modules/es.array.from */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.from.js"); - /* harmony import */ - - - var core_js_modules_es_array_from__WEBPACK_IMPORTED_MODULE_23___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_from__WEBPACK_IMPORTED_MODULE_23__); - /* harmony import */ - - - var core_js_modules_es_array_of__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__( - /*! core-js/modules/es.array.of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.of.js"); - /* harmony import */ - - - var core_js_modules_es_array_of__WEBPACK_IMPORTED_MODULE_24___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_of__WEBPACK_IMPORTED_MODULE_24__); - /* harmony import */ - - - var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__( - /*! core-js/modules/es.array.join */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.join.js"); - /* harmony import */ - - - var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_25___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_25__); - /* harmony import */ - - - var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__( - /*! core-js/modules/es.array.slice */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.slice.js"); - /* harmony import */ - - - var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_26___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_26__); - /* harmony import */ - - - var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__( - /*! core-js/modules/es.array.splice */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.splice.js"); - /* harmony import */ - - - var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_27___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_27__); - /* harmony import */ - - - var core_js_modules_es_array_sort__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__( - /*! core-js/modules/es.array.sort */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.sort.js"); - /* harmony import */ - - - var core_js_modules_es_array_sort__WEBPACK_IMPORTED_MODULE_28___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_sort__WEBPACK_IMPORTED_MODULE_28__); - /* harmony import */ - - - var core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__( - /*! core-js/modules/es.array.for-each */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.for-each.js"); - /* harmony import */ - - - var core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_29___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_29__); - /* harmony import */ - - - var core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__( - /*! core-js/modules/es.array.map */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.map.js"); - /* harmony import */ - - - var core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_30___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_30__); - /* harmony import */ - - - var core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__( - /*! core-js/modules/es.array.filter */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.filter.js"); - /* harmony import */ - - - var core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_31___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_31__); - /* harmony import */ - - - var core_js_modules_es_array_some__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__( - /*! core-js/modules/es.array.some */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.some.js"); - /* harmony import */ - - - var core_js_modules_es_array_some__WEBPACK_IMPORTED_MODULE_32___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_some__WEBPACK_IMPORTED_MODULE_32__); - /* harmony import */ - - - var core_js_modules_es_array_every__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__( - /*! core-js/modules/es.array.every */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.every.js"); - /* harmony import */ - - - var core_js_modules_es_array_every__WEBPACK_IMPORTED_MODULE_33___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_every__WEBPACK_IMPORTED_MODULE_33__); - /* harmony import */ - - - var core_js_modules_es_array_reduce__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__( - /*! core-js/modules/es.array.reduce */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.reduce.js"); - /* harmony import */ - - - var core_js_modules_es_array_reduce__WEBPACK_IMPORTED_MODULE_34___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_reduce__WEBPACK_IMPORTED_MODULE_34__); - /* harmony import */ - - - var core_js_modules_es_array_reduce_right__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__( - /*! core-js/modules/es.array.reduce-right */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.reduce-right.js"); - /* harmony import */ - - - var core_js_modules_es_array_reduce_right__WEBPACK_IMPORTED_MODULE_35___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_reduce_right__WEBPACK_IMPORTED_MODULE_35__); - /* harmony import */ - - - var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__( - /*! core-js/modules/es.array.index-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.index-of.js"); - /* harmony import */ - - - var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_36___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_36__); - /* harmony import */ - - - var core_js_modules_es_array_last_index_of__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__( - /*! core-js/modules/es.array.last-index-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.last-index-of.js"); - /* harmony import */ - - - var core_js_modules_es_array_last_index_of__WEBPACK_IMPORTED_MODULE_37___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_last_index_of__WEBPACK_IMPORTED_MODULE_37__); - /* harmony import */ - - - var core_js_modules_es_array_copy_within__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__( - /*! core-js/modules/es.array.copy-within */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.copy-within.js"); - /* harmony import */ - - - var core_js_modules_es_array_copy_within__WEBPACK_IMPORTED_MODULE_38___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_copy_within__WEBPACK_IMPORTED_MODULE_38__); - /* harmony import */ - - - var core_js_modules_es_array_fill__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__( - /*! core-js/modules/es.array.fill */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.fill.js"); - /* harmony import */ - - - var core_js_modules_es_array_fill__WEBPACK_IMPORTED_MODULE_39___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_fill__WEBPACK_IMPORTED_MODULE_39__); - /* harmony import */ - - - var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__( - /*! core-js/modules/es.array.find */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.find.js"); - /* harmony import */ - - - var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_40___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_40__); - /* harmony import */ - - - var core_js_modules_es_array_find_index__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__( - /*! core-js/modules/es.array.find-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.find-index.js"); - /* harmony import */ - - - var core_js_modules_es_array_find_index__WEBPACK_IMPORTED_MODULE_41___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_find_index__WEBPACK_IMPORTED_MODULE_41__); - /* harmony import */ - - - var core_js_modules_es_array_iterator__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__( - /*! core-js/modules/es.array.iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.iterator.js"); - /* harmony import */ - - - var core_js_modules_es_array_iterator__WEBPACK_IMPORTED_MODULE_42___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_iterator__WEBPACK_IMPORTED_MODULE_42__); - /* harmony import */ - - - var core_js_modules_es_string_from_code_point__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__( - /*! core-js/modules/es.string.from-code-point */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.from-code-point.js"); - /* harmony import */ - - - var core_js_modules_es_string_from_code_point__WEBPACK_IMPORTED_MODULE_43___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_from_code_point__WEBPACK_IMPORTED_MODULE_43__); - /* harmony import */ - - - var core_js_modules_es_string_raw__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__( - /*! core-js/modules/es.string.raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.raw.js"); - /* harmony import */ - - - var core_js_modules_es_string_raw__WEBPACK_IMPORTED_MODULE_44___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_raw__WEBPACK_IMPORTED_MODULE_44__); - /* harmony import */ - - - var core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__( - /*! core-js/modules/es.string.trim */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.trim.js"); - /* harmony import */ - - - var core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_45___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_45__); - /* harmony import */ - - - var core_js_modules_es_string_iterator__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__( - /*! core-js/modules/es.string.iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.iterator.js"); - /* harmony import */ - - - var core_js_modules_es_string_iterator__WEBPACK_IMPORTED_MODULE_46___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_iterator__WEBPACK_IMPORTED_MODULE_46__); - /* harmony import */ - - - var core_js_modules_es_string_code_point_at__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__( - /*! core-js/modules/es.string.code-point-at */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.code-point-at.js"); - /* harmony import */ - - - var core_js_modules_es_string_code_point_at__WEBPACK_IMPORTED_MODULE_47___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_code_point_at__WEBPACK_IMPORTED_MODULE_47__); - /* harmony import */ - - - var core_js_modules_es_string_ends_with__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__( - /*! core-js/modules/es.string.ends-with */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.ends-with.js"); - /* harmony import */ - - - var core_js_modules_es_string_ends_with__WEBPACK_IMPORTED_MODULE_48___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_ends_with__WEBPACK_IMPORTED_MODULE_48__); - /* harmony import */ - - - var core_js_modules_es_string_includes__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__( - /*! core-js/modules/es.string.includes */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.includes.js"); - /* harmony import */ - - - var core_js_modules_es_string_includes__WEBPACK_IMPORTED_MODULE_49___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_includes__WEBPACK_IMPORTED_MODULE_49__); - /* harmony import */ - - - var core_js_modules_es_string_repeat__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__( - /*! core-js/modules/es.string.repeat */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.repeat.js"); - /* harmony import */ - - - var core_js_modules_es_string_repeat__WEBPACK_IMPORTED_MODULE_50___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_repeat__WEBPACK_IMPORTED_MODULE_50__); - /* harmony import */ - - - var core_js_modules_es_string_starts_with__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__( - /*! core-js/modules/es.string.starts-with */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.starts-with.js"); - /* harmony import */ - - - var core_js_modules_es_string_starts_with__WEBPACK_IMPORTED_MODULE_51___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_starts_with__WEBPACK_IMPORTED_MODULE_51__); - /* harmony import */ - - - var core_js_modules_es_string_anchor__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__( - /*! core-js/modules/es.string.anchor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.anchor.js"); - /* harmony import */ - - - var core_js_modules_es_string_anchor__WEBPACK_IMPORTED_MODULE_52___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_anchor__WEBPACK_IMPORTED_MODULE_52__); - /* harmony import */ - - - var core_js_modules_es_string_big__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__( - /*! core-js/modules/es.string.big */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.big.js"); - /* harmony import */ - - - var core_js_modules_es_string_big__WEBPACK_IMPORTED_MODULE_53___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_big__WEBPACK_IMPORTED_MODULE_53__); - /* harmony import */ - - - var core_js_modules_es_string_blink__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__( - /*! core-js/modules/es.string.blink */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.blink.js"); - /* harmony import */ - - - var core_js_modules_es_string_blink__WEBPACK_IMPORTED_MODULE_54___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_blink__WEBPACK_IMPORTED_MODULE_54__); - /* harmony import */ - - - var core_js_modules_es_string_bold__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__( - /*! core-js/modules/es.string.bold */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.bold.js"); - /* harmony import */ - - - var core_js_modules_es_string_bold__WEBPACK_IMPORTED_MODULE_55___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_bold__WEBPACK_IMPORTED_MODULE_55__); - /* harmony import */ - - - var core_js_modules_es_string_fixed__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__( - /*! core-js/modules/es.string.fixed */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fixed.js"); - /* harmony import */ - - - var core_js_modules_es_string_fixed__WEBPACK_IMPORTED_MODULE_56___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_fixed__WEBPACK_IMPORTED_MODULE_56__); - /* harmony import */ - - - var core_js_modules_es_string_fontcolor__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__( - /*! core-js/modules/es.string.fontcolor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fontcolor.js"); - /* harmony import */ - - - var core_js_modules_es_string_fontcolor__WEBPACK_IMPORTED_MODULE_57___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_fontcolor__WEBPACK_IMPORTED_MODULE_57__); - /* harmony import */ - - - var core_js_modules_es_string_fontsize__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__( - /*! core-js/modules/es.string.fontsize */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fontsize.js"); - /* harmony import */ - - - var core_js_modules_es_string_fontsize__WEBPACK_IMPORTED_MODULE_58___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_fontsize__WEBPACK_IMPORTED_MODULE_58__); - /* harmony import */ - - - var core_js_modules_es_string_italics__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__( - /*! core-js/modules/es.string.italics */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.italics.js"); - /* harmony import */ - - - var core_js_modules_es_string_italics__WEBPACK_IMPORTED_MODULE_59___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_italics__WEBPACK_IMPORTED_MODULE_59__); - /* harmony import */ - - - var core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__( - /*! core-js/modules/es.string.link */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.link.js"); - /* harmony import */ - - - var core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_60___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_60__); - /* harmony import */ - - - var core_js_modules_es_string_small__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__( - /*! core-js/modules/es.string.small */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.small.js"); - /* harmony import */ - - - var core_js_modules_es_string_small__WEBPACK_IMPORTED_MODULE_61___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_small__WEBPACK_IMPORTED_MODULE_61__); - /* harmony import */ - - - var core_js_modules_es_string_strike__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__( - /*! core-js/modules/es.string.strike */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.strike.js"); - /* harmony import */ - - - var core_js_modules_es_string_strike__WEBPACK_IMPORTED_MODULE_62___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_strike__WEBPACK_IMPORTED_MODULE_62__); - /* harmony import */ - - - var core_js_modules_es_string_sub__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__( - /*! core-js/modules/es.string.sub */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.sub.js"); - /* harmony import */ - - - var core_js_modules_es_string_sub__WEBPACK_IMPORTED_MODULE_63___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_sub__WEBPACK_IMPORTED_MODULE_63__); - /* harmony import */ - - - var core_js_modules_es_string_sup__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__( - /*! core-js/modules/es.string.sup */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.sup.js"); - /* harmony import */ - - - var core_js_modules_es_string_sup__WEBPACK_IMPORTED_MODULE_64___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_sup__WEBPACK_IMPORTED_MODULE_64__); - /* harmony import */ - - - var core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__( - /*! core-js/modules/es.string.match */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.match.js"); - /* harmony import */ - - - var core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_65___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_65__); - /* harmony import */ - - - var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__( - /*! core-js/modules/es.string.replace */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.replace.js"); - /* harmony import */ - - - var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_66___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_66__); - /* harmony import */ - - - var core_js_modules_es_string_search__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__( - /*! core-js/modules/es.string.search */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.search.js"); - /* harmony import */ - - - var core_js_modules_es_string_search__WEBPACK_IMPORTED_MODULE_67___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_search__WEBPACK_IMPORTED_MODULE_67__); - /* harmony import */ - - - var core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__( - /*! core-js/modules/es.string.split */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.split.js"); - /* harmony import */ - - - var core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_68___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_68__); - /* harmony import */ - - - var core_js_modules_es_parse_int__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__( - /*! core-js/modules/es.parse-int */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.parse-int.js"); - /* harmony import */ - - - var core_js_modules_es_parse_int__WEBPACK_IMPORTED_MODULE_69___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_parse_int__WEBPACK_IMPORTED_MODULE_69__); - /* harmony import */ - - - var core_js_modules_es_parse_float__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__( - /*! core-js/modules/es.parse-float */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.parse-float.js"); - /* harmony import */ - - - var core_js_modules_es_parse_float__WEBPACK_IMPORTED_MODULE_70___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_parse_float__WEBPACK_IMPORTED_MODULE_70__); - /* harmony import */ - - - var core_js_es_number__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__( - /*! core-js/es/number */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/number/index.js"); - /* harmony import */ - - - var core_js_es_number__WEBPACK_IMPORTED_MODULE_71___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_es_number__WEBPACK_IMPORTED_MODULE_71__); - /* harmony import */ - - - var core_js_es_math__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__( - /*! core-js/es/math */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/math/index.js"); - /* harmony import */ - - - var core_js_es_math__WEBPACK_IMPORTED_MODULE_72___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_es_math__WEBPACK_IMPORTED_MODULE_72__); - /* harmony import */ - - - var core_js_es_date__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__( - /*! core-js/es/date */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/date/index.js"); - /* harmony import */ - - - var core_js_es_date__WEBPACK_IMPORTED_MODULE_73___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_es_date__WEBPACK_IMPORTED_MODULE_73__); - /* harmony import */ - - - var core_js_modules_es_regexp_constructor__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__( - /*! core-js/modules/es.regexp.constructor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.constructor.js"); - /* harmony import */ - - - var core_js_modules_es_regexp_constructor__WEBPACK_IMPORTED_MODULE_74___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_regexp_constructor__WEBPACK_IMPORTED_MODULE_74__); - /* harmony import */ - - - var core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__( - /*! core-js/modules/es.regexp.to-string */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.to-string.js"); - /* harmony import */ - - - var core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_75___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_75__); - /* harmony import */ - - - var core_js_modules_es_regexp_flags__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__( - /*! core-js/modules/es.regexp.flags */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.flags.js"); - /* harmony import */ - - - var core_js_modules_es_regexp_flags__WEBPACK_IMPORTED_MODULE_76___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_regexp_flags__WEBPACK_IMPORTED_MODULE_76__); - /* harmony import */ - - - var core_js_modules_es_map__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__( - /*! core-js/modules/es.map */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js"); - /* harmony import */ - - - var core_js_modules_es_map__WEBPACK_IMPORTED_MODULE_77___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_map__WEBPACK_IMPORTED_MODULE_77__); - /* harmony import */ - - - var core_js_modules_es_weak_map__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__( - /*! core-js/modules/es.weak-map */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js"); - /* harmony import */ - - - var core_js_modules_es_weak_map__WEBPACK_IMPORTED_MODULE_78___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_weak_map__WEBPACK_IMPORTED_MODULE_78__); - /* harmony import */ - - - var core_js_modules_es_set__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__( - /*! core-js/modules/es.set */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js"); - /* harmony import */ - - - var core_js_modules_es_set__WEBPACK_IMPORTED_MODULE_79___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_set__WEBPACK_IMPORTED_MODULE_79__); - /* harmony import */ - - - var core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__( - /*! core-js/modules/web.dom-collections.for-each */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/web.dom-collections.for-each.js"); - /* harmony import */ - - - var core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_80___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_80__); - /* harmony import */ - - - var core_js_modules_web_dom_collections_iterator__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__( - /*! core-js/modules/web.dom-collections.iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/web.dom-collections.iterator.js"); - /* harmony import */ - - - var core_js_modules_web_dom_collections_iterator__WEBPACK_IMPORTED_MODULE_81___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_web_dom_collections_iterator__WEBPACK_IMPORTED_MODULE_81__); - /* harmony import */ - - - var core_js_modules_es_promise__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__( - /*! core-js/modules/es.promise */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.promise.js"); - /* harmony import */ - - - var core_js_modules_es_promise__WEBPACK_IMPORTED_MODULE_82___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_promise__WEBPACK_IMPORTED_MODULE_82__); - /* harmony import */ - - - var core_js_modules_es_json_to_string_tag__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__( - /*! core-js/modules/es.json.to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.json.to-string-tag.js"); - /* harmony import */ - - - var core_js_modules_es_json_to_string_tag__WEBPACK_IMPORTED_MODULE_83___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_json_to_string_tag__WEBPACK_IMPORTED_MODULE_83__); - /* harmony import */ - - - var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__( - /*! regenerator-runtime/runtime */ - "./node_modules/regenerator-runtime/runtime.js"); - /* harmony import */ - - - var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_84___default = - /*#__PURE__*/ - __webpack_require__.n(regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_84__); - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - // ES2015 symbol capabilities - // ES2015 function capabilities - // ES2015 object capabilities - // ES2015 array capabilities - // ES2015 string capabilities - - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js ***! - \**************************************************************************************************/ - - /*! no exports provided */ - - /***/ - function node_modulesAngularDevkitBuildAngularSrcAngularCliFilesModelsJitPolyfillsJs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony import */ - - - var core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! core-js/proposals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata.js"); - /* harmony import */ - - - var core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0__); - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /***/ - - }, - - /***/ - "./node_modules/regenerator-runtime/runtime.js": - /*!*****************************************************!*\ - !*** ./node_modules/regenerator-runtime/runtime.js ***! - \*****************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesRegeneratorRuntimeRuntimeJs(module, exports, __webpack_require__) { - /** - * Copyright (c) 2014-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - var runtime = function (exports) { - "use strict"; - - var Op = Object.prototype; - var hasOwn = Op.hasOwnProperty; - var undefined; // More compressible than void 0. - - var $Symbol = typeof Symbol === "function" ? Symbol : {}; - var iteratorSymbol = $Symbol.iterator || "@@iterator"; - var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; - var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; - - function wrap(innerFn, outerFn, self, tryLocsList) { - // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. - var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; - var generator = Object.create(protoGenerator.prototype); - var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next, - // .throw, and .return methods. - - generator._invoke = makeInvokeMethod(innerFn, self, context); - return generator; - } - - exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion - // record like context.tryEntries[i].completion. This interface could - // have been (and was previously) designed to take a closure to be - // invoked without arguments, but in all the cases we care about we - // already have an existing method we want to call, so there's no need - // to create a new function object. We can even get away with assuming - // the method takes exactly one argument, since that happens to be true - // in every case, so we don't have to touch the arguments object. The - // only additional allocation required is the completion record, which - // has a stable shape and so hopefully should be cheap to allocate. - - function tryCatch(fn, obj, arg) { - try { - return { - type: "normal", - arg: fn.call(obj, arg) - }; - } catch (err) { - return { - type: "throw", - arg: err - }; - } - } - - var GenStateSuspendedStart = "suspendedStart"; - var GenStateSuspendedYield = "suspendedYield"; - var GenStateExecuting = "executing"; - var GenStateCompleted = "completed"; // Returning this object from the innerFn has the same effect as - // breaking out of the dispatch switch statement. - - var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and - // .constructor.prototype properties for functions that return Generator - // objects. For full spec compliance, you may wish to configure your - // minifier not to mangle the names of these two functions. - - function Generator() {} - - function GeneratorFunction() {} - - function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that - // don't natively support it. - - - var IteratorPrototype = {}; - - IteratorPrototype[iteratorSymbol] = function () { - return this; - }; - - var getProto = Object.getPrototypeOf; - var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); - - if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { - // This environment has a native %IteratorPrototype%; use it instead - // of the polyfill. - IteratorPrototype = NativeIteratorPrototype; - } - - var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); - GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; - GeneratorFunctionPrototype.constructor = GeneratorFunction; - GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction"; // Helper for defining the .next, .throw, and .return methods of the - // Iterator interface in terms of a single ._invoke method. - - function defineIteratorMethods(prototype) { - ["next", "throw", "return"].forEach(function (method) { - prototype[method] = function (arg) { - return this._invoke(method, arg); - }; - }); - } - - exports.isGeneratorFunction = function (genFun) { - var ctor = typeof genFun === "function" && genFun.constructor; - return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can - // do is to check its .name property. - (ctor.displayName || ctor.name) === "GeneratorFunction" : false; - }; - - exports.mark = function (genFun) { - if (Object.setPrototypeOf) { - Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); - } else { - genFun.__proto__ = GeneratorFunctionPrototype; - - if (!(toStringTagSymbol in genFun)) { - genFun[toStringTagSymbol] = "GeneratorFunction"; - } - } - - genFun.prototype = Object.create(Gp); - return genFun; - }; // Within the body of any async function, `await x` is transformed to - // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test - // `hasOwn.call(value, "__await")` to determine if the yielded value is - // meant to be awaited. - - - exports.awrap = function (arg) { - return { - __await: arg - }; - }; - - function AsyncIterator(generator) { - function invoke(method, arg, resolve, reject) { - var record = tryCatch(generator[method], generator, arg); - - if (record.type === "throw") { - reject(record.arg); - } else { - var result = record.arg; - var value = result.value; - - if (value && typeof value === "object" && hasOwn.call(value, "__await")) { - return Promise.resolve(value.__await).then(function (value) { - invoke("next", value, resolve, reject); - }, function (err) { - invoke("throw", err, resolve, reject); - }); - } - - return Promise.resolve(value).then(function (unwrapped) { - // When a yielded Promise is resolved, its final value becomes - // the .value of the Promise<{value,done}> result for the - // current iteration. - result.value = unwrapped; - resolve(result); - }, function (error) { - // If a rejected Promise was yielded, throw the rejection back - // into the async generator function so it can be handled there. - return invoke("throw", error, resolve, reject); - }); - } - } - - var previousPromise; - - function enqueue(method, arg) { - function callInvokeWithMethodAndArg() { - return new Promise(function (resolve, reject) { - invoke(method, arg, resolve, reject); - }); - } - - return previousPromise = // If enqueue has been called before, then we want to wait until - // all previous Promises have been resolved before calling invoke, - // so that results are always delivered in the correct order. If - // enqueue has not been called before, then it is important to - // call invoke immediately, without waiting on a callback to fire, - // so that the async generator function has the opportunity to do - // any necessary setup in a predictable way. This predictability - // is why the Promise constructor synchronously invokes its - // executor callback, and why async functions synchronously - // execute code before the first await. Since we implement simple - // async functions in terms of async generators, it is especially - // important to get this right, even though it requires care. - previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later - // invocations of the iterator. - callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); - } // Define the unified helper method that is used to implement .next, - // .throw, and .return (see defineIteratorMethods). - - - this._invoke = enqueue; - } - - defineIteratorMethods(AsyncIterator.prototype); - - AsyncIterator.prototype[asyncIteratorSymbol] = function () { - return this; - }; - - exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of - // AsyncIterator objects; they just return a Promise for the value of - // the final result produced by the iterator. - - exports.async = function (innerFn, outerFn, self, tryLocsList) { - var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList)); - return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator. - : iter.next().then(function (result) { - return result.done ? result.value : iter.next(); - }); - }; - - function makeInvokeMethod(innerFn, self, context) { - var state = GenStateSuspendedStart; - return function invoke(method, arg) { - if (state === GenStateExecuting) { - throw new Error("Generator is already running"); - } - - if (state === GenStateCompleted) { - if (method === "throw") { - throw arg; - } // Be forgiving, per 25.3.3.3.3 of the spec: - // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume - - - return doneResult(); - } - - context.method = method; - context.arg = arg; - - while (true) { - var delegate = context.delegate; - - if (delegate) { - var delegateResult = maybeInvokeDelegate(delegate, context); - - if (delegateResult) { - if (delegateResult === ContinueSentinel) continue; - return delegateResult; - } - } - - if (context.method === "next") { - // Setting context._sent for legacy support of Babel's - // function.sent implementation. - context.sent = context._sent = context.arg; - } else if (context.method === "throw") { - if (state === GenStateSuspendedStart) { - state = GenStateCompleted; - throw context.arg; - } - - context.dispatchException(context.arg); - } else if (context.method === "return") { - context.abrupt("return", context.arg); - } - - state = GenStateExecuting; - var record = tryCatch(innerFn, self, context); - - if (record.type === "normal") { - // If an exception is thrown from innerFn, we leave state === - // GenStateExecuting and loop back for another invocation. - state = context.done ? GenStateCompleted : GenStateSuspendedYield; - - if (record.arg === ContinueSentinel) { - continue; - } - - return { - value: record.arg, - done: context.done - }; - } else if (record.type === "throw") { - state = GenStateCompleted; // Dispatch the exception by looping back around to the - // context.dispatchException(context.arg) call above. - - context.method = "throw"; - context.arg = record.arg; - } - } - }; - } // Call delegate.iterator[context.method](context.arg) and handle the - // result, either by returning a { value, done } result from the - // delegate iterator, or by modifying context.method and context.arg, - // setting context.delegate to null, and returning the ContinueSentinel. - - - function maybeInvokeDelegate(delegate, context) { - var method = delegate.iterator[context.method]; - - if (method === undefined) { - // A .throw or .return when the delegate iterator has no .throw - // method always terminates the yield* loop. - context.delegate = null; - - if (context.method === "throw") { - // Note: ["return"] must be used for ES3 parsing compatibility. - if (delegate.iterator["return"]) { - // If the delegate iterator has a return method, give it a - // chance to clean up. - context.method = "return"; - context.arg = undefined; - maybeInvokeDelegate(delegate, context); - - if (context.method === "throw") { - // If maybeInvokeDelegate(context) changed context.method from - // "return" to "throw", let that override the TypeError below. - return ContinueSentinel; - } - } - - context.method = "throw"; - context.arg = new TypeError("The iterator does not provide a 'throw' method"); - } - - return ContinueSentinel; - } - - var record = tryCatch(method, delegate.iterator, context.arg); - - if (record.type === "throw") { - context.method = "throw"; - context.arg = record.arg; - context.delegate = null; - return ContinueSentinel; - } - - var info = record.arg; - - if (!info) { - context.method = "throw"; - context.arg = new TypeError("iterator result is not an object"); - context.delegate = null; - return ContinueSentinel; - } - - if (info.done) { - // Assign the result of the finished delegate to the temporary - // variable specified by delegate.resultName (see delegateYield). - context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield). - - context.next = delegate.nextLoc; // If context.method was "throw" but the delegate handled the - // exception, let the outer generator proceed normally. If - // context.method was "next", forget context.arg since it has been - // "consumed" by the delegate iterator. If context.method was - // "return", allow the original .return call to continue in the - // outer generator. - - if (context.method !== "return") { - context.method = "next"; - context.arg = undefined; - } - } else { - // Re-yield the result returned by the delegate method. - return info; - } // The delegate iterator is finished, so forget it and continue with - // the outer generator. - - - context.delegate = null; - return ContinueSentinel; - } // Define Generator.prototype.{next,throw,return} in terms of the - // unified ._invoke helper method. - - - defineIteratorMethods(Gp); - Gp[toStringTagSymbol] = "Generator"; // A Generator should always return itself as the iterator object when the - // @@iterator function is called on it. Some browsers' implementations of the - // iterator prototype chain incorrectly implement this, causing the Generator - // object to not be returned from this call. This ensures that doesn't happen. - // See https://github.com/facebook/regenerator/issues/274 for more details. - - Gp[iteratorSymbol] = function () { - return this; - }; - - Gp.toString = function () { - return "[object Generator]"; - }; - - function pushTryEntry(locs) { - var entry = { - tryLoc: locs[0] - }; - - if (1 in locs) { - entry.catchLoc = locs[1]; - } - - if (2 in locs) { - entry.finallyLoc = locs[2]; - entry.afterLoc = locs[3]; - } - - this.tryEntries.push(entry); - } - - function resetTryEntry(entry) { - var record = entry.completion || {}; - record.type = "normal"; - delete record.arg; - entry.completion = record; - } - - function Context(tryLocsList) { - // The root entry object (effectively a try statement without a catch - // or a finally block) gives us a place to store values thrown from - // locations where there is no enclosing try statement. - this.tryEntries = [{ - tryLoc: "root" - }]; - tryLocsList.forEach(pushTryEntry, this); - this.reset(true); - } - - exports.keys = function (object) { - var keys = []; - - for (var key in object) { - keys.push(key); - } - - keys.reverse(); // Rather than returning an object with a next method, we keep - // things simple and return the next function itself. - - return function next() { - while (keys.length) { - var key = keys.pop(); - - if (key in object) { - next.value = key; - next.done = false; - return next; - } - } // To avoid creating an additional object, we just hang the .value - // and .done properties off the next function object itself. This - // also ensures that the minifier will not anonymize the function. - - - next.done = true; - return next; - }; - }; - - function values(iterable) { - if (iterable) { - var iteratorMethod = iterable[iteratorSymbol]; - - if (iteratorMethod) { - return iteratorMethod.call(iterable); - } - - if (typeof iterable.next === "function") { - return iterable; - } - - if (!isNaN(iterable.length)) { - var i = -1, - next = function next() { - while (++i < iterable.length) { - if (hasOwn.call(iterable, i)) { - next.value = iterable[i]; - next.done = false; - return next; - } - } - - next.value = undefined; - next.done = true; - return next; - }; - - return next.next = next; - } - } // Return an iterator with no values. - - - return { - next: doneResult - }; - } - - exports.values = values; - - function doneResult() { - return { - value: undefined, - done: true - }; - } - - Context.prototype = { - constructor: Context, - reset: function reset(skipTempReset) { - this.prev = 0; - this.next = 0; // Resetting context._sent for legacy support of Babel's - // function.sent implementation. - - this.sent = this._sent = undefined; - this.done = false; - this.delegate = null; - this.method = "next"; - this.arg = undefined; - this.tryEntries.forEach(resetTryEntry); - - if (!skipTempReset) { - for (var name in this) { - // Not sure about the optimal order of these conditions: - if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) { - this[name] = undefined; - } - } - } - }, - stop: function stop() { - this.done = true; - var rootEntry = this.tryEntries[0]; - var rootRecord = rootEntry.completion; - - if (rootRecord.type === "throw") { - throw rootRecord.arg; - } - - return this.rval; - }, - dispatchException: function dispatchException(exception) { - if (this.done) { - throw exception; - } - - var context = this; - - function handle(loc, caught) { - record.type = "throw"; - record.arg = exception; - context.next = loc; - - if (caught) { - // If the dispatched exception was caught by a catch block, - // then let that catch block handle the exception normally. - context.method = "next"; - context.arg = undefined; - } - - return !!caught; - } - - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - var record = entry.completion; - - if (entry.tryLoc === "root") { - // Exception thrown outside of any try block that could handle - // it, so set the completion value of the entire function to - // throw the exception. - return handle("end"); - } - - if (entry.tryLoc <= this.prev) { - var hasCatch = hasOwn.call(entry, "catchLoc"); - var hasFinally = hasOwn.call(entry, "finallyLoc"); - - if (hasCatch && hasFinally) { - if (this.prev < entry.catchLoc) { - return handle(entry.catchLoc, true); - } else if (this.prev < entry.finallyLoc) { - return handle(entry.finallyLoc); - } - } else if (hasCatch) { - if (this.prev < entry.catchLoc) { - return handle(entry.catchLoc, true); - } - } else if (hasFinally) { - if (this.prev < entry.finallyLoc) { - return handle(entry.finallyLoc); - } - } else { - throw new Error("try statement without catch or finally"); - } - } - } - }, - abrupt: function abrupt(type, arg) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { - var finallyEntry = entry; - break; - } - } - - if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) { - // Ignore the finally entry if control is not jumping to a - // location outside the try/catch block. - finallyEntry = null; - } - - var record = finallyEntry ? finallyEntry.completion : {}; - record.type = type; - record.arg = arg; - - if (finallyEntry) { - this.method = "next"; - this.next = finallyEntry.finallyLoc; - return ContinueSentinel; - } - - return this.complete(record); - }, - complete: function complete(record, afterLoc) { - if (record.type === "throw") { - throw record.arg; - } - - if (record.type === "break" || record.type === "continue") { - this.next = record.arg; - } else if (record.type === "return") { - this.rval = this.arg = record.arg; - this.method = "return"; - this.next = "end"; - } else if (record.type === "normal" && afterLoc) { - this.next = afterLoc; - } - - return ContinueSentinel; - }, - finish: function finish(finallyLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.finallyLoc === finallyLoc) { - this.complete(entry.completion, entry.afterLoc); - resetTryEntry(entry); - return ContinueSentinel; - } - } - }, - "catch": function _catch(tryLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.tryLoc === tryLoc) { - var record = entry.completion; - - if (record.type === "throw") { - var thrown = record.arg; - resetTryEntry(entry); - } - - return thrown; - } - } // The context.catch method must only be called with a location - // argument that corresponds to a known catch block. - - - throw new Error("illegal catch attempt"); - }, - delegateYield: function delegateYield(iterable, resultName, nextLoc) { - this.delegate = { - iterator: values(iterable), - resultName: resultName, - nextLoc: nextLoc - }; - - if (this.method === "next") { - // Deliberately forget the last sent value so that we don't - // accidentally pass it on to the delegate. - this.arg = undefined; - } - - return ContinueSentinel; - } - }; // Regardless of whether this script is executing as a CommonJS module - // or not, return the runtime object so that we can declare the variable - // regeneratorRuntime in the outer scope, which allows this module to be - // injected easily by `bin/regenerator --include-runtime script.js`. - - return exports; - }( // If this script is executing as a CommonJS module, use module.exports - // as the regeneratorRuntime namespace. Otherwise create a new empty - // object. Either way, the resulting object will be used to initialize - // the regeneratorRuntime variable at the top of this file. - true ? module.exports : undefined); - - try { - regeneratorRuntime = runtime; - } catch (accidentalStrictMode) { - // This module should not be running in strict mode, so the above - // assignment should always work unless something is misconfigured. Just - // in case runtime.js accidentally runs in strict mode, we can escape - // strict mode using a global Function call. This could conceivably fail - // if a Content Security Policy forbids using Function, but in that case - // the proper solution is to fix the accidental strict mode problem. If - // you've misconfigured your bundler to force strict mode and applied a - // CSP to forbid Function, and you're not willing to fix either of those - // problems, please detail your unique predicament in a GitHub issue. - Function("r", "regeneratorRuntime = r")(runtime); - } - /***/ - - }, - - /***/ - "./node_modules/tslib/tslib.es6.js": - /*!*****************************************!*\ - !*** ./node_modules/tslib/tslib.es6.js ***! - \*****************************************/ - - /*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */ - - /***/ - function node_modulesTslibTslibEs6Js(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__extends", function () { - return __extends; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__assign", function () { - return _assign; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__rest", function () { - return __rest; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__decorate", function () { - return __decorate; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__param", function () { - return __param; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__metadata", function () { - return __metadata; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__awaiter", function () { - return __awaiter; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__generator", function () { - return __generator; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__exportStar", function () { - return __exportStar; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__values", function () { - return __values; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__read", function () { - return __read; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__spread", function () { - return __spread; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__await", function () { - return __await; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function () { - return __asyncGenerator; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function () { - return __asyncDelegator; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__asyncValues", function () { - return __asyncValues; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function () { - return __makeTemplateObject; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__importStar", function () { - return __importStar; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__importDefault", function () { - return __importDefault; - }); - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - - /* global Reflect, Promise */ - - - var _extendStatics = function extendStatics(d, b) { - _extendStatics = Object.setPrototypeOf || { - __proto__: [] - } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) { - if (b.hasOwnProperty(p)) d[p] = b[p]; - } - }; - - return _extendStatics(d, b); - }; - - function __extends(d, b) { - _extendStatics(d, b); - - function __() { - this.constructor = d; - } - - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var _assign = function __assign() { - _assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - - for (var p in s) { - if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - } - - return t; - }; - - return _assign.apply(this, arguments); - }; - - function __rest(s, e) { - var t = {}; - - for (var p in s) { - if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; - } - - if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]]; - } - return t; - } - - function __decorate(decorators, target, key, desc) { - var c = arguments.length, - r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, - d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) { - if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - } - return c > 3 && r && Object.defineProperty(target, key, r), r; - } - - function __param(paramIndex, decorator) { - return function (target, key) { - decorator(target, key, paramIndex); - }; - } - - function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); - } - - function __awaiter(thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - - function step(result) { - result.done ? resolve(result.value) : new P(function (resolve) { - resolve(result.value); - }).then(fulfilled, rejected); - } - - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - } - - function __generator(thisArg, body) { - var _ = { - label: 0, - sent: function sent() { - if (t[0] & 1) throw t[1]; - return t[1]; - }, - trys: [], - ops: [] - }, - f, - y, - t, - g; - return g = { - next: verb(0), - "throw": verb(1), - "return": verb(2) - }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { - return this; - }), g; - - function verb(n) { - return function (v) { - return step([n, v]); - }; - } - - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - - while (_) { - try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - - switch (op[0]) { - case 0: - case 1: - t = op; - break; - - case 4: - _.label++; - return { - value: op[1], - done: false - }; - - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - - case 7: - op = _.ops.pop(); - - _.trys.pop(); - - continue; - - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _ = 0; - continue; - } - - if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { - _.label = op[1]; - break; - } - - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - - if (t && _.label < t[2]) { - _.label = t[2]; - - _.ops.push(op); - - break; - } - - if (t[2]) _.ops.pop(); - - _.trys.pop(); - - continue; - } - - op = body.call(thisArg, _); - } catch (e) { - op = [6, e]; - y = 0; - } finally { - f = t = 0; - } - } - - if (op[0] & 5) throw op[1]; - return { - value: op[0] ? op[1] : void 0, - done: true - }; - } - } - - function __exportStar(m, exports) { - for (var p in m) { - if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - } - - function __values(o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], - i = 0; - if (m) return m.call(o); - return { - next: function next() { - if (o && i >= o.length) o = void 0; - return { - value: o && o[i++], - done: !o - }; - } - }; - } - - function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), - r, - ar = [], - e; - - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { - ar.push(r.value); - } - } catch (error) { - e = { - error: error - }; - } finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } finally { - if (e) throw e.error; - } - } - - return ar; - } - - function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) { - ar = ar.concat(__read(arguments[i])); - } - - return ar; - } - - function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); - } - - function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), - i, - q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i; - - function verb(n) { - if (g[n]) i[n] = function (v) { - return new Promise(function (a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - - function fulfill(value) { - resume("next", value); - } - - function reject(value) { - resume("throw", value); - } - - function settle(f, v) { - if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); - } - } - - function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { - throw e; - }), verb("return"), i[Symbol.iterator] = function () { - return this; - }, i; - - function verb(n, f) { - i[n] = o[n] ? function (v) { - return (p = !p) ? { - value: __await(o[n](v)), - done: n === "return" - } : f ? f(v) : v; - } : f; - } - } - - function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], - i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i); - - function verb(n) { - i[n] = o[n] && function (v) { - return new Promise(function (resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function (v) { - resolve({ - value: v, - done: d - }); - }, reject); - } - } - - function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { - value: raw - }); - } else { - cooked.raw = raw; - } - - return cooked; - } - - ; - - function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) { - if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - } - result.default = mod; - return result; - } - - function __importDefault(mod) { - return mod && mod.__esModule ? mod : { - default: mod - }; - } - /***/ - - }, - - /***/ - "./node_modules/zone.js/dist/zone-evergreen.js": - /*!*****************************************************!*\ - !*** ./node_modules/zone.js/dist/zone-evergreen.js ***! - \*****************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesZoneJsDistZoneEvergreenJs(module, exports) { - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - var Zone$1 = function (global) { - var performance = global['performance']; - - function mark(name) { - performance && performance['mark'] && performance['mark'](name); - } - - function performanceMeasure(name, label) { - performance && performance['measure'] && performance['measure'](name, label); - } - - mark('Zone'); - var checkDuplicate = global['__zone_symbol__forceDuplicateZoneCheck'] === true; - - if (global['Zone']) { - // if global['Zone'] already exists (maybe zone.js was already loaded or - // some other lib also registered a global object named Zone), we may need - // to throw an error, but sometimes user may not want this error. - // For example, - // we have two web pages, page1 includes zone.js, page2 doesn't. - // and the 1st time user load page1 and page2, everything work fine, - // but when user load page2 again, error occurs because global['Zone'] already exists. - // so we add a flag to let user choose whether to throw this error or not. - // By default, if existing Zone is from zone.js, we will not throw the error. - if (checkDuplicate || typeof global['Zone'].__symbol__ !== 'function') { - throw new Error('Zone already loaded.'); - } else { - return global['Zone']; - } - } - - var Zone = - /*#__PURE__*/ - function () { - function Zone(parent, zoneSpec) { - _classCallCheck(this, Zone); - - this._parent = parent; - this._name = zoneSpec ? zoneSpec.name || 'unnamed' : ''; - this._properties = zoneSpec && zoneSpec.properties || {}; - this._zoneDelegate = new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec); - } - - _createClass(Zone, [{ - key: "get", - value: function get(key) { - var zone = this.getZoneWith(key); - if (zone) return zone._properties[key]; - } - }, { - key: "getZoneWith", - value: function getZoneWith(key) { - var current = this; - - while (current) { - if (current._properties.hasOwnProperty(key)) { - return current; - } - - current = current._parent; - } - - return null; - } - }, { - key: "fork", - value: function fork(zoneSpec) { - if (!zoneSpec) throw new Error('ZoneSpec required!'); - return this._zoneDelegate.fork(this, zoneSpec); - } - }, { - key: "wrap", - value: function wrap(callback, source) { - if (typeof callback !== 'function') { - throw new Error('Expecting function got: ' + callback); - } - - var _callback = this._zoneDelegate.intercept(this, callback, source); - - var zone = this; - return function () { - return zone.runGuarded(_callback, this, arguments, source); - }; - } - }, { - key: "run", - value: function run(callback, applyThis, applyArgs, source) { - _currentZoneFrame = { - parent: _currentZoneFrame, - zone: this - }; - - try { - return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); - } finally { - _currentZoneFrame = _currentZoneFrame.parent; - } - } - }, { - key: "runGuarded", - value: function runGuarded(callback) { - var applyThis = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - var applyArgs = arguments.length > 2 ? arguments[2] : undefined; - var source = arguments.length > 3 ? arguments[3] : undefined; - _currentZoneFrame = { - parent: _currentZoneFrame, - zone: this - }; - - try { - try { - return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); - } catch (error) { - if (this._zoneDelegate.handleError(this, error)) { - throw error; - } - } - } finally { - _currentZoneFrame = _currentZoneFrame.parent; - } - } - }, { - key: "runTask", - value: function runTask(task, applyThis, applyArgs) { - if (task.zone != this) { - throw new Error('A task can only be run in the zone of creation! (Creation: ' + (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')'); - } // https://github.com/angular/zone.js/issues/778, sometimes eventTask - // will run in notScheduled(canceled) state, we should not try to - // run such kind of task but just return - - - if (task.state === notScheduled && (task.type === eventTask || task.type === macroTask)) { - return; - } - - var reEntryGuard = task.state != running; - reEntryGuard && task._transitionTo(running, scheduled); - task.runCount++; - var previousTask = _currentTask; - _currentTask = task; - _currentZoneFrame = { - parent: _currentZoneFrame, - zone: this - }; - - try { - if (task.type == macroTask && task.data && !task.data.isPeriodic) { - task.cancelFn = undefined; - } - - try { - return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs); - } catch (error) { - if (this._zoneDelegate.handleError(this, error)) { - throw error; - } - } - } finally { - // if the task's state is notScheduled or unknown, then it has already been cancelled - // we should not reset the state to scheduled - if (task.state !== notScheduled && task.state !== unknown) { - if (task.type == eventTask || task.data && task.data.isPeriodic) { - reEntryGuard && task._transitionTo(scheduled, running); - } else { - task.runCount = 0; - - this._updateTaskCount(task, -1); - - reEntryGuard && task._transitionTo(notScheduled, running, notScheduled); - } - } - - _currentZoneFrame = _currentZoneFrame.parent; - _currentTask = previousTask; - } - } - }, { - key: "scheduleTask", - value: function scheduleTask(task) { - if (task.zone && task.zone !== this) { - // check if the task was rescheduled, the newZone - // should not be the children of the original zone - var newZone = this; - - while (newZone) { - if (newZone === task.zone) { - throw Error("can not reschedule task to ".concat(this.name, " which is descendants of the original zone ").concat(task.zone.name)); - } - - newZone = newZone.parent; - } - } - - task._transitionTo(scheduling, notScheduled); - - var zoneDelegates = []; - task._zoneDelegates = zoneDelegates; - task._zone = this; - - try { - task = this._zoneDelegate.scheduleTask(this, task); - } catch (err) { - // should set task's state to unknown when scheduleTask throw error - // because the err may from reschedule, so the fromState maybe notScheduled - task._transitionTo(unknown, scheduling, notScheduled); // TODO: @JiaLiPassion, should we check the result from handleError? - - - this._zoneDelegate.handleError(this, err); - - throw err; - } - - if (task._zoneDelegates === zoneDelegates) { - // we have to check because internally the delegate can reschedule the task. - this._updateTaskCount(task, 1); - } - - if (task.state == scheduling) { - task._transitionTo(scheduled, scheduling); - } - - return task; - } - }, { - key: "scheduleMicroTask", - value: function scheduleMicroTask(source, callback, data, customSchedule) { - return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, undefined)); - } - }, { - key: "scheduleMacroTask", - value: function scheduleMacroTask(source, callback, data, customSchedule, customCancel) { - return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel)); - } - }, { - key: "scheduleEventTask", - value: function scheduleEventTask(source, callback, data, customSchedule, customCancel) { - return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel)); - } - }, { - key: "cancelTask", - value: function cancelTask(task) { - if (task.zone != this) throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' + (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')'); - - task._transitionTo(canceling, scheduled, running); - - try { - this._zoneDelegate.cancelTask(this, task); - } catch (err) { - // if error occurs when cancelTask, transit the state to unknown - task._transitionTo(unknown, canceling); - - this._zoneDelegate.handleError(this, err); - - throw err; - } - - this._updateTaskCount(task, -1); - - task._transitionTo(notScheduled, canceling); - - task.runCount = 0; - return task; - } - }, { - key: "_updateTaskCount", - value: function _updateTaskCount(task, count) { - var zoneDelegates = task._zoneDelegates; - - if (count == -1) { - task._zoneDelegates = null; - } - - for (var i = 0; i < zoneDelegates.length; i++) { - zoneDelegates[i]._updateTaskCount(task.type, count); - } - } - }, { - key: "parent", - get: function get() { - return this._parent; - } - }, { - key: "name", - get: function get() { - return this._name; - } - }], [{ - key: "assertZonePatched", - value: function assertZonePatched() { - if (global['Promise'] !== patches['ZoneAwarePromise']) { - throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' + 'has been overwritten.\n' + 'Most likely cause is that a Promise polyfill has been loaded ' + 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' + 'If you must load one, do so before loading zone.js.)'); - } - } - }, { - key: "__load_patch", - value: function __load_patch(name, fn) { - if (patches.hasOwnProperty(name)) { - if (checkDuplicate) { - throw Error('Already loaded patch: ' + name); - } - } else if (!global['__Zone_disable_' + name]) { - var perfName = 'Zone:' + name; - mark(perfName); - patches[name] = fn(global, Zone, _api); - performanceMeasure(perfName, perfName); - } - } - }, { - key: "root", - get: function get() { - var zone = Zone.current; - - while (zone.parent) { - zone = zone.parent; - } - - return zone; - } - }, { - key: "current", - get: function get() { - return _currentZoneFrame.zone; - } - }, { - key: "currentTask", - get: function get() { - return _currentTask; - } - }]); - - return Zone; - }(); - - Zone.__symbol__ = __symbol__; - var DELEGATE_ZS = { - name: '', - onHasTask: function onHasTask(delegate, _, target, hasTaskState) { - return delegate.hasTask(target, hasTaskState); - }, - onScheduleTask: function onScheduleTask(delegate, _, target, task) { - return delegate.scheduleTask(target, task); - }, - onInvokeTask: function onInvokeTask(delegate, _, target, task, applyThis, applyArgs) { - return delegate.invokeTask(target, task, applyThis, applyArgs); - }, - onCancelTask: function onCancelTask(delegate, _, target, task) { - return delegate.cancelTask(target, task); - } - }; - - var ZoneDelegate = - /*#__PURE__*/ - function () { - function ZoneDelegate(zone, parentDelegate, zoneSpec) { - _classCallCheck(this, ZoneDelegate); - - this._taskCounts = { - 'microTask': 0, - 'macroTask': 0, - 'eventTask': 0 - }; - this.zone = zone; - this._parentDelegate = parentDelegate; - this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS); - this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt); - this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone); - this._interceptZS = zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS); - this._interceptDlgt = zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt); - this._interceptCurrZone = zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone); - this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS); - this._invokeDlgt = zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt); - this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone); - this._handleErrorZS = zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS); - this._handleErrorDlgt = zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt); - this._handleErrorCurrZone = zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone); - this._scheduleTaskZS = zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS); - this._scheduleTaskDlgt = zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt); - this._scheduleTaskCurrZone = zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone); - this._invokeTaskZS = zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS); - this._invokeTaskDlgt = zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt); - this._invokeTaskCurrZone = zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone); - this._cancelTaskZS = zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS); - this._cancelTaskDlgt = zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt); - this._cancelTaskCurrZone = zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone); - this._hasTaskZS = null; - this._hasTaskDlgt = null; - this._hasTaskDlgtOwner = null; - this._hasTaskCurrZone = null; - var zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask; - var parentHasTask = parentDelegate && parentDelegate._hasTaskZS; - - if (zoneSpecHasTask || parentHasTask) { - // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such - // a case all task related interceptors must go through this ZD. We can't short circuit it. - this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS; - this._hasTaskDlgt = parentDelegate; - this._hasTaskDlgtOwner = this; - this._hasTaskCurrZone = zone; - - if (!zoneSpec.onScheduleTask) { - this._scheduleTaskZS = DELEGATE_ZS; - this._scheduleTaskDlgt = parentDelegate; - this._scheduleTaskCurrZone = this.zone; - } - - if (!zoneSpec.onInvokeTask) { - this._invokeTaskZS = DELEGATE_ZS; - this._invokeTaskDlgt = parentDelegate; - this._invokeTaskCurrZone = this.zone; - } - - if (!zoneSpec.onCancelTask) { - this._cancelTaskZS = DELEGATE_ZS; - this._cancelTaskDlgt = parentDelegate; - this._cancelTaskCurrZone = this.zone; - } - } - } - - _createClass(ZoneDelegate, [{ - key: "fork", - value: function fork(targetZone, zoneSpec) { - return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) : new Zone(targetZone, zoneSpec); - } - }, { - key: "intercept", - value: function intercept(targetZone, callback, source) { - return this._interceptZS ? this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) : callback; - } - }, { - key: "invoke", - value: function invoke(targetZone, callback, applyThis, applyArgs, source) { - return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) : callback.apply(applyThis, applyArgs); - } - }, { - key: "handleError", - value: function handleError(targetZone, error) { - return this._handleErrorZS ? this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) : true; - } - }, { - key: "scheduleTask", - value: function scheduleTask(targetZone, task) { - var returnTask = task; - - if (this._scheduleTaskZS) { - if (this._hasTaskZS) { - returnTask._zoneDelegates.push(this._hasTaskDlgtOwner); - } - - returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task); - if (!returnTask) returnTask = task; - } else { - if (task.scheduleFn) { - task.scheduleFn(task); - } else if (task.type == microTask) { - scheduleMicroTask(task); - } else { - throw new Error('Task is missing scheduleFn.'); - } - } - - return returnTask; - } - }, { - key: "invokeTask", - value: function invokeTask(targetZone, task, applyThis, applyArgs) { - return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) : task.callback.apply(applyThis, applyArgs); - } - }, { - key: "cancelTask", - value: function cancelTask(targetZone, task) { - var value; - - if (this._cancelTaskZS) { - value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task); - } else { - if (!task.cancelFn) { - throw Error('Task is not cancelable'); - } - - value = task.cancelFn(task); - } - - return value; - } - }, { - key: "hasTask", - value: function hasTask(targetZone, isEmpty) { - // hasTask should not throw error so other ZoneDelegate - // can still trigger hasTask callback - try { - this._hasTaskZS && this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty); - } catch (err) { - this.handleError(targetZone, err); - } - } - }, { - key: "_updateTaskCount", - value: function _updateTaskCount(type, count) { - var counts = this._taskCounts; - var prev = counts[type]; - var next = counts[type] = prev + count; - - if (next < 0) { - throw new Error('More tasks executed then were scheduled.'); - } - - if (prev == 0 || next == 0) { - var isEmpty = { - microTask: counts['microTask'] > 0, - macroTask: counts['macroTask'] > 0, - eventTask: counts['eventTask'] > 0, - change: type - }; - this.hasTask(this.zone, isEmpty); - } - } - }]); - - return ZoneDelegate; - }(); - - var ZoneTask = - /*#__PURE__*/ - function () { - function ZoneTask(type, source, callback, options, scheduleFn, cancelFn) { - _classCallCheck(this, ZoneTask); - - this._zone = null; - this.runCount = 0; - this._zoneDelegates = null; - this._state = 'notScheduled'; - this.type = type; - this.source = source; - this.data = options; - this.scheduleFn = scheduleFn; - this.cancelFn = cancelFn; - this.callback = callback; - var self = this; // TODO: @JiaLiPassion options should have interface - - if (type === eventTask && options && options.useG) { - this.invoke = ZoneTask.invokeTask; - } else { - this.invoke = function () { - return ZoneTask.invokeTask.call(global, self, this, arguments); - }; - } - } - - _createClass(ZoneTask, [{ - key: "cancelScheduleRequest", - value: function cancelScheduleRequest() { - this._transitionTo(notScheduled, scheduling); - } - }, { - key: "_transitionTo", - value: function _transitionTo(toState, fromState1, fromState2) { - if (this._state === fromState1 || this._state === fromState2) { - this._state = toState; - - if (toState == notScheduled) { - this._zoneDelegates = null; - } - } else { - throw new Error("".concat(this.type, " '").concat(this.source, "': can not transition to '").concat(toState, "', expecting state '").concat(fromState1, "'").concat(fromState2 ? ' or \'' + fromState2 + '\'' : '', ", was '").concat(this._state, "'.")); - } - } - }, { - key: "toString", - value: function toString() { - if (this.data && typeof this.data.handleId !== 'undefined') { - return this.data.handleId.toString(); - } else { - return Object.prototype.toString.call(this); - } - } // add toJSON method to prevent cyclic error when - // call JSON.stringify(zoneTask) - - }, { - key: "toJSON", - value: function toJSON() { - return { - type: this.type, - state: this.state, - source: this.source, - zone: this.zone.name, - runCount: this.runCount - }; - } - }, { - key: "zone", - get: function get() { - return this._zone; - } - }, { - key: "state", - get: function get() { - return this._state; - } - }], [{ - key: "invokeTask", - value: function invokeTask(task, target, args) { - if (!task) { - task = this; - } - - _numberOfNestedTaskFrames++; - - try { - task.runCount++; - return task.zone.runTask(task, target, args); - } finally { - if (_numberOfNestedTaskFrames == 1) { - drainMicroTaskQueue(); - } - - _numberOfNestedTaskFrames--; - } - } - }]); - - return ZoneTask; - }(); ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - /// MICROTASK QUEUE - ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - - - var symbolSetTimeout = __symbol__('setTimeout'); - - var symbolPromise = __symbol__('Promise'); - - var symbolThen = __symbol__('then'); - - var _microTaskQueue = []; - var _isDrainingMicrotaskQueue = false; - var nativeMicroTaskQueuePromise; - - function scheduleMicroTask(task) { - // if we are not running in any task, and there has not been anything scheduled - // we must bootstrap the initial task creation by manually scheduling the drain - if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) { - // We are not running in Task, so we need to kickstart the microtask queue. - if (!nativeMicroTaskQueuePromise) { - if (global[symbolPromise]) { - nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0); - } - } - - if (nativeMicroTaskQueuePromise) { - var nativeThen = nativeMicroTaskQueuePromise[symbolThen]; - - if (!nativeThen) { - // native Promise is not patchable, we need to use `then` directly - // issue 1078 - nativeThen = nativeMicroTaskQueuePromise['then']; - } - - nativeThen.call(nativeMicroTaskQueuePromise, drainMicroTaskQueue); - } else { - global[symbolSetTimeout](drainMicroTaskQueue, 0); - } - } - - task && _microTaskQueue.push(task); - } - - function drainMicroTaskQueue() { - if (!_isDrainingMicrotaskQueue) { - _isDrainingMicrotaskQueue = true; - - while (_microTaskQueue.length) { - var queue = _microTaskQueue; - _microTaskQueue = []; - - for (var i = 0; i < queue.length; i++) { - var task = queue[i]; - - try { - task.zone.runTask(task, null, null); - } catch (error) { - _api.onUnhandledError(error); - } - } - } - - _api.microtaskDrainDone(); - - _isDrainingMicrotaskQueue = false; - } - } ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - /// BOOTSTRAP - ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - - - var NO_ZONE = { - name: 'NO ZONE' - }; - var notScheduled = 'notScheduled', - scheduling = 'scheduling', - scheduled = 'scheduled', - running = 'running', - canceling = 'canceling', - unknown = 'unknown'; - var microTask = 'microTask', - macroTask = 'macroTask', - eventTask = 'eventTask'; - var patches = {}; - var _api = { - symbol: __symbol__, - currentZoneFrame: function currentZoneFrame() { - return _currentZoneFrame; - }, - onUnhandledError: noop, - microtaskDrainDone: noop, - scheduleMicroTask: scheduleMicroTask, - showUncaughtError: function showUncaughtError() { - return !Zone[__symbol__('ignoreConsoleErrorUncaughtError')]; - }, - patchEventTarget: function patchEventTarget() { - return []; - }, - patchOnProperties: noop, - patchMethod: function patchMethod() { - return noop; - }, - bindArguments: function bindArguments() { - return []; - }, - patchThen: function patchThen() { - return noop; - }, - patchMacroTask: function patchMacroTask() { - return noop; - }, - setNativePromise: function setNativePromise(NativePromise) { - // sometimes NativePromise.resolve static function - // is not ready yet, (such as core-js/es6.promise) - // so we need to check here. - if (NativePromise && typeof NativePromise.resolve === 'function') { - nativeMicroTaskQueuePromise = NativePromise.resolve(0); - } - }, - patchEventPrototype: function patchEventPrototype() { - return noop; - }, - isIEOrEdge: function isIEOrEdge() { - return false; - }, - getGlobalObjects: function getGlobalObjects() { - return undefined; - }, - ObjectDefineProperty: function ObjectDefineProperty() { - return noop; - }, - ObjectGetOwnPropertyDescriptor: function ObjectGetOwnPropertyDescriptor() { - return undefined; - }, - ObjectCreate: function ObjectCreate() { - return undefined; - }, - ArraySlice: function ArraySlice() { - return []; - }, - patchClass: function patchClass() { - return noop; - }, - wrapWithCurrentZone: function wrapWithCurrentZone() { - return noop; - }, - filterProperties: function filterProperties() { - return []; - }, - attachOriginToPatched: function attachOriginToPatched() { - return noop; - }, - _redefineProperty: function _redefineProperty() { - return noop; - }, - patchCallbacks: function patchCallbacks() { - return noop; - } - }; - var _currentZoneFrame = { - parent: null, - zone: new Zone(null, null) - }; - var _currentTask = null; - var _numberOfNestedTaskFrames = 0; - - function noop() {} - - function __symbol__(name) { - return '__zone_symbol__' + name; - } - - performanceMeasure('Zone', 'Zone'); - return global['Zone'] = Zone; - }(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global); - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - - Zone.__load_patch('ZoneAwarePromise', function (global, Zone, api) { - var ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var ObjectDefineProperty = Object.defineProperty; - - function readableObjectToString(obj) { - if (obj && obj.toString === Object.prototype.toString) { - var className = obj.constructor && obj.constructor.name; - return (className ? className : '') + ': ' + JSON.stringify(obj); - } - - return obj ? obj.toString() : Object.prototype.toString.call(obj); - } - - var __symbol__ = api.symbol; - var _uncaughtPromiseErrors = []; - - var symbolPromise = __symbol__('Promise'); - - var symbolThen = __symbol__('then'); - - var creationTrace = '__creationTrace__'; - - api.onUnhandledError = function (e) { - if (api.showUncaughtError()) { - var rejection = e && e.rejection; - - if (rejection) { - console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined); - } else { - console.error(e); - } - } - }; - - api.microtaskDrainDone = function () { - while (_uncaughtPromiseErrors.length) { - var _loop = function _loop() { - var uncaughtPromiseError = _uncaughtPromiseErrors.shift(); - - try { - uncaughtPromiseError.zone.runGuarded(function () { - throw uncaughtPromiseError; - }); - } catch (error) { - handleUnhandledRejection(error); - } - }; - - while (_uncaughtPromiseErrors.length) { - _loop(); - } - } - }; - - var UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler'); - - function handleUnhandledRejection(e) { - api.onUnhandledError(e); - - try { - var handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL]; - - if (handler && typeof handler === 'function') { - handler.call(this, e); - } - } catch (err) {} - } - - function isThenable(value) { - return value && value.then; - } - - function forwardResolution(value) { - return value; - } - - function forwardRejection(rejection) { - return ZoneAwarePromise.reject(rejection); - } - - var symbolState = __symbol__('state'); - - var symbolValue = __symbol__('value'); - - var symbolFinally = __symbol__('finally'); - - var symbolParentPromiseValue = __symbol__('parentPromiseValue'); - - var symbolParentPromiseState = __symbol__('parentPromiseState'); - - var source = 'Promise.then'; - var UNRESOLVED = null; - var RESOLVED = true; - var REJECTED = false; - var REJECTED_NO_CATCH = 0; - - function makeResolver(promise, state) { - return function (v) { - try { - resolvePromise(promise, state, v); - } catch (err) { - resolvePromise(promise, false, err); - } // Do not return value or you will break the Promise spec. - - }; - } - - var once = function once() { - var wasCalled = false; - return function wrapper(wrappedFunction) { - return function () { - if (wasCalled) { - return; - } - - wasCalled = true; - wrappedFunction.apply(null, arguments); - }; - }; - }; - - var TYPE_ERROR = 'Promise resolved with itself'; - - var CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace'); // Promise Resolution - - - function resolvePromise(promise, state, value) { - var onceWrapper = once(); - - if (promise === value) { - throw new TypeError(TYPE_ERROR); - } - - if (promise[symbolState] === UNRESOLVED) { - // should only get value.then once based on promise spec. - var then = null; - - try { - if (typeof value === 'object' || typeof value === 'function') { - then = value && value.then; - } - } catch (err) { - onceWrapper(function () { - resolvePromise(promise, false, err); - })(); - return promise; - } // if (value instanceof ZoneAwarePromise) { - - - if (state !== REJECTED && value instanceof ZoneAwarePromise && value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) && value[symbolState] !== UNRESOLVED) { - clearRejectedNoCatch(value); - resolvePromise(promise, value[symbolState], value[symbolValue]); - } else if (state !== REJECTED && typeof then === 'function') { - try { - then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false))); - } catch (err) { - onceWrapper(function () { - resolvePromise(promise, false, err); - })(); - } - } else { - promise[symbolState] = state; - var queue = promise[symbolValue]; - promise[symbolValue] = value; - - if (promise[symbolFinally] === symbolFinally) { - // the promise is generated by Promise.prototype.finally - if (state === RESOLVED) { - // the state is resolved, should ignore the value - // and use parent promise value - promise[symbolState] = promise[symbolParentPromiseState]; - promise[symbolValue] = promise[symbolParentPromiseValue]; - } - } // record task information in value when error occurs, so we can - // do some additional work such as render longStackTrace - - - if (state === REJECTED && value instanceof Error) { - // check if longStackTraceZone is here - var trace = Zone.currentTask && Zone.currentTask.data && Zone.currentTask.data[creationTrace]; - - if (trace) { - // only keep the long stack trace into error when in longStackTraceZone - ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { - configurable: true, - enumerable: false, - writable: true, - value: trace - }); - } - } - - for (var i = 0; i < queue.length;) { - scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]); - } - - if (queue.length == 0 && state == REJECTED) { - promise[symbolState] = REJECTED_NO_CATCH; - - try { - // try to print more readable error log - throw new Error('Uncaught (in promise): ' + readableObjectToString(value) + (value && value.stack ? '\n' + value.stack : '')); - } catch (err) { - var error = err; - error.rejection = value; - error.promise = promise; - error.zone = Zone.current; - error.task = Zone.currentTask; - - _uncaughtPromiseErrors.push(error); - - api.scheduleMicroTask(); // to make sure that it is running - } - } - } - } // Resolving an already resolved promise is a noop. - - - return promise; - } - - var REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler'); - - function clearRejectedNoCatch(promise) { - if (promise[symbolState] === REJECTED_NO_CATCH) { - // if the promise is rejected no catch status - // and queue.length > 0, means there is a error handler - // here to handle the rejected promise, we should trigger - // windows.rejectionhandled eventHandler or nodejs rejectionHandled - // eventHandler - try { - var handler = Zone[REJECTION_HANDLED_HANDLER]; - - if (handler && typeof handler === 'function') { - handler.call(this, { - rejection: promise[symbolValue], - promise: promise - }); - } - } catch (err) {} - - promise[symbolState] = REJECTED; - - for (var i = 0; i < _uncaughtPromiseErrors.length; i++) { - if (promise === _uncaughtPromiseErrors[i].promise) { - _uncaughtPromiseErrors.splice(i, 1); - } - } - } - } - - function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) { - clearRejectedNoCatch(promise); - var promiseState = promise[symbolState]; - var delegate = promiseState ? typeof onFulfilled === 'function' ? onFulfilled : forwardResolution : typeof onRejected === 'function' ? onRejected : forwardRejection; - zone.scheduleMicroTask(source, function () { - try { - var parentPromiseValue = promise[symbolValue]; - var isFinallyPromise = chainPromise && symbolFinally === chainPromise[symbolFinally]; - - if (isFinallyPromise) { - // if the promise is generated from finally call, keep parent promise's state and value - chainPromise[symbolParentPromiseValue] = parentPromiseValue; - chainPromise[symbolParentPromiseState] = promiseState; - } // should not pass value to finally callback - - - var value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ? [] : [parentPromiseValue]); - resolvePromise(chainPromise, true, value); - } catch (error) { - // if error occurs, should always return this error - resolvePromise(chainPromise, false, error); - } - }, chainPromise); - } - - var ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }'; - - var ZoneAwarePromise = - /*#__PURE__*/ - function () { - function ZoneAwarePromise(executor) { - _classCallCheck(this, ZoneAwarePromise); - - var promise = this; - - if (!(promise instanceof ZoneAwarePromise)) { - throw new Error('Must be an instanceof Promise.'); - } - - promise[symbolState] = UNRESOLVED; - promise[symbolValue] = []; // queue; - - try { - executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED)); - } catch (error) { - resolvePromise(promise, false, error); - } - } - - _createClass(ZoneAwarePromise, [{ - key: "then", - value: function then(onFulfilled, onRejected) { - var chainPromise = new this.constructor(null); - var zone = Zone.current; - - if (this[symbolState] == UNRESOLVED) { - this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected); - } else { - scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected); - } - - return chainPromise; - } - }, { - key: "catch", - value: function _catch(onRejected) { - return this.then(null, onRejected); - } - }, { - key: "finally", - value: function _finally(onFinally) { - var chainPromise = new this.constructor(null); - chainPromise[symbolFinally] = symbolFinally; - var zone = Zone.current; - - if (this[symbolState] == UNRESOLVED) { - this[symbolValue].push(zone, chainPromise, onFinally, onFinally); - } else { - scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally); - } - - return chainPromise; - } - }, { - key: Symbol.toStringTag, - get: function get() { - return 'Promise'; - } - }], [{ - key: "toString", - value: function toString() { - return ZONE_AWARE_PROMISE_TO_STRING; - } - }, { - key: "resolve", - value: function resolve(value) { - return resolvePromise(new this(null), RESOLVED, value); - } - }, { - key: "reject", - value: function reject(error) { - return resolvePromise(new this(null), REJECTED, error); - } - }, { - key: "race", - value: function race(values) { - var resolve; - var reject; - var promise = new this(function (res, rej) { - resolve = res; - reject = rej; - }); - - function onResolve(value) { - resolve(value); - } - - function onReject(error) { - reject(error); - } - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var value = _step.value; - - if (!isThenable(value)) { - value = this.resolve(value); - } - - value.then(onResolve, onReject); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - return promise; - } - }, { - key: "all", - value: function all(values) { - var _this = this; - - var resolve; - var reject; - var promise = new this(function (res, rej) { - resolve = res; - reject = rej; - }); // Start at 2 to prevent prematurely resolving if .then is called immediately. - - var unresolvedCount = 2; - var valueIndex = 0; - var resolvedValues = []; - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - var _loop2 = function _loop2() { - var value = _step2.value; - - if (!isThenable(value)) { - value = _this.resolve(value); - } - - var curValueIndex = valueIndex; - value.then(function (value) { - resolvedValues[curValueIndex] = value; - unresolvedCount--; - - if (unresolvedCount === 0) { - resolve(resolvedValues); - } - }, reject); - unresolvedCount++; - valueIndex++; - }; - - for (var _iterator2 = values[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - _loop2(); - } // Make the unresolvedCount zero-based again. - - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return != null) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - unresolvedCount -= 2; - - if (unresolvedCount === 0) { - resolve(resolvedValues); - } - - return promise; - } - }]); - - return ZoneAwarePromise; - }(); // Protect against aggressive optimizers dropping seemingly unused properties. - // E.g. Closure Compiler in advanced mode. - - - ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve; - ZoneAwarePromise['reject'] = ZoneAwarePromise.reject; - ZoneAwarePromise['race'] = ZoneAwarePromise.race; - ZoneAwarePromise['all'] = ZoneAwarePromise.all; - var NativePromise = global[symbolPromise] = global['Promise']; - - var ZONE_AWARE_PROMISE = Zone.__symbol__('ZoneAwarePromise'); - - var desc = ObjectGetOwnPropertyDescriptor(global, 'Promise'); - - if (!desc || desc.configurable) { - desc && delete desc.writable; - desc && delete desc.value; - - if (!desc) { - desc = { - configurable: true, - enumerable: true - }; - } - - desc.get = function () { - // if we already set ZoneAwarePromise, use patched one - // otherwise return native one. - return global[ZONE_AWARE_PROMISE] ? global[ZONE_AWARE_PROMISE] : global[symbolPromise]; - }; - - desc.set = function (NewNativePromise) { - if (NewNativePromise === ZoneAwarePromise) { - // if the NewNativePromise is ZoneAwarePromise - // save to global - global[ZONE_AWARE_PROMISE] = NewNativePromise; - } else { - // if the NewNativePromise is not ZoneAwarePromise - // for example: after load zone.js, some library just - // set es6-promise to global, if we set it to global - // directly, assertZonePatched will fail and angular - // will not loaded, so we just set the NewNativePromise - // to global[symbolPromise], so the result is just like - // we load ES6 Promise before zone.js - global[symbolPromise] = NewNativePromise; - - if (!NewNativePromise.prototype[symbolThen]) { - patchThen(NewNativePromise); - } - - api.setNativePromise(NewNativePromise); - } - }; - - ObjectDefineProperty(global, 'Promise', desc); - } - - global['Promise'] = ZoneAwarePromise; - - var symbolThenPatched = __symbol__('thenPatched'); - - function patchThen(Ctor) { - var proto = Ctor.prototype; - var prop = ObjectGetOwnPropertyDescriptor(proto, 'then'); - - if (prop && (prop.writable === false || !prop.configurable)) { - // check Ctor.prototype.then propertyDescriptor is writable or not - // in meteor env, writable is false, we should ignore such case - return; - } - - var originalThen = proto.then; // Keep a reference to the original method. - - proto[symbolThen] = originalThen; - - Ctor.prototype.then = function (onResolve, onReject) { - var _this2 = this; - - var wrapped = new ZoneAwarePromise(function (resolve, reject) { - originalThen.call(_this2, resolve, reject); - }); - return wrapped.then(onResolve, onReject); - }; - - Ctor[symbolThenPatched] = true; - } - - api.patchThen = patchThen; - - function zoneify(fn) { - return function () { - var resultPromise = fn.apply(this, arguments); - - if (resultPromise instanceof ZoneAwarePromise) { - return resultPromise; - } - - var ctor = resultPromise.constructor; - - if (!ctor[symbolThenPatched]) { - patchThen(ctor); - } - - return resultPromise; - }; - } - - if (NativePromise) { - patchThen(NativePromise); - var fetch = global['fetch']; - - if (typeof fetch == 'function') { - global[api.symbol('fetch')] = fetch; - global['fetch'] = zoneify(fetch); - } - } // This is not part of public API, but it is useful for tests, so we expose it. - - - Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors; - return ZoneAwarePromise; - }); - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * Suppress closure compiler errors about unknown 'Zone' variable - * @fileoverview - * @suppress {undefinedVars,globalThis,missingRequire} - */ - // issue #989, to reduce bundle size, use short name - - /** Object.getOwnPropertyDescriptor */ - - - var ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - /** Object.defineProperty */ - - var ObjectDefineProperty = Object.defineProperty; - /** Object.getPrototypeOf */ - - var ObjectGetPrototypeOf = Object.getPrototypeOf; - /** Object.create */ - - var ObjectCreate = Object.create; - /** Array.prototype.slice */ - - var ArraySlice = Array.prototype.slice; - /** addEventListener string const */ - - var ADD_EVENT_LISTENER_STR = 'addEventListener'; - /** removeEventListener string const */ - - var REMOVE_EVENT_LISTENER_STR = 'removeEventListener'; - /** zoneSymbol addEventListener */ - - var ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR); - /** zoneSymbol removeEventListener */ - - - var ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR); - /** true string const */ - - - var TRUE_STR = 'true'; - /** false string const */ - - var FALSE_STR = 'false'; - /** __zone_symbol__ string const */ - - var ZONE_SYMBOL_PREFIX = '__zone_symbol__'; - - function wrapWithCurrentZone(callback, source) { - return Zone.current.wrap(callback, source); - } - - function scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) { - return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel); - } - - var zoneSymbol = Zone.__symbol__; - var isWindowExists = typeof window !== 'undefined'; - var internalWindow = isWindowExists ? window : undefined; - - var _global = isWindowExists && internalWindow || typeof self === 'object' && self || global; - - var REMOVE_ATTRIBUTE = 'removeAttribute'; - var NULL_ON_PROP_VALUE = [null]; - - function bindArguments(args, source) { - for (var i = args.length - 1; i >= 0; i--) { - if (typeof args[i] === 'function') { - args[i] = wrapWithCurrentZone(args[i], source + '_' + i); - } - } - - return args; - } - - function patchPrototype(prototype, fnNames) { - var source = prototype.constructor['name']; - - var _loop3 = function _loop3(i) { - var name = fnNames[i]; - var delegate = prototype[name]; - - if (delegate) { - var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name); - - if (!isPropertyWritable(prototypeDesc)) { - return "continue"; - } - - prototype[name] = function (delegate) { - var patched = function patched() { - return delegate.apply(this, bindArguments(arguments, source + '.' + name)); - }; - - attachOriginToPatched(patched, delegate); - return patched; - }(delegate); - } - }; - - for (var i = 0; i < fnNames.length; i++) { - var _ret = _loop3(i); - - if (_ret === "continue") continue; - } - } - - function isPropertyWritable(propertyDesc) { - if (!propertyDesc) { - return true; - } - - if (propertyDesc.writable === false) { - return false; - } - - return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined'); - } - - var isWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope; // Make sure to access `process` through `_global` so that WebPack does not accidentally browserify - // this code. - - var isNode = !('nw' in _global) && typeof _global.process !== 'undefined' && {}.toString.call(_global.process) === '[object process]'; - var isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']); // we are in electron of nw, so we are both browser and nodejs - // Make sure to access `process` through `_global` so that WebPack does not accidentally browserify - // this code. - - var isMix = typeof _global.process !== 'undefined' && {}.toString.call(_global.process) === '[object process]' && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']); - var zoneSymbolEventNames = {}; - - var wrapFn = function wrapFn(event) { - // https://github.com/angular/zone.js/issues/911, in IE, sometimes - // event will be undefined, so we need to use window.event - event = event || _global.event; - - if (!event) { - return; - } - - var eventNameSymbol = zoneSymbolEventNames[event.type]; - - if (!eventNameSymbol) { - eventNameSymbol = zoneSymbolEventNames[event.type] = zoneSymbol('ON_PROPERTY' + event.type); - } - - var target = this || event.target || _global; - var listener = target[eventNameSymbol]; - var result; - - if (isBrowser && target === internalWindow && event.type === 'error') { - // window.onerror have different signiture - // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#window.onerror - // and onerror callback will prevent default when callback return true - var errorEvent = event; - result = listener && listener.call(this, errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error); - - if (result === true) { - event.preventDefault(); - } - } else { - result = listener && listener.apply(this, arguments); - - if (result != undefined && !result) { - event.preventDefault(); - } - } - - return result; - }; - - function patchProperty(obj, prop, prototype) { - var desc = ObjectGetOwnPropertyDescriptor(obj, prop); - - if (!desc && prototype) { - // when patch window object, use prototype to check prop exist or not - var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop); - - if (prototypeDesc) { - desc = { - enumerable: true, - configurable: true - }; - } - } // if the descriptor not exists or is not configurable - // just return - - - if (!desc || !desc.configurable) { - return; - } - - var onPropPatchedSymbol = zoneSymbol('on' + prop + 'patched'); - - if (obj.hasOwnProperty(onPropPatchedSymbol) && obj[onPropPatchedSymbol]) { - return; - } // A property descriptor cannot have getter/setter and be writable - // deleting the writable and value properties avoids this error: - // - // TypeError: property descriptors must not specify a value or be writable when a - // getter or setter has been specified - - - delete desc.writable; - delete desc.value; - var originalDescGet = desc.get; - var originalDescSet = desc.set; // substr(2) cuz 'onclick' -> 'click', etc - - var eventName = prop.substr(2); - var eventNameSymbol = zoneSymbolEventNames[eventName]; - - if (!eventNameSymbol) { - eventNameSymbol = zoneSymbolEventNames[eventName] = zoneSymbol('ON_PROPERTY' + eventName); - } - - desc.set = function (newValue) { - // in some of windows's onproperty callback, this is undefined - // so we need to check it - var target = this; - - if (!target && obj === _global) { - target = _global; - } - - if (!target) { - return; - } - - var previousValue = target[eventNameSymbol]; - - if (previousValue) { - target.removeEventListener(eventName, wrapFn); - } // issue #978, when onload handler was added before loading zone.js - // we should remove it with originalDescSet - - - if (originalDescSet) { - originalDescSet.apply(target, NULL_ON_PROP_VALUE); - } - - if (typeof newValue === 'function') { - target[eventNameSymbol] = newValue; - target.addEventListener(eventName, wrapFn, false); - } else { - target[eventNameSymbol] = null; - } - }; // The getter would return undefined for unassigned properties but the default value of an - // unassigned property is null - - - desc.get = function () { - // in some of windows's onproperty callback, this is undefined - // so we need to check it - var target = this; - - if (!target && obj === _global) { - target = _global; - } - - if (!target) { - return null; - } - - var listener = target[eventNameSymbol]; - - if (listener) { - return listener; - } else if (originalDescGet) { - // result will be null when use inline event attribute, - // such as - // because the onclick function is internal raw uncompiled handler - // the onclick will be evaluated when first time event was triggered or - // the property is accessed, https://github.com/angular/zone.js/issues/525 - // so we should use original native get to retrieve the handler - var value = originalDescGet && originalDescGet.call(this); - - if (value) { - desc.set.call(this, value); - - if (typeof target[REMOVE_ATTRIBUTE] === 'function') { - target.removeAttribute(prop); - } - - return value; - } - } - - return null; - }; - - ObjectDefineProperty(obj, prop, desc); - obj[onPropPatchedSymbol] = true; - } - - function patchOnProperties(obj, properties, prototype) { - if (properties) { - for (var i = 0; i < properties.length; i++) { - patchProperty(obj, 'on' + properties[i], prototype); - } - } else { - var onProperties = []; - - for (var prop in obj) { - if (prop.substr(0, 2) == 'on') { - onProperties.push(prop); - } - } - - for (var j = 0; j < onProperties.length; j++) { - patchProperty(obj, onProperties[j], prototype); - } - } - } - - var originalInstanceKey = zoneSymbol('originalInstance'); // wrap some native API on `window` - - function patchClass(className) { - var OriginalClass = _global[className]; - if (!OriginalClass) return; // keep original class in global - - _global[zoneSymbol(className)] = OriginalClass; - - _global[className] = function () { - var a = bindArguments(arguments, className); - - switch (a.length) { - case 0: - this[originalInstanceKey] = new OriginalClass(); - break; - - case 1: - this[originalInstanceKey] = new OriginalClass(a[0]); - break; - - case 2: - this[originalInstanceKey] = new OriginalClass(a[0], a[1]); - break; - - case 3: - this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]); - break; - - case 4: - this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]); - break; - - default: - throw new Error('Arg list too long.'); - } - }; // attach original delegate to patched function - - - attachOriginToPatched(_global[className], OriginalClass); - var instance = new OriginalClass(function () {}); - var prop; - - for (prop in instance) { - // https://bugs.webkit.org/show_bug.cgi?id=44721 - if (className === 'XMLHttpRequest' && prop === 'responseBlob') continue; - - (function (prop) { - if (typeof instance[prop] === 'function') { - _global[className].prototype[prop] = function () { - return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments); - }; - } else { - ObjectDefineProperty(_global[className].prototype, prop, { - set: function set(fn) { - if (typeof fn === 'function') { - this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop); // keep callback in wrapped function so we can - // use it in Function.prototype.toString to return - // the native one. - - attachOriginToPatched(this[originalInstanceKey][prop], fn); - } else { - this[originalInstanceKey][prop] = fn; - } - }, - get: function get() { - return this[originalInstanceKey][prop]; - } - }); - } - })(prop); - } - - for (prop in OriginalClass) { - if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) { - _global[className][prop] = OriginalClass[prop]; - } - } - } - - function copySymbolProperties(src, dest) { - if (typeof Object.getOwnPropertySymbols !== 'function') { - return; - } - - var symbols = Object.getOwnPropertySymbols(src); - symbols.forEach(function (symbol) { - var desc = Object.getOwnPropertyDescriptor(src, symbol); - Object.defineProperty(dest, symbol, { - get: function get() { - return src[symbol]; - }, - set: function set(value) { - if (desc && (!desc.writable || typeof desc.set !== 'function')) { - // if src[symbol] is not writable or not have a setter, just return - return; - } - - src[symbol] = value; - }, - enumerable: desc ? desc.enumerable : true, - configurable: desc ? desc.configurable : true - }); - }); - } - - var shouldCopySymbolProperties = false; - - function patchMethod(target, name, patchFn) { - var proto = target; - - while (proto && !proto.hasOwnProperty(name)) { - proto = ObjectGetPrototypeOf(proto); - } - - if (!proto && target[name]) { - // somehow we did not find it, but we can see it. This happens on IE for Window properties. - proto = target; - } - - var delegateName = zoneSymbol(name); - var delegate = null; - - if (proto && !(delegate = proto[delegateName])) { - delegate = proto[delegateName] = proto[name]; // check whether proto[name] is writable - // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob - - var desc = proto && ObjectGetOwnPropertyDescriptor(proto, name); - - if (isPropertyWritable(desc)) { - var patchDelegate = patchFn(delegate, delegateName, name); - - proto[name] = function () { - return patchDelegate(this, arguments); - }; - - attachOriginToPatched(proto[name], delegate); - - if (shouldCopySymbolProperties) { - copySymbolProperties(delegate, proto[name]); - } - } - } - - return delegate; - } // TODO: @JiaLiPassion, support cancel task later if necessary - - - function patchMacroTask(obj, funcName, metaCreator) { - var setNative = null; - - function scheduleTask(task) { - var data = task.data; - - data.args[data.cbIdx] = function () { - task.invoke.apply(this, arguments); - }; - - setNative.apply(data.target, data.args); - return task; - } - - setNative = patchMethod(obj, funcName, function (delegate) { - return function (self, args) { - var meta = metaCreator(self, args); - - if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') { - return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask); - } else { - // cause an error by calling it directly. - return delegate.apply(self, args); - } - }; - }); - } - - function attachOriginToPatched(patched, original) { - patched[zoneSymbol('OriginalDelegate')] = original; - } - - var isDetectedIEOrEdge = false; - var ieOrEdge = false; - - function isIE() { - try { - var ua = internalWindow.navigator.userAgent; - - if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1) { - return true; - } - } catch (error) {} - - return false; - } - - function isIEOrEdge() { - if (isDetectedIEOrEdge) { - return ieOrEdge; - } - - isDetectedIEOrEdge = true; - - try { - var ua = internalWindow.navigator.userAgent; - - if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) { - ieOrEdge = true; - } - } catch (error) {} - - return ieOrEdge; - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - // override Function.prototype.toString to make zone.js patched function - // look like native function - - - Zone.__load_patch('toString', function (global) { - // patch Func.prototype.toString to let them look like native - var originalFunctionToString = Function.prototype.toString; - var ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate'); - var PROMISE_SYMBOL = zoneSymbol('Promise'); - var ERROR_SYMBOL = zoneSymbol('Error'); - - var newFunctionToString = function toString() { - if (typeof this === 'function') { - var originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL]; - - if (originalDelegate) { - if (typeof originalDelegate === 'function') { - return originalFunctionToString.call(originalDelegate); - } else { - return Object.prototype.toString.call(originalDelegate); - } - } - - if (this === Promise) { - var nativePromise = global[PROMISE_SYMBOL]; - - if (nativePromise) { - return originalFunctionToString.call(nativePromise); - } - } - - if (this === Error) { - var nativeError = global[ERROR_SYMBOL]; - - if (nativeError) { - return originalFunctionToString.call(nativeError); - } - } - } - - return originalFunctionToString.call(this); - }; - - newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString; - Function.prototype.toString = newFunctionToString; // patch Object.prototype.toString to let them look like native - - var originalObjectToString = Object.prototype.toString; - var PROMISE_OBJECT_TO_STRING = '[object Promise]'; - - Object.prototype.toString = function () { - if (this instanceof Promise) { - return PROMISE_OBJECT_TO_STRING; - } - - return originalObjectToString.call(this); - }; - }); - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * @fileoverview - * @suppress {missingRequire} - */ - - - var passiveSupported = false; - - if (typeof window !== 'undefined') { - try { - var options = Object.defineProperty({}, 'passive', { - get: function get() { - passiveSupported = true; - } - }); - window.addEventListener('test', options, options); - window.removeEventListener('test', options, options); - } catch (err) { - passiveSupported = false; - } - } // an identifier to tell ZoneTask do not create a new invoke closure - - - var OPTIMIZED_ZONE_EVENT_TASK_DATA = { - useG: true - }; - var zoneSymbolEventNames$1 = {}; - var globalSources = {}; - var EVENT_NAME_SYMBOL_REGX = /^__zone_symbol__(\w+)(true|false)$/; - var IMMEDIATE_PROPAGATION_SYMBOL = '__zone_symbol__propagationStopped'; - - function patchEventTarget(_global, apis, patchOptions) { - var ADD_EVENT_LISTENER = patchOptions && patchOptions.add || ADD_EVENT_LISTENER_STR; - var REMOVE_EVENT_LISTENER = patchOptions && patchOptions.rm || REMOVE_EVENT_LISTENER_STR; - var LISTENERS_EVENT_LISTENER = patchOptions && patchOptions.listeners || 'eventListeners'; - var REMOVE_ALL_LISTENERS_EVENT_LISTENER = patchOptions && patchOptions.rmAll || 'removeAllListeners'; - var zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER); - var ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':'; - var PREPEND_EVENT_LISTENER = 'prependListener'; - var PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':'; - - var invokeTask = function invokeTask(task, target, event) { - // for better performance, check isRemoved which is set - // by removeEventListener - if (task.isRemoved) { - return; - } - - var delegate = task.callback; - - if (typeof delegate === 'object' && delegate.handleEvent) { - // create the bind version of handleEvent when invoke - task.callback = function (event) { - return delegate.handleEvent(event); - }; - - task.originalDelegate = delegate; - } // invoke static task.invoke - - - task.invoke(task, target, [event]); - var options = task.options; - - if (options && typeof options === 'object' && options.once) { - // if options.once is true, after invoke once remove listener here - // only browser need to do this, nodejs eventEmitter will cal removeListener - // inside EventEmitter.once - var _delegate = task.originalDelegate ? task.originalDelegate : task.callback; - - target[REMOVE_EVENT_LISTENER].call(target, event.type, _delegate, options); - } - }; // global shared zoneAwareCallback to handle all event callback with capture = false - - - var globalZoneAwareCallback = function globalZoneAwareCallback(event) { - // https://github.com/angular/zone.js/issues/911, in IE, sometimes - // event will be undefined, so we need to use window.event - event = event || _global.event; - - if (!event) { - return; - } // event.target is needed for Samsung TV and SourceBuffer - // || global is needed https://github.com/angular/zone.js/issues/190 - - - var target = this || event.target || _global; - var tasks = target[zoneSymbolEventNames$1[event.type][FALSE_STR]]; - - if (tasks) { - // invoke all tasks which attached to current target with given event.type and capture = false - // for performance concern, if task.length === 1, just invoke - if (tasks.length === 1) { - invokeTask(tasks[0], target, event); - } else { - // https://github.com/angular/zone.js/issues/836 - // copy the tasks array before invoke, to avoid - // the callback will remove itself or other listener - var copyTasks = tasks.slice(); - - for (var i = 0; i < copyTasks.length; i++) { - if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) { - break; - } - - invokeTask(copyTasks[i], target, event); - } - } - } - }; // global shared zoneAwareCallback to handle all event callback with capture = true - - - var globalZoneAwareCaptureCallback = function globalZoneAwareCaptureCallback(event) { - // https://github.com/angular/zone.js/issues/911, in IE, sometimes - // event will be undefined, so we need to use window.event - event = event || _global.event; - - if (!event) { - return; - } // event.target is needed for Samsung TV and SourceBuffer - // || global is needed https://github.com/angular/zone.js/issues/190 - - - var target = this || event.target || _global; - var tasks = target[zoneSymbolEventNames$1[event.type][TRUE_STR]]; - - if (tasks) { - // invoke all tasks which attached to current target with given event.type and capture = false - // for performance concern, if task.length === 1, just invoke - if (tasks.length === 1) { - invokeTask(tasks[0], target, event); - } else { - // https://github.com/angular/zone.js/issues/836 - // copy the tasks array before invoke, to avoid - // the callback will remove itself or other listener - var copyTasks = tasks.slice(); - - for (var i = 0; i < copyTasks.length; i++) { - if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) { - break; - } - - invokeTask(copyTasks[i], target, event); - } - } - } - }; - - function patchEventTargetMethods(obj, patchOptions) { - if (!obj) { - return false; - } - - var useGlobalCallback = true; - - if (patchOptions && patchOptions.useG !== undefined) { - useGlobalCallback = patchOptions.useG; - } - - var validateHandler = patchOptions && patchOptions.vh; - var checkDuplicate = true; - - if (patchOptions && patchOptions.chkDup !== undefined) { - checkDuplicate = patchOptions.chkDup; - } - - var returnTarget = false; - - if (patchOptions && patchOptions.rt !== undefined) { - returnTarget = patchOptions.rt; - } - - var proto = obj; - - while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) { - proto = ObjectGetPrototypeOf(proto); - } - - if (!proto && obj[ADD_EVENT_LISTENER]) { - // somehow we did not find it, but we can see it. This happens on IE for Window properties. - proto = obj; - } - - if (!proto) { - return false; - } - - if (proto[zoneSymbolAddEventListener]) { - return false; - } - - var eventNameToString = patchOptions && patchOptions.eventNameToString; // a shared global taskData to pass data for scheduleEventTask - // so we do not need to create a new object just for pass some data - - var taskData = {}; - var nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER]; - var nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] = proto[REMOVE_EVENT_LISTENER]; - var nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] = proto[LISTENERS_EVENT_LISTENER]; - var nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] = proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER]; - var nativePrependEventListener; - - if (patchOptions && patchOptions.prepend) { - nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] = proto[patchOptions.prepend]; - } - - function checkIsPassive(task) { - if (!passiveSupported && typeof taskData.options !== 'boolean' && typeof taskData.options !== 'undefined' && taskData.options !== null) { - // options is a non-null non-undefined object - // passive is not supported - // don't pass options as object - // just pass capture as a boolean - task.options = !!taskData.options.capture; - taskData.options = task.options; - } - } - - var customScheduleGlobal = function customScheduleGlobal(task) { - // if there is already a task for the eventName + capture, - // just return, because we use the shared globalZoneAwareCallback here. - if (taskData.isExisting) { - return; - } - - checkIsPassive(task); - return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options); - }; - - var customCancelGlobal = function customCancelGlobal(task) { - // if task is not marked as isRemoved, this call is directly - // from Zone.prototype.cancelTask, we should remove the task - // from tasksList of target first - if (!task.isRemoved) { - var symbolEventNames = zoneSymbolEventNames$1[task.eventName]; - var symbolEventName; - - if (symbolEventNames) { - symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR]; - } - - var existingTasks = symbolEventName && task.target[symbolEventName]; - - if (existingTasks) { - for (var i = 0; i < existingTasks.length; i++) { - var existingTask = existingTasks[i]; - - if (existingTask === task) { - existingTasks.splice(i, 1); // set isRemoved to data for faster invokeTask check - - task.isRemoved = true; - - if (existingTasks.length === 0) { - // all tasks for the eventName + capture have gone, - // remove globalZoneAwareCallback and remove the task cache from target - task.allRemoved = true; - task.target[symbolEventName] = null; - } - - break; - } - } - } - } // if all tasks for the eventName + capture have gone, - // we will really remove the global event callback, - // if not, return - - - if (!task.allRemoved) { - return; - } - - return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options); - }; - - var customScheduleNonGlobal = function customScheduleNonGlobal(task) { - checkIsPassive(task); - return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options); - }; - - var customSchedulePrepend = function customSchedulePrepend(task) { - return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options); - }; - - var customCancelNonGlobal = function customCancelNonGlobal(task) { - return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options); - }; - - var customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal; - var customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal; - - var compareTaskCallbackVsDelegate = function compareTaskCallbackVsDelegate(task, delegate) { - var typeOfDelegate = typeof delegate; - return typeOfDelegate === 'function' && task.callback === delegate || typeOfDelegate === 'object' && task.originalDelegate === delegate; - }; - - var compare = patchOptions && patchOptions.diff ? patchOptions.diff : compareTaskCallbackVsDelegate; - - var blackListedEvents = Zone[Zone.__symbol__('BLACK_LISTED_EVENTS')]; - - var makeAddListener = function makeAddListener(nativeListener, addSource, customScheduleFn, customCancelFn) { - var returnTarget = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; - var prepend = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false; - return function () { - var target = this || _global; - var eventName = arguments[0]; - var delegate = arguments[1]; - - if (!delegate) { - return nativeListener.apply(this, arguments); - } - - if (isNode && eventName === 'uncaughtException') { - // don't patch uncaughtException of nodejs to prevent endless loop - return nativeListener.apply(this, arguments); - } // don't create the bind delegate function for handleEvent - // case here to improve addEventListener performance - // we will create the bind delegate when invoke - - - var isHandleEvent = false; - - if (typeof delegate !== 'function') { - if (!delegate.handleEvent) { - return nativeListener.apply(this, arguments); - } - - isHandleEvent = true; - } - - if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) { - return; - } - - var options = arguments[2]; - - if (blackListedEvents) { - // check black list - for (var i = 0; i < blackListedEvents.length; i++) { - if (eventName === blackListedEvents[i]) { - return nativeListener.apply(this, arguments); - } - } - } - - var capture; - var once = false; - - if (options === undefined) { - capture = false; - } else if (options === true) { - capture = true; - } else if (options === false) { - capture = false; - } else { - capture = options ? !!options.capture : false; - once = options ? !!options.once : false; - } - - var zone = Zone.current; - var symbolEventNames = zoneSymbolEventNames$1[eventName]; - var symbolEventName; - - if (!symbolEventNames) { - // the code is duplicate, but I just want to get some better performance - var falseEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + FALSE_STR; - var trueEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + TRUE_STR; - var symbol = ZONE_SYMBOL_PREFIX + falseEventName; - var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; - zoneSymbolEventNames$1[eventName] = {}; - zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol; - zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture; - symbolEventName = capture ? symbolCapture : symbol; - } else { - symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR]; - } - - var existingTasks = target[symbolEventName]; - var isExisting = false; - - if (existingTasks) { - // already have task registered - isExisting = true; - - if (checkDuplicate) { - for (var _i = 0; _i < existingTasks.length; _i++) { - if (compare(existingTasks[_i], delegate)) { - // same callback, same capture, same event name, just return - return; - } - } - } - } else { - existingTasks = target[symbolEventName] = []; - } - - var source; - var constructorName = target.constructor['name']; - var targetSource = globalSources[constructorName]; - - if (targetSource) { - source = targetSource[eventName]; - } - - if (!source) { - source = constructorName + addSource + (eventNameToString ? eventNameToString(eventName) : eventName); - } // do not create a new object as task.data to pass those things - // just use the global shared one - - - taskData.options = options; - - if (once) { - // if addEventListener with once options, we don't pass it to - // native addEventListener, instead we keep the once setting - // and handle ourselves. - taskData.options.once = false; - } - - taskData.target = target; - taskData.capture = capture; - taskData.eventName = eventName; - taskData.isExisting = isExisting; - var data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : undefined; // keep taskData into data to allow onScheduleEventTask to access the task information - - if (data) { - data.taskData = taskData; - } - - var task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn); // should clear taskData.target to avoid memory leak - // issue, https://github.com/angular/angular/issues/20442 - - taskData.target = null; // need to clear up taskData because it is a global object - - if (data) { - data.taskData = null; - } // have to save those information to task in case - // application may call task.zone.cancelTask() directly - - - if (once) { - options.once = true; - } - - if (!(!passiveSupported && typeof task.options === 'boolean')) { - // if not support passive, and we pass an option object - // to addEventListener, we should save the options to task - task.options = options; - } - - task.target = target; - task.capture = capture; - task.eventName = eventName; - - if (isHandleEvent) { - // save original delegate for compare to check duplicate - task.originalDelegate = delegate; - } - - if (!prepend) { - existingTasks.push(task); - } else { - existingTasks.unshift(task); - } - - if (returnTarget) { - return target; - } - }; - }; - - proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget); - - if (nativePrependEventListener) { - proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true); - } - - proto[REMOVE_EVENT_LISTENER] = function () { - var target = this || _global; - var eventName = arguments[0]; - var options = arguments[2]; - var capture; - - if (options === undefined) { - capture = false; - } else if (options === true) { - capture = true; - } else if (options === false) { - capture = false; - } else { - capture = options ? !!options.capture : false; - } - - var delegate = arguments[1]; - - if (!delegate) { - return nativeRemoveEventListener.apply(this, arguments); - } - - if (validateHandler && !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) { - return; - } - - var symbolEventNames = zoneSymbolEventNames$1[eventName]; - var symbolEventName; - - if (symbolEventNames) { - symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR]; - } - - var existingTasks = symbolEventName && target[symbolEventName]; - - if (existingTasks) { - for (var i = 0; i < existingTasks.length; i++) { - var existingTask = existingTasks[i]; - - if (compare(existingTask, delegate)) { - existingTasks.splice(i, 1); // set isRemoved to data for faster invokeTask check - - existingTask.isRemoved = true; - - if (existingTasks.length === 0) { - // all tasks for the eventName + capture have gone, - // remove globalZoneAwareCallback and remove the task cache from target - existingTask.allRemoved = true; - target[symbolEventName] = null; - } - - existingTask.zone.cancelTask(existingTask); - - if (returnTarget) { - return target; - } - - return; - } - } - } // issue 930, didn't find the event name or callback - // from zone kept existingTasks, the callback maybe - // added outside of zone, we need to call native removeEventListener - // to try to remove it. - - - return nativeRemoveEventListener.apply(this, arguments); - }; - - proto[LISTENERS_EVENT_LISTENER] = function () { - var target = this || _global; - var eventName = arguments[0]; - var listeners = []; - var tasks = findEventTasks(target, eventNameToString ? eventNameToString(eventName) : eventName); - - for (var i = 0; i < tasks.length; i++) { - var task = tasks[i]; - var delegate = task.originalDelegate ? task.originalDelegate : task.callback; - listeners.push(delegate); - } - - return listeners; - }; - - proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () { - var target = this || _global; - var eventName = arguments[0]; - - if (!eventName) { - var keys = Object.keys(target); - - for (var i = 0; i < keys.length; i++) { - var prop = keys[i]; - var match = EVENT_NAME_SYMBOL_REGX.exec(prop); - var evtName = match && match[1]; // in nodejs EventEmitter, removeListener event is - // used for monitoring the removeListener call, - // so just keep removeListener eventListener until - // all other eventListeners are removed - - if (evtName && evtName !== 'removeListener') { - this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName); - } - } // remove removeListener listener finally - - - this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener'); - } else { - var symbolEventNames = zoneSymbolEventNames$1[eventName]; - - if (symbolEventNames) { - var symbolEventName = symbolEventNames[FALSE_STR]; - var symbolCaptureEventName = symbolEventNames[TRUE_STR]; - var tasks = target[symbolEventName]; - var captureTasks = target[symbolCaptureEventName]; - - if (tasks) { - var removeTasks = tasks.slice(); - - for (var _i2 = 0; _i2 < removeTasks.length; _i2++) { - var task = removeTasks[_i2]; - var delegate = task.originalDelegate ? task.originalDelegate : task.callback; - this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options); - } - } - - if (captureTasks) { - var _removeTasks = captureTasks.slice(); - - for (var _i3 = 0; _i3 < _removeTasks.length; _i3++) { - var _task = _removeTasks[_i3]; - - var _delegate2 = _task.originalDelegate ? _task.originalDelegate : _task.callback; - - this[REMOVE_EVENT_LISTENER].call(this, eventName, _delegate2, _task.options); - } - } - } - } - - if (returnTarget) { - return this; - } - }; // for native toString patch - - - attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener); - attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener); - - if (nativeRemoveAllListeners) { - attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners); - } - - if (nativeListeners) { - attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners); - } - - return true; - } - - var results = []; - - for (var i = 0; i < apis.length; i++) { - results[i] = patchEventTargetMethods(apis[i], patchOptions); - } - - return results; - } - - function findEventTasks(target, eventName) { - var foundTasks = []; - - for (var prop in target) { - var match = EVENT_NAME_SYMBOL_REGX.exec(prop); - var evtName = match && match[1]; - - if (evtName && (!eventName || evtName === eventName)) { - var tasks = target[prop]; - - if (tasks) { - for (var i = 0; i < tasks.length; i++) { - foundTasks.push(tasks[i]); - } - } - } - } - - return foundTasks; - } - - function patchEventPrototype(global, api) { - var Event = global['Event']; - - if (Event && Event.prototype) { - api.patchMethod(Event.prototype, 'stopImmediatePropagation', function (delegate) { - return function (self, args) { - self[IMMEDIATE_PROPAGATION_SYMBOL] = true; // we need to call the native stopImmediatePropagation - // in case in some hybrid application, some part of - // application will be controlled by zone, some are not - - delegate && delegate.apply(self, args); - }; - }); - } - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - - function patchCallbacks(api, target, targetName, method, callbacks) { - var symbol = Zone.__symbol__(method); - - if (target[symbol]) { - return; - } - - var nativeDelegate = target[symbol] = target[method]; - - target[method] = function (name, opts, options) { - if (opts && opts.prototype) { - callbacks.forEach(function (callback) { - var source = "".concat(targetName, ".").concat(method, "::") + callback; - var prototype = opts.prototype; - - if (prototype.hasOwnProperty(callback)) { - var descriptor = api.ObjectGetOwnPropertyDescriptor(prototype, callback); - - if (descriptor && descriptor.value) { - descriptor.value = api.wrapWithCurrentZone(descriptor.value, source); - - api._redefineProperty(opts.prototype, callback, descriptor); - } else if (prototype[callback]) { - prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source); - } - } else if (prototype[callback]) { - prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source); - } - }); - } - - return nativeDelegate.call(target, name, opts, options); - }; - - api.attachOriginToPatched(target[method], nativeDelegate); - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /* - * This is necessary for Chrome and Chrome mobile, to enable - * things like redefining `createdCallback` on an element. - */ - - - var zoneSymbol$1 = Zone.__symbol__; - - var _defineProperty = Object[zoneSymbol$1('defineProperty')] = Object.defineProperty; - - var _getOwnPropertyDescriptor = Object[zoneSymbol$1('getOwnPropertyDescriptor')] = Object.getOwnPropertyDescriptor; - - var _create = Object.create; - var unconfigurablesKey = zoneSymbol$1('unconfigurables'); - - function propertyPatch() { - Object.defineProperty = function (obj, prop, desc) { - if (isUnconfigurable(obj, prop)) { - throw new TypeError('Cannot assign to read only property \'' + prop + '\' of ' + obj); - } - - var originalConfigurableFlag = desc.configurable; - - if (prop !== 'prototype') { - desc = rewriteDescriptor(obj, prop, desc); - } - - return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); - }; - - Object.defineProperties = function (obj, props) { - Object.keys(props).forEach(function (prop) { - Object.defineProperty(obj, prop, props[prop]); - }); - return obj; - }; - - Object.create = function (obj, proto) { - if (typeof proto === 'object' && !Object.isFrozen(proto)) { - Object.keys(proto).forEach(function (prop) { - proto[prop] = rewriteDescriptor(obj, prop, proto[prop]); - }); - } - - return _create(obj, proto); - }; - - Object.getOwnPropertyDescriptor = function (obj, prop) { - var desc = _getOwnPropertyDescriptor(obj, prop); - - if (desc && isUnconfigurable(obj, prop)) { - desc.configurable = false; - } - - return desc; - }; - } - - function _redefineProperty(obj, prop, desc) { - var originalConfigurableFlag = desc.configurable; - desc = rewriteDescriptor(obj, prop, desc); - return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); - } - - function isUnconfigurable(obj, prop) { - return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop]; - } - - function rewriteDescriptor(obj, prop, desc) { - // issue-927, if the desc is frozen, don't try to change the desc - if (!Object.isFrozen(desc)) { - desc.configurable = true; - } - - if (!desc.configurable) { - // issue-927, if the obj is frozen, don't try to set the desc to obj - if (!obj[unconfigurablesKey] && !Object.isFrozen(obj)) { - _defineProperty(obj, unconfigurablesKey, { - writable: true, - value: {} - }); - } - - if (obj[unconfigurablesKey]) { - obj[unconfigurablesKey][prop] = true; - } - } - - return desc; - } - - function _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) { - try { - return _defineProperty(obj, prop, desc); - } catch (error) { - if (desc.configurable) { - // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's - // retry with the original flag value - if (typeof originalConfigurableFlag == 'undefined') { - delete desc.configurable; - } else { - desc.configurable = originalConfigurableFlag; - } - - try { - return _defineProperty(obj, prop, desc); - } catch (error) { - var descJson = null; - - try { - descJson = JSON.stringify(desc); - } catch (error) { - descJson = desc.toString(); - } - - console.log("Attempting to configure '".concat(prop, "' with descriptor '").concat(descJson, "' on object '").concat(obj, "' and got error, giving up: ").concat(error)); - } - } else { - throw error; - } - } - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * @fileoverview - * @suppress {globalThis} - */ - - - var globalEventHandlersEventNames = ['abort', 'animationcancel', 'animationend', 'animationiteration', 'auxclick', 'beforeinput', 'blur', 'cancel', 'canplay', 'canplaythrough', 'change', 'compositionstart', 'compositionupdate', 'compositionend', 'cuechange', 'click', 'close', 'contextmenu', 'curechange', 'dblclick', 'drag', 'dragend', 'dragenter', 'dragexit', 'dragleave', 'dragover', 'drop', 'durationchange', 'emptied', 'ended', 'error', 'focus', 'focusin', 'focusout', 'gotpointercapture', 'input', 'invalid', 'keydown', 'keypress', 'keyup', 'load', 'loadstart', 'loadeddata', 'loadedmetadata', 'lostpointercapture', 'mousedown', 'mouseenter', 'mouseleave', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'mousewheel', 'orientationchange', 'pause', 'play', 'playing', 'pointercancel', 'pointerdown', 'pointerenter', 'pointerleave', 'pointerlockchange', 'mozpointerlockchange', 'webkitpointerlockerchange', 'pointerlockerror', 'mozpointerlockerror', 'webkitpointerlockerror', 'pointermove', 'pointout', 'pointerover', 'pointerup', 'progress', 'ratechange', 'reset', 'resize', 'scroll', 'seeked', 'seeking', 'select', 'selectionchange', 'selectstart', 'show', 'sort', 'stalled', 'submit', 'suspend', 'timeupdate', 'volumechange', 'touchcancel', 'touchmove', 'touchstart', 'touchend', 'transitioncancel', 'transitionend', 'waiting', 'wheel']; - var documentEventNames = ['afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'freeze', 'fullscreenchange', 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror', 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange', 'visibilitychange', 'resume']; - var windowEventNames = ['absolutedeviceorientation', 'afterinput', 'afterprint', 'appinstalled', 'beforeinstallprompt', 'beforeprint', 'beforeunload', 'devicelight', 'devicemotion', 'deviceorientation', 'deviceorientationabsolute', 'deviceproximity', 'hashchange', 'languagechange', 'message', 'mozbeforepaint', 'offline', 'online', 'paint', 'pageshow', 'pagehide', 'popstate', 'rejectionhandled', 'storage', 'unhandledrejection', 'unload', 'userproximity', 'vrdisplyconnected', 'vrdisplaydisconnected', 'vrdisplaypresentchange']; - var htmlElementEventNames = ['beforecopy', 'beforecut', 'beforepaste', 'copy', 'cut', 'paste', 'dragstart', 'loadend', 'animationstart', 'search', 'transitionrun', 'transitionstart', 'webkitanimationend', 'webkitanimationiteration', 'webkitanimationstart', 'webkittransitionend']; - var mediaElementEventNames = ['encrypted', 'waitingforkey', 'msneedkey', 'mozinterruptbegin', 'mozinterruptend']; - var ieElementEventNames = ['activate', 'afterupdate', 'ariarequest', 'beforeactivate', 'beforedeactivate', 'beforeeditfocus', 'beforeupdate', 'cellchange', 'controlselect', 'dataavailable', 'datasetchanged', 'datasetcomplete', 'errorupdate', 'filterchange', 'layoutcomplete', 'losecapture', 'move', 'moveend', 'movestart', 'propertychange', 'resizeend', 'resizestart', 'rowenter', 'rowexit', 'rowsdelete', 'rowsinserted', 'command', 'compassneedscalibration', 'deactivate', 'help', 'mscontentzoom', 'msmanipulationstatechanged', 'msgesturechange', 'msgesturedoubletap', 'msgestureend', 'msgesturehold', 'msgesturestart', 'msgesturetap', 'msgotpointercapture', 'msinertiastart', 'mslostpointercapture', 'mspointercancel', 'mspointerdown', 'mspointerenter', 'mspointerhover', 'mspointerleave', 'mspointermove', 'mspointerout', 'mspointerover', 'mspointerup', 'pointerout', 'mssitemodejumplistitemremoved', 'msthumbnailclick', 'stop', 'storagecommit']; - var webglEventNames = ['webglcontextrestored', 'webglcontextlost', 'webglcontextcreationerror']; - var formEventNames = ['autocomplete', 'autocompleteerror']; - var detailEventNames = ['toggle']; - var frameEventNames = ['load']; - var frameSetEventNames = ['blur', 'error', 'focus', 'load', 'resize', 'scroll', 'messageerror']; - var marqueeEventNames = ['bounce', 'finish', 'start']; - var XMLHttpRequestEventNames = ['loadstart', 'progress', 'abort', 'error', 'load', 'progress', 'timeout', 'loadend', 'readystatechange']; - var IDBIndexEventNames = ['upgradeneeded', 'complete', 'abort', 'success', 'error', 'blocked', 'versionchange', 'close']; - var websocketEventNames = ['close', 'error', 'open', 'message']; - var workerEventNames = ['error', 'message']; - var eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames); - - function filterProperties(target, onProperties, ignoreProperties) { - if (!ignoreProperties || ignoreProperties.length === 0) { - return onProperties; - } - - var tip = ignoreProperties.filter(function (ip) { - return ip.target === target; - }); - - if (!tip || tip.length === 0) { - return onProperties; - } - - var targetIgnoreProperties = tip[0].ignoreProperties; - return onProperties.filter(function (op) { - return targetIgnoreProperties.indexOf(op) === -1; - }); - } - - function patchFilteredProperties(target, onProperties, ignoreProperties, prototype) { - // check whether target is available, sometimes target will be undefined - // because different browser or some 3rd party plugin. - if (!target) { - return; - } - - var filteredProperties = filterProperties(target, onProperties, ignoreProperties); - patchOnProperties(target, filteredProperties, prototype); - } - - function propertyDescriptorPatch(api, _global) { - if (isNode && !isMix) { - return; - } - - if (Zone[api.symbol('patchEvents')]) { - // events are already been patched by legacy patch. - return; - } - - var supportsWebSocket = typeof WebSocket !== 'undefined'; - var ignoreProperties = _global['__Zone_ignore_on_properties']; // for browsers that we can patch the descriptor: Chrome & Firefox - - if (isBrowser) { - var _internalWindow = window; - var ignoreErrorProperties = isIE ? [{ - target: _internalWindow, - ignoreProperties: ['error'] - }] : []; // in IE/Edge, onProp not exist in window object, but in WindowPrototype - // so we need to pass WindowPrototype to check onProp exist or not - - patchFilteredProperties(_internalWindow, eventNames.concat(['messageerror']), ignoreProperties ? ignoreProperties.concat(ignoreErrorProperties) : ignoreProperties, ObjectGetPrototypeOf(_internalWindow)); - patchFilteredProperties(Document.prototype, eventNames, ignoreProperties); - - if (typeof _internalWindow['SVGElement'] !== 'undefined') { - patchFilteredProperties(_internalWindow['SVGElement'].prototype, eventNames, ignoreProperties); - } - - patchFilteredProperties(Element.prototype, eventNames, ignoreProperties); - patchFilteredProperties(HTMLElement.prototype, eventNames, ignoreProperties); - patchFilteredProperties(HTMLMediaElement.prototype, mediaElementEventNames, ignoreProperties); - patchFilteredProperties(HTMLFrameSetElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties); - patchFilteredProperties(HTMLBodyElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties); - patchFilteredProperties(HTMLFrameElement.prototype, frameEventNames, ignoreProperties); - patchFilteredProperties(HTMLIFrameElement.prototype, frameEventNames, ignoreProperties); - var HTMLMarqueeElement = _internalWindow['HTMLMarqueeElement']; - - if (HTMLMarqueeElement) { - patchFilteredProperties(HTMLMarqueeElement.prototype, marqueeEventNames, ignoreProperties); - } - - var Worker = _internalWindow['Worker']; - - if (Worker) { - patchFilteredProperties(Worker.prototype, workerEventNames, ignoreProperties); - } - } - - var XMLHttpRequest = _global['XMLHttpRequest']; - - if (XMLHttpRequest) { - // XMLHttpRequest is not available in ServiceWorker, so we need to check here - patchFilteredProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames, ignoreProperties); - } - - var XMLHttpRequestEventTarget = _global['XMLHttpRequestEventTarget']; - - if (XMLHttpRequestEventTarget) { - patchFilteredProperties(XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype, XMLHttpRequestEventNames, ignoreProperties); - } - - if (typeof IDBIndex !== 'undefined') { - patchFilteredProperties(IDBIndex.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBRequest.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBOpenDBRequest.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBDatabase.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBTransaction.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBCursor.prototype, IDBIndexEventNames, ignoreProperties); - } - - if (supportsWebSocket) { - patchFilteredProperties(WebSocket.prototype, websocketEventNames, ignoreProperties); - } - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - - Zone.__load_patch('util', function (global, Zone, api) { - api.patchOnProperties = patchOnProperties; - api.patchMethod = patchMethod; - api.bindArguments = bindArguments; - api.patchMacroTask = patchMacroTask; // In earlier version of zone.js (<0.9.0), we use env name `__zone_symbol__BLACK_LISTED_EVENTS` to - // define which events will not be patched by `Zone.js`. - // In newer version (>=0.9.0), we change the env name to `__zone_symbol__UNPATCHED_EVENTS` to keep - // the name consistent with angular repo. - // The `__zone_symbol__BLACK_LISTED_EVENTS` is deprecated, but it is still be supported for - // backwards compatibility. - - var SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS'); - - var SYMBOL_UNPATCHED_EVENTS = Zone.__symbol__('UNPATCHED_EVENTS'); - - if (global[SYMBOL_UNPATCHED_EVENTS]) { - global[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_UNPATCHED_EVENTS]; - } - - if (global[SYMBOL_BLACK_LISTED_EVENTS]) { - Zone[SYMBOL_BLACK_LISTED_EVENTS] = Zone[SYMBOL_UNPATCHED_EVENTS] = global[SYMBOL_BLACK_LISTED_EVENTS]; - } - - api.patchEventPrototype = patchEventPrototype; - api.patchEventTarget = patchEventTarget; - api.isIEOrEdge = isIEOrEdge; - api.ObjectDefineProperty = ObjectDefineProperty; - api.ObjectGetOwnPropertyDescriptor = ObjectGetOwnPropertyDescriptor; - api.ObjectCreate = ObjectCreate; - api.ArraySlice = ArraySlice; - api.patchClass = patchClass; - api.wrapWithCurrentZone = wrapWithCurrentZone; - api.filterProperties = filterProperties; - api.attachOriginToPatched = attachOriginToPatched; - api._redefineProperty = _redefineProperty; - api.patchCallbacks = patchCallbacks; - - api.getGlobalObjects = function () { - return { - globalSources: globalSources, - zoneSymbolEventNames: zoneSymbolEventNames$1, - eventNames: eventNames, - isBrowser: isBrowser, - isMix: isMix, - isNode: isNode, - TRUE_STR: TRUE_STR, - FALSE_STR: FALSE_STR, - ZONE_SYMBOL_PREFIX: ZONE_SYMBOL_PREFIX, - ADD_EVENT_LISTENER_STR: ADD_EVENT_LISTENER_STR, - REMOVE_EVENT_LISTENER_STR: REMOVE_EVENT_LISTENER_STR - }; - }; - }); - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * @fileoverview - * @suppress {missingRequire} - */ - - - var taskSymbol = zoneSymbol('zoneTask'); - - function patchTimer(window, setName, cancelName, nameSuffix) { - var setNative = null; - var clearNative = null; - setName += nameSuffix; - cancelName += nameSuffix; - var tasksByHandleId = {}; - - function scheduleTask(task) { - var data = task.data; - - function timer() { - try { - task.invoke.apply(this, arguments); - } finally { - // issue-934, task will be cancelled - // even it is a periodic task such as - // setInterval - if (!(task.data && task.data.isPeriodic)) { - if (typeof data.handleId === 'number') { - // in non-nodejs env, we remove timerId - // from local cache - delete tasksByHandleId[data.handleId]; - } else if (data.handleId) { - // Node returns complex objects as handleIds - // we remove task reference from timer object - data.handleId[taskSymbol] = null; - } - } - } - } - - data.args[0] = timer; - data.handleId = setNative.apply(window, data.args); - return task; - } - - function clearTask(task) { - return clearNative(task.data.handleId); - } - - setNative = patchMethod(window, setName, function (delegate) { - return function (self, args) { - if (typeof args[0] === 'function') { - var _options = { - isPeriodic: nameSuffix === 'Interval', - delay: nameSuffix === 'Timeout' || nameSuffix === 'Interval' ? args[1] || 0 : undefined, - args: args - }; - var task = scheduleMacroTaskWithCurrentZone(setName, args[0], _options, scheduleTask, clearTask); - - if (!task) { - return task; - } // Node.js must additionally support the ref and unref functions. - - - var handle = task.data.handleId; - - if (typeof handle === 'number') { - // for non nodejs env, we save handleId: task - // mapping in local cache for clearTimeout - tasksByHandleId[handle] = task; - } else if (handle) { - // for nodejs env, we save task - // reference in timerId Object for clearTimeout - handle[taskSymbol] = task; - } // check whether handle is null, because some polyfill or browser - // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame - - - if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' && typeof handle.unref === 'function') { - task.ref = handle.ref.bind(handle); - task.unref = handle.unref.bind(handle); - } - - if (typeof handle === 'number' || handle) { - return handle; - } - - return task; - } else { - // cause an error by calling it directly. - return delegate.apply(window, args); - } - }; - }); - clearNative = patchMethod(window, cancelName, function (delegate) { - return function (self, args) { - var id = args[0]; - var task; - - if (typeof id === 'number') { - // non nodejs env. - task = tasksByHandleId[id]; - } else { - // nodejs env. - task = id && id[taskSymbol]; // other environments. - - if (!task) { - task = id; - } - } - - if (task && typeof task.type === 'string') { - if (task.state !== 'notScheduled' && (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) { - if (typeof id === 'number') { - delete tasksByHandleId[id]; - } else if (id) { - id[taskSymbol] = null; - } // Do not cancel already canceled functions - - - task.zone.cancelTask(task); - } - } else { - // cause an error by calling it directly. - delegate.apply(window, args); - } - }; - }); - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - - function patchCustomElements(_global, api) { - var _api$getGlobalObjects = api.getGlobalObjects(), - isBrowser = _api$getGlobalObjects.isBrowser, - isMix = _api$getGlobalObjects.isMix; - - if (!isBrowser && !isMix || !_global['customElements'] || !('customElements' in _global)) { - return; - } - - var callbacks = ['connectedCallback', 'disconnectedCallback', 'adoptedCallback', 'attributeChangedCallback']; - api.patchCallbacks(api, _global.customElements, 'customElements', 'define', callbacks); - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - - function eventTargetPatch(_global, api) { - if (Zone[api.symbol('patchEventTarget')]) { - // EventTarget is already patched. - return; - } - - var _api$getGlobalObjects2 = api.getGlobalObjects(), - eventNames = _api$getGlobalObjects2.eventNames, - zoneSymbolEventNames = _api$getGlobalObjects2.zoneSymbolEventNames, - TRUE_STR = _api$getGlobalObjects2.TRUE_STR, - FALSE_STR = _api$getGlobalObjects2.FALSE_STR, - ZONE_SYMBOL_PREFIX = _api$getGlobalObjects2.ZONE_SYMBOL_PREFIX; // predefine all __zone_symbol__ + eventName + true/false string - - - for (var i = 0; i < eventNames.length; i++) { - var eventName = eventNames[i]; - var falseEventName = eventName + FALSE_STR; - var trueEventName = eventName + TRUE_STR; - var symbol = ZONE_SYMBOL_PREFIX + falseEventName; - var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; - zoneSymbolEventNames[eventName] = {}; - zoneSymbolEventNames[eventName][FALSE_STR] = symbol; - zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture; - } - - var EVENT_TARGET = _global['EventTarget']; - - if (!EVENT_TARGET || !EVENT_TARGET.prototype) { - return; - } - - api.patchEventTarget(_global, [EVENT_TARGET && EVENT_TARGET.prototype]); - return true; - } - - function patchEvent(global, api) { - api.patchEventPrototype(global, api); - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * @fileoverview - * @suppress {missingRequire} - */ - - - Zone.__load_patch('legacy', function (global) { - var legacyPatch = global[Zone.__symbol__('legacyPatch')]; - - if (legacyPatch) { - legacyPatch(); - } - }); - - Zone.__load_patch('timers', function (global) { - var set = 'set'; - var clear = 'clear'; - patchTimer(global, set, clear, 'Timeout'); - patchTimer(global, set, clear, 'Interval'); - patchTimer(global, set, clear, 'Immediate'); - }); - - Zone.__load_patch('requestAnimationFrame', function (global) { - patchTimer(global, 'request', 'cancel', 'AnimationFrame'); - patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame'); - patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame'); - }); - - Zone.__load_patch('blocking', function (global, Zone) { - var blockingMethods = ['alert', 'prompt', 'confirm']; - - for (var i = 0; i < blockingMethods.length; i++) { - var name = blockingMethods[i]; - patchMethod(global, name, function (delegate, symbol, name) { - return function (s, args) { - return Zone.current.run(delegate, global, args, name); - }; - }); - } - }); - - Zone.__load_patch('EventTarget', function (global, Zone, api) { - patchEvent(global, api); - eventTargetPatch(global, api); // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener - - var XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget']; - - if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) { - api.patchEventTarget(global, [XMLHttpRequestEventTarget.prototype]); - } - - patchClass('MutationObserver'); - patchClass('WebKitMutationObserver'); - patchClass('IntersectionObserver'); - patchClass('FileReader'); - }); - - Zone.__load_patch('on_property', function (global, Zone, api) { - propertyDescriptorPatch(api, global); - propertyPatch(); - }); - - Zone.__load_patch('customElements', function (global, Zone, api) { - patchCustomElements(global, api); - }); - - Zone.__load_patch('XHR', function (global, Zone) { - // Treat XMLHttpRequest as a macrotask. - patchXHR(global); - var XHR_TASK = zoneSymbol('xhrTask'); - var XHR_SYNC = zoneSymbol('xhrSync'); - var XHR_LISTENER = zoneSymbol('xhrListener'); - var XHR_SCHEDULED = zoneSymbol('xhrScheduled'); - var XHR_URL = zoneSymbol('xhrURL'); - var XHR_ERROR_BEFORE_SCHEDULED = zoneSymbol('xhrErrorBeforeScheduled'); - - function patchXHR(window) { - var XMLHttpRequest = window['XMLHttpRequest']; - - if (!XMLHttpRequest) { - // XMLHttpRequest is not available in service worker - return; - } - - var XMLHttpRequestPrototype = XMLHttpRequest.prototype; - - function findPendingTask(target) { - return target[XHR_TASK]; - } - - var oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER]; - var oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; - - if (!oriAddListener) { - var XMLHttpRequestEventTarget = window['XMLHttpRequestEventTarget']; - - if (XMLHttpRequestEventTarget) { - var XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget.prototype; - oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER]; - oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; - } - } - - var READY_STATE_CHANGE = 'readystatechange'; - var SCHEDULED = 'scheduled'; - - function scheduleTask(task) { - var data = task.data; - var target = data.target; - target[XHR_SCHEDULED] = false; - target[XHR_ERROR_BEFORE_SCHEDULED] = false; // remove existing event listener - - var listener = target[XHR_LISTENER]; - - if (!oriAddListener) { - oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER]; - oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; - } - - if (listener) { - oriRemoveListener.call(target, READY_STATE_CHANGE, listener); - } - - var newListener = target[XHR_LISTENER] = function () { - if (target.readyState === target.DONE) { - // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with - // readyState=4 multiple times, so we need to check task state here - if (!data.aborted && target[XHR_SCHEDULED] && task.state === SCHEDULED) { - // check whether the xhr has registered onload listener - // if that is the case, the task should invoke after all - // onload listeners finish. - var loadTasks = target['__zone_symbol__loadfalse']; - - if (loadTasks && loadTasks.length > 0) { - var oriInvoke = task.invoke; - - task.invoke = function () { - // need to load the tasks again, because in other - // load listener, they may remove themselves - var loadTasks = target['__zone_symbol__loadfalse']; - - for (var i = 0; i < loadTasks.length; i++) { - if (loadTasks[i] === task) { - loadTasks.splice(i, 1); - } - } - - if (!data.aborted && task.state === SCHEDULED) { - oriInvoke.call(task); - } - }; - - loadTasks.push(task); - } else { - task.invoke(); - } - } else if (!data.aborted && target[XHR_SCHEDULED] === false) { - // error occurs when xhr.send() - target[XHR_ERROR_BEFORE_SCHEDULED] = true; - } - } - }; - - oriAddListener.call(target, READY_STATE_CHANGE, newListener); - var storedTask = target[XHR_TASK]; - - if (!storedTask) { - target[XHR_TASK] = task; - } - - sendNative.apply(target, data.args); - target[XHR_SCHEDULED] = true; - return task; - } - - function placeholderCallback() {} - - function clearTask(task) { - var data = task.data; // Note - ideally, we would call data.target.removeEventListener here, but it's too late - // to prevent it from firing. So instead, we store info for the event listener. - - data.aborted = true; - return abortNative.apply(data.target, data.args); - } - - var openNative = patchMethod(XMLHttpRequestPrototype, 'open', function () { - return function (self, args) { - self[XHR_SYNC] = args[2] == false; - self[XHR_URL] = args[1]; - return openNative.apply(self, args); - }; - }); - var XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send'; - var fetchTaskAborting = zoneSymbol('fetchTaskAborting'); - var fetchTaskScheduling = zoneSymbol('fetchTaskScheduling'); - var sendNative = patchMethod(XMLHttpRequestPrototype, 'send', function () { - return function (self, args) { - if (Zone.current[fetchTaskScheduling] === true) { - // a fetch is scheduling, so we are using xhr to polyfill fetch - // and because we already schedule macroTask for fetch, we should - // not schedule a macroTask for xhr again - return sendNative.apply(self, args); - } - - if (self[XHR_SYNC]) { - // if the XHR is sync there is no task to schedule, just execute the code. - return sendNative.apply(self, args); - } else { - var _options2 = { - target: self, - url: self[XHR_URL], - isPeriodic: false, - args: args, - aborted: false - }; - var task = scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, _options2, scheduleTask, clearTask); - - if (self && self[XHR_ERROR_BEFORE_SCHEDULED] === true && !_options2.aborted && task.state === SCHEDULED) { - // xhr request throw error when send - // we should invoke task instead of leaving a scheduled - // pending macroTask - task.invoke(); - } - } - }; - }); - var abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', function () { - return function (self, args) { - var task = findPendingTask(self); - - if (task && typeof task.type == 'string') { - // If the XHR has already completed, do nothing. - // If the XHR has already been aborted, do nothing. - // Fix #569, call abort multiple times before done will cause - // macroTask task count be negative number - if (task.cancelFn == null || task.data && task.data.aborted) { - return; - } - - task.zone.cancelTask(task); - } else if (Zone.current[fetchTaskAborting] === true) { - // the abort is called from fetch polyfill, we need to call native abort of XHR. - return abortNative.apply(self, args); - } // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no - // task - // to cancel. Do nothing. - - }; - }); - } - }); - - Zone.__load_patch('geolocation', function (global) { - /// GEO_LOCATION - if (global['navigator'] && global['navigator'].geolocation) { - patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']); - } - }); - - Zone.__load_patch('PromiseRejectionEvent', function (global, Zone) { - // handle unhandled promise rejection - function findPromiseRejectionHandler(evtName) { - return function (e) { - var eventTasks = findEventTasks(global, evtName); - eventTasks.forEach(function (eventTask) { - // windows has added unhandledrejection event listener - // trigger the event listener - var PromiseRejectionEvent = global['PromiseRejectionEvent']; - - if (PromiseRejectionEvent) { - var evt = new PromiseRejectionEvent(evtName, { - promise: e.promise, - reason: e.rejection - }); - eventTask.invoke(evt); - } - }); - }; - } - - if (global['PromiseRejectionEvent']) { - Zone[zoneSymbol('unhandledPromiseRejectionHandler')] = findPromiseRejectionHandler('unhandledrejection'); - Zone[zoneSymbol('rejectionHandledHandler')] = findPromiseRejectionHandler('rejectionhandled'); - } - }); - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /***/ - - }, - - /***/ - "./node_modules/zone.js/dist/zone-legacy.js": - /*!**************************************************!*\ - !*** ./node_modules/zone.js/dist/zone-legacy.js ***! - \**************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesZoneJsDistZoneLegacyJs(module, exports, __webpack_require__) { - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - (function (global, factory) { - true ? factory() : undefined; - })(this, function () { - 'use strict'; - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - function eventTargetLegacyPatch(_global, api) { - var _a = api.getGlobalObjects(), - eventNames = _a.eventNames, - globalSources = _a.globalSources, - zoneSymbolEventNames = _a.zoneSymbolEventNames, - TRUE_STR = _a.TRUE_STR, - FALSE_STR = _a.FALSE_STR, - ZONE_SYMBOL_PREFIX = _a.ZONE_SYMBOL_PREFIX; - - var WTF_ISSUE_555 = 'Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video'; - var NO_EVENT_TARGET = 'ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket'.split(','); - var EVENT_TARGET = 'EventTarget'; - var apis = []; - var isWtf = _global['wtf']; - var WTF_ISSUE_555_ARRAY = WTF_ISSUE_555.split(','); - - if (isWtf) { - // Workaround for: https://github.com/google/tracing-framework/issues/555 - apis = WTF_ISSUE_555_ARRAY.map(function (v) { - return 'HTML' + v + 'Element'; - }).concat(NO_EVENT_TARGET); - } else if (_global[EVENT_TARGET]) { - apis.push(EVENT_TARGET); - } else { - // Note: EventTarget is not available in all browsers, - // if it's not available, we instead patch the APIs in the IDL that inherit from EventTarget - apis = NO_EVENT_TARGET; - } - - var isDisableIECheck = _global['__Zone_disable_IE_check'] || false; - var isEnableCrossContextCheck = _global['__Zone_enable_cross_context_check'] || false; - var ieOrEdge = api.isIEOrEdge(); - var ADD_EVENT_LISTENER_SOURCE = '.addEventListener:'; - var FUNCTION_WRAPPER = '[object FunctionWrapper]'; - var BROWSER_TOOLS = 'function __BROWSERTOOLS_CONSOLE_SAFEFUNC() { [native code] }'; // predefine all __zone_symbol__ + eventName + true/false string - - for (var i = 0; i < eventNames.length; i++) { - var eventName = eventNames[i]; - var falseEventName = eventName + FALSE_STR; - var trueEventName = eventName + TRUE_STR; - var symbol = ZONE_SYMBOL_PREFIX + falseEventName; - var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; - zoneSymbolEventNames[eventName] = {}; - zoneSymbolEventNames[eventName][FALSE_STR] = symbol; - zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture; - } // predefine all task.source string - - - for (var i = 0; i < WTF_ISSUE_555.length; i++) { - var target = WTF_ISSUE_555_ARRAY[i]; - var targets = globalSources[target] = {}; - - for (var j = 0; j < eventNames.length; j++) { - var eventName = eventNames[j]; - targets[eventName] = target + ADD_EVENT_LISTENER_SOURCE + eventName; - } - } - - var checkIEAndCrossContext = function checkIEAndCrossContext(nativeDelegate, delegate, target, args) { - if (!isDisableIECheck && ieOrEdge) { - if (isEnableCrossContextCheck) { - try { - var testString = delegate.toString(); - - if (testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS) { - nativeDelegate.apply(target, args); - return false; - } - } catch (error) { - nativeDelegate.apply(target, args); - return false; - } - } else { - var testString = delegate.toString(); - - if (testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS) { - nativeDelegate.apply(target, args); - return false; - } - } - } else if (isEnableCrossContextCheck) { - try { - delegate.toString(); - } catch (error) { - nativeDelegate.apply(target, args); - return false; - } - } - - return true; - }; - - var apiTypes = []; - - for (var i = 0; i < apis.length; i++) { - var type = _global[apis[i]]; - apiTypes.push(type && type.prototype); - } // vh is validateHandler to check event handler - // is valid or not(for security check) - - - api.patchEventTarget(_global, apiTypes, { - vh: checkIEAndCrossContext - }); - Zone[api.symbol('patchEventTarget')] = !!_global[EVENT_TARGET]; - return true; - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - // we have to patch the instance since the proto is non-configurable - - - function apply(api, _global) { - var _a = api.getGlobalObjects(), - ADD_EVENT_LISTENER_STR = _a.ADD_EVENT_LISTENER_STR, - REMOVE_EVENT_LISTENER_STR = _a.REMOVE_EVENT_LISTENER_STR; - - var WS = _global.WebSocket; // On Safari window.EventTarget doesn't exist so need to patch WS add/removeEventListener - // On older Chrome, no need since EventTarget was already patched - - if (!_global.EventTarget) { - api.patchEventTarget(_global, [WS.prototype]); - } - - _global.WebSocket = function (x, y) { - var socket = arguments.length > 1 ? new WS(x, y) : new WS(x); - var proxySocket; - var proxySocketProto; // Safari 7.0 has non-configurable own 'onmessage' and friends properties on the socket instance - - var onmessageDesc = api.ObjectGetOwnPropertyDescriptor(socket, 'onmessage'); - - if (onmessageDesc && onmessageDesc.configurable === false) { - proxySocket = api.ObjectCreate(socket); // socket have own property descriptor 'onopen', 'onmessage', 'onclose', 'onerror' - // but proxySocket not, so we will keep socket as prototype and pass it to - // patchOnProperties method - - proxySocketProto = socket; - [ADD_EVENT_LISTENER_STR, REMOVE_EVENT_LISTENER_STR, 'send', 'close'].forEach(function (propName) { - proxySocket[propName] = function () { - var args = api.ArraySlice.call(arguments); - - if (propName === ADD_EVENT_LISTENER_STR || propName === REMOVE_EVENT_LISTENER_STR) { - var eventName = args.length > 0 ? args[0] : undefined; - - if (eventName) { - var propertySymbol = Zone.__symbol__('ON_PROPERTY' + eventName); - - socket[propertySymbol] = proxySocket[propertySymbol]; - } - } - - return socket[propName].apply(socket, args); - }; - }); - } else { - // we can patch the real socket - proxySocket = socket; - } - - api.patchOnProperties(proxySocket, ['close', 'error', 'message', 'open'], proxySocketProto); - return proxySocket; - }; - - var globalWebSocket = _global['WebSocket']; - - for (var prop in WS) { - globalWebSocket[prop] = WS[prop]; - } - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * @fileoverview - * @suppress {globalThis} - */ - - - function propertyDescriptorLegacyPatch(api, _global) { - var _a = api.getGlobalObjects(), - isNode = _a.isNode, - isMix = _a.isMix; - - if (isNode && !isMix) { - return; - } - - if (!canPatchViaPropertyDescriptor(api, _global)) { - var supportsWebSocket = typeof WebSocket !== 'undefined'; // Safari, Android browsers (Jelly Bean) - - patchViaCapturingAllTheEvents(api); - api.patchClass('XMLHttpRequest'); - - if (supportsWebSocket) { - apply(api, _global); - } - - Zone[api.symbol('patchEvents')] = true; - } - } - - function canPatchViaPropertyDescriptor(api, _global) { - var _a = api.getGlobalObjects(), - isBrowser = _a.isBrowser, - isMix = _a.isMix; - - if ((isBrowser || isMix) && !api.ObjectGetOwnPropertyDescriptor(HTMLElement.prototype, 'onclick') && typeof Element !== 'undefined') { - // WebKit https://bugs.webkit.org/show_bug.cgi?id=134364 - // IDL interface attributes are not configurable - var desc = api.ObjectGetOwnPropertyDescriptor(Element.prototype, 'onclick'); - if (desc && !desc.configurable) return false; // try to use onclick to detect whether we can patch via propertyDescriptor - // because XMLHttpRequest is not available in service worker - - if (desc) { - api.ObjectDefineProperty(Element.prototype, 'onclick', { - enumerable: true, - configurable: true, - get: function get() { - return true; - } - }); - var div = document.createElement('div'); - var result = !!div.onclick; - api.ObjectDefineProperty(Element.prototype, 'onclick', desc); - return result; - } - } - - var XMLHttpRequest = _global['XMLHttpRequest']; - - if (!XMLHttpRequest) { - // XMLHttpRequest is not available in service worker - return false; - } - - var ON_READY_STATE_CHANGE = 'onreadystatechange'; - var XMLHttpRequestPrototype = XMLHttpRequest.prototype; - var xhrDesc = api.ObjectGetOwnPropertyDescriptor(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE); // add enumerable and configurable here because in opera - // by default XMLHttpRequest.prototype.onreadystatechange is undefined - // without adding enumerable and configurable will cause onreadystatechange - // non-configurable - // and if XMLHttpRequest.prototype.onreadystatechange is undefined, - // we should set a real desc instead a fake one - - if (xhrDesc) { - api.ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, { - enumerable: true, - configurable: true, - get: function get() { - return true; - } - }); - var req = new XMLHttpRequest(); - var result = !!req.onreadystatechange; // restore original desc - - api.ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, xhrDesc || {}); - return result; - } else { - var SYMBOL_FAKE_ONREADYSTATECHANGE_1 = api.symbol('fake'); - api.ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, { - enumerable: true, - configurable: true, - get: function get() { - return this[SYMBOL_FAKE_ONREADYSTATECHANGE_1]; - }, - set: function set(value) { - this[SYMBOL_FAKE_ONREADYSTATECHANGE_1] = value; - } - }); - var req = new XMLHttpRequest(); - - var detectFunc = function detectFunc() {}; - - req.onreadystatechange = detectFunc; - var result = req[SYMBOL_FAKE_ONREADYSTATECHANGE_1] === detectFunc; - req.onreadystatechange = null; - return result; - } - } // Whenever any eventListener fires, we check the eventListener target and all parents - // for `onwhatever` properties and replace them with zone-bound functions - // - Chrome (for now) - - - function patchViaCapturingAllTheEvents(api) { - var eventNames = api.getGlobalObjects().eventNames; - var unboundKey = api.symbol('unbound'); - - var _loop_1 = function _loop_1(i) { - var property = eventNames[i]; - var onproperty = 'on' + property; - self.addEventListener(property, function (event) { - var elt = event.target, - bound, - source; - - if (elt) { - source = elt.constructor['name'] + '.' + onproperty; - } else { - source = 'unknown.' + onproperty; - } - - while (elt) { - if (elt[onproperty] && !elt[onproperty][unboundKey]) { - bound = api.wrapWithCurrentZone(elt[onproperty], source); - bound[unboundKey] = elt[onproperty]; - elt[onproperty] = bound; - } - - elt = elt.parentElement; - } - }, true); - }; - - for (var i = 0; i < eventNames.length; i++) { - _loop_1(i); - } - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - - function registerElementPatch(_global, api) { - var _a = api.getGlobalObjects(), - isBrowser = _a.isBrowser, - isMix = _a.isMix; - - if (!isBrowser && !isMix || !('registerElement' in _global.document)) { - return; - } - - var callbacks = ['createdCallback', 'attachedCallback', 'detachedCallback', 'attributeChangedCallback']; - api.patchCallbacks(api, document, 'Document', 'registerElement', callbacks); - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * @fileoverview - * @suppress {missingRequire} - */ - - - (function (_global) { - _global['__zone_symbol__legacyPatch'] = function () { - var Zone = _global['Zone']; - - Zone.__load_patch('registerElement', function (global, Zone, api) { - registerElementPatch(global, api); - }); - - Zone.__load_patch('EventTargetLegacy', function (global, Zone, api) { - eventTargetLegacyPatch(global, api); - propertyDescriptorLegacyPatch(api, global); - }); - }; - })(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global); - }); - /***/ - - }, - - /***/ - "./src/polyfills.ts": - /*!**************************!*\ - !*** ./src/polyfills.ts ***! - \**************************/ - - /*! no exports provided */ - - /***/ - function srcPolyfillsTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! zone.js/dist/zone */ - "./node_modules/zone.js/dist/zone-evergreen.js"); - /* harmony import */ - - - var zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1___default = - /*#__PURE__*/ - __webpack_require__.n(zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1__); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - /** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), - * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - - /*************************************************************************************************** - * BROWSER POLYFILLS - */ - - /** IE9, IE10 and IE11 requires all of the following polyfills. **/ - // import 'core-js/es6/symbol'; - // import 'core-js/es6/object'; - // import 'core-js/es6/function'; - // import 'core-js/es6/parse-int'; - // import 'core-js/es6/parse-float'; - // import 'core-js/es6/number'; - // import 'core-js/es6/math'; - // import 'core-js/es6/string'; - // import 'core-js/es6/date'; - // import 'core-js/es6/array'; - // import 'core-js/es6/regexp'; - // import 'core-js/es6/map'; - // import 'core-js/es6/weak-map'; - // import 'core-js/es6/set'; - - /** - * If the application will be indexed by Google Search, the following is required. - * Googlebot uses a renderer based on Chrome 41. - * https://developers.google.com/search/docs/guides/rendering - **/ - // import 'core-js/es6/array'; - - /** IE10 and IE11 requires the following for NgClass support on SVG elements */ - // import 'classlist.js'; // Run `npm install --save classlist.js`. - - /** IE10 and IE11 requires the following for the Reflect API. */ - // import 'core-js/es6/reflect'; - - /** - * Web Animations `@angular/platform-browser/animations` - * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. - * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). - **/ - // import 'web-animations-js'; // Run `npm install --save web-animations-js`. - - /** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - */ - // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - - /* - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - */ - // (window as any).__Zone_enable_cross_context_check = true; - - /*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ - // Included with Angular CLI. - - /*************************************************************************************************** - * APPLICATION IMPORTS - */ - - /***/ - - }, - - /***/ - 1: - /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** multi ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-polyfills.js zone.js/dist/zone-legacy ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-jit-polyfills.js ./src/polyfills.ts ***! - \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function _(module, exports, __webpack_require__) { - __webpack_require__( - /*! C:\Users\Noelia\Desktop\DAA\daaexample\src\main\angular\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models\es5-polyfills.js */ - "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-polyfills.js"); - - __webpack_require__( - /*! zone.js/dist/zone-legacy */ - "./node_modules/zone.js/dist/zone-legacy.js"); - - __webpack_require__( - /*! C:\Users\Noelia\Desktop\DAA\daaexample\src\main\angular\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models\jit-polyfills.js */ - "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js"); - - __webpack_require__( - /*! C:\Users\Noelia\Desktop\DAA\daaexample\src\main\angular\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models\es5-jit-polyfills.js */ - "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-jit-polyfills.js"); - - module.exports = __webpack_require__( - /*! C:\Users\Noelia\Desktop\DAA\daaexample\src\main\angular\src\polyfills.ts */ - "./src/polyfills.ts"); - /***/ - } -}, [[1, "runtime"]]]); -//# sourceMappingURL=polyfills-es5.js.map \ No newline at end of file diff --git a/target/DAAExample/polyfills-es5.js.map b/target/DAAExample/polyfills-es5.js.map deleted file mode 100644 index f56ce15c3a060523339d6070176908be061178fb..0000000000000000000000000000000000000000 --- a/target/DAAExample/polyfills-es5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["node_modules/@angular-devkit/build-angular/node_modules/core-js/es/date/index.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/es/math/index.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/es/number/index.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/es/reflect/index.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/es/symbol/index.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/add-to-unscopables.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/advance-string-index.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-copy-within.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-fill.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-for-each.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-from.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-last-index-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-has-species-support.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-reduce.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-weak.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-is-regexp-logic.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-iterator-constructor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/date-to-iso-string.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/date-to-primitive.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/dom-iterables.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-is-ios.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-user-agent.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-v8-version.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/host-report-errors.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-integer.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-regexp.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-expm1.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-fround.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-log1p.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-sign.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/microtask.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-promise-constructor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/new-promise-capability.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/not-a-regexp.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-is-finite.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-float.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-int.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-assign.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names-external.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-to-string.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/perform.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/promise-resolve.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec-abstract.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-flags.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-sticky-helpers.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/same-value.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/species-constructor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-multibyte.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-pad.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-repeat.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim-forced.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/task.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/this-number-value.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol-wrapped.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/whitespaces.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.concat.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.copy-within.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.every.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.fill.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.filter.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.find-index.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.find.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.for-each.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.from.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.index-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.is-array.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.iterator.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.join.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.last-index-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.map.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.reduce-right.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.reduce.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.slice.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.some.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.sort.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.splice.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.now.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-iso-string.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-json.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-primitive.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-string.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.bind.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.has-instance.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.name.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.json.to-string-tag.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.acosh.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.asinh.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.atanh.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.cbrt.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.clz32.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.cosh.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.expm1.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.fround.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.hypot.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.imul.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log10.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log1p.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log2.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.sign.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.sinh.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.tanh.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.to-string-tag.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.trunc.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.constructor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.epsilon.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-finite.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-integer.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-nan.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-safe-integer.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.max-safe-integer.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.min-safe-integer.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.parse-float.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.parse-int.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.to-fixed.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.to-precision.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.assign.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.create.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.define-properties.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.define-property.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.freeze.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-own-property-descriptor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-own-property-names.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-prototype-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-extensible.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-frozen.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-sealed.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.keys.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.prevent-extensions.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.seal.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.set-prototype-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.to-string.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.parse-float.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.parse-int.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.promise.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.apply.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.construct.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.define-property.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.delete-property.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get-prototype-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.has.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.is-extensible.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.own-keys.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.prevent-extensions.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.set-prototype-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.set.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.constructor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.exec.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.flags.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.to-string.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.anchor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.big.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.blink.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.bold.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.code-point-at.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.ends-with.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fixed.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fontcolor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fontsize.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.from-code-point.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.includes.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.italics.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.iterator.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.link.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.match.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.raw.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.repeat.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.replace.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.search.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.small.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.split.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.starts-with.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.strike.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.sub.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.sup.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.trim.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.async-iterator.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.description.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.has-instance.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.iterator.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.match-all.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.match.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.replace.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.search.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.species.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.split.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.to-primitive.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.to-string-tag.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.unscopables.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.define-metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.delete-metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/web.dom-collections.for-each.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/web.dom-collections.iterator.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata.js","node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-jit-polyfills.js","node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-polyfills.js","node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js","node_modules/regenerator-runtime/runtime.js","node_modules/tslib/tslib.es6.js","node_modules/zone.js/dist/zone-evergreen.js","node_modules/zone.js/dist/zone-legacy.js","src/polyfills.ts"],"names":[],"mappings":"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","file":"polyfills-es5.js","sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/target/DAAExample/runtime-es2015.js b/target/DAAExample/runtime-es2015.js deleted file mode 100644 index ab4f9b75a5cf7dea77f848bfec466054d5537489..0000000000000000000000000000000000000000 --- a/target/DAAExample/runtime-es2015.js +++ /dev/null @@ -1,224 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // install a JSONP callback for chunk loading -/******/ function webpackJsonpCallback(data) { -/******/ var chunkIds = data[0]; -/******/ var moreModules = data[1]; -/******/ var executeModules = data[2]; -/******/ -/******/ // add "moreModules" to the modules object, -/******/ // then flag all "chunkIds" as loaded and fire callback -/******/ var moduleId, chunkId, i = 0, resolves = []; -/******/ for(;i < chunkIds.length; i++) { -/******/ chunkId = chunkIds[i]; -/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) { -/******/ resolves.push(installedChunks[chunkId][0]); -/******/ } -/******/ installedChunks[chunkId] = 0; -/******/ } -/******/ for(moduleId in moreModules) { -/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { -/******/ modules[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if(parentJsonpFunction) parentJsonpFunction(data); -/******/ -/******/ while(resolves.length) { -/******/ resolves.shift()(); -/******/ } -/******/ -/******/ // add entry modules from loaded chunk to deferred list -/******/ deferredModules.push.apply(deferredModules, executeModules || []); -/******/ -/******/ // run deferred modules when all chunks ready -/******/ return checkDeferredModules(); -/******/ }; -/******/ function checkDeferredModules() { -/******/ var result; -/******/ for(var i = 0; i < deferredModules.length; i++) { -/******/ var deferredModule = deferredModules[i]; -/******/ var fulfilled = true; -/******/ for(var j = 1; j < deferredModule.length; j++) { -/******/ var depId = deferredModule[j]; -/******/ if(installedChunks[depId] !== 0) fulfilled = false; -/******/ } -/******/ if(fulfilled) { -/******/ deferredModules.splice(i--, 1); -/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]); -/******/ } -/******/ } -/******/ -/******/ return result; -/******/ } -/******/ -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // object to store loaded and loading chunks -/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched -/******/ // Promise = chunk loading, 0 = chunk loaded -/******/ var installedChunks = { -/******/ "runtime": 0 -/******/ }; -/******/ -/******/ var deferredModules = []; -/******/ -/******/ // script path function -/******/ function jsonpScriptSrc(chunkId) { -/******/ return __webpack_require__.p + "" + ({"modules-people-people-module":"modules-people-people-module","modules-pets-pets-module":"modules-pets-pets-module"}[chunkId]||chunkId) + "-es2015.js" -/******/ } -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ // This file contains only the entry chunk. -/******/ // The chunk loading function for additional chunks -/******/ __webpack_require__.e = function requireEnsure(chunkId) { -/******/ var promises = []; -/******/ -/******/ -/******/ // JSONP chunk loading for javascript -/******/ -/******/ var installedChunkData = installedChunks[chunkId]; -/******/ if(installedChunkData !== 0) { // 0 means "already installed". -/******/ -/******/ // a Promise means "currently loading". -/******/ if(installedChunkData) { -/******/ promises.push(installedChunkData[2]); -/******/ } else { -/******/ // setup Promise in chunk cache -/******/ var promise = new Promise(function(resolve, reject) { -/******/ installedChunkData = installedChunks[chunkId] = [resolve, reject]; -/******/ }); -/******/ promises.push(installedChunkData[2] = promise); -/******/ -/******/ // start chunk loading -/******/ var script = document.createElement('script'); -/******/ var onScriptComplete; -/******/ -/******/ script.charset = 'utf-8'; -/******/ script.timeout = 120; -/******/ if (__webpack_require__.nc) { -/******/ script.setAttribute("nonce", __webpack_require__.nc); -/******/ } -/******/ script.src = jsonpScriptSrc(chunkId); -/******/ -/******/ // create error before stack unwound to get useful stacktrace later -/******/ var error = new Error(); -/******/ onScriptComplete = function (event) { -/******/ // avoid mem leaks in IE. -/******/ script.onerror = script.onload = null; -/******/ clearTimeout(timeout); -/******/ var chunk = installedChunks[chunkId]; -/******/ if(chunk !== 0) { -/******/ if(chunk) { -/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type); -/******/ var realSrc = event && event.target && event.target.src; -/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')'; -/******/ error.name = 'ChunkLoadError'; -/******/ error.type = errorType; -/******/ error.request = realSrc; -/******/ chunk[1](error); -/******/ } -/******/ installedChunks[chunkId] = undefined; -/******/ } -/******/ }; -/******/ var timeout = setTimeout(function(){ -/******/ onScriptComplete({ type: 'timeout', target: script }); -/******/ }, 120000); -/******/ script.onerror = script.onload = onScriptComplete; -/******/ document.head.appendChild(script); -/******/ } -/******/ } -/******/ return Promise.all(promises); -/******/ }; -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // on error function for async loading -/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; }; -/******/ -/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || []; -/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray); -/******/ jsonpArray.push = webpackJsonpCallback; -/******/ jsonpArray = jsonpArray.slice(); -/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]); -/******/ var parentJsonpFunction = oldJsonpFunction; -/******/ -/******/ -/******/ // run deferred modules from other chunks -/******/ checkDeferredModules(); -/******/ }) -/************************************************************************/ -/******/ ([]); -//# sourceMappingURL=runtime-es2015.js.map \ No newline at end of file diff --git a/target/DAAExample/runtime-es2015.js.map b/target/DAAExample/runtime-es2015.js.map deleted file mode 100644 index 7a5b7c565ba40cf0aa7615a6dee40e679c8dea68..0000000000000000000000000000000000000000 --- a/target/DAAExample/runtime-es2015.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack/bootstrap"],"names":[],"mappings":";QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;QACA,yCAAyC,oHAAoH;QAC7J;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;;;QAGA;;QAEA;QACA,iCAAiC;;QAEjC;QACA;QACA;QACA,KAAK;QACL;QACA;QACA;QACA,MAAM;QACN;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,wBAAwB,kCAAkC;QAC1D,MAAM;QACN;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA,0CAA0C,oBAAoB,WAAW;;QAEzE;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA","file":"runtime-es2015.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"runtime\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"modules-people-people-module\":\"modules-people-people-module\",\"modules-pets-pets-module\":\"modules-pets-pets-module\"}[chunkId]||chunkId) + \"-es2015.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/target/DAAExample/runtime-es5.js b/target/DAAExample/runtime-es5.js deleted file mode 100644 index e4265b3d5a7382a429704169fd33d749938f1695..0000000000000000000000000000000000000000 --- a/target/DAAExample/runtime-es5.js +++ /dev/null @@ -1,224 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // install a JSONP callback for chunk loading -/******/ function webpackJsonpCallback(data) { -/******/ var chunkIds = data[0]; -/******/ var moreModules = data[1]; -/******/ var executeModules = data[2]; -/******/ -/******/ // add "moreModules" to the modules object, -/******/ // then flag all "chunkIds" as loaded and fire callback -/******/ var moduleId, chunkId, i = 0, resolves = []; -/******/ for(;i < chunkIds.length; i++) { -/******/ chunkId = chunkIds[i]; -/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) { -/******/ resolves.push(installedChunks[chunkId][0]); -/******/ } -/******/ installedChunks[chunkId] = 0; -/******/ } -/******/ for(moduleId in moreModules) { -/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { -/******/ modules[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if(parentJsonpFunction) parentJsonpFunction(data); -/******/ -/******/ while(resolves.length) { -/******/ resolves.shift()(); -/******/ } -/******/ -/******/ // add entry modules from loaded chunk to deferred list -/******/ deferredModules.push.apply(deferredModules, executeModules || []); -/******/ -/******/ // run deferred modules when all chunks ready -/******/ return checkDeferredModules(); -/******/ }; -/******/ function checkDeferredModules() { -/******/ var result; -/******/ for(var i = 0; i < deferredModules.length; i++) { -/******/ var deferredModule = deferredModules[i]; -/******/ var fulfilled = true; -/******/ for(var j = 1; j < deferredModule.length; j++) { -/******/ var depId = deferredModule[j]; -/******/ if(installedChunks[depId] !== 0) fulfilled = false; -/******/ } -/******/ if(fulfilled) { -/******/ deferredModules.splice(i--, 1); -/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]); -/******/ } -/******/ } -/******/ -/******/ return result; -/******/ } -/******/ -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // object to store loaded and loading chunks -/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched -/******/ // Promise = chunk loading, 0 = chunk loaded -/******/ var installedChunks = { -/******/ "runtime": 0 -/******/ }; -/******/ -/******/ var deferredModules = []; -/******/ -/******/ // script path function -/******/ function jsonpScriptSrc(chunkId) { -/******/ return __webpack_require__.p + "" + ({"modules-people-people-module":"modules-people-people-module","modules-pets-pets-module":"modules-pets-pets-module"}[chunkId]||chunkId) + "-es5.js" -/******/ } -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ // This file contains only the entry chunk. -/******/ // The chunk loading function for additional chunks -/******/ __webpack_require__.e = function requireEnsure(chunkId) { -/******/ var promises = []; -/******/ -/******/ -/******/ // JSONP chunk loading for javascript -/******/ -/******/ var installedChunkData = installedChunks[chunkId]; -/******/ if(installedChunkData !== 0) { // 0 means "already installed". -/******/ -/******/ // a Promise means "currently loading". -/******/ if(installedChunkData) { -/******/ promises.push(installedChunkData[2]); -/******/ } else { -/******/ // setup Promise in chunk cache -/******/ var promise = new Promise(function(resolve, reject) { -/******/ installedChunkData = installedChunks[chunkId] = [resolve, reject]; -/******/ }); -/******/ promises.push(installedChunkData[2] = promise); -/******/ -/******/ // start chunk loading -/******/ var script = document.createElement('script'); -/******/ var onScriptComplete; -/******/ -/******/ script.charset = 'utf-8'; -/******/ script.timeout = 120; -/******/ if (__webpack_require__.nc) { -/******/ script.setAttribute("nonce", __webpack_require__.nc); -/******/ } -/******/ script.src = jsonpScriptSrc(chunkId); -/******/ -/******/ // create error before stack unwound to get useful stacktrace later -/******/ var error = new Error(); -/******/ onScriptComplete = function (event) { -/******/ // avoid mem leaks in IE. -/******/ script.onerror = script.onload = null; -/******/ clearTimeout(timeout); -/******/ var chunk = installedChunks[chunkId]; -/******/ if(chunk !== 0) { -/******/ if(chunk) { -/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type); -/******/ var realSrc = event && event.target && event.target.src; -/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')'; -/******/ error.name = 'ChunkLoadError'; -/******/ error.type = errorType; -/******/ error.request = realSrc; -/******/ chunk[1](error); -/******/ } -/******/ installedChunks[chunkId] = undefined; -/******/ } -/******/ }; -/******/ var timeout = setTimeout(function(){ -/******/ onScriptComplete({ type: 'timeout', target: script }); -/******/ }, 120000); -/******/ script.onerror = script.onload = onScriptComplete; -/******/ document.head.appendChild(script); -/******/ } -/******/ } -/******/ return Promise.all(promises); -/******/ }; -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // on error function for async loading -/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; }; -/******/ -/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || []; -/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray); -/******/ jsonpArray.push = webpackJsonpCallback; -/******/ jsonpArray = jsonpArray.slice(); -/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]); -/******/ var parentJsonpFunction = oldJsonpFunction; -/******/ -/******/ -/******/ // run deferred modules from other chunks -/******/ checkDeferredModules(); -/******/ }) -/************************************************************************/ -/******/ ([]); -//# sourceMappingURL=runtime-es5.js.map \ No newline at end of file diff --git a/target/DAAExample/runtime-es5.js.map b/target/DAAExample/runtime-es5.js.map deleted file mode 100644 index 81061d280554a9a0d8dec09e6ac1b94e5abe4dc7..0000000000000000000000000000000000000000 --- a/target/DAAExample/runtime-es5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack/bootstrap"],"names":[],"mappings":";QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;QACA,yCAAyC,oHAAoH;QAC7J;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;;;QAGA;;QAEA;QACA,iCAAiC;;QAEjC;QACA;QACA;QACA,KAAK;QACL;QACA;QACA;QACA,MAAM;QACN;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,wBAAwB,kCAAkC;QAC1D,MAAM;QACN;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA,0CAA0C,oBAAoB,WAAW;;QAEzE;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA","file":"runtime-es5.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"runtime\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"modules-people-people-module\":\"modules-people-people-module\",\"modules-pets-pets-module\":\"modules-pets-pets-module\"}[chunkId]||chunkId) + \"-es2015.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/target/DAAExample/styles-es2015.js b/target/DAAExample/styles-es2015.js deleted file mode 100644 index 33ed3a81aaa00e101c70ea22fc55a340ada7f817..0000000000000000000000000000000000000000 --- a/target/DAAExample/styles-es2015.js +++ /dev/null @@ -1,386 +0,0 @@ -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["styles"],{ - -/***/ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/bootstrap/dist/css/bootstrap.css": -/*!************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!./node_modules/postcss-loader/src??embedded!./node_modules/bootstrap/dist/css/bootstrap.css ***! - \************************************************************************************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = [[module.i, "/*!\n * Bootstrap v4.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n --blue: #007bff;\n --indigo: #6610f2;\n --purple: #6f42c1;\n --pink: #e83e8c;\n --red: #dc3545;\n --orange: #fd7e14;\n --yellow: #ffc107;\n --green: #28a745;\n --teal: #20c997;\n --cyan: #17a2b8;\n --white: #fff;\n --gray: #6c757d;\n --gray-dark: #343a40;\n --primary: #007bff;\n --secondary: #6c757d;\n --success: #28a745;\n --info: #17a2b8;\n --warning: #ffc107;\n --danger: #dc3545;\n --light: #f8f9fa;\n --dark: #343a40;\n --breakpoint-xs: 0;\n --breakpoint-sm: 576px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 992px;\n --breakpoint-xl: 1200px;\n --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none;\n}\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\ndt {\n font-weight: 700;\n}\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\nblockquote {\n margin: 0 0 1rem;\n}\nb,\nstrong {\n font-weight: bolder;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\nsub {\n bottom: -.25em;\n}\nsup {\n top: -.5em;\n}\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n}\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\na:not([href]) {\n color: inherit;\n text-decoration: none;\n}\na:not([href]):hover {\n color: inherit;\n text-decoration: none;\n}\npre,\ncode,\nkbd,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n font-size: 1em;\n}\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\nfigure {\n margin: 0 0 1rem;\n}\nimg {\n vertical-align: middle;\n border-style: none;\n}\nsvg {\n overflow: hidden;\n vertical-align: middle;\n}\ntable {\n border-collapse: collapse;\n}\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\nth {\n text-align: inherit;\n}\nlabel {\n display: inline-block;\n margin-bottom: 0.5rem;\n}\nbutton {\n border-radius: 0;\n}\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\nbutton,\ninput {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nselect {\n word-wrap: normal;\n}\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=\"button\"]:not(:disabled),\n[type=\"reset\"]:not(:disabled),\n[type=\"submit\"]:not(:disabled) {\n cursor: pointer;\n}\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\ntextarea {\n overflow: auto;\n resize: vertical;\n}\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\nprogress {\n vertical-align: baseline;\n}\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\noutput {\n display: inline-block;\n}\nsummary {\n display: list-item;\n cursor: pointer;\n}\ntemplate {\n display: none;\n}\n[hidden] {\n display: none !important;\n}\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n}\nh1, .h1 {\n font-size: 2.5rem;\n}\nh2, .h2 {\n font-size: 2rem;\n}\nh3, .h3 {\n font-size: 1.75rem;\n}\nh4, .h4 {\n font-size: 1.5rem;\n}\nh5, .h5 {\n font-size: 1.25rem;\n}\nh6, .h6 {\n font-size: 1rem;\n}\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\nsmall,\n.small {\n font-size: 80%;\n font-weight: 400;\n}\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n.list-inline-item {\n display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #6c757d;\n}\n.blockquote-footer::before {\n content: \"\\2014\\00A0\";\n}\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #dee2e6;\n border-radius: 0.25rem;\n max-width: 100%;\n height: auto;\n}\n.figure {\n display: inline-block;\n}\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n.figure-caption {\n font-size: 90%;\n color: #6c757d;\n}\ncode {\n font-size: 87.5%;\n color: #e83e8c;\n word-wrap: break-word;\n}\na > code {\n color: inherit;\n}\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 87.5%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n}\npre {\n display: block;\n font-size: 87.5%;\n color: #212529;\n}\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n.container-fluid, .container-sm, .container-md, .container-lg, .container-xl {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n@media (min-width: 576px) {\n .container, .container-sm {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container, .container-sm, .container-md {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container, .container-sm, .container-md, .container-lg {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container, .container-sm, .container-md, .container-lg, .container-xl {\n max-width: 1140px;\n }\n}\n.row {\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n.col {\n flex-basis: 0;\n -webkit-box-flex: 1;\n flex-grow: 1;\n max-width: 100%;\n}\n.row-cols-1 > * {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n}\n.row-cols-2 > * {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n}\n.row-cols-3 > * {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n.row-cols-4 > * {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n}\n.row-cols-5 > * {\n -webkit-box-flex: 0;\n flex: 0 0 20%;\n max-width: 20%;\n}\n.row-cols-6 > * {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n.col-auto {\n -webkit-box-flex: 0;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n}\n.col-1 {\n -webkit-box-flex: 0;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n.col-2 {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n.col-3 {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n}\n.col-4 {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n.col-5 {\n -webkit-box-flex: 0;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n.col-6 {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n}\n.col-7 {\n -webkit-box-flex: 0;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n.col-8 {\n -webkit-box-flex: 0;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n.col-9 {\n -webkit-box-flex: 0;\n flex: 0 0 75%;\n max-width: 75%;\n}\n.col-10 {\n -webkit-box-flex: 0;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n.col-11 {\n -webkit-box-flex: 0;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n.col-12 {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n}\n.order-first {\n -webkit-box-ordinal-group: 0;\n order: -1;\n}\n.order-last {\n -webkit-box-ordinal-group: 14;\n order: 13;\n}\n.order-0 {\n -webkit-box-ordinal-group: 1;\n order: 0;\n}\n.order-1 {\n -webkit-box-ordinal-group: 2;\n order: 1;\n}\n.order-2 {\n -webkit-box-ordinal-group: 3;\n order: 2;\n}\n.order-3 {\n -webkit-box-ordinal-group: 4;\n order: 3;\n}\n.order-4 {\n -webkit-box-ordinal-group: 5;\n order: 4;\n}\n.order-5 {\n -webkit-box-ordinal-group: 6;\n order: 5;\n}\n.order-6 {\n -webkit-box-ordinal-group: 7;\n order: 6;\n}\n.order-7 {\n -webkit-box-ordinal-group: 8;\n order: 7;\n}\n.order-8 {\n -webkit-box-ordinal-group: 9;\n order: 8;\n}\n.order-9 {\n -webkit-box-ordinal-group: 10;\n order: 9;\n}\n.order-10 {\n -webkit-box-ordinal-group: 11;\n order: 10;\n}\n.order-11 {\n -webkit-box-ordinal-group: 12;\n order: 11;\n}\n.order-12 {\n -webkit-box-ordinal-group: 13;\n order: 12;\n}\n.offset-1 {\n margin-left: 8.333333%;\n}\n.offset-2 {\n margin-left: 16.666667%;\n}\n.offset-3 {\n margin-left: 25%;\n}\n.offset-4 {\n margin-left: 33.333333%;\n}\n.offset-5 {\n margin-left: 41.666667%;\n}\n.offset-6 {\n margin-left: 50%;\n}\n.offset-7 {\n margin-left: 58.333333%;\n}\n.offset-8 {\n margin-left: 66.666667%;\n}\n.offset-9 {\n margin-left: 75%;\n}\n.offset-10 {\n margin-left: 83.333333%;\n}\n.offset-11 {\n margin-left: 91.666667%;\n}\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n -webkit-box-flex: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-sm-1 > * {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-sm-2 > * {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-sm-3 > * {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-sm-4 > * {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-sm-5 > * {\n -webkit-box-flex: 0;\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-sm-6 > * {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-auto {\n -webkit-box-flex: 0;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-sm-1 {\n -webkit-box-flex: 0;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n -webkit-box-flex: 0;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n -webkit-box-flex: 0;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n -webkit-box-flex: 0;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n -webkit-box-flex: 0;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n -webkit-box-flex: 0;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n -webkit-box-flex: 0;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n -webkit-box-ordinal-group: 0;\n order: -1;\n }\n .order-sm-last {\n -webkit-box-ordinal-group: 14;\n order: 13;\n }\n .order-sm-0 {\n -webkit-box-ordinal-group: 1;\n order: 0;\n }\n .order-sm-1 {\n -webkit-box-ordinal-group: 2;\n order: 1;\n }\n .order-sm-2 {\n -webkit-box-ordinal-group: 3;\n order: 2;\n }\n .order-sm-3 {\n -webkit-box-ordinal-group: 4;\n order: 3;\n }\n .order-sm-4 {\n -webkit-box-ordinal-group: 5;\n order: 4;\n }\n .order-sm-5 {\n -webkit-box-ordinal-group: 6;\n order: 5;\n }\n .order-sm-6 {\n -webkit-box-ordinal-group: 7;\n order: 6;\n }\n .order-sm-7 {\n -webkit-box-ordinal-group: 8;\n order: 7;\n }\n .order-sm-8 {\n -webkit-box-ordinal-group: 9;\n order: 8;\n }\n .order-sm-9 {\n -webkit-box-ordinal-group: 10;\n order: 9;\n }\n .order-sm-10 {\n -webkit-box-ordinal-group: 11;\n order: 10;\n }\n .order-sm-11 {\n -webkit-box-ordinal-group: 12;\n order: 11;\n }\n .order-sm-12 {\n -webkit-box-ordinal-group: 13;\n order: 12;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n -webkit-box-flex: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-md-1 > * {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-md-2 > * {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-md-3 > * {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-md-4 > * {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-md-5 > * {\n -webkit-box-flex: 0;\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-md-6 > * {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-auto {\n -webkit-box-flex: 0;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-md-1 {\n -webkit-box-flex: 0;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n -webkit-box-flex: 0;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n -webkit-box-flex: 0;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n -webkit-box-flex: 0;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n -webkit-box-flex: 0;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n -webkit-box-flex: 0;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n -webkit-box-flex: 0;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n -webkit-box-ordinal-group: 0;\n order: -1;\n }\n .order-md-last {\n -webkit-box-ordinal-group: 14;\n order: 13;\n }\n .order-md-0 {\n -webkit-box-ordinal-group: 1;\n order: 0;\n }\n .order-md-1 {\n -webkit-box-ordinal-group: 2;\n order: 1;\n }\n .order-md-2 {\n -webkit-box-ordinal-group: 3;\n order: 2;\n }\n .order-md-3 {\n -webkit-box-ordinal-group: 4;\n order: 3;\n }\n .order-md-4 {\n -webkit-box-ordinal-group: 5;\n order: 4;\n }\n .order-md-5 {\n -webkit-box-ordinal-group: 6;\n order: 5;\n }\n .order-md-6 {\n -webkit-box-ordinal-group: 7;\n order: 6;\n }\n .order-md-7 {\n -webkit-box-ordinal-group: 8;\n order: 7;\n }\n .order-md-8 {\n -webkit-box-ordinal-group: 9;\n order: 8;\n }\n .order-md-9 {\n -webkit-box-ordinal-group: 10;\n order: 9;\n }\n .order-md-10 {\n -webkit-box-ordinal-group: 11;\n order: 10;\n }\n .order-md-11 {\n -webkit-box-ordinal-group: 12;\n order: 11;\n }\n .order-md-12 {\n -webkit-box-ordinal-group: 13;\n order: 12;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n -webkit-box-flex: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-lg-1 > * {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-lg-2 > * {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-lg-3 > * {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-lg-4 > * {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-lg-5 > * {\n -webkit-box-flex: 0;\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-lg-6 > * {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-auto {\n -webkit-box-flex: 0;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-lg-1 {\n -webkit-box-flex: 0;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n -webkit-box-flex: 0;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n -webkit-box-flex: 0;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n -webkit-box-flex: 0;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n -webkit-box-flex: 0;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n -webkit-box-flex: 0;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n -webkit-box-flex: 0;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n -webkit-box-ordinal-group: 0;\n order: -1;\n }\n .order-lg-last {\n -webkit-box-ordinal-group: 14;\n order: 13;\n }\n .order-lg-0 {\n -webkit-box-ordinal-group: 1;\n order: 0;\n }\n .order-lg-1 {\n -webkit-box-ordinal-group: 2;\n order: 1;\n }\n .order-lg-2 {\n -webkit-box-ordinal-group: 3;\n order: 2;\n }\n .order-lg-3 {\n -webkit-box-ordinal-group: 4;\n order: 3;\n }\n .order-lg-4 {\n -webkit-box-ordinal-group: 5;\n order: 4;\n }\n .order-lg-5 {\n -webkit-box-ordinal-group: 6;\n order: 5;\n }\n .order-lg-6 {\n -webkit-box-ordinal-group: 7;\n order: 6;\n }\n .order-lg-7 {\n -webkit-box-ordinal-group: 8;\n order: 7;\n }\n .order-lg-8 {\n -webkit-box-ordinal-group: 9;\n order: 8;\n }\n .order-lg-9 {\n -webkit-box-ordinal-group: 10;\n order: 9;\n }\n .order-lg-10 {\n -webkit-box-ordinal-group: 11;\n order: 10;\n }\n .order-lg-11 {\n -webkit-box-ordinal-group: 12;\n order: 11;\n }\n .order-lg-12 {\n -webkit-box-ordinal-group: 13;\n order: 12;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n -webkit-box-flex: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-xl-1 > * {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-xl-2 > * {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-xl-3 > * {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-xl-4 > * {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-xl-5 > * {\n -webkit-box-flex: 0;\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-xl-6 > * {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-auto {\n -webkit-box-flex: 0;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-xl-1 {\n -webkit-box-flex: 0;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n -webkit-box-flex: 0;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n -webkit-box-flex: 0;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n -webkit-box-flex: 0;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n -webkit-box-flex: 0;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n -webkit-box-flex: 0;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n -webkit-box-flex: 0;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n -webkit-box-ordinal-group: 0;\n order: -1;\n }\n .order-xl-last {\n -webkit-box-ordinal-group: 14;\n order: 13;\n }\n .order-xl-0 {\n -webkit-box-ordinal-group: 1;\n order: 0;\n }\n .order-xl-1 {\n -webkit-box-ordinal-group: 2;\n order: 1;\n }\n .order-xl-2 {\n -webkit-box-ordinal-group: 3;\n order: 2;\n }\n .order-xl-3 {\n -webkit-box-ordinal-group: 4;\n order: 3;\n }\n .order-xl-4 {\n -webkit-box-ordinal-group: 5;\n order: 4;\n }\n .order-xl-5 {\n -webkit-box-ordinal-group: 6;\n order: 5;\n }\n .order-xl-6 {\n -webkit-box-ordinal-group: 7;\n order: 6;\n }\n .order-xl-7 {\n -webkit-box-ordinal-group: 8;\n order: 7;\n }\n .order-xl-8 {\n -webkit-box-ordinal-group: 9;\n order: 8;\n }\n .order-xl-9 {\n -webkit-box-ordinal-group: 10;\n order: 9;\n }\n .order-xl-10 {\n -webkit-box-ordinal-group: 11;\n order: 10;\n }\n .order-xl-11 {\n -webkit-box-ordinal-group: 12;\n order: 11;\n }\n .order-xl-12 {\n -webkit-box-ordinal-group: 13;\n order: 12;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n.table {\n width: 100%;\n margin-bottom: 1rem;\n color: #212529;\n}\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #dee2e6;\n}\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #dee2e6;\n}\n.table tbody + tbody {\n border-top: 2px solid #dee2e6;\n}\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n.table-bordered {\n border: 1px solid #dee2e6;\n}\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #dee2e6;\n}\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n.table-borderless th,\n.table-borderless td,\n.table-borderless thead th,\n.table-borderless tbody + tbody {\n border: 0;\n}\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n.table-hover tbody tr:hover {\n color: #212529;\n background-color: rgba(0, 0, 0, 0.075);\n}\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff;\n}\n.table-primary th,\n.table-primary td,\n.table-primary thead th,\n.table-primary tbody + tbody {\n border-color: #7abaff;\n}\n.table-hover .table-primary:hover {\n background-color: #9fcdff;\n}\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n}\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #d6d8db;\n}\n.table-secondary th,\n.table-secondary td,\n.table-secondary thead th,\n.table-secondary tbody + tbody {\n border-color: #b3b7bb;\n}\n.table-hover .table-secondary:hover {\n background-color: #c8cbcf;\n}\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #c8cbcf;\n}\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb;\n}\n.table-success th,\n.table-success td,\n.table-success thead th,\n.table-success tbody + tbody {\n border-color: #8fd19e;\n}\n.table-hover .table-success:hover {\n background-color: #b1dfbb;\n}\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n}\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb;\n}\n.table-info th,\n.table-info td,\n.table-info thead th,\n.table-info tbody + tbody {\n border-color: #86cfda;\n}\n.table-hover .table-info:hover {\n background-color: #abdde5;\n}\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #abdde5;\n}\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba;\n}\n.table-warning th,\n.table-warning td,\n.table-warning thead th,\n.table-warning tbody + tbody {\n border-color: #ffdf7e;\n}\n.table-hover .table-warning:hover {\n background-color: #ffe8a1;\n}\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n}\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb;\n}\n.table-danger th,\n.table-danger td,\n.table-danger thead th,\n.table-danger tbody + tbody {\n border-color: #ed969e;\n}\n.table-hover .table-danger:hover {\n background-color: #f1b0b7;\n}\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n}\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe;\n}\n.table-light th,\n.table-light td,\n.table-light thead th,\n.table-light tbody + tbody {\n border-color: #fbfcfc;\n}\n.table-hover .table-light:hover {\n background-color: #ececf6;\n}\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #ececf6;\n}\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca;\n}\n.table-dark th,\n.table-dark td,\n.table-dark thead th,\n.table-dark tbody + tbody {\n border-color: #95999c;\n}\n.table-hover .table-dark:hover {\n background-color: #b9bbbe;\n}\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n}\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n.table .thead-dark th {\n color: #fff;\n background-color: #343a40;\n border-color: #454d55;\n}\n.table .thead-light th {\n color: #495057;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n.table-dark {\n color: #fff;\n background-color: #343a40;\n}\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n border-color: #454d55;\n}\n.table-dark.table-bordered {\n border: 0;\n}\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n.table-dark.table-hover tbody tr:hover {\n color: #fff;\n background-color: rgba(255, 255, 255, 0.075);\n}\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-sm > .table-bordered {\n border: 0;\n }\n}\n@media (max-width: 767.98px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-md > .table-bordered {\n border: 0;\n }\n}\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-lg > .table-bordered {\n border: 0;\n }\n}\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-xl > .table-bordered {\n border: 0;\n }\n}\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n.table-responsive > .table-bordered {\n border: 0;\n}\n.form-control {\n display: block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n -webkit-transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n -webkit-transition: none;\n transition: none;\n }\n}\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n.form-control:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 #495057;\n}\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.form-control::-webkit-input-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n.form-control::-moz-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n.form-control::-ms-input-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n.form-control::placeholder {\n color: #6c757d;\n opacity: 1;\n}\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n.col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n.col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.25rem;\n line-height: 1.5;\n}\n.col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.875rem;\n line-height: 1.5;\n}\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding: 0.375rem 0;\n margin-bottom: 0;\n font-size: 1rem;\n line-height: 1.5;\n color: #212529;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0;\n}\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n}\n.form-control-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n.form-control-lg {\n height: calc(1.5em + 1rem + 2px);\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\nselect.form-control[size], select.form-control[multiple] {\n height: auto;\n}\ntextarea.form-control {\n height: auto;\n}\n.form-group {\n margin-bottom: 1rem;\n}\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n.form-row {\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n}\n.form-check {\n position: relative;\n display: block;\n padding-left: 1.25rem;\n}\n.form-check-input {\n position: absolute;\n margin-top: 0.3rem;\n margin-left: -1.25rem;\n}\n.form-check-input[disabled] ~ .form-check-label,\n.form-check-input:disabled ~ .form-check-label {\n color: #6c757d;\n}\n.form-check-label {\n margin-bottom: 0;\n}\n.form-check-inline {\n display: -webkit-inline-box;\n display: inline-flex;\n -webkit-box-align: center;\n align-items: center;\n padding-left: 0;\n margin-right: 0.75rem;\n}\n.form-check-inline .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: 0.3125rem;\n margin-left: 0;\n}\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #28a745;\n}\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(40, 167, 69, 0.9);\n border-radius: 0.25rem;\n}\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n display: block;\n}\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: #28a745;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n.was-validated .custom-select:valid, .custom-select.is-valid {\n border-color: #28a745;\n padding-right: calc(0.75em + 2.3125rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: #28a745;\n}\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n color: #28a745;\n}\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n border-color: #28a745;\n}\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n border-color: #34ce57;\n background-color: #34ce57;\n}\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #28a745;\n}\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n border-color: #28a745;\n}\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #dc3545;\n}\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.9);\n border-radius: 0.25rem;\n}\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: #dc3545;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n.was-validated .custom-select:invalid, .custom-select.is-invalid {\n border-color: #dc3545;\n padding-right: calc(0.75em + 2.3125rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: #dc3545;\n}\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n color: #dc3545;\n}\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n border-color: #e4606d;\n background-color: #e4606d;\n}\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n border-color: #dc3545;\n}\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n.form-inline {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row wrap;\n -webkit-box-align: center;\n align-items: center;\n}\n.form-inline .form-check {\n width: 100%;\n}\n@media (min-width: 576px) {\n .form-inline label {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 0;\n flex: 0 0 auto;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row wrap;\n -webkit-box-align: center;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group,\n .form-inline .custom-select {\n width: auto;\n }\n .form-inline .form-check {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n width: auto;\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n flex-shrink: 0;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n }\n .form-inline .custom-control-label {\n margin-bottom: 0;\n }\n}\n.btn {\n display: inline-block;\n font-weight: 400;\n color: #212529;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: transparent;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .btn {\n -webkit-transition: none;\n transition: none;\n }\n}\n.btn:hover {\n color: #212529;\n text-decoration: none;\n}\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n.btn-primary:focus, .btn-primary.focus {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #0062cc;\n border-color: #005cbf;\n}\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n.btn-secondary:focus, .btn-secondary.focus {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n color: #fff;\n background-color: #545b62;\n border-color: #4e555b;\n}\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n.btn-success:focus, .btn-success.focus {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #1e7e34;\n border-color: #1c7430;\n}\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n.btn-info:focus, .btn-info.focus {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #117a8b;\n border-color: #10707f;\n}\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n.btn-warning:focus, .btn-warning.focus {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n color: #212529;\n background-color: #d39e00;\n border-color: #c69500;\n}\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n.btn-danger:focus, .btn-danger.focus {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #bd2130;\n border-color: #b21f2d;\n}\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n.btn-light:focus, .btn-light.focus {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n color: #212529;\n background-color: #dae0e5;\n border-color: #d3d9df;\n}\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n.btn-dark:focus, .btn-dark.focus {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #1d2124;\n border-color: #171a1d;\n}\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n.btn-outline-primary {\n color: #007bff;\n border-color: #007bff;\n}\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n}\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n.btn-outline-secondary {\n color: #6c757d;\n border-color: #6c757d;\n}\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #6c757d;\n background-color: transparent;\n}\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n.btn-outline-success {\n color: #28a745;\n border-color: #28a745;\n}\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n}\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n.btn-outline-info {\n color: #17a2b8;\n border-color: #17a2b8;\n}\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n}\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n.btn-outline-warning {\n color: #ffc107;\n border-color: #ffc107;\n}\n.btn-outline-warning:hover {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n}\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n.btn-outline-danger {\n color: #dc3545;\n border-color: #dc3545;\n}\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n}\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n.btn-outline-light {\n color: #f8f9fa;\n border-color: #f8f9fa;\n}\n.btn-outline-light:hover {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n}\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n.btn-outline-dark {\n color: #343a40;\n border-color: #343a40;\n}\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n}\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n.btn-link {\n font-weight: 400;\n color: #007bff;\n text-decoration: none;\n}\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n box-shadow: none;\n}\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n pointer-events: none;\n}\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n -webkit-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n .fade {\n -webkit-transition: none;\n transition: none;\n }\n}\n.fade:not(.show) {\n opacity: 0;\n}\n.collapse:not(.show) {\n display: none;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition: height 0.35s ease;\n transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .collapsing {\n -webkit-transition: none;\n transition: none;\n }\n}\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n position: relative;\n}\n.dropdown-toggle {\n white-space: nowrap;\n}\n.dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n@media (min-width: 576px) {\n .dropdown-menu-sm-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-sm-right {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 768px) {\n .dropdown-menu-md-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-md-right {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 992px) {\n .dropdown-menu-lg-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-lg-right {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 1200px) {\n .dropdown-menu-xl-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xl-right {\n right: 0;\n left: auto;\n }\n}\n.dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropright .dropdown-menu {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: 0.125rem;\n}\n.dropright .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n.dropright .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropright .dropdown-toggle::after {\n vertical-align: 0;\n}\n.dropleft .dropdown-menu {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: 0.125rem;\n}\n.dropleft .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n.dropleft .dropdown-toggle::after {\n display: none;\n}\n.dropleft .dropdown-toggle::before {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n.dropleft .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropleft .dropdown-toggle::before {\n vertical-align: 0;\n}\n.dropdown-menu[x-placement^=\"top\"], .dropdown-menu[x-placement^=\"right\"], .dropdown-menu[x-placement^=\"bottom\"], .dropdown-menu[x-placement^=\"left\"] {\n right: auto;\n bottom: auto;\n}\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n}\n.dropdown-item:hover, .dropdown-item:focus {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: transparent;\n}\n.dropdown-menu.show {\n display: block;\n}\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #6c757d;\n white-space: nowrap;\n}\n.dropdown-item-text {\n display: block;\n padding: 0.25rem 1.5rem;\n color: #212529;\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: -webkit-inline-box;\n display: inline-flex;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 1;\n}\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n.btn-toolbar {\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n -webkit-box-pack: start;\n justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n width: auto;\n}\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n margin-left: -1px;\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n.dropdown-toggle-split::after,\n.dropup .dropdown-toggle-split::after,\n.dropright .dropdown-toggle-split::after {\n margin-left: 0;\n}\n.dropleft .dropdown-toggle-split::before {\n margin-right: 0;\n}\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n.btn-group-vertical {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n -webkit-box-align: start;\n align-items: flex-start;\n -webkit-box-pack: center;\n justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: -1px;\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n margin-bottom: 0;\n}\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n -webkit-box-align: stretch;\n align-items: stretch;\n width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-control-plaintext,\n.input-group > .custom-select,\n.input-group > .custom-file {\n position: relative;\n -webkit-box-flex: 1;\n flex: 1 1 0%;\n min-width: 0;\n margin-bottom: 0;\n}\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .form-control-plaintext + .form-control,\n.input-group > .form-control-plaintext + .custom-select,\n.input-group > .form-control-plaintext + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n margin-left: -1px;\n}\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {\n z-index: 3;\n}\n.input-group > .custom-file .custom-file-input:focus {\n z-index: 4;\n}\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group > .custom-file {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::after {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > .custom-file:not(:first-child) .custom-file-label {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group-prepend,\n.input-group-append {\n display: -webkit-box;\n display: flex;\n}\n.input-group-prepend .btn,\n.input-group-append .btn {\n position: relative;\n z-index: 2;\n}\n.input-group-prepend .btn:focus,\n.input-group-append .btn:focus {\n z-index: 3;\n}\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n margin-left: -1px;\n}\n.input-group-prepend {\n margin-right: -1px;\n}\n.input-group-append {\n margin-left: -1px;\n}\n.input-group-text {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n white-space: nowrap;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group-lg > .form-control:not(textarea),\n.input-group-lg > .custom-select {\n height: calc(1.5em + 1rem + 2px);\n}\n.input-group-lg > .form-control,\n.input-group-lg > .custom-select,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n.input-group-sm > .form-control:not(textarea),\n.input-group-sm > .custom-select {\n height: calc(1.5em + 0.5rem + 2px);\n}\n.input-group-sm > .form-control,\n.input-group-sm > .custom-select,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n.input-group-lg > .custom-select,\n.input-group-sm > .custom-select {\n padding-right: 1.75rem;\n}\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.custom-control {\n position: relative;\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n}\n.custom-control-inline {\n display: -webkit-inline-box;\n display: inline-flex;\n margin-right: 1rem;\n}\n.custom-control-input {\n position: absolute;\n left: 0;\n z-index: -1;\n width: 1rem;\n height: 1.25rem;\n opacity: 0;\n}\n.custom-control-input:checked ~ .custom-control-label::before {\n color: #fff;\n border-color: #007bff;\n background-color: #007bff;\n}\n.custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-control-input:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #80bdff;\n}\n.custom-control-input:not(:disabled):active ~ .custom-control-label::before {\n color: #fff;\n background-color: #b3d7ff;\n border-color: #b3d7ff;\n}\n.custom-control-input[disabled] ~ .custom-control-label, .custom-control-input:disabled ~ .custom-control-label {\n color: #6c757d;\n}\n.custom-control-input[disabled] ~ .custom-control-label::before, .custom-control-input:disabled ~ .custom-control-label::before {\n background-color: #e9ecef;\n}\n.custom-control-label {\n position: relative;\n margin-bottom: 0;\n vertical-align: top;\n}\n.custom-control-label::before {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n content: \"\";\n background-color: #fff;\n border: #adb5bd solid 1px;\n}\n.custom-control-label::after {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n content: \"\";\n background: no-repeat 50% / 50% 50%;\n}\n.custom-checkbox .custom-control-label::before {\n border-radius: 0.25rem;\n}\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e\");\n}\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n border-color: #007bff;\n background-color: #007bff;\n}\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e\");\n}\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n.custom-radio .custom-control-label::before {\n border-radius: 50%;\n}\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n.custom-switch {\n padding-left: 2.25rem;\n}\n.custom-switch .custom-control-label::before {\n left: -2.25rem;\n width: 1.75rem;\n pointer-events: all;\n border-radius: 0.5rem;\n}\n.custom-switch .custom-control-label::after {\n top: calc(0.25rem + 2px);\n left: calc(-2.25rem + 2px);\n width: calc(1rem - 4px);\n height: calc(1rem - 4px);\n background-color: #adb5bd;\n border-radius: 0.5rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;\n -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;\n transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .custom-switch .custom-control-label::after {\n -webkit-transition: none;\n transition: none;\n }\n}\n.custom-switch .custom-control-input:checked ~ .custom-control-label::after {\n background-color: #fff;\n -webkit-transform: translateX(0.75rem);\n transform: translateX(0.75rem);\n}\n.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n.custom-select {\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.custom-select:focus {\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none;\n}\n.custom-select:disabled {\n color: #6c757d;\n background-color: #e9ecef;\n}\n.custom-select::-ms-expand {\n display: none;\n}\n.custom-select:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 #495057;\n}\n.custom-select-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n font-size: 0.875rem;\n}\n.custom-select-lg {\n height: calc(1.5em + 1rem + 2px);\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n}\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin-bottom: 0;\n}\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin: 0;\n opacity: 0;\n}\n.custom-file-input:focus ~ .custom-file-label {\n border-color: #80bdff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-file-input[disabled] ~ .custom-file-label,\n.custom-file-input:disabled ~ .custom-file-label {\n background-color: #e9ecef;\n}\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n content: \"Browse\";\n}\n.custom-file-input ~ .custom-file-label[data-browse]::after {\n content: attr(data-browse);\n}\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n.custom-file-label::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: calc(1.5em + 0.75rem);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n content: \"Browse\";\n background-color: #e9ecef;\n border-left: inherit;\n border-radius: 0 0.25rem 0.25rem 0;\n}\n.custom-range {\n width: 100%;\n height: 1.4rem;\n padding: 0;\n background-color: transparent;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.custom-range:focus {\n outline: none;\n}\n.custom-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-range:focus::-ms-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-range::-moz-focus-outer {\n border: 0;\n}\n.custom-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n -webkit-appearance: none;\n appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-webkit-slider-thumb {\n -webkit-transition: none;\n transition: none;\n }\n}\n.custom-range::-webkit-slider-thumb:active {\n background-color: #b3d7ff;\n}\n.custom-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n.custom-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n -moz-appearance: none;\n appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-moz-range-thumb {\n -webkit-transition: none;\n transition: none;\n }\n}\n.custom-range::-moz-range-thumb:active {\n background-color: #b3d7ff;\n}\n.custom-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n.custom-range::-ms-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: 0;\n margin-right: 0.2rem;\n margin-left: 0.2rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-ms-thumb {\n -webkit-transition: none;\n transition: none;\n }\n}\n.custom-range::-ms-thumb:active {\n background-color: #b3d7ff;\n}\n.custom-range::-ms-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: transparent;\n border-color: transparent;\n border-width: 0.5rem;\n}\n.custom-range::-ms-fill-lower {\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n.custom-range::-ms-fill-upper {\n margin-right: 15px;\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n.custom-range:disabled::-webkit-slider-thumb {\n background-color: #adb5bd;\n}\n.custom-range:disabled::-webkit-slider-runnable-track {\n cursor: default;\n}\n.custom-range:disabled::-moz-range-thumb {\n background-color: #adb5bd;\n}\n.custom-range:disabled::-moz-range-track {\n cursor: default;\n}\n.custom-range:disabled::-ms-thumb {\n background-color: #adb5bd;\n}\n.custom-control-label::before,\n.custom-file-label,\n.custom-select {\n -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .custom-control-label::before,\n .custom-file-label,\n .custom-select {\n -webkit-transition: none;\n transition: none;\n }\n}\n.nav {\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n.nav-link:hover, .nav-link:focus {\n text-decoration: none;\n}\n.nav-link.disabled {\n color: #6c757d;\n pointer-events: none;\n cursor: default;\n}\n.nav-tabs {\n border-bottom: 1px solid #dee2e6;\n}\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n border-color: #e9ecef #e9ecef #dee2e6;\n}\n.nav-tabs .nav-link.disabled {\n color: #6c757d;\n background-color: transparent;\n border-color: transparent;\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #dee2e6 #dee2e6 #fff;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n.nav-fill .nav-item {\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n text-align: center;\n}\n.nav-justified .nav-item {\n flex-basis: 0;\n -webkit-box-flex: 1;\n flex-grow: 1;\n text-align: center;\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.navbar {\n position: relative;\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n.navbar .container,\n.navbar .container-fluid, .navbar .container-sm, .navbar .container-md, .navbar .container-lg, .navbar .container-xl {\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n justify-content: space-between;\n}\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n.navbar-brand:hover, .navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-nav {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.navbar-collapse {\n flex-basis: 100%;\n -webkit-box-flex: 1;\n flex-grow: 1;\n -webkit-box-align: center;\n align-items: center;\n}\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n.navbar-toggler:hover, .navbar-toggler:focus {\n text-decoration: none;\n}\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n@media (max-width: 575.98px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n@media (min-width: 576px) {\n .navbar-expand-sm {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: -webkit-box !important;\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n}\n@media (max-width: 767.98px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-expand-md {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: -webkit-box !important;\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n}\n@media (max-width: 991.98px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n@media (min-width: 992px) {\n .navbar-expand-lg {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: -webkit-box !important;\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n}\n@media (max-width: 1199.98px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: -webkit-box !important;\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n}\n.navbar-expand {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n justify-content: flex-start;\n}\n.navbar-expand > .container,\n.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {\n padding-right: 0;\n padding-left: 0;\n}\n.navbar-expand .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n}\n.navbar-expand > .container,\n.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {\n flex-wrap: nowrap;\n}\n.navbar-expand .navbar-collapse {\n display: -webkit-box !important;\n display: flex !important;\n flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n display: none;\n}\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n color: rgba(0, 0, 0, 0.7);\n}\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n.navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n.navbar-dark .navbar-brand {\n color: #fff;\n}\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n color: #fff;\n}\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: rgba(255, 255, 255, 0.75);\n}\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: #fff;\n}\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n.navbar-dark .navbar-text a {\n color: #fff;\n}\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n color: #fff;\n}\n.card {\n position: relative;\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n.card-body {\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n min-height: 1px;\n padding: 1.25rem;\n}\n.card-title {\n margin-bottom: 0.75rem;\n}\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n.card-text:last-child {\n margin-bottom: 0;\n}\n.card-link:hover {\n text-decoration: none;\n}\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n.card-img,\n.card-img-top,\n.card-img-bottom {\n flex-shrink: 0;\n width: 100%;\n}\n.card-img,\n.card-img-top {\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n.card-img,\n.card-img-bottom {\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n.card-deck .card {\n margin-bottom: 15px;\n}\n@media (min-width: 576px) {\n .card-deck {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n -webkit-box-flex: 1;\n flex: 1 0 0%;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}\n.card-group > .card {\n margin-bottom: 15px;\n}\n@media (min-width: 576px) {\n .card-group {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row wrap;\n }\n .card-group > .card {\n -webkit-box-flex: 1;\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-top,\n .card-group > .card:not(:last-child) .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-bottom,\n .card-group > .card:not(:last-child) .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-top,\n .card-group > .card:not(:first-child) .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-bottom,\n .card-group > .card:not(:first-child) .card-footer {\n border-bottom-left-radius: 0;\n }\n}\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n@media (min-width: 576px) {\n .card-columns {\n -webkit-column-count: 3;\n -moz-column-count: 3;\n column-count: 3;\n -webkit-column-gap: 1.25rem;\n -moz-column-gap: 1.25rem;\n column-gap: 1.25rem;\n orphans: 1;\n widows: 1;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n.accordion > .card {\n overflow: hidden;\n}\n.accordion > .card:not(:last-of-type) {\n border-bottom: 0;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.accordion > .card:not(:first-of-type) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.accordion > .card > .card-header {\n border-radius: 0;\n margin-bottom: -1px;\n}\n.breadcrumb {\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n.breadcrumb-item + .breadcrumb-item {\n padding-left: 0.5rem;\n}\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n color: #6c757d;\n content: \"/\";\n}\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n.breadcrumb-item.active {\n color: #6c757d;\n}\n.pagination {\n display: -webkit-box;\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #dee2e6;\n}\n.page-link:hover {\n z-index: 2;\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n.page-link:focus {\n z-index: 3;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n.page-item.active .page-link {\n z-index: 3;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n.page-item.disabled .page-link {\n color: #6c757d;\n pointer-events: none;\n cursor: auto;\n background-color: #fff;\n border-color: #dee2e6;\n}\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .badge {\n -webkit-transition: none;\n transition: none;\n }\n}\na.badge:hover, a.badge:focus {\n text-decoration: none;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\na.badge-primary:hover, a.badge-primary:focus {\n color: #fff;\n background-color: #0062cc;\n}\na.badge-primary:focus, a.badge-primary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\na.badge-secondary:hover, a.badge-secondary:focus {\n color: #fff;\n background-color: #545b62;\n}\na.badge-secondary:focus, a.badge-secondary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\na.badge-success:hover, a.badge-success:focus {\n color: #fff;\n background-color: #1e7e34;\n}\na.badge-success:focus, a.badge-success.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\na.badge-info:hover, a.badge-info:focus {\n color: #fff;\n background-color: #117a8b;\n}\na.badge-info:focus, a.badge-info.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\na.badge-warning:hover, a.badge-warning:focus {\n color: #212529;\n background-color: #d39e00;\n}\na.badge-warning:focus, a.badge-warning.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\na.badge-danger:hover, a.badge-danger:focus {\n color: #fff;\n background-color: #bd2130;\n}\na.badge-danger:focus, a.badge-danger.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\na.badge-light:hover, a.badge-light:focus {\n color: #212529;\n background-color: #dae0e5;\n}\na.badge-light:focus, a.badge-light.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\na.badge-dark:hover, a.badge-dark:focus {\n color: #fff;\n background-color: #1d2124;\n}\na.badge-dark:focus, a.badge-dark.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n.alert-heading {\n color: inherit;\n}\n.alert-link {\n font-weight: 700;\n}\n.alert-dismissible {\n padding-right: 4rem;\n}\n.alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n.alert-primary .alert-link {\n color: #002752;\n}\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n.alert-secondary .alert-link {\n color: #202326;\n}\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n.alert-success .alert-link {\n color: #0b2e13;\n}\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n.alert-info hr {\n border-top-color: #abdde5;\n}\n.alert-info .alert-link {\n color: #062c33;\n}\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n.alert-warning .alert-link {\n color: #533f03;\n}\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n.alert-danger .alert-link {\n color: #491217;\n}\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n.alert-light hr {\n border-top-color: #ececf6;\n}\n.alert-light .alert-link {\n color: #686868;\n}\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n.alert-dark .alert-link {\n color: #040505;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n display: -webkit-box;\n display: flex;\n height: 1rem;\n overflow: hidden;\n font-size: 0.75rem;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n.progress-bar {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n -webkit-box-pack: center;\n justify-content: center;\n overflow: hidden;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n background-color: #007bff;\n -webkit-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n -webkit-transition: none;\n transition: none;\n }\n}\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n.progress-bar-animated {\n -webkit-animation: progress-bar-stripes 1s linear infinite;\n animation: progress-bar-stripes 1s linear infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n -webkit-animation: none;\n animation: none;\n }\n}\n.media {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: start;\n align-items: flex-start;\n}\n.media-body {\n -webkit-box-flex: 1;\n flex: 1;\n}\n.list-group {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n.list-group-item-action:hover, .list-group-item-action:focus {\n z-index: 1;\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n.list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: #fff;\n}\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n.list-group-item + .list-group-item {\n border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n margin-top: -1px;\n border-top-width: 1px;\n}\n.list-group-horizontal {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n}\n.list-group-horizontal .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n}\n.list-group-horizontal .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n}\n.list-group-horizontal .list-group-item.active {\n margin-top: 0;\n}\n.list-group-horizontal .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n}\n.list-group-horizontal .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n}\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n }\n .list-group-horizontal-sm .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-sm .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-sm .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-sm .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-sm .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n }\n .list-group-horizontal-md .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-md .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-md .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-md .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-md .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n }\n .list-group-horizontal-lg .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-lg .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-lg .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-lg .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-lg .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n }\n .list-group-horizontal-xl .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xl .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xl .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xl .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-xl .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n.list-group-flush .list-group-item {\n border-right-width: 0;\n border-left-width: 0;\n border-radius: 0;\n}\n.list-group-flush .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom-width: 0;\n}\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n}\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n color: #004085;\n background-color: #9fcdff;\n}\n.list-group-item-primary.list-group-item-action.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n}\n.list-group-item-secondary {\n color: #383d41;\n background-color: #d6d8db;\n}\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n color: #383d41;\n background-color: #c8cbcf;\n}\n.list-group-item-secondary.list-group-item-action.active {\n color: #fff;\n background-color: #383d41;\n border-color: #383d41;\n}\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n}\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n color: #155724;\n background-color: #b1dfbb;\n}\n.list-group-item-success.list-group-item-action.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n}\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n}\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n color: #0c5460;\n background-color: #abdde5;\n}\n.list-group-item-info.list-group-item-action.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n}\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n}\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n color: #856404;\n background-color: #ffe8a1;\n}\n.list-group-item-warning.list-group-item-action.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n}\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n}\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n color: #721c24;\n background-color: #f1b0b7;\n}\n.list-group-item-danger.list-group-item-action.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n}\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n}\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n color: #818182;\n background-color: #ececf6;\n}\n.list-group-item-light.list-group-item-action.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n}\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n}\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n color: #1b1e21;\n background-color: #b9bbbe;\n}\n.list-group-item-dark.list-group-item-action.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n}\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n.close:hover {\n color: #000;\n text-decoration: none;\n}\n.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {\n opacity: .75;\n}\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\na.close.disabled {\n pointer-events: none;\n}\n.toast {\n max-width: 350px;\n overflow: hidden;\n font-size: 0.875rem;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n opacity: 0;\n border-radius: 0.25rem;\n}\n.toast:not(:last-child) {\n margin-bottom: 0.75rem;\n}\n.toast.showing {\n opacity: 1;\n}\n.toast.show {\n display: block;\n opacity: 1;\n}\n.toast.hide {\n display: none;\n}\n.toast-header {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n padding: 0.25rem 0.75rem;\n color: #6c757d;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n}\n.toast-body {\n padding: 0.75rem;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1050;\n display: none;\n width: 100%;\n height: 100%;\n overflow: hidden;\n outline: 0;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none;\n}\n.modal.fade .modal-dialog {\n transition: -webkit-transform 0.3s ease-out;\n -webkit-transition: -webkit-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n -webkit-transform: translate(0, -50px);\n transform: translate(0, -50px);\n}\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n -webkit-transition: none;\n transition: none;\n }\n}\n.modal.show .modal-dialog {\n -webkit-transform: none;\n transform: none;\n}\n.modal.modal-static .modal-dialog {\n -webkit-transform: scale(1.02);\n transform: scale(1.02);\n}\n.modal-dialog-scrollable {\n display: -webkit-box;\n display: flex;\n max-height: calc(100% - 1rem);\n}\n.modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 1rem);\n overflow: hidden;\n}\n.modal-dialog-scrollable .modal-header,\n.modal-dialog-scrollable .modal-footer {\n flex-shrink: 0;\n}\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n.modal-dialog-centered {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n min-height: calc(100% - 1rem);\n}\n.modal-dialog-centered::before {\n display: block;\n height: calc(100vh - 1rem);\n content: \"\";\n}\n.modal-dialog-centered.modal-dialog-scrollable {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n -webkit-box-pack: center;\n justify-content: center;\n height: 100%;\n}\n.modal-dialog-centered.modal-dialog-scrollable .modal-content {\n max-height: none;\n}\n.modal-dialog-centered.modal-dialog-scrollable::before {\n content: none;\n}\n.modal-content {\n position: relative;\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n}\n.modal-backdrop.show {\n opacity: 0.5;\n}\n.modal-header {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: start;\n align-items: flex-start;\n -webkit-box-pack: justify;\n justify-content: space-between;\n padding: 1rem 1rem;\n border-bottom: 1px solid #dee2e6;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n.modal-header .close {\n padding: 1rem 1rem;\n margin: -1rem -1rem -1rem auto;\n}\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n.modal-body {\n position: relative;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n padding: 1rem;\n}\n.modal-footer {\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: end;\n justify-content: flex-end;\n padding: 0.75rem;\n border-top: 1px solid #dee2e6;\n border-bottom-right-radius: calc(0.3rem - 1px);\n border-bottom-left-radius: calc(0.3rem - 1px);\n}\n.modal-footer > * {\n margin: 0.25rem;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto;\n }\n .modal-dialog-scrollable {\n max-height: calc(100% - 3.5rem);\n }\n .modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 3.5rem);\n }\n .modal-dialog-centered {\n min-height: calc(100% - 3.5rem);\n }\n .modal-dialog-centered::before {\n height: calc(100vh - 3.5rem);\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg,\n .modal-xl {\n max-width: 800px;\n }\n}\n@media (min-width: 1200px) {\n .modal-xl {\n max-width: 1140px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n.tooltip.show {\n opacity: 0.9;\n}\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem;\n}\n.tooltip .arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 0.4rem 0;\n}\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n top: 0;\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000;\n}\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 0.4rem;\n}\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n right: 0;\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000;\n}\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 0.4rem 0;\n}\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n bottom: 0;\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000;\n}\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 0.4rem;\n}\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n left: 0;\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n.popover .arrow {\n position: absolute;\n display: block;\n width: 1rem;\n height: 0.5rem;\n margin: 0 0.3rem;\n}\n.popover .arrow::before, .popover .arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 0.5rem;\n}\n.bs-popover-top > .arrow, .bs-popover-auto[x-placement^=\"top\"] > .arrow {\n bottom: calc(-0.5rem - 1px);\n}\n.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^=\"top\"] > .arrow::before {\n bottom: 0;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^=\"top\"] > .arrow::after {\n bottom: 1px;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: #fff;\n}\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 0.5rem;\n}\n.bs-popover-right > .arrow, .bs-popover-auto[x-placement^=\"right\"] > .arrow {\n left: calc(-0.5rem - 1px);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^=\"right\"] > .arrow::before {\n left: 0;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^=\"right\"] > .arrow::after {\n left: 1px;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: #fff;\n}\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 0.5rem;\n}\n.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow {\n top: calc(-0.5rem - 1px);\n}\n.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::before {\n top: 0;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::after {\n top: 1px;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: #fff;\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 1rem;\n margin-left: -0.5rem;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 0.5rem;\n}\n.bs-popover-left > .arrow, .bs-popover-auto[x-placement^=\"left\"] > .arrow {\n right: calc(-0.5rem - 1px);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^=\"left\"] > .arrow::before {\n right: 0;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^=\"left\"] > .arrow::after {\n right: 1px;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: #fff;\n}\n.popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n.popover-header:empty {\n display: none;\n}\n.popover-body {\n padding: 0.5rem 0.75rem;\n color: #212529;\n}\n.carousel {\n position: relative;\n}\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transition: -webkit-transform 0.6s ease-in-out;\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n -webkit-transition: none;\n transition: none;\n }\n}\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n.carousel-item-next:not(.carousel-item-left),\n.active.carousel-item-right {\n -webkit-transform: translateX(100%);\n transform: translateX(100%);\n}\n.carousel-item-prev:not(.carousel-item-right),\n.active.carousel-item-left {\n -webkit-transform: translateX(-100%);\n transform: translateX(-100%);\n}\n.carousel-fade .carousel-item {\n opacity: 0;\n -webkit-transition-property: opacity;\n transition-property: opacity;\n -webkit-transform: none;\n transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-left,\n.carousel-fade .carousel-item-prev.carousel-item-right {\n z-index: 1;\n opacity: 1;\n}\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n z-index: 0;\n opacity: 0;\n -webkit-transition: opacity 0s 0.6s;\n transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-left,\n .carousel-fade .active.carousel-item-right {\n -webkit-transition: none;\n transition: none;\n }\n}\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n -webkit-transition: opacity 0.15s ease;\n transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n .carousel-control-next {\n -webkit-transition: none;\n transition: none;\n }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n.carousel-control-prev {\n left: 0;\n}\n.carousel-control-next {\n right: 0;\n}\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: no-repeat 50% / 100% 100%;\n}\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e\");\n}\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e\");\n}\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 15;\n display: -webkit-box;\n display: flex;\n -webkit-box-pack: center;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n.carousel-indicators li {\n box-sizing: content-box;\n -webkit-box-flex: 0;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #fff;\n background-clip: padding-box;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: .5;\n -webkit-transition: opacity 0.6s ease;\n transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators li {\n -webkit-transition: none;\n transition: none;\n }\n}\n.carousel-indicators .active {\n opacity: 1;\n}\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n@-webkit-keyframes spinner-border {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes spinner-border {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.spinner-border {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n border: 0.25em solid currentColor;\n border-right-color: transparent;\n border-radius: 50%;\n -webkit-animation: spinner-border .75s linear infinite;\n animation: spinner-border .75s linear infinite;\n}\n.spinner-border-sm {\n width: 1rem;\n height: 1rem;\n border-width: 0.2em;\n}\n@-webkit-keyframes spinner-grow {\n 0% {\n -webkit-transform: scale(0);\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n }\n}\n@keyframes spinner-grow {\n 0% {\n -webkit-transform: scale(0);\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n }\n}\n.spinner-grow {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n background-color: currentColor;\n border-radius: 50%;\n opacity: 0;\n -webkit-animation: spinner-grow .75s linear infinite;\n animation: spinner-grow .75s linear infinite;\n}\n.spinner-grow-sm {\n width: 1rem;\n height: 1rem;\n}\n.align-baseline {\n vertical-align: baseline !important;\n}\n.align-top {\n vertical-align: top !important;\n}\n.align-middle {\n vertical-align: middle !important;\n}\n.align-bottom {\n vertical-align: bottom !important;\n}\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n.align-text-top {\n vertical-align: text-top !important;\n}\n.bg-primary {\n background-color: #007bff !important;\n}\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n.bg-secondary {\n background-color: #6c757d !important;\n}\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n.bg-success {\n background-color: #28a745 !important;\n}\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n.bg-info {\n background-color: #17a2b8 !important;\n}\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n.bg-warning {\n background-color: #ffc107 !important;\n}\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n.bg-danger {\n background-color: #dc3545 !important;\n}\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n.bg-light {\n background-color: #f8f9fa !important;\n}\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n.bg-dark {\n background-color: #343a40 !important;\n}\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n.bg-white {\n background-color: #fff !important;\n}\n.bg-transparent {\n background-color: transparent !important;\n}\n.border {\n border: 1px solid #dee2e6 !important;\n}\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n.border-0 {\n border: 0 !important;\n}\n.border-top-0 {\n border-top: 0 !important;\n}\n.border-right-0 {\n border-right: 0 !important;\n}\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n.border-left-0 {\n border-left: 0 !important;\n}\n.border-primary {\n border-color: #007bff !important;\n}\n.border-secondary {\n border-color: #6c757d !important;\n}\n.border-success {\n border-color: #28a745 !important;\n}\n.border-info {\n border-color: #17a2b8 !important;\n}\n.border-warning {\n border-color: #ffc107 !important;\n}\n.border-danger {\n border-color: #dc3545 !important;\n}\n.border-light {\n border-color: #f8f9fa !important;\n}\n.border-dark {\n border-color: #343a40 !important;\n}\n.border-white {\n border-color: #fff !important;\n}\n.rounded-sm {\n border-radius: 0.2rem !important;\n}\n.rounded {\n border-radius: 0.25rem !important;\n}\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n.rounded-lg {\n border-radius: 0.3rem !important;\n}\n.rounded-circle {\n border-radius: 50% !important;\n}\n.rounded-pill {\n border-radius: 50rem !important;\n}\n.rounded-0 {\n border-radius: 0 !important;\n}\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n.d-none {\n display: none !important;\n}\n.d-inline {\n display: inline !important;\n}\n.d-inline-block {\n display: inline-block !important;\n}\n.d-block {\n display: block !important;\n}\n.d-table {\n display: table !important;\n}\n.d-table-row {\n display: table-row !important;\n}\n.d-table-cell {\n display: table-cell !important;\n}\n.d-flex {\n display: -webkit-box !important;\n display: flex !important;\n}\n.d-inline-flex {\n display: -webkit-inline-box !important;\n display: inline-flex !important;\n}\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: -webkit-box !important;\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: -webkit-inline-box !important;\n display: inline-flex !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: -webkit-box !important;\n display: flex !important;\n }\n .d-md-inline-flex {\n display: -webkit-inline-box !important;\n display: inline-flex !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: -webkit-box !important;\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: -webkit-inline-box !important;\n display: inline-flex !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: -webkit-box !important;\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: -webkit-inline-box !important;\n display: inline-flex !important;\n }\n}\n@media print {\n .d-print-none {\n display: none !important;\n }\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: -webkit-box !important;\n display: flex !important;\n }\n .d-print-inline-flex {\n display: -webkit-inline-box !important;\n display: inline-flex !important;\n }\n}\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n.flex-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n flex-direction: row !important;\n}\n.flex-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n flex-direction: column !important;\n}\n.flex-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n flex-direction: row-reverse !important;\n}\n.flex-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n flex-direction: column-reverse !important;\n}\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n.flex-fill {\n -webkit-box-flex: 1 !important;\n flex: 1 1 auto !important;\n}\n.flex-grow-0 {\n -webkit-box-flex: 0 !important;\n flex-grow: 0 !important;\n}\n.flex-grow-1 {\n -webkit-box-flex: 1 !important;\n flex-grow: 1 !important;\n}\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n.justify-content-start {\n -webkit-box-pack: start !important;\n justify-content: flex-start !important;\n}\n.justify-content-end {\n -webkit-box-pack: end !important;\n justify-content: flex-end !important;\n}\n.justify-content-center {\n -webkit-box-pack: center !important;\n justify-content: center !important;\n}\n.justify-content-between {\n -webkit-box-pack: justify !important;\n justify-content: space-between !important;\n}\n.justify-content-around {\n justify-content: space-around !important;\n}\n.align-items-start {\n -webkit-box-align: start !important;\n align-items: flex-start !important;\n}\n.align-items-end {\n -webkit-box-align: end !important;\n align-items: flex-end !important;\n}\n.align-items-center {\n -webkit-box-align: center !important;\n align-items: center !important;\n}\n.align-items-baseline {\n -webkit-box-align: baseline !important;\n align-items: baseline !important;\n}\n.align-items-stretch {\n -webkit-box-align: stretch !important;\n align-items: stretch !important;\n}\n.align-content-start {\n align-content: flex-start !important;\n}\n.align-content-end {\n align-content: flex-end !important;\n}\n.align-content-center {\n align-content: center !important;\n}\n.align-content-between {\n align-content: space-between !important;\n}\n.align-content-around {\n align-content: space-around !important;\n}\n.align-content-stretch {\n align-content: stretch !important;\n}\n.align-self-auto {\n align-self: auto !important;\n}\n.align-self-start {\n align-self: flex-start !important;\n}\n.align-self-end {\n align-self: flex-end !important;\n}\n.align-self-center {\n align-self: center !important;\n}\n.align-self-baseline {\n align-self: baseline !important;\n}\n.align-self-stretch {\n align-self: stretch !important;\n}\n@media (min-width: 576px) {\n .flex-sm-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n flex-direction: row !important;\n }\n .flex-sm-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-sm-fill {\n -webkit-box-flex: 1 !important;\n flex: 1 1 auto !important;\n }\n .flex-sm-grow-0 {\n -webkit-box-flex: 0 !important;\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n -webkit-box-flex: 1 !important;\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-sm-start {\n -webkit-box-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n -webkit-box-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n -webkit-box-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-sm-between {\n -webkit-box-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n -webkit-box-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n -webkit-box-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n -webkit-box-align: center !important;\n align-items: center !important;\n }\n .align-items-sm-baseline {\n -webkit-box-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n -webkit-box-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n@media (min-width: 768px) {\n .flex-md-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n flex-direction: row !important;\n }\n .flex-md-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-md-fill {\n -webkit-box-flex: 1 !important;\n flex: 1 1 auto !important;\n }\n .flex-md-grow-0 {\n -webkit-box-flex: 0 !important;\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n -webkit-box-flex: 1 !important;\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-md-start {\n -webkit-box-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n -webkit-box-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n -webkit-box-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-md-between {\n -webkit-box-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n -webkit-box-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-md-end {\n -webkit-box-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-md-center {\n -webkit-box-align: center !important;\n align-items: center !important;\n }\n .align-items-md-baseline {\n -webkit-box-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n -webkit-box-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n@media (min-width: 992px) {\n .flex-lg-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n flex-direction: row !important;\n }\n .flex-lg-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-lg-fill {\n -webkit-box-flex: 1 !important;\n flex: 1 1 auto !important;\n }\n .flex-lg-grow-0 {\n -webkit-box-flex: 0 !important;\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n -webkit-box-flex: 1 !important;\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-lg-start {\n -webkit-box-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n -webkit-box-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n -webkit-box-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-lg-between {\n -webkit-box-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n -webkit-box-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n -webkit-box-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n -webkit-box-align: center !important;\n align-items: center !important;\n }\n .align-items-lg-baseline {\n -webkit-box-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n -webkit-box-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n@media (min-width: 1200px) {\n .flex-xl-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n flex-direction: row !important;\n }\n .flex-xl-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-xl-fill {\n -webkit-box-flex: 1 !important;\n flex: 1 1 auto !important;\n }\n .flex-xl-grow-0 {\n -webkit-box-flex: 0 !important;\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n -webkit-box-flex: 1 !important;\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-xl-start {\n -webkit-box-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n -webkit-box-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n -webkit-box-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-xl-between {\n -webkit-box-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n -webkit-box-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n -webkit-box-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n -webkit-box-align: center !important;\n align-items: center !important;\n }\n .align-items-xl-baseline {\n -webkit-box-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n -webkit-box-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n.float-left {\n float: left !important;\n}\n.float-right {\n float: right !important;\n}\n.float-none {\n float: none !important;\n}\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n.overflow-auto {\n overflow: auto !important;\n}\n.overflow-hidden {\n overflow: hidden !important;\n}\n.position-static {\n position: static !important;\n}\n.position-relative {\n position: relative !important;\n}\n.position-absolute {\n position: absolute !important;\n}\n.position-fixed {\n position: fixed !important;\n}\n.position-sticky {\n position: -webkit-sticky !important;\n position: sticky !important;\n}\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n@supports ((position: -webkit-sticky) or (position: sticky)) {\n .sticky-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n}\n.shadow-sm {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n.shadow {\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n.shadow-lg {\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n.shadow-none {\n box-shadow: none !important;\n}\n.w-25 {\n width: 25% !important;\n}\n.w-50 {\n width: 50% !important;\n}\n.w-75 {\n width: 75% !important;\n}\n.w-100 {\n width: 100% !important;\n}\n.w-auto {\n width: auto !important;\n}\n.h-25 {\n height: 25% !important;\n}\n.h-50 {\n height: 50% !important;\n}\n.h-75 {\n height: 75% !important;\n}\n.h-100 {\n height: 100% !important;\n}\n.h-auto {\n height: auto !important;\n}\n.mw-100 {\n max-width: 100% !important;\n}\n.mh-100 {\n max-height: 100% !important;\n}\n.min-vw-100 {\n min-width: 100vw !important;\n}\n.min-vh-100 {\n min-height: 100vh !important;\n}\n.vw-100 {\n width: 100vw !important;\n}\n.vh-100 {\n height: 100vh !important;\n}\n.stretched-link::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n pointer-events: auto;\n content: \"\";\n background-color: rgba(0, 0, 0, 0);\n}\n.m-0 {\n margin: 0 !important;\n}\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n.m-1 {\n margin: 0.25rem !important;\n}\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n.m-2 {\n margin: 0.5rem !important;\n}\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n.m-3 {\n margin: 1rem !important;\n}\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n.m-4 {\n margin: 1.5rem !important;\n}\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n.m-5 {\n margin: 3rem !important;\n}\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n.p-0 {\n padding: 0 !important;\n}\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n.p-1 {\n padding: 0.25rem !important;\n}\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n.p-2 {\n padding: 0.5rem !important;\n}\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n.p-3 {\n padding: 1rem !important;\n}\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n.p-4 {\n padding: 1.5rem !important;\n}\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n.p-5 {\n padding: 3rem !important;\n}\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n.m-n1 {\n margin: -0.25rem !important;\n}\n.mt-n1,\n.my-n1 {\n margin-top: -0.25rem !important;\n}\n.mr-n1,\n.mx-n1 {\n margin-right: -0.25rem !important;\n}\n.mb-n1,\n.my-n1 {\n margin-bottom: -0.25rem !important;\n}\n.ml-n1,\n.mx-n1 {\n margin-left: -0.25rem !important;\n}\n.m-n2 {\n margin: -0.5rem !important;\n}\n.mt-n2,\n.my-n2 {\n margin-top: -0.5rem !important;\n}\n.mr-n2,\n.mx-n2 {\n margin-right: -0.5rem !important;\n}\n.mb-n2,\n.my-n2 {\n margin-bottom: -0.5rem !important;\n}\n.ml-n2,\n.mx-n2 {\n margin-left: -0.5rem !important;\n}\n.m-n3 {\n margin: -1rem !important;\n}\n.mt-n3,\n.my-n3 {\n margin-top: -1rem !important;\n}\n.mr-n3,\n.mx-n3 {\n margin-right: -1rem !important;\n}\n.mb-n3,\n.my-n3 {\n margin-bottom: -1rem !important;\n}\n.ml-n3,\n.mx-n3 {\n margin-left: -1rem !important;\n}\n.m-n4 {\n margin: -1.5rem !important;\n}\n.mt-n4,\n.my-n4 {\n margin-top: -1.5rem !important;\n}\n.mr-n4,\n.mx-n4 {\n margin-right: -1.5rem !important;\n}\n.mb-n4,\n.my-n4 {\n margin-bottom: -1.5rem !important;\n}\n.ml-n4,\n.mx-n4 {\n margin-left: -1.5rem !important;\n}\n.m-n5 {\n margin: -3rem !important;\n}\n.mt-n5,\n.my-n5 {\n margin-top: -3rem !important;\n}\n.mr-n5,\n.mx-n5 {\n margin-right: -3rem !important;\n}\n.mb-n5,\n.my-n5 {\n margin-bottom: -3rem !important;\n}\n.ml-n5,\n.mx-n5 {\n margin-left: -3rem !important;\n}\n.m-auto {\n margin: auto !important;\n}\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0,\n .my-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0,\n .mx-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0,\n .my-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0,\n .mx-sm-0 {\n margin-left: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1,\n .my-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1,\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1,\n .my-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1,\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2,\n .my-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2,\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2,\n .my-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2,\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3,\n .my-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3,\n .mx-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3,\n .my-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3,\n .mx-sm-3 {\n margin-left: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4,\n .my-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4,\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4,\n .my-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4,\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5,\n .my-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5,\n .mx-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5,\n .my-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5,\n .mx-sm-5 {\n margin-left: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0,\n .py-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0,\n .px-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0,\n .py-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0,\n .px-sm-0 {\n padding-left: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1,\n .py-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1,\n .px-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1,\n .py-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1,\n .px-sm-1 {\n padding-left: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2,\n .py-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2,\n .px-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2,\n .py-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2,\n .px-sm-2 {\n padding-left: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3,\n .py-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3,\n .px-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3,\n .py-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3,\n .px-sm-3 {\n padding-left: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4,\n .py-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4,\n .px-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4,\n .py-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4,\n .px-sm-4 {\n padding-left: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5,\n .py-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5,\n .px-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5,\n .py-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5,\n .px-sm-5 {\n padding-left: 3rem !important;\n }\n .m-sm-n1 {\n margin: -0.25rem !important;\n }\n .mt-sm-n1,\n .my-sm-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-sm-n1,\n .mx-sm-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-sm-n1,\n .my-sm-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-sm-n1,\n .mx-sm-n1 {\n margin-left: -0.25rem !important;\n }\n .m-sm-n2 {\n margin: -0.5rem !important;\n }\n .mt-sm-n2,\n .my-sm-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-sm-n2,\n .mx-sm-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-sm-n2,\n .my-sm-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-sm-n2,\n .mx-sm-n2 {\n margin-left: -0.5rem !important;\n }\n .m-sm-n3 {\n margin: -1rem !important;\n }\n .mt-sm-n3,\n .my-sm-n3 {\n margin-top: -1rem !important;\n }\n .mr-sm-n3,\n .mx-sm-n3 {\n margin-right: -1rem !important;\n }\n .mb-sm-n3,\n .my-sm-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-sm-n3,\n .mx-sm-n3 {\n margin-left: -1rem !important;\n }\n .m-sm-n4 {\n margin: -1.5rem !important;\n }\n .mt-sm-n4,\n .my-sm-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-sm-n4,\n .mx-sm-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-sm-n4,\n .my-sm-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-sm-n4,\n .mx-sm-n4 {\n margin-left: -1.5rem !important;\n }\n .m-sm-n5 {\n margin: -3rem !important;\n }\n .mt-sm-n5,\n .my-sm-n5 {\n margin-top: -3rem !important;\n }\n .mr-sm-n5,\n .mx-sm-n5 {\n margin-right: -3rem !important;\n }\n .mb-sm-n5,\n .my-sm-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-sm-n5,\n .mx-sm-n5 {\n margin-left: -3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto,\n .my-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto,\n .mx-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto,\n .my-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto,\n .mx-sm-auto {\n margin-left: auto !important;\n }\n}\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0,\n .my-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0,\n .mx-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0,\n .my-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0,\n .mx-md-0 {\n margin-left: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1,\n .my-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1,\n .mx-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1,\n .my-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1,\n .mx-md-1 {\n margin-left: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2,\n .my-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2,\n .mx-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2,\n .my-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2,\n .mx-md-2 {\n margin-left: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3,\n .my-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3,\n .mx-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3,\n .my-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3,\n .mx-md-3 {\n margin-left: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4,\n .my-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4,\n .mx-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4,\n .my-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4,\n .mx-md-4 {\n margin-left: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5,\n .my-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5,\n .mx-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5,\n .my-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5,\n .mx-md-5 {\n margin-left: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0,\n .py-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0,\n .px-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0,\n .py-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0,\n .px-md-0 {\n padding-left: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1,\n .py-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1,\n .px-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1,\n .py-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1,\n .px-md-1 {\n padding-left: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2,\n .py-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2,\n .px-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2,\n .py-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2,\n .px-md-2 {\n padding-left: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3,\n .py-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3,\n .px-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3,\n .py-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3,\n .px-md-3 {\n padding-left: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4,\n .py-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4,\n .px-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4,\n .py-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4,\n .px-md-4 {\n padding-left: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5,\n .py-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5,\n .px-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5,\n .py-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5,\n .px-md-5 {\n padding-left: 3rem !important;\n }\n .m-md-n1 {\n margin: -0.25rem !important;\n }\n .mt-md-n1,\n .my-md-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-md-n1,\n .mx-md-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-md-n1,\n .my-md-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-md-n1,\n .mx-md-n1 {\n margin-left: -0.25rem !important;\n }\n .m-md-n2 {\n margin: -0.5rem !important;\n }\n .mt-md-n2,\n .my-md-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-md-n2,\n .mx-md-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-md-n2,\n .my-md-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-md-n2,\n .mx-md-n2 {\n margin-left: -0.5rem !important;\n }\n .m-md-n3 {\n margin: -1rem !important;\n }\n .mt-md-n3,\n .my-md-n3 {\n margin-top: -1rem !important;\n }\n .mr-md-n3,\n .mx-md-n3 {\n margin-right: -1rem !important;\n }\n .mb-md-n3,\n .my-md-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-md-n3,\n .mx-md-n3 {\n margin-left: -1rem !important;\n }\n .m-md-n4 {\n margin: -1.5rem !important;\n }\n .mt-md-n4,\n .my-md-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-md-n4,\n .mx-md-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-md-n4,\n .my-md-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-md-n4,\n .mx-md-n4 {\n margin-left: -1.5rem !important;\n }\n .m-md-n5 {\n margin: -3rem !important;\n }\n .mt-md-n5,\n .my-md-n5 {\n margin-top: -3rem !important;\n }\n .mr-md-n5,\n .mx-md-n5 {\n margin-right: -3rem !important;\n }\n .mb-md-n5,\n .my-md-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-md-n5,\n .mx-md-n5 {\n margin-left: -3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto,\n .my-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto,\n .mx-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto,\n .my-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto,\n .mx-md-auto {\n margin-left: auto !important;\n }\n}\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0,\n .my-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0,\n .mx-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0,\n .my-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0,\n .mx-lg-0 {\n margin-left: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1,\n .my-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1,\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1,\n .my-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1,\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2,\n .my-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2,\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2,\n .my-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2,\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3,\n .my-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3,\n .mx-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3,\n .my-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3,\n .mx-lg-3 {\n margin-left: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4,\n .my-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4,\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4,\n .my-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4,\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5,\n .my-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5,\n .mx-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5,\n .my-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5,\n .mx-lg-5 {\n margin-left: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0,\n .py-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0,\n .px-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0,\n .py-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0,\n .px-lg-0 {\n padding-left: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1,\n .py-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1,\n .px-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1,\n .py-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1,\n .px-lg-1 {\n padding-left: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2,\n .py-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2,\n .px-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2,\n .py-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2,\n .px-lg-2 {\n padding-left: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3,\n .py-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3,\n .px-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3,\n .py-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3,\n .px-lg-3 {\n padding-left: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4,\n .py-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4,\n .px-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4,\n .py-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4,\n .px-lg-4 {\n padding-left: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5,\n .py-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5,\n .px-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5,\n .py-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5,\n .px-lg-5 {\n padding-left: 3rem !important;\n }\n .m-lg-n1 {\n margin: -0.25rem !important;\n }\n .mt-lg-n1,\n .my-lg-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-lg-n1,\n .mx-lg-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-lg-n1,\n .my-lg-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-lg-n1,\n .mx-lg-n1 {\n margin-left: -0.25rem !important;\n }\n .m-lg-n2 {\n margin: -0.5rem !important;\n }\n .mt-lg-n2,\n .my-lg-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-lg-n2,\n .mx-lg-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-lg-n2,\n .my-lg-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-lg-n2,\n .mx-lg-n2 {\n margin-left: -0.5rem !important;\n }\n .m-lg-n3 {\n margin: -1rem !important;\n }\n .mt-lg-n3,\n .my-lg-n3 {\n margin-top: -1rem !important;\n }\n .mr-lg-n3,\n .mx-lg-n3 {\n margin-right: -1rem !important;\n }\n .mb-lg-n3,\n .my-lg-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-lg-n3,\n .mx-lg-n3 {\n margin-left: -1rem !important;\n }\n .m-lg-n4 {\n margin: -1.5rem !important;\n }\n .mt-lg-n4,\n .my-lg-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-lg-n4,\n .mx-lg-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-lg-n4,\n .my-lg-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-lg-n4,\n .mx-lg-n4 {\n margin-left: -1.5rem !important;\n }\n .m-lg-n5 {\n margin: -3rem !important;\n }\n .mt-lg-n5,\n .my-lg-n5 {\n margin-top: -3rem !important;\n }\n .mr-lg-n5,\n .mx-lg-n5 {\n margin-right: -3rem !important;\n }\n .mb-lg-n5,\n .my-lg-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-lg-n5,\n .mx-lg-n5 {\n margin-left: -3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto,\n .my-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto,\n .mx-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto,\n .my-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto,\n .mx-lg-auto {\n margin-left: auto !important;\n }\n}\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0,\n .my-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0,\n .mx-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0,\n .my-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0,\n .mx-xl-0 {\n margin-left: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1,\n .my-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1,\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1,\n .my-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1,\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2,\n .my-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2,\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2,\n .my-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2,\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3,\n .my-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3,\n .mx-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3,\n .my-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3,\n .mx-xl-3 {\n margin-left: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4,\n .my-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4,\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4,\n .my-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4,\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5,\n .my-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5,\n .mx-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5,\n .my-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5,\n .mx-xl-5 {\n margin-left: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0,\n .py-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0,\n .px-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0,\n .py-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0,\n .px-xl-0 {\n padding-left: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1,\n .py-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1,\n .px-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1,\n .py-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1,\n .px-xl-1 {\n padding-left: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2,\n .py-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2,\n .px-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2,\n .py-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2,\n .px-xl-2 {\n padding-left: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3,\n .py-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3,\n .px-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3,\n .py-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3,\n .px-xl-3 {\n padding-left: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4,\n .py-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4,\n .px-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4,\n .py-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4,\n .px-xl-4 {\n padding-left: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5,\n .py-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5,\n .px-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5,\n .py-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5,\n .px-xl-5 {\n padding-left: 3rem !important;\n }\n .m-xl-n1 {\n margin: -0.25rem !important;\n }\n .mt-xl-n1,\n .my-xl-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-xl-n1,\n .mx-xl-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-xl-n1,\n .my-xl-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-xl-n1,\n .mx-xl-n1 {\n margin-left: -0.25rem !important;\n }\n .m-xl-n2 {\n margin: -0.5rem !important;\n }\n .mt-xl-n2,\n .my-xl-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-xl-n2,\n .mx-xl-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-xl-n2,\n .my-xl-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-xl-n2,\n .mx-xl-n2 {\n margin-left: -0.5rem !important;\n }\n .m-xl-n3 {\n margin: -1rem !important;\n }\n .mt-xl-n3,\n .my-xl-n3 {\n margin-top: -1rem !important;\n }\n .mr-xl-n3,\n .mx-xl-n3 {\n margin-right: -1rem !important;\n }\n .mb-xl-n3,\n .my-xl-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-xl-n3,\n .mx-xl-n3 {\n margin-left: -1rem !important;\n }\n .m-xl-n4 {\n margin: -1.5rem !important;\n }\n .mt-xl-n4,\n .my-xl-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-xl-n4,\n .mx-xl-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-xl-n4,\n .my-xl-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-xl-n4,\n .mx-xl-n4 {\n margin-left: -1.5rem !important;\n }\n .m-xl-n5 {\n margin: -3rem !important;\n }\n .mt-xl-n5,\n .my-xl-n5 {\n margin-top: -3rem !important;\n }\n .mr-xl-n5,\n .mx-xl-n5 {\n margin-right: -3rem !important;\n }\n .mb-xl-n5,\n .my-xl-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-xl-n5,\n .mx-xl-n5 {\n margin-left: -3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto,\n .my-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto,\n .mx-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto,\n .my-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto,\n .mx-xl-auto {\n margin-left: auto !important;\n }\n}\n.text-monospace {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !important;\n}\n.text-justify {\n text-align: justify !important;\n}\n.text-wrap {\n white-space: normal !important;\n}\n.text-nowrap {\n white-space: nowrap !important;\n}\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.text-left {\n text-align: left !important;\n}\n.text-right {\n text-align: right !important;\n}\n.text-center {\n text-align: center !important;\n}\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n.text-lowercase {\n text-transform: lowercase !important;\n}\n.text-uppercase {\n text-transform: uppercase !important;\n}\n.text-capitalize {\n text-transform: capitalize !important;\n}\n.font-weight-light {\n font-weight: 300 !important;\n}\n.font-weight-lighter {\n font-weight: lighter !important;\n}\n.font-weight-normal {\n font-weight: 400 !important;\n}\n.font-weight-bold {\n font-weight: 700 !important;\n}\n.font-weight-bolder {\n font-weight: bolder !important;\n}\n.font-italic {\n font-style: italic !important;\n}\n.text-white {\n color: #fff !important;\n}\n.text-primary {\n color: #007bff !important;\n}\na.text-primary:hover, a.text-primary:focus {\n color: #0056b3 !important;\n}\n.text-secondary {\n color: #6c757d !important;\n}\na.text-secondary:hover, a.text-secondary:focus {\n color: #494f54 !important;\n}\n.text-success {\n color: #28a745 !important;\n}\na.text-success:hover, a.text-success:focus {\n color: #19692c !important;\n}\n.text-info {\n color: #17a2b8 !important;\n}\na.text-info:hover, a.text-info:focus {\n color: #0f6674 !important;\n}\n.text-warning {\n color: #ffc107 !important;\n}\na.text-warning:hover, a.text-warning:focus {\n color: #ba8b00 !important;\n}\n.text-danger {\n color: #dc3545 !important;\n}\na.text-danger:hover, a.text-danger:focus {\n color: #a71d2a !important;\n}\n.text-light {\n color: #f8f9fa !important;\n}\na.text-light:hover, a.text-light:focus {\n color: #cbd3da !important;\n}\n.text-dark {\n color: #343a40 !important;\n}\na.text-dark:hover, a.text-dark:focus {\n color: #121416 !important;\n}\n.text-body {\n color: #212529 !important;\n}\n.text-muted {\n color: #6c757d !important;\n}\n.text-black-50 {\n color: rgba(0, 0, 0, 0.5) !important;\n}\n.text-white-50 {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.text-decoration-none {\n text-decoration: none !important;\n}\n.text-break {\n word-break: break-word !important;\n overflow-wrap: break-word !important;\n}\n.text-reset {\n color: inherit !important;\n}\n.visible {\n visibility: visible !important;\n}\n.invisible {\n visibility: hidden !important;\n}\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a:not(.btn) {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #adb5bd;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n @page {\n size: a3;\n }\n body {\n min-width: 992px !important;\n }\n .container {\n min-width: 992px !important;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #dee2e6 !important;\n }\n .table-dark {\n color: inherit;\n }\n .table-dark th,\n .table-dark td,\n .table-dark thead th,\n .table-dark tbody + tbody {\n border-color: #dee2e6;\n }\n .table .thead-dark th {\n color: inherit;\n border-color: #dee2e6;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9ib290c3RyYXAuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvZGlzdC9jc3MvYm9vdHN0cmFwLmNzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fcm9vdC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19yZWJvb3Quc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fdmFyaWFibGVzLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdmVuZG9yL19yZnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2hvdmVyLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3R5cGUuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2xpc3RzLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2ltYWdlcy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9faW1hZ2Uuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JvcmRlci1yYWRpdXMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fY29kZS5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19ncmlkLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19ncmlkLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19icmVha3BvaW50cy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fZ3JpZC1mcmFtZXdvcmsuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fdGFibGVzLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL190YWJsZS1yb3cuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fZnVuY3Rpb25zLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2Zvcm1zLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL190cmFuc2l0aW9uLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19mb3Jtcy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fZ3JhZGllbnRzLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2J1dHRvbnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2J1dHRvbnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fdHJhbnNpdGlvbnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fZHJvcGRvd24uc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2NhcmV0LnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19uYXYtZGl2aWRlci5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19idXR0b24tZ3JvdXAuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9faW5wdXQtZ3JvdXAuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fY3VzdG9tLWZvcm1zLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX25hdi5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19uYXZiYXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fY2FyZC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19icmVhZGNydW1iLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3BhZ2luYXRpb24uc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3BhZ2luYXRpb24uc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fYmFkZ2Uuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JhZGdlLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2p1bWJvdHJvbi5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19hbGVydC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYWxlcnQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fcHJvZ3Jlc3Muc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fbWVkaWEuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fbGlzdC1ncm91cC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fbGlzdC1ncm91cC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19jbG9zZS5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL190b2FzdHMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fbW9kYWwuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fdG9vbHRpcC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fcmVzZXQtdGV4dC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19wb3BvdmVyLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2Nhcm91c2VsLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19jbGVhcmZpeC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19zcGlubmVycy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fYWxpZ24uc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JhY2tncm91bmQtdmFyaWFudC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fYmFja2dyb3VuZC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fYm9yZGVycy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fZGlzcGxheS5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fZW1iZWQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX2ZsZXguc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX2Zsb2F0LnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdXRpbGl0aWVzL19vdmVyZmxvdy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fcG9zaXRpb24uc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3NjcmVlbnJlYWRlcnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3NjcmVlbi1yZWFkZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3NoYWRvd3Muc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3NpemluZy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fc3RyZXRjaGVkLWxpbmsuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3NwYWNpbmcuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3RleHQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3RleHQtdHJ1bmNhdGUuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3RleHQtZW1waGFzaXMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3RleHQtaGlkZS5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fdmlzaWJpbGl0eS5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19wcmludC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztFQ0tFO0FDSkY7RUFHSSxlQUFjO0VBQWQsaUJBQWM7RUFBZCxpQkFBYztFQUFkLGVBQWM7RUFBZCxjQUFjO0VBQWQsaUJBQWM7RUFBZCxpQkFBYztFQUFkLGdCQUFjO0VBQWQsZUFBYztFQUFkLGVBQWM7RUFBZCxhQUFjO0VBQWQsZUFBYztFQUFkLG9CQUFjO0VBSWQsa0JBQWM7RUFBZCxvQkFBYztFQUFkLGtCQUFjO0VBQWQsZUFBYztFQUFkLGtCQUFjO0VBQWQsaUJBQWM7RUFBZCxnQkFBYztFQUFkLGVBQWM7RUFJZCxrQkFBaUM7RUFBakMsc0JBQWlDO0VBQWpDLHNCQUFpQztFQUFqQyxzQkFBaUM7RUFBakMsdUJBQWlDO0VBS25DLCtNQUF5QjtFQUN6Qiw2R0FBd0I7QURpQjFCO0FFakJBOzs7RUFHRSxzQkFBc0I7QUZvQnhCO0FFakJBO0VBQ0UsdUJBQXVCO0VBQ3ZCLGlCQUFpQjtFQUNqQiw4QkFBOEI7RUFDOUIsNkNDWGE7QUgrQmY7QUVkQTtFQUNFLGNBQWM7QUZpQmhCO0FFUEE7RUFDRSxTQUFTO0VBQ1Qsa01DeU9pTjtFQ3pKN00sZUF0Q1k7RUZ4Q2hCLGdCQ2tQK0I7RURqUC9CLGdCQ3NQK0I7RURyUC9CLGNDbkNnQjtFRG9DaEIsZ0JBQWdCO0VBQ2hCLHNCQzlDYTtBSHdEZjtBQUVBO0VF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QWE7RUFDYiwwQkFBMEI7QUZ6SDVCO0FFZ0lBO0VBQ0UscUJBQXFCO0FGN0h2QjtBRWdJQTtFQUNFLGtCQUFrQjtFQUNsQixlQUFlO0FGN0hqQjtBRWdJQTtFQUNFLGFBQWE7QUY3SGY7QUFFQTtFRWlJRSx3QkFBd0I7QUYvSDFCO0FNM1ZBOztFQUVFLHFCSHlTdUM7RUd2U3ZDLGdCSHlTK0I7RUd4Uy9CLGdCSHlTK0I7QUhvRGpDO0FNelZBO0VGZ0hNLGlCQXRDWTtBSm1SbEI7QU01VkE7RUYrR00sZUF0Q1k7QUp1UmxCO0FNL1ZBO0VGOEdNLGtCQXRDWTtBSjJSbEI7QU1sV0E7RUY2R00saUJBdENZO0FKK1JsQjtBTXJXQTtFRjRHTSxrQkF0Q1k7QUptU2xCO0FNeFdBO0VGMkdNLGVBdENZO0FKdVNsQjtBTTFXQTtFRnlHTSxrQkF0Q1k7RUVqRWhCLGdCSDJTK0I7QUhrRWpDO0FNeldBO0VGbUdNLGVBdENZO0VFM0RoQixnQkg4UitCO0VHN1IvQixnQkhxUitCO0FIdUZqQztBTTFXQTtFRjhGTSxpQkF0Q1k7RUV0RGhCLGdCSDBSK0I7RUd6Ui9CLGdCSGdSK0I7QUg2RmpDO0FNM1dBO0VGeUZNLGlCQXRDWTtFRWpEaEIsZ0JIc1IrQjtFR3JSL0IsZ0JIMlErQjtBSG1HakM7QU01V0E7RUZvRk0saUJBdENZO0VFNUNoQixnQkhrUitCO0VHalIvQixnQkhzUStCO0FIeUdqQztBRWxWQTtFSXBCRSxnQkhpRlc7RUdoRlgsbUJIZ0ZXO0VHL0VYLFNBQVM7RUFDVCx3Q0h6Q2E7QUhtWmY7QU1sV0E7O0VGTUksY0FBVztFRUhiLGdCSDhOK0I7QUh1SWpDO0FNbFdBOztFQUVFLGNIc1FnQztFR3JRaEMseUJIOFFtQztBSHVGckM7QU03VkE7RUMvRUUsZUFBZTtFQUNmLGdCQUFnQjtBUGdibEI7QU03VkE7RUNwRkUsZUFBZTtFQUNmLGdCQUFnQjtBUHFibEI7QU0vVkE7RUFDRSxxQkFBcUI7QU5rV3ZCO0FNbldBO0VBSUksb0JId1ArQjtBSDJHbkM7QU16VkE7RUZqQ0ksY0FBVztFRW1DYix5QkFBeUI7QU40VjNCO0FNeFZBO0VBQ0UsbUJId0JXO0VDVFAsa0JBdENZO0FKbVhsQjtBTXhWQTtFQUNFLGNBQWM7RUY3Q1osY0FBVztFRStDYixjSDFHZ0I7QUhxY2xCO0FNOVZBO0VBTUkscUJBQXFCO0FONFZ6QjtBUS9jQTtFQ0lFLGVBQWU7RUFHZixZQUFZO0FUNmNkO0FROWNBO0VBQ0UsZ0JMaWdDd0M7RUtoZ0N4QyxzQkxSYTtFS1NiLHlCTE5nQjtFT0xkLHNCUDZPZ0M7RU12T2xDLGVBQWU7RUFHZixZQUFZO0FUc2RkO0FReGNBO0VBRUUscUJBQXFCO0FSMGN2QjtBUXZjQTtFQUNFLHFCQUEwQjtFQUMxQixjQUFjO0FSMGNoQjtBUXZjQTtFSmtDSSxjQUFXO0VJaENiLGNMM0JnQjtBSHFlbEI7QVdqZkE7RVB1RUksZ0JBQVc7RU9yRWIsY1JvQ2U7RVFuQ2YscUJBQXFCO0FYb2Z2QjtBV2pmRTtFQUNFLGNBQWM7QVhvZmxCO0FXL2VBO0VBQ0Usc0JScWxDdUM7RUMzaENyQyxnQkFBVztFT3hEYixXUlRhO0VRVWIseUJSRGdCO0VPWGQscUJQK08rQjtBSGdSbkM7QVd2ZkE7RUFTSSxVQUFVO0VQa0RWLGVBQVc7RU9oRFgsZ0JSNFE2QjtBSHNPakM7QUUxU0E7RVNqTUUsY0FBYztFUHlDWixnQkFBVztFT3ZDYixjUmpCZ0I7QUhnZ0JsQjtBV2xmQTtFUDBDSSxrQkFBVztFT2xDWCxjQUFjO0VBQ2Qsa0JBQWtCO0FYK2V0QjtBVzFlQTtFQUNFLGlCUjRqQ3VDO0VRM2pDdkMsa0JBQWtCO0FYNmVwQjtBWXJoQkU7RUNEQSxXQUFXO0VBQ1gsbUJBQTBCO0VBQzFCLGtCQUF5QjtFQUN6QixrQkFBa0I7RUFDbEIsaUJBQWlCO0FiMGhCbkI7QWN2ZUk7RUZ0REY7SUNXSSxnQlZxTUs7RUhrVlQ7QUFDRjtBYzdlSTtFRnRERjtJQ1dJLGdCVnNNSztFSHVWVDtBQUNGO0FjbmZJO0VGdERGO0lDV0ksZ0JWdU1LO0VINFZUO0FBQ0Y7QWN6Zkk7RUZ0REY7SUNXSSxpQlZ3TU07RUhpV1Y7QUFDRjtBWS9pQkU7RUNQQSxXQUFX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Q1E7SUZSUix1QkFBOEM7RWJrNUM5QztFZTE0Q1E7SUZSUix1QkFBOEM7RWJxNUM5QztFZTc0Q1E7SUZSUixnQkFBOEM7RWJ3NUM5QztFZWg1Q1E7SUZSUix1QkFBOEM7RWIyNUM5QztFZW41Q1E7SUZSUix1QkFBOEM7RWI4NUM5QztFZXQ1Q1E7SUZSUixnQkFBOEM7RWJpNkM5QztFZXo1Q1E7SUZSUix1QkFBOEM7RWJvNkM5QztFZTU1Q1E7SUZSUix1QkFBOEM7RWJ1NkM5QztBQUNGO0FnQjM5Q0E7RUFDRSxXQUFXO0VBQ1gsbUJia0lXO0VhaklYLGNiU2dCO0FIcTlDbEI7QWdCaitDQTs7RUFRSSxnQmJzVmdDO0VhclZoQyxtQkFBbUI7RUFDbkIsNkJiSmM7QUhrK0NsQjtBZ0J4K0NBO0VBY0ksc0JBQXNCO0VBQ3RCLGdDYlRjO0FIdStDbEI7QWdCNytDQTtFQW1CSSw2QmJiYztBSDIrQ2xCO0FnQnI5Q0E7O0VBR0ksZWJnVStCO0FIdXBDbkM7QWdCOThDQTtFQUNFLHlCYm5DZ0I7QUhvL0NsQjtBZ0JsOUNBOztFQUtJLHlCYnZDYztBSHkvQ2xCO0FnQnY5Q0E7O0VBV00sd0JBQTRDO0FoQmk5Q2xEO0FnQjU4Q0E7Ozs7RUFLSSxTQUFTO0FoQjg4Q2I7QWdCdDhDQTtFQUVJLHFDYjFEVztBSGtnRGY7QUt2Z0RFO0VXMkVJLGNidkVZO0Vhd0VaLHNDYnZFUztBSHVnRGY7QWlCbmhERTs7O0VBSUkseUJDc0Y0RDtBbEIrN0NsRTtBaUJ6aERFOzs7O0VBWU0scUJDOEUwRDtBbEJzOENsRTtBS3poREU7RVlpQk0seUJBSnNDO0FqQmdoRDlDO0FpQmpoREU7O0VBU1EseUJBUm9DO0FqQnFoRDlDO0FpQnppREU7OztFQUlJLHlCQ3NGNEQ7QWxCcTlDbEU7QWlCL2lERTs7OztFQVlNLHFCQzhFMEQ7QWxCNDlDbEU7QUsvaURFO0VZaUJNLHlCQUpzQztBakJzaUQ5QztBaUJ2aURFOztFQVNRLHlCQVJvQztBakIyaUQ5QztBaUIvakRFOzs7RUFJSSx5QkNzRjREO0FsQjIrQ2xFO0FpQnJrREU7Ozs7RUFZTSxxQkM4RTBEO0FsQmsvQ2xFO0FLcmtERTtFWWlCTSx5QkFKc0M7QWpCNGpEOUM7QWlCN2pERTs7RUFTUSx5QkFSb0M7QWpCaWtEOUM7QWlCcmxERTs7O0VBSUkseUJDc0Y0RDtBbEJpZ0RsRTtBaUIzbERFOzs7O0VBWU0scUJDOEUwRDtBbEJ3Z0RsRTtBSzNsREU7RVlpQk0seUJBSnNDO0FqQmtsRDlDO0FpQm5sREU7O0VBU1EseUJBUm9DO0FqQnVsRDlDO0FpQjNtREU7OztFQUlJLHlCQ3NGNEQ7QWxCdWhEbEU7QWlCam5ERTs7OztFQVlNLHFCQzhFMEQ7QWxCOGhEbEU7QUtqbkRFO0VZaUJNLHlCQUpzQztBakJ3bUQ5QztBaUJ6bURFOztFQVNRLHlCQVJvQztBakI2bUQ5QztBaUJqb0RFOzs7RUFJSSx5QkNzRjREO0FsQjZpRGxFO0FpQnZvREU7Ozs7RUFZTSxxQkM4RTBEO0FsQm9qRGxFO0FLdm9ERTtFWWlCTSx5QkFKc0M7QWpCOG5EOUM7QWlCL25ERTs7RUFTUSx5QkFSb0M7QWpCbW9EOUM7QWlCdnBERTs7O0VBSUkseUJDc0Y0RDtBbEJta0RsRTtBaUI3cERFOzs7O0VBWU0scUJDOEUwRDtBbEIwa0RsRTtBSzdwREU7RVlpQk0seUJBSnNDO0FqQm9wRDlDO0FpQnJwREU7O0VBU1EseUJBUm9DO0FqQnlwRDlDO0FpQjdxREU7OztFQUlJLHlCQ3NGNEQ7QWxCeWxEbEU7QWlCbnJERTs7OztFQVlNLHFCQzhFMEQ7QWxCZ21EbEU7QUtuckRFO0VZaUJNLHlCQUpzQztBakIwcUQ5QztBaUIzcURFOztFQVNRLHlCQVJvQztBakIrcUQ5QztBaUJuc0RFOzs7RUFJSSxzQ2RRUztBSDZyRGY7QUtsc0RFO0VZaUJNLHNDQUpzQztBakJ5ckQ5QztBaUIxckRFOztFQVNRLHNDQVJvQztBakI4ckQ5QztBZ0J4bURBO0VBR00sV2IzR1M7RWE0R1QseUJicEdZO0VhcUdaLHFCYm1RcUQ7QUhzMkMzRDtBZ0I5bURBO0VBV00sY2I1R1k7RWE2R1oseUJibEhZO0VhbUhaLHFCYmxIWTtBSHl0RGxCO0FnQmxtREE7RUFDRSxXYjNIYTtFYTRIYix5QmJwSGdCO0FIeXREbEI7QWdCdm1EQTs7O0VBT0kscUJiK091RDtBSHUzQzNEO0FnQjdtREE7RUFXSSxTQUFTO0FoQnNtRGI7QWdCam5EQTtFQWdCTSwyQ2IxSVM7QUgrdURmO0FLMXVERTtFVzRJTSxXYmpKTztFYWtKUCw0Q2JsSk87QUhvdkRmO0FjbHJESTtFRWlHQTtJQUVJLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGlDQUFpQztFaEJvbER2QztFZ0J6bERHO0lBU0ssU0FBUztFaEJtbERqQjtBQUNGO0FjOXJESTtFRWlHQTtJQUVJLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGlDQUFpQztFaEJnbUR2QztFZ0JybURHO0lBU0ssU0FBUztFaEIrbERqQjtBQUNGO0FjMXNESTtFRWlHQTtJQUVJLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGlDQUFpQztFaEI0bUR2QztFZ0JqbkRHO0lBU0ssU0FBUztFaEIybURqQjtBQUNGO0FjdHRESTtFRWlHQTtJQUVJLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGlDQUFpQztFaEJ3bkR2QztFZ0I3bkRHO0lBU0ssU0FBUztFaEJ1bkRqQjtBQUNGO0FnQnRvREE7RUFPUSxjQUFjO0VBQ2QsV0FBVztFQUNYLGdCQUFnQjtFQUNoQixpQ0FBaUM7QWhCbW9EekM7QWdCN29EQTtFQWNVLFNBQVM7QWhCbW9EbkI7QW1CaHpEQTtFQUNFLGNBQWM7RUFDZCxXQUFXO0VBQ1gsbUNEdUc4RDtFQ3RHOUQseUJoQjRYa0M7RUN2UTlCLGVBdENZO0VlNUVoQixnQmhCc1IrQjtFZ0JyUi9CLGdCaEIwUitCO0VnQnpSL0IsY2hCRGdCO0VnQkVoQixzQmhCVGE7RWdCVWIsNEJBQTRCO0VBQzVCLHlCaEJQZ0I7RU9OZCxzQlA2T2dDO0VpQjVPOUIsZ0ZqQm9mNEY7RWlCcGY1Rix3RWpCb2Y0RjtBSDQwQ2xHO0FvQjN6REk7RURMSjtJQ01NLHdCQUFnQjtJQUFoQixnQkFBZ0I7RXBCK3pEcEI7QUFDRjtBbUJ0MERBO0VBc0JJLDZCQUE2QjtFQUM3QixTQUFTO0FuQm96RGI7QW1CMzBEQTtFQTRCSSxrQkFBa0I7RUFDbEIsMEJoQnJCYztBSHcwRGxCO0FxQnowREU7RUFDRSxjbEJBYztFa0JDZCxzQmxCUlc7RWtCU1gscUJsQndkc0U7RWtCdmR0RSxVQUFVO0VBS1IsZ0RsQmNXO0FIMHpEakI7QW1CeDFEQTtFQXFDSSxjaEI5QmM7RWdCZ0NkLFVBQVU7QW5Cc3pEZDtBbUI3MURBO0VBcUNJLGNoQjlCYztFZ0JnQ2QsVUFBVTtBbkJzekRkO0FtQjcxREE7RUFxQ0ksY2hCOUJjO0VnQmdDZCxVQUFVO0FuQnN6RGQ7QW1CNzFEQTtFQXFDSSxjaEI5QmM7RWdCZ0NkLFVBQVU7QW5Cc3pEZDtBbUI3MURBO0VBaURJLHlCaEI5Q2M7RWdCZ0RkLFVBQVU7QW5CK3lEZDtBbUIzeURBO0VBT0ksY2hCdERjO0VnQnVEZCxzQmhCOURXO0FIczJEZjtBbUJueURBOztFQUVFLGNBQWM7RUFDZCxXQUFXO0FuQnN5RGI7QW1CNXhEQTtFQUNFLGlDRHdCOEQ7RUN2QjlELG9DRHVCOEQ7RUN0QjlELGdCQUFnQjtFZmxCZCxrQkFBVztFZW9CYixnQmhCNE0rQjtBSG1sRGpDO0FtQjV4REE7RUFDRSwrQkRnQjhEO0VDZjlELGtDRGU4RDtFZGUxRCxrQkF0Q1k7RWVVaEIsZ0JoQnlJK0I7QUhzcERqQztBbUI1eERBO0VBQ0UsZ0NEUzhEO0VDUjlELG1DRFE4RDtFZGUxRCxtQkF0Q1k7RWVpQmhCLGdCaEJtSStCO0FINHBEakM7QW1CdHhEQTtFQUNFLGNBQWM7RUFDZCxXQUFXO0VBQ1gsbUJBQTJCO0VBQzNCLGdCQUFnQjtFZlFaLGVBdENZO0VlZ0NoQixnQmhCK0srQjtFZ0I5Sy9CLGNoQjFHZ0I7RWdCMkdoQiw2QkFBNkI7RUFDN0IseUJBQXlCO0VBQ3pCLG1CQUFtQztBbkJ5eERyQztBbUJueURBO0VBY0ksZ0JBQWdCO0VBQ2hCLGVBQWU7QW5CeXhEbkI7QW1CN3dEQTtFQUNFLGtDRC9COEQ7RUNnQzlELHVCaEJnUWlDO0VDalI3QixtQkF0Q1k7RWV5RGhCLGdCaEIyRitCO0VPeE83QixxQlArTytCO0FIK3FEbkM7QW1CN3dEQTtFQUNFLGdDRHZDOEQ7RUN3QzlELG9CaEI2UGdDO0VDdFI1QixrQkF0Q1k7RWVpRWhCLGdCaEJrRitCO0VPdk83QixxQlA4TytCO0FId3JEbkM7QW1CNXdEQTtFQUdJLFlBQVk7QW5CNndEaEI7QW1CendEQTtFQUNFLFlBQVk7QW5CNHdEZDtBbUJwd0RBO0VBQ0UsbUJoQnNWMEM7QUhpN0M1QztBbUJwd0RBO0VBQ0UsY0FBYztFQUNkLG1CaEJ1VTRDO0FIZzhDOUM7QW1CL3ZEQTtFQUNFLG9CQUFhO0VBQWIsYUFBYTtFQUNiLGVBQWU7RUFDZixrQkFBMEM7RUFDMUMsaUJBQXlDO0FuQmt3RDNDO0FtQnR3REE7O0VBUUksa0JBQTBDO0VBQzFDLGlCQUF5QztBbkJtd0Q3QztBbUIxdkRBO0VBQ0Usa0JBQWtCO0VBQ2xCLGNBQWM7RUFDZCxxQmhCNFM2QztBSGk5Qy9DO0FtQjF2REE7RUFDRSxrQkFBa0I7RUFDbEIsa0JoQndTMkM7RWdCdlMzQyxxQmhCc1M2QztBSHU5Qy9DO0FtQmh3REE7O0VBUUksY2hCaE5jO0FINjhEbEI7QW1CenZEQTtFQUNFLGdCQUFnQjtBbkI0dkRsQjtBbUJ6dkRBO0VBQ0UsMkJBQW9CO0VBQXBCLG9CQUFvQjtFQUNwQix5QkFBbUI7VUFBbkIsbUJBQW1CO0VBQ25CLGVBQWU7RUFDZixxQmhCeVI0QztBSG0rQzlDO0FtQmh3REE7RUFRSSxnQkFBZ0I7RUFDaEIsYUFBYTtFQUNiLHVCaEJvUjRDO0VnQm5SNUMsY0FBYztBbkI0dkRsQjtBcUJoOERFO0VBQ0UsYUFBYTtFQUNiLFdBQVc7RUFDWCxtQmxCNmMwQztFQ3BiMUMsY0FBVztFaUJ2QlgsY2xCTmE7QUh5OERqQjtBcUJoOERFO0VBQ0Usa0JBQWtCO0VBQ2xCLFNBQVM7RUFDVCxVQUFVO0VBQ1YsYUFBYTtFQUNiLGVBQWU7RUFDZix1QmxCbXlCcUM7RWtCbHlCckMsaUJBQWlCO0VqQm9FZixtQkF0Q1k7RWlCNUJkLGdCbEIyTzZCO0VrQjFPN0IsV2xCdkRXO0VrQndEWCx3Q2xCcEJhO0VPdENiLHNCUDZPZ0M7QUhpeERwQztBcUJuK0RJOzs7O0VBc0NFLGNBQWM7QXJCbzhEcEI7QXFCMStESTtFQTRDRSxxQmxCakNXO0VrQm9DVCxvQ0hpQ3dEO0VHaEN4RCxpUkhwQ21JO0VHcUNuSSw0QkFBNEI7RUFDNUIsMkRBQTZEO0VBQzdELGdFSDZCd0Q7QWxCbTZEaEU7QXFCbi9ESTtFQXVESSxxQmxCNUNTO0VrQjZDVCxnRGxCN0NTO0FINitEakI7QXFCeC9ESTtFQWlFSSxvQ0hld0Q7RUdkeEQsa0ZIY3dEO0FsQjY2RGhFO0FxQjcvREk7RUF5RUUscUJsQjlEVztFa0JpRVQsdUNISXdEO0VHSHhELHVqQkFBOEo7QXJCczdEdEs7QXFCbmdFSTtFQWlGSSxxQmxCdEVTO0VrQnVFVCxnRGxCdkVTO0FINi9EakI7QXFCeGdFSTtFQTBGSSxjbEIvRVM7QUhpZ0VqQjtBcUI1Z0VJOzs7RUErRkksY0FBYztBckJtN0R0QjtBcUJsaEVJO0VBdUdJLGNsQjVGUztBSDJnRWpCO0FxQnRoRUk7RUEwR00scUJsQi9GTztBSCtnRWpCO0FxQjFoRUk7RUFnSE0scUJBQWtDO0VDMUl4Qyx5QkQySStDO0FyQjg2RG5EO0FxQi9oRUk7RUF1SE0sZ0RsQjVHTztBSHdoRWpCO0FxQm5pRUk7RUEySE0scUJsQmhITztBSDRoRWpCO0FxQnZpRUk7RUFxSUkscUJsQjFIUztBSGdpRWpCO0FxQjNpRUk7RUEwSU0scUJsQi9ITztFa0JnSVAsZ0RsQmhJTztBSHFpRWpCO0FxQnBpRUU7RUFDRSxhQUFhO0VBQ2IsV0FBVztFQUNYLG1CbEI2YzBDO0VDcGIxQyxjQUFXO0VpQnZCWCxjbEJUYTtBSGdqRWpCO0FxQnBpRUU7RUFDRSxrQkFBa0I7RUFDbEIsU0FBUztFQUNULFVBQVU7RUFDVixhQUFhO0VBQ2IsZUFBZTtFQUNmLHVCbEJteUJxQztFa0JseUJyQyxpQkFBaUI7RWpCb0VmLG1CQXRDWTtFaUI1QmQsZ0JsQjJPNkI7RWtCMU83QixXbEJ2RFc7RWtCd0RYLHdDbEJ2QmE7RU9uQ2Isc0JQNk9nQztBSHEzRHBDO0FxQnZrRUk7Ozs7RUFzQ0UsY0FBYztBckJ3aUVwQjtBcUI5a0VJO0VBNENFLHFCbEJwQ1c7RWtCdUNULG9DSGlDd0Q7RUdoQ3hELDRVSHBDbUk7RUdxQ25JLDRCQUE0QjtFQUM1QiwyREFBNkQ7RUFDN0QsZ0VINkJ3RDtBbEJ1Z0VoRTtBcUJ2bEVJO0VBdURJLHFCbEIvQ1M7RWtCZ0RULGdEbEJoRFM7QUhvbEVqQjtBcUI1bEVJO0VBaUVJLG9DSGV3RDtFR2R4RCxrRkhjd0Q7QWxCaWhFaEU7QXFCam1FSTtFQXlFRSxxQmxCakVXO0VrQm9FVCx1Q0hJd0Q7RUdIeEQsa25CQUE4SjtBckIwaEV0SztBcUJ2bUVJO0VBaUZJLHFCbEJ6RVM7RWtCMEVULGdEbEIxRVM7QUhvbUVqQjtBcUI1bUVJO0VBMEZJLGNsQmxGUztBSHdtRWpCO0FxQmhuRUk7OztFQStGSSxjQUFjO0FyQnVoRXRCO0FxQnRuRUk7RUF1R0ksY2xCL0ZTO0FIa25FakI7QXFCMW5FSTtFQTBHTSxxQmxCbEdPO0FIc25FakI7QXFCOW5FSTtFQWdITSxxQkFBa0M7RUMxSXhDLHlCRDJJK0M7QXJCa2hFbkQ7QXFCbm9FSTtFQXVITSxnRGxCL0dPO0FIK25FakI7QXFCdm9FSTtFQTJITSxxQmxCbkhPO0FIbW9FakI7QXFCM29FSTtFQXFJSSxxQmxCN0hTO0FIdW9FakI7QXFCL29FSTtFQTBJTSxxQmxCbElPO0VrQm1JUCxnRGxCbklPO0FING9FakI7QW1CMzZEQTtFQUNFLG9CQUFhO0VBQWIsYUFBYTtFQUNiLDhCQUFtQjtFQUFuQiw2QkFBbUI7VUFBbkIsbUJBQW1CO0VBQ25CLHlCQUFtQjtVQUFuQixtQkFBbUI7QW5CODZEckI7QW1CajdEQTtFQVNJLFdBQVc7QW5CNDZEZjtBY2xvRUk7RUs2TUo7SUFlTSxvQkFBYTtJQUFiLGFBQWE7SUFDYix5QkFBbUI7WUFBbkIsbUJBQW1CO0lBQ25CLHdCQUF1QjtZQUF2Qix1QkFBdUI7SUFDdkIsZ0JBQWdCO0VuQjI2RHBCO0VtQjc3REY7SUF1Qk0sb0JBQWE7SUFBYixhQUFhO0lBQ2IsbUJBQWM7WUFBZCxjQUFjO0lBQ2QsOEJBQW1CO0lBQW5CLDZCQUFtQjtZQUFuQixtQkFBbUI7SUFDbkIseUJBQW1CO1lBQW5CLG1CQUFtQjtJQUNuQixnQkFBZ0I7RW5CeTZEcEI7RW1CcDhERjtJQWdDTSxxQkFBcUI7SUFDckIsV0FBVztJQUNYLHNCQUFzQjtFbkJ1NkQxQjtFbUJ6OERGO0lBdUNNLHFCQUFxQjtFbkJxNkR6QjtFbUI1OERGOztJQTRDTSxXQUFXO0VuQm82RGY7RW1CaDlERjtJQWtETSxvQkFBYTtJQUFiLGFBQWE7SUFDYix5QkFBbUI7WUFBbkIsbUJBQW1CO0lBQ25CLHdCQUF1QjtZQUF2Qix1QkFBdUI7SUFDdkIsV0FBVztJQUNYLGVBQWU7RW5CaTZEbkI7RW1CdjlERjtJQXlETSxrQkFBa0I7SUFDbEIsY0FBYztJQUNkLGFBQWE7SUFDYixxQmhCMkx3QztJZ0IxTHhDLGNBQWM7RW5CaTZEbEI7RW1COTlERjtJQWlFTSx5QkFBbUI7WUFBbkIsbUJBQW1CO0lBQ25CLHdCQUF1QjtZQUF2Qix1QkFBdUI7RW5CZzZEM0I7RW1CbCtERjtJQXFFTSxnQkFBZ0I7RW5CZzZEcEI7QUFDRjtBdUJ6dUVBO0VBQ0UscUJBQXFCO0VBRXJCLGdCcEIwUitCO0VvQnpSL0IsY3BCTWdCO0VvQkxoQixrQkFBa0I7RUFFbEIsc0JBQXNCO0VBQ3RCLGVBQXNEO0VBQ3RELHlCQUFpQjtFQUFqQixzQkFBaUI7RUFBakIscUJBQWlCO0VBQWpCLGlCQUFpQjtFQUNqQiw2QkFBNkI7RUFDN0IsNkJBQTJDO0VDdUYzQyx5QnJCOFJrQztFQ3ZROUIsZUF0Q1k7RW9CaUJoQixnQnJCOEwrQjtFT25TN0Isc0JQNk9nQztFaUI1TzlCLDZJakI2YjZJO0VpQjdiN0kscUlqQjZiNkk7QUg2ekRuSjtBb0JydkVJO0VHTEo7SUhNTSx3QkFBZ0I7SUFBaEIsZ0JBQWdCO0VwQnl2RXBCO0FBQ0Y7QUsxdkVFO0VrQlVFLGNwQk5jO0VvQk9kLHFCQUFxQjtBdkJvdkV6QjtBdUJyd0VBO0VBc0JJLFVBQVU7RUFDVixnRHBCT2E7QUg0dUVqQjtBdUIxd0VBO0VBNkJJLGFwQm9aNkI7QUg2MURqQztBdUJsdUVBOztFQUVFLG9CQUFvQjtBdkJxdUV0QjtBdUI1dEVFO0VDdkRBLFdyQkNhO0VtQkRYLHlCbkI4QmE7RXFCNUJmLHFCckI0QmU7QUgydkVqQjtBS254RUU7RW1CQUUsV3JCTFc7RW1CRFgseUJFRG9GO0VBU3BGLHFCQVR5SDtBeEJneUU3SDtBd0JweEVFO0VBRUUsV3JCWlc7RW1CRFgseUJFRG9GO0VBZ0JwRixxQkFoQnlIO0VBcUJ2SCxnREFBaUY7QXhCa3hFdkY7QXdCN3dFRTtFQUVFLFdyQjFCVztFcUIyQlgseUJyQkVhO0VxQkRiLHFCckJDYTtBSDh3RWpCO0F3Qnh3RUU7O0VBR0UsV3JCdENXO0VxQnVDWCx5QkF6Q3VLO0VBNkN2SyxxQkE3QytNO0F4Qm96RW5OO0F3QnJ3RUk7O0VBS0ksZ0RBQWlGO0F4QnF3RXpGO0F1Qmp3RUU7RUN2REEsV3JCQ2E7RW1CRFgseUJuQk9jO0VxQkxoQixxQnJCS2dCO0FIdXpFbEI7QUt4ekVFO0VtQkFFLFdyQkxXO0VtQkRYLHlCRURvRjtFQVNwRixxQkFUeUg7QXhCcTBFN0g7QXdCenpFRTtFQUVFLFdyQlpXO0VtQkRYLHlCRURvRjtFQWdCcEYscUJBaEJ5SDtFQXFCdkgsaURBQWlGO0F4QnV6RXZGO0F3Qmx6RUU7RUFFRSxXckIxQlc7RXFCMkJYLHlCckJyQmM7RXFCc0JkLHFCckJ0QmM7QUgwMEVsQjtBd0I3eUVFOztFQUdFLFdyQnRDVztFcUJ1Q1gseUJBekN1SztFQTZDdksscUJBN0MrTTtBeEJ5MUVuTjtBd0IxeUVJOztFQUtJLGlEQUFpRjtBeEIweUV6RjtBdUJ0eUVFO0VDdkRBLFdyQkNhO0VtQkRYLHlCbkJxQ2E7RXFCbkNmLHFCckJtQ2U7QUg4ekVqQjtBSzcxRUU7RW1CQUUsV3JCTFc7RW1CRFgseUJFRG9GO0VBU3BGLHFCQVR5SDtBeEIwMkU3SDtBd0I5MUVFO0VBRUUsV3JCWlc7RW1CRFgseUJFRG9GO0VBZ0JwRixxQkFoQnlIO0VBcUJ2SCwrQ0FBaUY7QXhCNDFFdkY7QXdCdjFFRTtFQUVFLFdyQjFCVztFcUIyQlgseUJyQlNhO0VxQlJiLHFCckJRYTtBSGkxRWpCO0F3QmwxRUU7O0VBR0UsV3JCdENXO0VxQnVDWCx5QkF6Q3VLO0VBNkN2SyxxQkE3QytNO0F4QjgzRW5OO0F3Qi8wRUk7O0VBS0ksK0NBQWlGO0F4QiswRXpGO0F1QjMwRUU7RUN2REEsV3JCQ2E7RW1CRFgseUJuQnVDYTtFcUJyQ2YscUJyQnFDZTtBSGkyRWpCO0FLbDRFRTtFbUJBRSxXckJMVztFbUJEWCx5QkVEb0Y7RUFTcEYscUJBVHlIO0F4Qis0RTdIO0F3Qm40RUU7RUFFRSxXckJaVztFbUJEWCx5QkVEb0Y7RUFnQnBGLHFCQWhCeUg7RUFxQnZILGdEQUFpRjtBeEJpNEV2RjtBd0I1M0VFO0VBRUUsV3JCMUJXO0VxQjJCWCx5QnJCV2E7RXFCVmIscUJyQlVhO0FIbzNFakI7QXdCdjNFRTs7RUFHRSxXckJ0Q1c7RXFCdUNYLHlCQXpDdUs7RUE2Q3ZLLHFCQTdDK007QXhCbTZFbk47QXdCcDNFSTs7RUFLSSxnREFBaUY7QXhCbzNFekY7QXVCaDNFRTtFQ3ZEQSxjckJVZ0I7RW1CVmQseUJuQm9DYTtFcUJsQ2YscUJyQmtDZTtBSHk0RWpCO0FLdjZFRTtFbUJBRSxjckJJYztFbUJWZCx5QkVEb0Y7RUFTcEYscUJBVHlIO0F4Qm83RTdIO0F3Qng2RUU7RUFFRSxjckJIYztFbUJWZCx5QkVEb0Y7RUFnQnBGLHFCQWhCeUg7RUFxQnZILGdEQUFpRjtBeEJzNkV2RjtBd0JqNkVFO0VBRUUsY3JCakJjO0VxQmtCZCx5QnJCUWE7RXFCUGIscUJyQk9hO0FINDVFakI7QXdCNTVFRTs7RUFHRSxjckI3QmM7RXFCOEJkLHlCQXpDdUs7RUE2Q3ZLLHFCQTdDK007QXhCdzhFbk47QXdCejVFSTs7RUFLSSxnREFBaUY7QXhCeTVFekY7QXVCcjVFRTtFQ3ZEQSxXckJDYTtFbUJEWCx5Qm5Ca0NhO0VxQmhDZixxQnJCZ0NlO0FIZzdFakI7QUs1OEVFO0VtQkFFLFdyQkxXO0VtQkRYLHlCRURvRjtFQVNwRixxQkFUeUg7QXhCeTlFN0g7QXdCNzhFRTtFQUVFLFdyQlpXO0VtQkRYLHlCRURvRjtFQWdCcEYscUJBaEJ5SDtFQXFCdkgsK0NBQWlGO0F4QjI4RXZGO0F3QnQ4RUU7RUFFRSxXckIxQlc7RXFCMkJYLHlCckJNYTtFcUJMYixxQnJCS2E7QUhtOEVqQjtBd0JqOEVFOztFQUdFLFdyQnRDVztFcUJ1Q1gseUJBekN1SztFQTZDdksscUJBN0MrTTtBeEI2K0VuTjtBd0I5N0VJOztFQUtJLCtDQUFpRjtBeEI4N0V6RjtBdUIxN0VFO0VDdkRBLGNyQlVnQjtFbUJWZCx5Qm5CRWM7RXFCQWhCLHFCckJBZ0I7QUhxL0VsQjtBS2ovRUU7RW1CQUUsY3JCSWM7RW1CVmQseUJFRG9GO0VBU3BGLHFCQVR5SDtBeEI4L0U3SDtBd0JsL0VFO0VBRUUsY3JCSGM7RW1CVmQseUJFRG9GO0VBZ0JwRixxQkFoQnlIO0VBcUJ2SCxpREFBaUY7QXhCZy9FdkY7QXdCMytFRTtFQUVFLGNyQmpCYztFcUJrQmQseUJyQjFCYztFcUIyQmQscUJyQjNCYztBSHdnRmxCO0F3QnQrRUU7O0VBR0UsY3JCN0JjO0VxQjhCZCx5QkF6Q3VLO0VBNkN2SyxxQkE3QytNO0F4QmtoRm5OO0F3Qm4rRUk7O0VBS0ksaURBQWlGO0F4Qm0rRXpGO0F1Qi85RUU7RUN2REEsV3JCQ2E7RW1CRFgseUJuQlNjO0VxQlBoQixxQnJCT2dCO0FIbWhGbEI7QUt0aEZFO0VtQkFFLFdyQkxXO0VtQkRYLHlCRURvRjtFQVNwRixxQkFUeUg7QXhCbWlGN0g7QXdCdmhGRTtFQUVFLFdyQlpXO0VtQkRYLHlCRURvRjtFQWdCcEYscUJBaEJ5SDtFQXFCdkgsOENBQWlGO0F4QnFoRnZGO0F3QmhoRkU7RUFFRSxXckIxQlc7RXFCMkJYLHlCckJuQmM7RXFCb0JkLHFCckJwQmM7QUhzaUZsQjtBd0IzZ0ZFOztFQUdFLFdyQnRDVztFcUJ1Q1gseUJBekN1SztFQTZDdksscUJBN0MrTTtBeEJ1akZuTjtBd0J4Z0ZJOztFQUtJLDhDQUFpRjtBeEJ3Z0Z6RjtBdUI5L0VFO0VDSEEsY3JCNUJlO0VxQjZCZixxQnJCN0JlO0FIa2lGakI7QUsxakZFO0VtQndERSxXckI3RFc7RXFCOERYLHlCckJqQ2E7RXFCa0NiLHFCckJsQ2E7QUh3aUZqQjtBd0JuZ0ZFO0VBRUUsK0NyQnZDYTtBSDRpRmpCO0F3QmxnRkU7RUFFRSxjckI1Q2E7RXFCNkNiLDZCQUE2QjtBeEJvZ0ZqQztBd0JqZ0ZFOztFQUdFLFdyQmhGVztFcUJpRlgseUJyQnBEYTtFcUJxRGIscUJyQnJEYTtBSHdqRmpCO0F3QmpnRkk7O0VBS0ksK0NyQjVEUztBSDZqRmpCO0F1QjloRkU7RUNIQSxjckJuRGdCO0VxQm9EaEIscUJyQnBEZ0I7QUh5bEZsQjtBSzFsRkU7RW1Cd0RFLFdyQjdEVztFcUI4RFgseUJyQnhEYztFcUJ5RGQscUJyQnpEYztBSCtsRmxCO0F3Qm5pRkU7RUFFRSxpRHJCOURjO0FIbW1GbEI7QXdCbGlGRTtFQUVFLGNyQm5FYztFcUJvRWQsNkJBQTZCO0F4Qm9pRmpDO0F3QmppRkU7O0VBR0UsV3JCaEZXO0VxQmlGWCx5QnJCM0VjO0VxQjRFZCxxQnJCNUVjO0FIK21GbEI7QXdCamlGSTs7RUFLSSxpRHJCbkZVO0FIb25GbEI7QXVCOWpGRTtFQ0hBLGNyQnJCZTtFcUJzQmYscUJyQnRCZTtBSDJsRmpCO0FLMW5GRTtFbUJ3REUsV3JCN0RXO0VxQjhEWCx5QnJCMUJhO0VxQjJCYixxQnJCM0JhO0FIaW1GakI7QXdCbmtGRTtFQUVFLCtDckJoQ2E7QUhxbUZqQjtBd0Jsa0ZFO0VBRUUsY3JCckNhO0VxQnNDYiw2QkFBNkI7QXhCb2tGakM7QXdCamtGRTs7RUFHRSxXckJoRlc7RXFCaUZYLHlCckI3Q2E7RXFCOENiLHFCckI5Q2E7QUhpbkZqQjtBd0Jqa0ZJOztFQUtJLCtDckJyRFM7QUhzbkZqQjtBdUI5bEZFO0VDSEEsY3JCbkJlO0VxQm9CZixxQnJCcEJlO0FIeW5GakI7QUsxcEZFO0VtQndERSxXckI3RFc7RXFCOERYLHlCckJ4QmE7RXFCeUJiLHFCckJ6QmE7QUgrbkZqQjtBd0JubUZFO0VBRUUsZ0RyQjlCYTtBSG1vRmpCO0F3QmxtRkU7RUFFRSxjckJuQ2E7RXFCb0NiLDZCQUE2QjtBeEJvbUZqQztBd0JqbUZFOztFQUdFLFdyQmhGVztFcUJpRlgseUJyQjNDYTtFcUI0Q2IscUJyQjVDYTtBSCtvRmpCO0F3QmptRkk7O0VBS0ksZ0RyQm5EUztBSG9wRmpCO0F1QjluRkU7RUNIQSxjckJ0QmU7RXFCdUJmLHFCckJ2QmU7QUg0cEZqQjtBSzFyRkU7RW1Cd0RFLGNyQnBEYztFcUJxRGQseUJyQjNCYTtFcUI0QmIscUJyQjVCYTtBSGtxRmpCO0F3Qm5vRkU7RUFFRSwrQ3JCakNhO0FIc3FGakI7QXdCbG9GRTtFQUVFLGNyQnRDYTtFcUJ1Q2IsNkJBQTZCO0F4Qm9vRmpDO0F3QmpvRkU7O0VBR0UsY3JCdkVjO0VxQndFZCx5QnJCOUNhO0VxQitDYixxQnJCL0NhO0FIa3JGakI7QXdCam9GSTs7RUFLSSwrQ3JCdERTO0FIdXJGakI7QXVCOXBGRTtFQ0hBLGNyQnhCZTtFcUJ5QmYscUJyQnpCZTtBSDhyRmpCO0FLMXRGRTtFbUJ3REUsV3JCN0RXO0VxQjhEWCx5QnJCN0JhO0VxQjhCYixxQnJCOUJhO0FIb3NGakI7QXdCbnFGRTtFQUVFLCtDckJuQ2E7QUh3c0ZqQjtBd0JscUZFO0VBRUUsY3JCeENhO0VxQnlDYiw2QkFBNkI7QXhCb3FGakM7QXdCanFGRTs7RUFHRSxXckJoRlc7RXFCaUZYLHlCckJoRGE7RXFCaURiLHFCckJqRGE7QUhvdEZqQjtBd0JqcUZJOztFQUtJLCtDckJ4RFM7QUh5dEZqQjtBdUI5ckZFO0VDSEEsY3JCeERnQjtFcUJ5RGhCLHFCckJ6RGdCO0FIOHZGbEI7QUsxdkZFO0VtQndERSxjckJwRGM7RXFCcURkLHlCckI3RGM7RXFCOERkLHFCckI5RGM7QUhvd0ZsQjtBd0Juc0ZFO0VBRUUsaURyQm5FYztBSHd3RmxCO0F3QmxzRkU7RUFFRSxjckJ4RWM7RXFCeUVkLDZCQUE2QjtBeEJvc0ZqQztBd0Jqc0ZFOztFQUdFLGNyQnZFYztFcUJ3RWQseUJyQmhGYztFcUJpRmQscUJyQmpGYztBSG94RmxCO0F3QmpzRkk7O0VBS0ksaURyQnhGVTtBSHl4RmxCO0F1Qjl0RkU7RUNIQSxjckJqRGdCO0VxQmtEaEIscUJyQmxEZ0I7QUh1eEZsQjtBSzF4RkU7RW1Cd0RFLFdyQjdEVztFcUI4RFgseUJyQnREYztFcUJ1RGQscUJyQnZEYztBSDZ4RmxCO0F3Qm51RkU7RUFFRSw4Q3JCNURjO0FIaXlGbEI7QXdCbHVGRTtFQUVFLGNyQmpFYztFcUJrRWQsNkJBQTZCO0F4Qm91RmpDO0F3Qmp1RkU7O0VBR0UsV3JCaEZXO0VxQmlGWCx5QnJCekVjO0VxQjBFZCxxQnJCMUVjO0FINnlGbEI7QXdCanVGSTs7RUFLSSw4Q3JCakZVO0FIa3pGbEI7QXVCbnZGQTtFQUNFLGdCcEJvTitCO0VvQm5OL0IsY3BCNUNlO0VvQjZDZixxQnBCa0c0QztBSG9wRjlDO0FLM3pGRTtFa0J3RUUsY3BCZ0c4RDtFb0IvRjlELDBCcEJnRytDO0FIdXBGbkQ7QXVCOXZGQTtFQVlJLDBCcEIyRitDO0VvQjFGL0MsZ0JBQWdCO0F2QnN2RnBCO0F1Qm53RkE7RUFrQkksY3BCbkZjO0VvQm9GZCxvQkFBb0I7QXZCcXZGeEI7QXVCMXVGQTtFQ0pFLG9CckI2U2dDO0VDdFI1QixrQkF0Q1k7RW9CaUJoQixnQnJCa0krQjtFT3ZPN0IscUJQOE8rQjtBSDBtRm5DO0F1Qjd1RkE7RUNSRSx1QnJCd1NpQztFQ2pSN0IsbUJBdENZO0VvQmlCaEIsZ0JyQm1JK0I7RU94TzdCLHFCUCtPK0I7QUhnbkZuQztBdUIzdUZBO0VBQ0UsY0FBYztFQUNkLFdBQVc7QXZCOHVGYjtBdUJodkZBO0VBTUksa0JwQjZUK0I7QUhpN0VuQztBdUJ6dUZBOzs7RUFJSSxXQUFXO0F2QjJ1RmY7QXlCbjNGQTtFTE1NLHdDakI4UDJDO0VpQjlQM0MsZ0NqQjhQMkM7QUhtbkZqRDtBb0I1MkZJO0VLWEo7SUxZTSx3QkFBZ0I7SUFBaEIsZ0JBQWdCO0VwQmczRnBCO0FBQ0Y7QXlCNzNGQTtFQUlJLFVBQVU7QXpCNjNGZDtBeUJ6M0ZB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OztFQTJCSSxVQUFVO0E5QnV3R2Q7QThCbHlHQTtFQWdDSSxVQUFVO0E5QnN3R2Q7QThCdHlHQTs7RXBCZUksMEJvQnNCbUQ7RXBCckJuRCw2Qm9CcUJtRDtBOUJ1d0d2RDtBOEI1eUdBOztFcEI2QkkseUJvQlNtRDtFcEJSbkQsNEJvQlFtRDtBOUI0d0d2RDtBOEJsekdBO0VBNENJLG9CQUFhO0VBQWIsYUFBYTtFQUNiLHlCQUFtQjtVQUFuQixtQkFBbUI7QTlCMHdHdkI7QThCdnpHQTs7RXBCZUksMEJvQmlDNkU7RXBCaEM3RSw2Qm9CZ0M2RTtBOUI2d0dqRjtBOEI3ekdBO0VwQjZCSSx5Qm9Cb0JzRTtFcEJuQnRFLDRCb0JtQnNFO0E5Qml4RzFFO0E4QnR3R0E7O0VBRUUsb0JBQWE7RUFBYixhQUFhO0E5Qnl3R2Y7QThCM3dHQTs7RUFRSSxrQkFBa0I7RUFDbEIsVUFBVTtBOUJ3d0dkO0E4Qmp4R0E7O0VBWU0sVUFBVTtBOUIwd0doQjtBOEJ0eEdBOzs7Ozs7OztFQW9CSSxpQjNCeUo2QjtBSG9uR2pDO0E4Qnp3R0E7RUFBdUIsa0IzQnFKVTtBSHduR2pDO0E4QjV3R0E7RUFBc0IsaUIzQm9KVztBSDRuR2pDO0E4Qnh3R0E7RUFDRSxvQkFBYTtFQUFiLGFBQWE7RUFDYix5QkFBbUI7VUFBbkIsbUJBQW1CO0VBQ25CLHlCM0JnU2tDO0UyQi9SbEMsZ0JBQWdCO0UxQndCWixlQXRDWTtFMEJnQmhCLGdCM0IwTCtCO0UyQnpML0IsZ0IzQjhMK0I7RTJCN0wvQixjM0I3RmdCO0UyQjhGaEIsa0JBQWtCO0VBQ2xCLG1CQUFtQjtFQUNuQix5QjNCckdnQjtFMkJzR2hCLHlCM0JwR2dCO0VPTmQsc0JQNk9nQztBSHlvR3BDO0E4Qnh4R0E7O0VBa0JJLGFBQWE7QTlCMndHakI7QThCandHQTs7RUFFRSxnQ1pqQjhEO0FsQnF4R2hFO0E4Qmp3R0E7Ozs7OztFQU1FLG9CM0IyUWdDO0VDdFI1QixrQkF0Q1k7RTBCbURoQixnQjNCZ0crQjtFT3ZPN0IscUJQOE8rQjtBSDhwR25DO0E4Qmp3R0E7O0VBRUUsa0NabEM4RDtBbEJzeUdoRTtBOEJqd0dBOzs7Ozs7RUFNRSx1QjNCcVBpQztFQ2pSN0IsbUJBdENZO0UwQm9FaEIsZ0IzQmdGK0I7RU94TzdCLHFCUCtPK0I7QUg4cUduQztBOEJqd0dBOztFQUVFLHNCQUEwRTtBOUJvd0c1RTtBOEJ6dkdBOzs7Ozs7RXBCekpJLDBCb0IrSjRCO0VwQjlKNUIsNkJvQjhKNEI7QTlCNnZHaEM7QThCMXZHQTs7Ozs7O0VwQnBKSSx5Qm9CMEoyQjtFcEJ6SjNCLDRCb0J5SjJCO0E5Qjh2Ry9CO0ErQmw3R0E7RUFDRSxrQkFBa0I7RUFDbEIsY0FBYztFQUNkLGtCQUErQztFQUMvQyxvQkFBcUU7QS9CcTdHdkU7QStCbDdHQTtFQUNFLDJCQUFvQjtFQUFwQixvQkFBb0I7RUFDcEIsa0I1QjZmMEM7QUh3N0Y1QztBK0JsN0dBO0VBQ0Usa0JBQWtCO0VBQ2xCLE9BQU87RUFDUCxXQUFXO0VBQ1gsVzVCeWYwQztFNEJ4ZjFDLGVBQWtGO0VBQ2xGLFVBQVU7QS9CcTdHWjtBK0IzN0dBO0VBU0ksVzVCdkJXO0U0QndCWCxxQjVCS2E7RW1COUJiLHlCbkI4QmE7QUhrN0dqQjtBK0JqOEdBO0VBb0JNLGdENUJMVztBSHM3R2pCO0ErQnI4R0E7RUF5QkkscUI1QjBic0U7QUhzL0YxRTtBK0J6OEdBO0VBNkJJLFc1QjNDVztFNEI0Q1gseUI1QnNmOEU7RTRCcmY5RSxxQjVCcWY4RTtBSDI3RmxGO0ErQi84R0E7RUF1Q00sYzVCL0NZO0FIMjlHbEI7QStCbjlHQTtFQTBDUSx5QjVCdERVO0FIbStHbEI7QStCbjZHQTtFQUNFLGtCQUFrQjtFQUNsQixnQkFBZ0I7RUFFaEIsbUJBQW1CO0EvQnE2R3JCO0ErQno2R0E7RUFTSSxrQkFBa0I7RUFDbEIsWUFBK0U7RUFDL0UsYUFBK0Q7RUFDL0QsY0FBYztFQUNkLFc1QjRid0M7RTRCM2J4QyxZNUIyYndDO0U0QjFieEMsb0JBQW9CO0VBQ3BCLFdBQVc7RUFDWCxzQjVCbkZXO0U0Qm9GWCx5QjVCb0o2QjtBSGd4R2pDO0ErQnQ3R0E7RUF3Qkksa0JBQWtCO0VBQ2xCLFlBQStFO0VBQy9FLGFBQStEO0VBQy9ELGNBQWM7RUFDZCxXNUI2YXdDO0U0QjVheEMsWTVCNGF3QztFNEIzYXhDLFdBQVc7RUFDWCxtQ0FBZ0U7QS9CazZHcEU7QStCejVHQTtFckI1R0ksc0JQNk9nQztBSDR4R3BDO0ErQjc1R0E7RUFPTSxrT2I1RXFJO0FsQnMrRzNJO0ErQmo2R0E7RUFhTSxxQjVCMUZXO0VtQjlCYix5Qm5COEJhO0FIbS9HakI7QStCdDZHQTtFQWtCTSwrS2J2RnFJO0FsQisrRzNJO0ErQjE2R0E7RUF3Qk0sd0M1QnJHVztBSDIvR2pCO0ErQjk2R0E7RUEyQk0sd0M1QnhHVztBSCsvR2pCO0ErQjk0R0E7RUFHSSxrQjVCOForQztBSGkvRm5EO0ErQmw1R0E7RUFRTSw4S2JqSHFJO0FsQisvRzNJO0ErQnQ1R0E7RUFjTSx3QzVCL0hXO0FIMmdIakI7QStCbDRHQTtFQUNFLHFCQUEyRDtBL0JxNEc3RDtBK0J0NEdBO0VBS00sY0FBcUQ7RUFDckQsYzVCc1krRTtFNEJyWS9FLG1CQUFtQjtFQUVuQixxQjVCb1k0RTtBSGdnR2xGO0ErQjc0R0E7RUFhTSx3QmIxRTBEO0VhMkUxRCwwQmIzRTBEO0VhNEUxRCx1QmJ4RDBEO0VheUQxRCx3QmJ6RDBEO0VhMEQxRCx5QjVCbExZO0U0Qm9MWixxQjVCMFg0RTtFaUJwakI1RSxpSmpCc2dCK0g7RWlCdGdCL0gseUpqQnNnQitIO0VpQnRnQi9ILHlJakJzZ0IrSDtFaUJ0Z0IvSCw4S2pCc2dCK0g7QUh3akdySTtBb0J6akhJO0VXa0tKO0lYaktNLHdCQUFnQjtJQUFoQixnQkFBZ0I7RXBCNmpIcEI7QUFDRjtBK0I3NUdBO0VBMEJNLHNCNUJoTVM7RTRCaU1ULHNDQUE0RTtFQUE1RSw4QkFBNEU7QS9CdTRHbEY7QStCbDZHQTtFQWlDTSx3QzVCMUtXO0FIK2lIakI7QStCejNHQTtFQUNFLHFCQUFxQjtFQUNyQixXQUFXO0VBQ1gsbUNiN0c4RDtFYThHOUQsMEM1QndLa0M7RUN2UTlCLGVBdENZO0UyQndJaEIsZ0I1QmtFK0I7RTRCakUvQixnQjVCc0UrQjtFNEJyRS9CLGM1QnJOZ0I7RTRCc05oQixzQkFBc0I7RUFDdEIsdU81QnVXK0k7RTRCdFcvSSx5QjVCM05nQjtFT05kLHNCUDZPZ0M7RTRCVGxDLHdCQUFnQjtFQUFoQixxQkFBZ0I7RUFBaEIsZ0JBQWdCO0EvQjAzR2xCO0ErQno0R0E7RUFrQkkscUI1QjRQc0U7RTRCM1B0RSxVQUFVO0VBSVIsZ0Q1QjdNVztBSHFrSGpCO0ErQi80R0E7RUFnQ00sYzVCNU9ZO0U0QjZPWixzQjVCcFBTO0FIdW1IZjtBK0JwNUdBO0VBdUNJLFlBQVk7RUFDWixzQjVCb0lnQztFNEJuSWhDLHNCQUFzQjtBL0JpM0cxQjtBK0IxNUdBO0VBNkNJLGM1QjFQYztFNEIyUGQseUI1Qi9QYztBSGduSGxCO0ErQi81R0E7RUFtREksYUFBYTtBL0JnM0dqQjtBK0JuNkdBO0VBd0RJLGtCQUFrQjtFQUNsQiwwQjVCclFjO0FIb25IbEI7QStCMzJHQTtFQUNFLGtDYnhLOEQ7RWF5SzlELG9CNUJzSGtDO0U0QnJIbEMsdUI1QnFIa0M7RTRCcEhsQyxvQjVCcUhpQztFQ2pSN0IsbUJBdENZO0FKaWpIbEI7QStCMzJHQTtFQUNFLGdDYmhMOEQ7RWFpTDlELG1CNUJtSGlDO0U0QmxIakMsc0I1QmtIaUM7RTRCakhqQyxrQjVCa0hnQztFQ3RSNUIsa0JBdENZO0FKeWpIbEI7QStCdDJHQTtFQUNFLGtCQUFrQjtFQUNsQixxQkFBcUI7RUFDckIsV0FBVztFQUNYLG1DYmhNOEQ7RWFpTTlELGdCQUFnQjtBL0J5MkdsQjtBK0J0MkdBO0VBQ0Usa0JBQWtCO0VBQ2xCLFVBQVU7RUFDVixXQUFXO0VBQ1gsbUNieE04RDtFYXlNOUQsU0FBUztFQUNULFVBQVU7QS9CeTJHWjtBK0IvMkdBO0VBU0kscUI1QjJLc0U7RTRCMUt0RSxnRDVCMVJhO0FIb29IakI7QStCcDNHQTs7RUFnQkkseUI1QjNUYztBSG9xSGxCO0ErQnozR0E7RUFxQk0saUI1QmtVUTtBSHNpR2Q7QStCNzNHQTtFQTBCSSwwQkFBMEI7QS9CdTJHOUI7QStCbjJHQTtFQUNFLGtCQUFrQjtFQUNsQixNQUFNO0VBQ04sUUFBUTtFQUNSLE9BQU87RUFDUCxVQUFVO0VBQ1YsbUNieE84RDtFYXlPOUQseUI1QjZDa0M7RTRCM0NsQyxnQjVCeEQrQjtFNEJ5RC9CLGdCNUJwRCtCO0U0QnFEL0IsYzVCL1VnQjtFNEJnVmhCLHNCNUJ2VmE7RTRCd1ZiLHlCNUJwVmdCO0VPTmQsc0JQNk9nQztBSG05R3BDO0ErQm4zR0E7RUFrQkksa0JBQWtCO0VBQ2xCLE1BQU07RUFDTixRQUFRO0VBQ1IsU0FBUztFQUNULFVBQVU7RUFDVixjQUFjO0VBQ2QsNkJiMVA0RDtFYTJQNUQseUI1QjJCZ0M7RTRCMUJoQyxnQjVCcEU2QjtFNEJxRTdCLGM1Qi9WYztFNEJnV2QsaUJBQWlCO0VUeFdqQix5Qm5CR2M7RTRCdVdkLG9CQUFvQjtFckIzV3BCLGtDcUI0V2dGO0EvQnEyR3BGO0ErQjMxR0E7RUFDRSxXQUFXO0VBQ1gsY2JoUjJCO0VhaVIzQixVQUFVO0VBQ1YsNkJBQTZCO0VBQzdCLHdCQUFnQjtFQUFoQixxQkFBZ0I7RUFBaEIsZ0JBQWdCO0EvQjgxR2xCO0ErQm4yR0E7RUFRSSxhQUFhO0EvQisxR2pCO0ErQnYyR0E7RUFZOEIsZ0U1Qm5XYjtBSGtzSGpCO0ErQjMyR0E7RUFhOEIsZ0U1QnBXYjtBSHNzSGpCO0ErQi8yR0E7RUFjOEIsZ0U1QnJXYjtBSDBzSGpCO0ErQm4zR0E7RUFrQkksU0FBUztBL0JxMkdiO0ErQnYzR0E7RUFzQkksVzVCMk42QztFNEIxTjdDLFk1QjBONkM7RTRCek43QyxvQkFBeUU7RVQ3WXpFLHlCbkI4QmE7RTRCaVhiLFM1QjBOMEM7RU8xbUIxQyxtQlAybUI2QztFaUIxbUIzQyxvSGpCc2dCK0g7RWlCdGdCL0gsNEdqQnNnQitIO0U0Qm5Iakksd0JBQWdCO0VBQWhCLGdCQUFnQjtBL0JvMkdwQjtBb0JsdkhJO0VXZ1hKO0lYL1dNLHdCQUFnQjtJQUFoQixnQkFBZ0I7RXBCc3ZIcEI7QUFDRjtBK0J4NEdBO0VUclhJLHlCbkI4bUIyRTtBSG1wRy9FO0ErQjU0R0E7RUFzQ0ksVzVCb01vQztFNEJuTXBDLGM1Qm9NcUM7RTRCbk1yQyxrQkFBa0I7RUFDbEIsZTVCbU11QztFNEJsTXZDLHlCNUIzWmM7RTRCNFpkLHlCQUF5QjtFckJqYXpCLG1CUG9tQm9DO0FId3FHeEM7QStCdDVHQTtFQWlESSxXNUJnTTZDO0U0Qi9MN0MsWTVCK0w2QztFbUJ0bUI3Qyx5Qm5COEJhO0U0QjJZYixTNUJnTTBDO0VPMW1CMUMsbUJQMm1CNkM7RWlCMW1CM0Msb0hqQnNnQitIO0VpQnRnQi9ILDRHakJzZ0IrSDtFNEJ6RmpJLHFCQUFnQjtFQUFoQixnQkFBZ0I7QS9CdzJHcEI7QW9CaHhISTtFV2dYSjtJWC9XTSx3QkFBZ0I7SUFBaEIsZ0JBQWdCO0VwQm94SHBCO0FBQ0Y7QStCdDZHQTtFVHJYSSx5Qm5COG1CMkU7QUhpckcvRTtBK0IxNkdBO0VBZ0VJLFc1QjBLb0M7RTRCektwQyxjNUIwS3FDO0U0QnpLckMsa0JBQWtCO0VBQ2xCLGU1QnlLdUM7RTRCeEt2Qyx5QjVCcmJjO0U0QnNiZCx5QkFBeUI7RXJCM2J6QixtQlBvbUJvQztBSHNzR3hDO0ErQnA3R0E7RUEyRUksVzVCc0s2QztFNEJySzdDLFk1QnFLNkM7RTRCcEs3QyxhQUFhO0VBQ2Isb0I1QjlEK0I7RTRCK0QvQixtQjVCL0QrQjtFbUJyWS9CLHlCbkI4QmE7RTRCd2FiLFM1Qm1LMEM7RU8xbUIxQyxtQlAybUI2QztFaUIxbUIzQyxvSGpCc2dCK0g7RWlCdGdCL0gsNEdqQnNnQitIO0U0QjVEakksZ0JBQWdCO0EvQjQyR3BCO0FvQmp6SEk7RVdnWEo7SVgvV00sd0JBQWdCO0lBQWhCLGdCQUFnQjtFcEJxekhwQjtBQUNGO0ErQnY4R0E7RVRyWEkseUJuQjhtQjJFO0FIa3RHL0U7QStCMzhHQTtFQTZGSSxXNUI2SW9DO0U0QjVJcEMsYzVCNklxQztFNEI1SXJDLGtCQUFrQjtFQUNsQixlNUI0SXVDO0U0QjNJdkMsNkJBQTZCO0VBQzdCLHlCQUF5QjtFQUN6QixvQkFBNEM7QS9CazNHaEQ7QStCcjlHQTtFQXdHSSx5QjVCemRjO0VPTGQsbUJQb21Cb0M7QUg0dUd4QztBK0IxOUdBO0VBNkdJLGtCQUFrQjtFQUNsQix5QjVCL2RjO0VPTGQsbUJQb21Cb0M7QUhrdkd4QztBK0JoK0dBO0VBb0hNLHlCNUJuZVk7QUhtMUhsQjtBK0JwK0dBO0VBd0hNLGVBQWU7QS9CZzNHckI7QStCeCtHQTtFQTRITSx5QjVCM2VZO0FIMjFIbEI7QStCNStHQTtFQWdJTSxlQUFlO0EvQmczR3JCO0ErQmgvR0E7RUFvSU0seUI1Qm5mWTtBSG0ySGxCO0ErQjMyR0E7OztFWDlmTSxvSGpCc2dCK0g7RWlCdGdCL0gsNEdqQnNnQitIO0FIeTJHckk7QW9CMTJISTtFV3lmSjs7O0lYeGZNLHdCQUFnQjtJQUFoQixnQkFBZ0I7RXBCZzNIcEI7QUFDRjtBZ0N4M0hBO0VBQ0Usb0JBQWE7RUFBYixhQUFhO0VBQ2IsZUFBZTtFQUNmLGVBQWU7RUFDZixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0FoQzIzSGxCO0FnQ3gzSEE7RUFDRSxjQUFjO0VBQ2Qsb0I3QjZxQnNDO0FIOHNHeEM7QUsxM0hFO0UyQkVFLHFCQUFxQjtBaEM0M0h6QjtBZ0NqNEhBO0VBVUksYzdCVmM7RTZCV2Qsb0JBQW9CO0VBQ3BCLGVBQWU7QWhDMjNIbkI7QWdDbjNIQTtFQUNFLGdDN0J4QmdCO0FIODRIbEI7QWdDdjNIQTtFQUlJLG1CN0IwTTZCO0FINnFIakM7QWdDMzNIQTtFQVFJLDZCQUFnRDtFdEIzQmhELCtCUG9PZ0M7RU9uT2hDLGdDUG1PZ0M7QUhnckhwQztBS2w1SEU7RTJCNkJJLHFDN0JuQ1k7QUg0NUhsQjtBZ0NyNEhBO0VBZ0JNLGM3QnBDWTtFNkJxQ1osNkJBQTZCO0VBQzdCLHlCQUF5QjtBaEN5M0gvQjtBZ0MzNEhBOztFQXdCSSxjN0IzQ2M7RTZCNENkLHNCN0JuRFc7RTZCb0RYLGtDN0JwRFc7QUg0NkhmO0FnQ2w1SEE7RUErQkksZ0I3QitLNkI7RU9qTzdCLHlCc0JvRDRCO0V0Qm5ENUIsMEJzQm1ENEI7QWhDdTNIaEM7QWdDOTJIQTtFdEJ0RUksc0JQNk9n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eStIeEI7RWlDamlJRztJQTRESyxhQUFhO0VqQ3crSHJCO0FBQ0Y7QWlDMWlJQTtFQXlCUSw4QkFBcUI7RUFBckIsNkJBQXFCO1VBQXJCLHFCQUFxQjtFQUNyQix1QkFBMkI7VUFBM0IsMkJBQTJCO0FqQ3FoSW5DO0FpQy9pSUE7O0VBUVUsZ0JBQWdCO0VBQ2hCLGVBQWU7QWpDNGlJekI7QWlDcmpJQTtFQTZCVSw4QkFBbUI7RUFBbkIsNkJBQW1CO1VBQW5CLG1CQUFtQjtBakM0aEk3QjtBaUN6aklBO0VBZ0NZLGtCQUFrQjtBakM2aEk5QjtBaUM3aklBO0VBb0NZLHFCOUJnaUI2QjtFOEIvaEI3QixvQjlCK2hCNkI7QUg4L0d6QztBaUNsa0lBOztFQTJDVSxpQkFBaUI7QWpDNGhJM0I7QWlDdmtJQTtFQTBEVSwrQkFBd0I7RUFBeEIsd0JBQXdCO0VBR3hCLGdCQUFnQjtBakMrZ0kxQjtBaUM1a0lBO0VBaUVVLGFBQWE7QWpDK2dJdkI7QWlDbGdJQTtFQUVJLHlCOUIvTVc7QUhtdElmO0FLcHRJRTtFNEJtTkkseUI5QmxOUztBSHV0SWY7QWlDMWdJQTtFQVdNLHlCOUJ4TlM7QUgydElmO0FLNXRJRTtFNEI0Tk0seUI5QjNOTztBSCt0SWY7QWlDbGhJQTtFQWtCUSx5QjlCL05PO0FIbXVJZjtBaUN0aElBOzs7O0VBMEJNLHlCOUJ2T1M7QUgwdUlmO0FpQzdoSUE7RUErQkkseUI5QjVPVztFOEI2T1gsZ0M5QjdPVztBSCt1SWY7QWlDbGlJQTtFQW9DSSwrUWZ0TnVJO0FsQnd0STNJO0FpQ3RpSUE7RUF3Q0kseUI5QnJQVztBSHV2SWY7QWlDMWlJQTtFQTBDTSx5QjlCdlBTO0FIMnZJZjtBSzV2SUU7RTRCMlBNLHlCOUIxUE87QUgrdklmO0FpQzkvSEE7RUFFSSxXOUI3UVc7QUg2d0lmO0FLcHdJRTtFNEJ1UUksVzlCaFJTO0FIaXhJZjtBaUN0Z0lBO0VBV00sK0I5QnRSUztBSHF4SWY7QUs1d0lFO0U0QmdSTSxnQzlCelJPO0FIeXhJZjtBaUM5Z0lBO0VBa0JRLGdDOUI3Uk87QUg2eElmO0FpQ2xoSUE7Ozs7RUEwQk0sVzlCclNTO0FIb3lJZjtBaUN6aElBO0VBK0JJLCtCOUIxU1c7RThCMlNYLHNDOUIzU1c7QUh5eUlmO0FpQzloSUE7RUFvQ0kscVJmMVF1STtBbEJ3d0kzSTtBaUNsaUlBO0VBd0NJLCtCOUJuVFc7QUhpeklmO0FpQ3RpSUE7RUEwQ00sVzlCclRTO0FIcXpJZjtBSzV5SUU7RTRCK1NNLFc5QnhUTztBSHl6SWY7QWtDNXpJQTtFQUNFLGtCQUFrQjtFQUNsQixvQkFBYTtFQUFiLGFBQWE7RUFDYiw0QkFBc0I7RUFBdEIsNkJBQXNCO1VBQXRCLHNCQUFzQjtFQUN0QixZQUFZO0VBRVoscUJBQXFCO0VBQ3JCLHNCL0JKYTtFK0JLYiwyQkFBMkI7RUFDM0Isc0MvQklhO0VPWlgsc0JQNk9nQztBSDBsSXBDO0FrQ3gwSUE7RUFhSSxlQUFlO0VBQ2YsY0FBYztBbEMreklsQjtBa0M3MElBO0V4QlVJLCtCUG9PZ0M7RU9uT2hDLGdDUG1PZ0M7QUhvbUlwQztBa0NsMUlBO0V4QndCSSxtQ1BzTmdDO0VPck5oQyxrQ1BxTmdDO0FIeW1JcEM7QWtDenpJQTtFQUdFLG1CQUFjO1VBQWQsY0FBYztFQUdkLGVBQWU7RUFDZixnQi9Cc3hCeUM7QUhraUgzQztBa0NweklBO0VBQ0Usc0IvQmd4QndDO0FIdWlIMUM7QWtDcHpJQTtFQUNFLHFCQUErQjtFQUMvQixnQkFBZ0I7QWxDdXpJbEI7QWtDcHpJQTtFQUNFLGdCQUFnQjtBbEN1eklsQjtBS2wySUU7RTZCZ0RFLHFCQUFxQjtBbENzekl6QjtBa0N4eklBO0VBTUksb0IvQit2QnVDO0FIdWpIM0M7QWtDOXlJQTtFQUNFLHdCL0JzdkJ5QztFK0JydkJ6QyxnQkFBZ0I7RUFFaEIscUMvQjNEYTtFK0I0RGIsNkMvQjVEYTtBSDQySWY7QWtDcnpJQTtFeEJuRUksMER3QjJFOEU7QWxDaXpJbEY7QWtDenpJQTtFQWFNLGFBQWE7QWxDZ3pJbkI7QWtDM3lJQTtFQUNFLHdCL0JvdUJ5QztFK0JudUJ6QyxxQy9CM0VhO0UrQjRFYiwwQy9CNUVhO0FIMDNJZjtBa0NqeklBO0V4QnJGSSwwRFErSDREO0FsQjJ3SWhFO0FrQ3R5SUE7RUFDRSx1QkFBaUM7RUFDakMsdUIvQm10QndDO0UrQmx0QnhDLHNCQUFnQztFQUNoQyxnQkFBZ0I7QWxDeXlJbEI7QWtDdHlJQTtFQUNFLHVCQUFpQztFQUNqQyxzQkFBZ0M7QWxDeXlJbEM7QWtDcnlJQTtFQUNFLGtCQUFrQjtFQUNsQixNQUFNO0VBQ04sUUFBUTtFQUNSLFNBQVM7RUFDVCxPQUFPO0VBQ1AsZ0IvQjhzQnlDO0FIMGxIM0M7QWtDcnlJQTs7O0VBR0UsY0FBYztFQUNkLFdBQVc7QWxDd3lJYjtBa0NyeUlBOztFeEJ4SEksMkNRc0g0RDtFUnJINUQsNENRcUg0RDtBbEI2eUloRTtBa0N0eUlBOztFeEIvR0ksK0NRd0c0RDtFUnZHNUQsOENRdUc0RDtBbEJtekloRTtBa0NweUlBO0VBRUksbUIvQnVyQnNEO0FIK21IMUQ7QWMvM0lJO0VvQnVGSjtJQU1JLG9CQUFhO0lBQWIsYUFBYTtJQUNiLDhCQUFtQjtJQUFuQiw2QkFBbUI7WUFBbkIsbUJBQW1CO0lBQ25CLG1CL0JpckJzRDtJK0JockJ0RCxrQi9CZ3JCc0Q7RUh1bkh4RDtFa0NoeklGO0lBYU0sbUJBQVk7WUFBWixZQUFZO0lBQ1osa0IvQjJxQm9EO0krQjFxQnBELGdCQUFnQjtJQUNoQixpQi9CeXFCb0Q7RUg2bkh4RDtBQUNGO0FrQzd4SUE7RUFJSSxtQi9CMnBCc0Q7QUhrb0gxRDtBY2w1SUk7RW9CaUhKO0lBUUksb0JBQWE7SUFBYixhQUFhO0lBQ2IsOEJBQW1CO0lBQW5CLDZCQUFtQjtZQUFuQixtQkFBbUI7RWxDOHhJckI7RWtDdnlJRjtJQWNNLG1CQUFZO1lBQVosWUFBWTtJQUNaLGdCQUFnQjtFbEM0eElwQjtFa0MzeUlGO0lBa0JRLGNBQWM7SUFDZCxjQUFjO0VsQzR4SXBCO0VrQy95SUY7SXhCeEpJLDBCd0JpTG9DO0l4QmhMcEMsNkJ3QmdMb0M7RWxDMHhJdEM7RWtDbnpJRjs7SUE4QlksMEJBQTBCO0VsQ3l4SXBDO0VrQ3Z6SUY7O0lBbUNZLDZCQUE2QjtFbEN3eEl2QztFa0MzeklGO0l4QjFJSSx5QndCa0xtQztJeEJqTG5DLDRCd0JpTG1DO0VsQ3V4SXJDO0VrQy96SUY7O0lBNkNZLHlCQUF5QjtFbENzeEluQztFa0NuMElGOztJQWtEWSw0QkFBNEI7RWxDcXhJdEM7QUFDRjtBa0N6d0lBO0VBRUksc0IvQmdsQnNDO0FIMnJIMUM7QWM3N0lJO0VvQmdMSjtJQU1JLHVCL0I2bEJpQztJK0I3bEJqQyxvQi9CNmxCaUM7SStCN2xCakMsZS9CNmxCaUM7SStCNWxCakMsMkIvQjZsQnVDO0krQjdsQnZDLHdCL0I2bEJ1QztJK0I3bEJ2QyxtQi9CNmxCdUM7SStCNWxCdkMsVUFBVTtJQUNWLFNBQVM7RWxDNHdJWDtFa0NyeElGO0lBWU0scUJBQXFCO0lBQ3JCLFdBQVc7RWxDNHdJZjtBQUNGO0FrQ253SUE7RUFFSSxnQkFBZ0I7QWxDcXdJcEI7QWtDdndJQTtFQUtNLGdCQUFnQjtFeEI1T2xCLDZCd0I2T2lDO0V4QjVPakMsNEJ3QjRPaUM7QWxDdXdJckM7QWtDN3dJQTtFeEJyUEkseUJ3QitQOEI7RXhCOVA5QiwwQndCOFA4QjtBbEN3d0lsQztBa0NseElBO0V4QjlQSSxnQndCNFEwQjtFQUN4QixtQi9CbkMyQjtBSDJ5SWpDO0FtQzFoSkE7RUFDRSxvQkFBYTtFQUFiLGFBQWE7RUFDYixlQUFlO0VBQ2YscUJoQytoQ3NDO0VnQzloQ3RDLG1CaENpaUNzQztFZ0MvaEN0QyxnQkFBZ0I7RUFDaEIseUJoQ0VnQjtFT0pkLHNCUDZPZ0M7QUhreklwQztBbUN6aEpBO0VBR0ksb0JoQ3FoQ3FDO0FIcWdIekM7QW1DN2hKQTtFQU1NLHFCQUFxQjtFQUNyQixxQmhDaWhDbUM7RWdDaGhDbkMsY2hDTlk7RWdDT1osWWhDc2hDdUM7QUhxZ0g3QztBbUNwaUpBO0VBb0JJLDBCQUEwQjtBbkNvaEo5QjtBbUN4aUpBO0VBd0JJLHFCQUFxQjtBbkNvaEp6QjtBbUM1aUpBO0VBNEJJLGNoQzFCYztBSDhpSmxCO0FvQzNqSkE7RUFDRSxvQkFBYTtFQUFiLGFBQWE7RTdCR2IsZUFBZTtFQUNmLGdCQUFnQjtFR0FkLHNCUDZPZ0M7QUhnMUlwQztBb0M1akpBO0VBQ0Usa0JBQWtCO0VBQ2xCLGNBQWM7RUFDZCx1QmpDZ3hCd0M7RWlDL3dCeEMsaUJqQ3FPK0I7RWlDcE8vQixpQmpDbXhCc0M7RWlDbHhCdEMsY2pDd0JlO0VpQ3ZCZixzQmpDTmE7RWlDT2IseUJqQ0pnQjtBSG1rSmxCO0FvQ3ZrSkE7RUFXSSxVQUFVO0VBQ1YsY2pDa0s4RDtFaUNqSzlELHFCQUFxQjtFQUNyQix5QmpDWGM7RWlDWWQscUJqQ1hjO0FIMmtKbEI7QW9DL2tKQTtFQW1CSSxVQUFVO0VBQ1YsVWpDNHdCaUM7RWlDM3dCakMsZ0RqQ1NhO0FIdWpKakI7QW9DNWpKQTtFQUdNLGNBQWM7RTFCQ2hCLCtCUCtNZ0M7RU85TWhDLGtDUDhNZ0M7QUgrMklwQztBb0Nsa0pBO0UxQlZJLGdDUDZOZ0M7RU81TmhDLG1DUDROZ0M7QUhvM0lwQztBb0N2a0pBO0VBY0ksVUFBVTtFQUNWLFdqQ3ZDVztFaUN3Q1gseUJqQ1hhO0VpQ1liLHFCakNaYTtBSHlrSmpCO0FvQzlrSkE7RUFxQkksY2pDdkNjO0VpQ3dDZCxvQkFBb0I7RUFFcEIsWUFBWTtFQUNaLHNCakNqRFc7RWlDa0RYLHFCakMvQ2M7QUgybUpsQjtBcUNsbkpFO0VBQ0UsdUJsQ3l4QnNDO0VDOXBCcEMsa0JBdENZO0VpQ25GZCxnQmxDc082QjtBSCs0SWpDO0FxQ2huSk07RTNCd0JGLDhCUGdOK0I7RU8vTS9CLGlDUCtNK0I7QUg2NEluQztBcUNobkpNO0UzQktGLCtCUDhOK0I7RU83Ti9CLGtDUDZOK0I7QUhrNUluQztBcUNsb0pFO0VBQ0UsdUJsQ3V4QnFDO0VDNXBCbkMsbUJBdENZO0VpQ25GZCxnQmxDdU82QjtBSDg1SWpDO0FxQ2hvSk07RTNCd0JGLDhCUGlOK0I7RU9oTi9CLGlDUGdOK0I7QUg0NUluQztBcUNob0pNO0UzQktGLCtCUCtOK0I7RU85Ti9CLGtDUDhOK0I7QUhpNkluQztBc0NocEpBO0VBQ0UscUJBQXFCO0VBQ3JCLHFCbkN3NUJzQztFQ3YxQnBDLGNBQVc7RWtDL0RiLGdCbkMyUitCO0VtQzFSL0IsY0FBYztFQUNkLGtCQUFrQjtFQUNsQixtQkFBbUI7RUFDbkIsd0JBQXdCO0U1QlJ0QixzQlA2T2dDO0VpQjVPOUIsNklqQjZiNkk7RWlCN2I3SSxxSWpCNmI2STtBSCt0SW5KO0FvQnZwSkk7RWtCTko7SWxCT00sd0JBQWdCO0lBQWhCLGdCQUFnQjtFcEIycEpwQjtBQUNGO0FLeHBKRTtFaUNHSSxxQkFBcUI7QXRDeXBKM0I7QXNDdnFKQTtFQW9CSSxhQUFhO0F0Q3VwSmpCO0FzQ2xwSkE7RUFDRSxrQkFBa0I7RUFDbEIsU0FBUztBdENxcEpYO0FzQzlvSkE7RUFDRSxvQm5DNjNCc0M7RW1DNTNCdEMsbUJuQzQzQnNDO0VPaDZCcEMsb0JQbTZCcUM7QUhteEh6QztBc0N6b0pFO0VDakRBLFdwQ01hO0VvQ0xiLHlCcENrQ2U7QUg0cEpqQjtBS2hySkU7RWtDVkksV3BDQ1M7RW9DQVQseUJBQWtDO0F2QzhySnhDO0F1Q2pzSlU7RUFRSixVQUFVO0VBQ1YsK0NwQ3VCVztBSHNxSmpCO0FzQ3hwSkU7RUNqREEsV3BDTWE7RW9DTGIseUJwQ1dnQjtBSGtzSmxCO0FLL3JKRTtFa0NWSSxXcENDUztFb0NBVCx5QkFBa0M7QXZDNnNKeEM7QXVDaHRKVTtFQVFKLFVBQVU7RUFDVixpRHBDQVk7QUg0c0psQjtBc0N2cUpFO0VDakRBLFdwQ01hO0VvQ0xiLHlCcEN5Q2U7QUhtckpqQjtBSzlzSkU7RWtDVkksV3BDQ1M7RW9DQVQseUJBQWtDO0F2QzR0SnhDO0F1Qy90SlU7RUFRSixVQUFVO0VBQ1YsK0NwQzhCVztBSDZySmpCO0FzQ3RySkU7RUNqREEsV3BDTWE7RW9DTGIseUJwQzJDZTtBSGdzSmpCO0FLN3RKRTtFa0NWSSxXcENDUztFb0NBVCx5QkFBa0M7QXZDMnVKeEM7QXVDOXVKVTtFQVFKLFVBQVU7RUFDVixnRHBDZ0NXO0FIMHNKakI7QXNDcnNKRTtFQ2pEQSxjcENlZ0I7RW9DZGhCLHlCcEN3Q2U7QUhrdEpqQjtBSzV1SkU7RWtDVkksY3BDVVk7RW9DVFoseUJBQWtDO0F2QzB2SnhDO0F1Qzd2SlU7RUFRSixVQUFVO0VBQ1YsK0NwQzZCVztBSDR0SmpCO0FzQ3B0SkU7RUNqREEsV3BDTWE7RW9DTGIseUJwQ3NDZTtBSG11SmpCO0FLM3ZKRTtFa0NWSSxXcENDUztFb0NBVCx5QkFBa0M7QXZDeXdKeEM7QXVDNXdKVTtFQVFKLFVBQVU7RUFDViwrQ3BDMkJXO0FINnVKakI7QXNDbnVKRTtFQ2pEQSxjcENlZ0I7RW9DZGhCLHlCcENNZ0I7QUhreEpsQjtBSzF3SkU7RWtDVkksY3BDVVk7RW9DVFoseUJBQWtDO0F2Q3d4SnhDO0F1QzN4SlU7RUFRSixVQUFVO0VBQ1YsaURwQ0xZO0FINHhKbEI7QXNDbHZKRTtFQ2pEQSxXcENNYTtFb0NMYix5QnBDYWdCO0FIMHhKbEI7QUt6eEpFO0VrQ1ZJLFdwQ0NTO0VvQ0FULHlCQUFrQztBdkN1eUp4QztBdUMxeUpVO0VBUUosVUFBVTtFQUNWLDhDcENFWTtBSG95SmxCO0F3Q256SkE7RUFDRSxrQkFBb0Q7RUFDcEQsbUJyQ3F6QnNDO0VxQ256QnRDLHlCckNLZ0I7RU9KZCxxQlA4TytCO0FIdWtKbkM7QWM5dkpJO0UwQjVESjtJQVFJLGtCckMreUJvQztFSHdnSXRDO0FBQ0Y7QXdDcHpKQTtFQUNFLGdCQUFnQjtFQUNoQixlQUFlO0U5QlRiLGdCOEJVc0I7QXhDdXpKMUI7QXlDbDBKQTtFQUNFLGtCQUFrQjtFQUNsQix3QnRDcTlCeUM7RXNDcDlCekMsbUJ0Q3E5QnNDO0VzQ3A5QnRDLDZCQUE2QztFL0JIM0Msc0JQNk9nQztBSDRsSnBDO0F5Q2owSkE7RUFFRSxjQUFjO0F6Q20wSmhCO0F5Qy96SkE7RUFDRSxnQnRDZ1IrQjtBSGtqSmpDO0F5QzF6SkE7RUFDRSxtQkFBc0Q7QXpDNnpKeEQ7QXlDOXpKQTtFQUtJLGtCQUFrQjtFQUNsQixNQUFNO0VBQ04sUUFBUTtFQUNSLHdCdEN1N0J1QztFc0N0N0J2QyxjQUFjO0F6QzZ6SmxCO0F5Q256SkU7RUM5Q0EsY3hCOEZnRTtFSXpGOUQseUJKeUY4RDtFd0I1RmhFLHFCeEI0RmdFO0FsQnl3SmxFO0EwQ24ySkU7RUFDRSx5QkFBcUM7QTFDczJKekM7QTBDbjJKRTtFQUNFLGNBQTBCO0ExQ3MySjlCO0F5Q2owSkU7RUM5Q0EsY3hCOEZnRTtFSXpGOUQseUJKeUY4RDtFd0I1RmhFLHFCeEI0RmdFO0FsQnV4SmxFO0EwQ2ozSkU7RUFDRSx5QkFBcUM7QTFDbzNKekM7QTBDajNKRTtFQUNFLGNBQTBCO0ExQ28zSjlCO0F5Qy8wSkU7RUM5Q0EsY3hCOEZnRTtFSXpGOUQseUJKeUY4RDtFd0I1RmhFLHFCeEI0RmdFO0FsQnF5SmxFO0EwQy8zSkU7RUFDRSx5QkFBcUM7QTFDazRKekM7QTBDLzNKRTtFQUNFLGNBQTBCO0ExQ2s0SjlCO0F5QzcxSkU7RUM5Q0EsY3hCOEZnRTtFSXpGOUQseUJKeUY4RDtFd0I1RmhFLHFCeEI0RmdFO0FsQm16SmxFO0EwQzc0SkU7RUFDRSx5QkFBcUM7QTFDZzVKekM7QTBDNzRKRTtFQUNFLGNBQTBCO0ExQ2c1SjlCO0F5QzMySkU7RUM5Q0EsY3hCOEZnRTtFSXpGOUQseUJKeUY4RDtFd0I1RmhFLHFCeEI0RmdFO0FsQmkwSmxFO0EwQzM1SkU7RUFDRSx5QkFBcUM7QTFDODVKekM7QTBDMzVKRTtFQUNFLGNBQTBCO0ExQzg1SjlCO0F5Q3ozSkU7RUM5Q0EsY3hCOEZnRTtFSXpGOUQseUJKeUY4RDtFd0I1RmhFLHFCeEI0RmdFO0FsQiswSmxFO0EwQ3o2SkU7RUFDRSx5QkFBcUM7QTFDNDZKekM7QTBDejZKRTtFQUNFLGNBQTBCO0ExQzQ2SjlCO0F5Q3Y0SkU7RUM5Q0EsY3hCOEZnRTtFSXpGOUQseUJKeUY4RDtFd0I1RmhFLHFCeEI0RmdFO0FsQjYxSmxFO0EwQ3Y3SkU7RUFDRSx5QkFBcUM7QTFDMDdKekM7QTBDdjdKRTtFQUNFLGNBQTBCO0ExQzA3SjlCO0F5Q3I1SkU7RUM5Q0EsY3hCOEZnRTtFSXpGOUQseUJKeUY4RDtFd0I1RmhFLHFCeEI0RmdFO0FsQjIySmxFO0EwQ3I4SkU7RUFDRSx5QkFBcUM7QTFDdzhKekM7QTBDcjhKRTtFQUNFLGNBQTBCO0ExQ3c4SjlCO0EyQ2g5SkU7RUFDRTtJQUFPLDJCQUF1QztFM0NvOUpoRDtFMkNuOUpFO0lBQUssd0JBQXdCO0UzQ3M5Si9CO0FBQ0Y7QTJDejlKRTtFQUNFO0lBQU8sMkJBQXVDO0UzQ285SmhEO0UyQ245SkU7SUFBSyx3QkFBd0I7RTNDczlKL0I7QUFDRjtBMkNuOUpBO0VBQ0Usb0JBQWE7RUFBYixhQUFhO0VBQ2IsWXhDODlCc0M7RXdDNzlCdEMsZ0JBQWdCO0V2Q29IWixrQkF0Q1k7RXVDNUVoQix5QnhDSmdCO0VPSmQsc0JQNk9nQztBSGt2SnBDO0EyQ2w5SkE7RUFDRSxvQkFBYTtFQUFiLGFBQWE7RUFDYiw0QkFBc0I7RUFBdEIsNkJBQXNCO1VBQXRCLHNCQUFzQjtFQUN0Qix3QkFBdUI7VUFBdkIsdUJBQXVCO0VBQ3ZCLGdCQUFnQjtFQUNoQixXeENoQmE7RXdDaUJiLGtCQUFrQjtFQUNsQixtQkFBbUI7RUFDbkIseUJ4Q1VlO0VpQjlCWCxtQ2pCMCtCNEM7RWlCMStCNUMsMkJqQjArQjRDO0FIZ2dJbEQ7QW9CcitKSTtFdUJPSjtJdkJOTSx3QkFBZ0I7SUFBaEIsZ0JBQWdCO0VwQnkrSnBCO0FBQ0Y7QTJDeDlKQTtFckJhRSxxTUFBNkk7RXFCWDdJLDBCeEN3OEJzQztBSG1oSXhDO0EyQ3Y5SkU7RUFDRSwwRHhDMDhCa0Q7RXdDMThCbEQsa0R4QzA4QmtEO0FIZ2hJdEQ7QTJDdjlKTTtFQUpKO0lBS00sdUJBQWU7SUFBZixlQUFlO0UzQzI5SnJCO0FBQ0Y7QTRDcmdLQTtFQUNFLG9CQUFhO0VBQWIsYUFBYTtFQUNiLHdCQUF1QjtVQUF2Qix1QkFBdUI7QTVDd2dLekI7QTRDcmdLQTtFQUNFLG1CQUFPO1VBQVAsT0FBTztBNUN3Z0tUO0E2QzFnS0E7RUFDRSxvQkFBYTtFQUFiLGFBQWE7RUFDYiw0QkFBc0I7RUFBdEIsNkJBQXNCO1VBQXRCLHNCQUFzQjtFQUd0QixlQUFlO0VBQ2YsZ0JBQWdCO0E3QzJnS2xCO0E2Q2xnS0E7RUFDRSxXQUFXO0VBQ1gsYzFDUGdCO0UwQ1FoQixtQkFBbUI7QTdDcWdLckI7QUszZ0tFO0V3Q1VFLFVBQVU7RUFDVixjMUNiYztFMENjZCxxQkFBcUI7RUFDckIseUIxQ3JCYztBSDBoS2xCO0E2Qy9nS0E7RUFjSSxjMUNqQmM7RTBDa0JkLHlCMUN6QmM7QUg4aEtsQjtBNkM1L0pBO0VBQ0Usa0JBQWtCO0VBQ2xCLGNBQWM7RUFDZCx3QjFDODhCeUM7RTBDNThCekMsc0IxQ3pDYTtFMEMwQ2Isc0MxQ2hDYTtBSDhoS2Y7QTZDcGdLQTtFbkM3QkksK0JQb09nQztFT25PaEMsZ0NQbU9nQztBSGswSnBDO0E2Q3pnS0E7RW5DZkksbUNQc05nQztFT3JOaEMsa0NQcU5nQztBSHUwSnBDO0E2QzlnS0E7RUFrQkksYzFDaERjO0UwQ2lEZCxvQkFBb0I7RUFDcEIsc0IxQ3hEVztBSHdqS2Y7QTZDcGhLQTtFQXlCSSxVQUFVO0VBQ1YsVzFDOURXO0UwQytEWCx5QjFDbENhO0UwQ21DYixxQjFDbkNhO0FIa2lLakI7QTZDM2hLQTtFQWdDSSxtQkFBbUI7QTdDKy9KdkI7QTZDL2hLQTtFQW1DTSxnQjFDaUsyQjtFMENoSzNCLHFCMUNnSzJCO0FIZzJKakM7QTZDbC9KSTtFQUNFLDhCQUFtQjtFQUFuQiw2QkFBbUI7VUFBbkIsbUJBQW1CO0E3Q3EvSnpCO0E2Q3QvSkk7RW5DakNBLGtDUHNMZ0M7RU9sTWhDLDBCbUNtRHdDO0E3Q3EvSjVDO0E2QzMvSkk7RW5DN0NBLGdDUGtNZ0M7RU90TGhDLDRCbUM0QzBDO0E3Q3EvSjlDO0E2Q2hnS0k7RUFlTSxhQUFhO0E3Q3EvSnZCO0E2Q3BnS0k7RUFtQk0scUIxQytIdUI7RTBDOUh2QixvQkFBb0I7QTdDcS9KOUI7QTZDemdLSTtFQXVCUSxpQjFDMkhxQjtFMEMxSHJCLHNCMUMwSHFCO0FINDNKakM7QWMvaUtJO0UrQmlDQTtJQUNFLDhCQUFtQjtJQUFuQiw2QkFBbUI7WUFBbkIsbUJBQW1CO0U3Q2toS3ZCO0U2Q25oS0U7SW5DakNBLGtDUHNMZ0M7SU9sTWhDLDBCbUNtRHdDO0U3Q2loSzFDO0U2Q3ZoS0U7SW5DN0NBLGdDUGtNZ0M7SU90TGhDLDRCbUM0QzBDO0U3Q2doSzVDO0U2QzNoS0U7SUFlTSxhQUFhO0U3QytnS3JCO0U2QzloS0U7SUFtQk0scUIxQytIdUI7STBDOUh2QixvQkFBb0I7RTdDOGdLNUI7RTZDbGlLRTtJQXVCUSxpQjFDMkhxQjtJMEMxSHJCLHNCMUMwSHFCO0VIbzVKL0I7QUFDRjtBY3hrS0k7RStCaUNBO0lBQ0UsOEJBQW1CO0lBQW5CLDZCQUFtQjtZQUFuQixtQkFBbUI7RTdDMmlLdkI7RTZDNWlLRTtJbkNqQ0Esa0NQc0xnQztJT2xNaEMsMEJtQ21Ed0M7RTdDMGlLMUM7RTZDaGpLRTtJbkM3Q0EsZ0NQa01nQztJT3RMaEMsNEJtQzRDMEM7RTdDeWlLNUM7RTZDcGpLRTtJQWVNLGFBQWE7RTdDd2lLckI7RTZDdmpLRTtJQW1CTSxxQjFDK0h1QjtJMEM5SHZCLG9CQUFvQjtFN0N1aUs1QjtFNkMzaktFO0lBdUJRLGlCMUMySHFCO0kwQzFIckIsc0IxQzBIcUI7RUg2NkovQjtBQUNGO0Fjam1LSTtFK0JpQ0E7SUFDRSw4QkFBbUI7SUFBbkIsNkJBQW1CO1lBQW5CLG1CQUFtQjtFN0Nva0t2QjtFNkNya0tFO0luQ2pDQSxrQ1BzTGdDO0lPbE1oQywwQm1DbUR3QztFN0Nta0sxQztFNkN6a0tFO0luQzdDQSxnQ1BrTWdDO0lPdExoQyw0Qm1DNEMwQztFN0Nra0s1QztFNkM3a0tFO0lBZU0sYUFBYTtFN0Npa0tyQjtFNkNobEtFO0lBbUJNLHFCMUMrSHVCO0kwQzlIdkIsb0JBQW9CO0U3Q2drSzVCO0U2Q3BsS0U7SUF1QlEsaUIxQzJIcUI7STBDMUhyQixzQjFDMEhxQjtFSHM4Si9CO0FBQ0Y7QWMxbktJO0UrQmlDQTtJQUNFLDhCQUFtQjtJQUFuQiw2QkFBbUI7WUFBbkIsbUJBQW1CO0U3QzZsS3ZCO0U2QzlsS0U7SW5DakNBLGtDUHNMZ0M7SU9sTWhDLDBCbUNtRHdDO0U3QzRsSzFDO0U2Q2xtS0U7SW5DN0NBLGdDUGtNZ0M7SU90TGhDLDRCbUM0QzBDO0U3QzJsSzVDO0U2Q3RtS0U7SUFlTSxhQUFhO0U3QzBsS3JCO0U2Q3ptS0U7SUFtQk0scUIxQytIdUI7STBDOUh2QixvQkFBb0I7RTdDeWxLNUI7RTZDN21LRTtJQXVCUSxpQjFDMkhxQjtJMEMxSHJCLHNCMUMwSHFCO0VIKzlKL0I7QUFDRjtBNkM1a0tBO0VBRUkscUJBQXFCO0VBQ3JCLG9CQUFvQjtFbkNqSXBCLGdCbUNrSXdCO0E3QzhrSzVCO0E2Q2xsS0E7RUFPTSxtQkFBbUI7QTdDK2tLekI7QTZDdGxLQTtFQWFNLHNCQUFzQjtBN0M2a0s1QjtBOEMxdEtFO0VBQ0UsYzVCMkY4RDtFNEIxRjlELHlCNUIwRjhEO0FsQm1vS2xFO0FLbHRLRTtFeUNQTSxjNUJzRjBEO0U0QnJGMUQseUJBQXlDO0E5QzZ0S2pEO0E4Q3B1S0U7RUFXTSxXM0NQTztFMkNRUCx5QjVCZ0YwRDtFNEIvRTFELHFCNUIrRTBEO0FsQjhvS2xFO0E4QzF1S0U7RUFDRSxjNUIyRjhEO0U0QjFGOUQseUI1QjBGOEQ7QWxCbXBLbEU7QUtsdUtFO0V5Q1BNLGM1QnNGMEQ7RTRCckYxRCx5QkFBeUM7QTlDNnVLakQ7QThDcHZLRTtFQVdNLFczQ1BPO0UyQ1FQLHlCNUJnRjBEO0U0Qi9FMUQscUI1QitFMEQ7QWxCOHBLbEU7QThDMXZLRTtFQUNFLGM1QjJGOEQ7RTRCMUY5RCx5QjVCMEY4RDtBbEJtcUtsRTtBS2x2S0U7RXlDUE0sYzVCc0YwRDtFNEJyRjFELHlCQUF5QztBOUM2dktqRDtBOENwd0tFO0VBV00sVzNDUE87RTJDUVAseUI1QmdGMEQ7RTRCL0UxRCxxQjVCK0UwRDtBbEI4cUtsRTtBOEMxd0tFO0VBQ0UsYzVCMkY4RDtFNEIxRjlELHlCNUIwRjhEO0FsQm1yS2xFO0FLbHdLRTtFeUNQTSxjNUJzRjBEO0U0QnJGMUQseUJBQXlDO0E5QzZ3S2pEO0E4Q3B4S0U7RUFXTSxXM0NQTztFMkNRUCx5QjVCZ0YwRDtFNEIvRTFELHFCNUIrRTBEO0FsQjhyS2xFO0E4QzF4S0U7RUFDRSxjNUIyRjhEO0U0QjFGOUQseUI1QjBGOEQ7QWxCbXNLbEU7QUtseEtFO0V5Q1BNLGM1QnNGMEQ7RTRCckYxRCx5QkFBeUM7QTlDNnhLakQ7QThDcHlLRTtFQVdNLFczQ1BPO0UyQ1FQLHlCNUJnRjBEO0U0Qi9FMUQscUI1QitFMEQ7QWxCOHNLbEU7QThDMXlLRTtFQUNFLGM1QjJGOEQ7RTRCMUY5RCx5QjVCMEY4RDtBbEJtdEtsRTtBS2x5S0U7RXlDUE0sYzVCc0YwRDtFNEJyRjFELHlCQUF5QztBOUM2eUtqRDtBOENwektFO0VBV00sVzNDUE87RTJDUVAseUI1QmdGMEQ7RTRCL0UxRCxxQjVCK0UwRDtBbEI4dEtsRTtBOEMxektFO0VBQ0UsYzVCMkY4RDtFNEIxRjlELHlCNUIwRjhEO0FsQm11S2xFO0FLbHpLRTtFeUNQTSxjNUJzRjBEO0U0QnJGMUQseUJBQXlDO0E5QzZ6S2pEO0E4Q3AwS0U7RUFXTSxXM0NQTztFMkNRUCx5QjVCZ0YwRDtFNEIvRTFELHFCNUIrRTBEO0FsQjh1S2xFO0E4QzEwS0U7RUFDRSxjNUIyRjhEO0U0QjFGOUQseUI1QjBGOEQ7QWxCbXZLbEU7QUtsMEtFO0V5Q1BNLGM1QnNGMEQ7RTRCckYxRCx5QkFBeUM7QTlDNjBLakQ7QThDcDFLRTtFQVdNLFczQ1BPO0UyQ1FQLHlCNUJnRjBEO0U0Qi9FMUQscUI1QitFMEQ7QWxCOHZLbEU7QStDNzFLQTtFQUNFLFlBQVk7RTNDOEhSLGlCQXRDWTtFMkN0RmhCLGdCNUNpUytCO0U0Q2hTL0IsY0FBYztFQUNkLFc1Q1lhO0U0Q1hiLHlCNUNDYTtFNENBYixXQUFXO0EvQ2cyS2I7QUszMUtFO0UwQ0RFLFc1Q01XO0U0Q0xYLHFCQUFxQjtBL0NnMkt6QjtBSzUxS0U7RTBDQ0ksWUFBWTtBL0MrMUtsQjtBK0NwMUtBO0VBQ0UsVUFBVTtFQUNWLDZCQUE2QjtFQUM3QixTQUFTO0VBQ1Qsd0JBQWdCO0VBQWhCLHFCQUFnQjtFQUFoQixnQkFBZ0I7QS9DdTFLbEI7QStDajFLQTtFQUNFLG9CQUFvQjtBL0NvMUt0QjtBZ0QzM0tBO0VBQ0UsZ0I3Q3k0QnVDO0U2Q3g0QnZDLGdCQUFnQjtFNUM2SFosbUJBdENZO0U0Q3BGaEIsMkM3Q0VhO0U2Q0RiLDRCQUE0QjtFQUM1QixvQzdDMDRCbUQ7RTZDejRCbkQsZ0Q3Q1NhO0U2Q1JiLG1DQUEyQjtFQUEzQiwyQkFBMkI7RUFDM0IsVUFBVTtFdENMUixzQlA2NEJzQztBSHMvSTFDO0FnRHg0S0E7RUFjSSxzQjdDNjNCc0M7QUhpZ0oxQztBZ0Q1NEtBO0VBa0JJLFVBQVU7QWhEODNLZDtBZ0RoNUtBO0VBc0JJLGNBQWM7RUFDZCxVQUFVO0FoRDgzS2Q7QWdEcjVLQTtFQTJCSSxhQUFhO0FoRDgzS2pCO0FnRDEzS0E7RUFDRSxvQkFBYTtFQUFiLGFBQWE7RUFDYix5QkFBbUI7VUFBbkIsbUJBQW1CO0VBQ25CLHdCN0N5MkJ3QztFNkN4MkJ4QyxjN0N0QmdCO0U2Q3VCaEIsMkM3QzdCYTtFNkM4QmIsNEJBQTRCO0VBQzVCLDRDN0NpM0JvRDtBSDRnSnREO0FnRDEzS0E7RUFDRSxnQjdDaTJCd0M7QUg0aEoxQztBaURqNktBO0VBRUUsZ0JBQWdCO0FqRG02S2xCO0FpRHI2S0E7RUFLSSxrQkFBa0I7RUFDbEIsZ0JBQWdCO0FqRG82S3BCO0FpRC81S0E7RUFDRSxlQUFlO0VBQ2YsTUFBTTtFQUNOLE9BQU87RUFDUCxhOUMrcEJzQztFOEM5cEJ0QyxhQUFhO0VBQ2IsV0FBVztFQUNYLFlBQVk7RUFDWixnQkFBZ0I7RUFHaEIsVUFBVTtBakRnNktaO0FpRHo1S0E7RUFDRSxrQkFBa0I7RUFDbEIsV0FBVztFQUNYLGM5QzY0QnVDO0U4QzM0QnZDLG9CQUFvQjtBakQyNUt0QjtBaUR4NUtFO0U3QnJDSSwyQ2pCNDhCb0Q7RWlCNThCcEQsbURqQjQ4Qm9EO0VpQjU4QnBELG1DakI0OEJvRDtFaUI1OEJwRCxvRWpCNDhCb0Q7RThDcjZCdEQsc0M5Q202Qm1EO0U4Q242Qm5ELDhCOUNtNkJtRDtBSHcvSXZEO0FvQjc3S0k7RTZCZ0NGO0k3Qi9CSSx3QkFBZ0I7SUFBaEIsZ0JBQWdCO0VwQmk4S3BCO0FBQ0Y7QWlELzVLRTtFQUNFLHVCOUNpNkJvQztFOENqNkJwQyxlOUNpNkJvQztBSGlnSnhDO0FpRDk1S0U7RUFDRSw4QjlDODVCMkM7RThDOTVCM0Msc0I5Qzg1QjJDO0FIbWdKL0M7QWlENzVLQTtFQUNFLG9CQUFhO0VBQWIsYUFBYTtFQUNiLDZCL0J5RThEO0FsQnUxS2hFO0FpRGw2S0E7RUFLSSw4Qi9Cc0U0RDtFK0JyRTVELGdCQUFnQjtBakRpNktwQjtBaUR2NktBOztFQVdJLGNBQWM7QWpEaTZLbEI7QWlENTZLQTtFQWVJLGdCQUFnQjtBakRpNktwQjtBaUQ3NUtBO0VBQ0Usb0JBQWE7RUFBYixhQUFhO0VBQ2IseUJBQW1CO1VBQW5CLG1CQUFtQjtFQUNuQiw2Qi9CcUQ4RDtBbEIyMktoRTtBaURuNktBO0VBT0ksY0FBYztFQUNkLDBCL0JnRDREO0UrQi9DNUQsV0FBVztBakRnNktmO0FpRHo2S0E7RUFjSSw0QkFBc0I7RUFBdEIsNkJBQXNCO1VBQXRCLHNCQUFzQjtFQUN0Qix3QkFBdUI7VUFBdkIsdUJBQXVCO0VBQ3ZCLFlBQVk7QWpEKzVLaEI7QWlELzZLQTtFQW1CTSxnQkFBZ0I7QWpEZzZLdEI7QWlEbjdLQTtFQXVCTSxhQUFhO0FqRGc2S25CO0FpRDE1S0E7RUFDRSxrQkFBa0I7RUFDbEIsb0JBQWE7RUFBYixhQUFhO0VBQ2IsNEJBQXNCO0VBQXRCLDZCQUFzQjtVQUF0QixzQkFBc0I7RUFDdEIsV0FBVztFQUdYLG9CQUFvQjtFQUNwQixzQjlDMUdhO0U4QzJHYiw0QkFBNEI7RUFDNUIsb0M5Q2xHYTtFT1pYLHFCUDhPK0I7RThDNUhqQyxVQUFVO0FqRHk1S1o7QWlEcjVLQTtFQUNFLGVBQWU7RUFDZixNQUFNO0VBQ04sT0FBTztFQUNQLGE5Q29qQnNDO0U4Q25qQnRDLFlBQVk7RUFDWixhQUFhO0VBQ2Isc0I5Q2pIYTtBSHlnTGY7QWlELzVLQTtFQVVXLFVBQVU7QWpEeTVLckI7QWlEbjZLQTtFQVdXLFk5QzR6QjJCO0FIZ21KdEM7QWlEdjVLQTtFQUNFLG9CQUFhO0VBQWIsYUFBYTtFQUNiLHdCQUF1QjtVQUF2Qix1QkFBdUI7RUFDdkIseUJBQThCO1VBQTlCLDhCQUE4QjtFQUM5QixrQjlDeXpCc0M7RThDeHpCdEMsZ0M5Q3RJZ0I7RU9JZCwwQ1FzSDREO0VSckg1RCwyQ1FxSDREO0FsQnc2S2hFO0FpRGo2S0E7RUFTSSxrQjlDb3pCb0M7RThDbHpCcEMsOEJBQTZGO0FqRDI1S2pHO0FpRHQ1S0E7RUFDRSxnQkFBZ0I7RUFDaEIsZ0I5QzJJK0I7QUg4d0tqQztBaURwNUtBO0VBQ0Usa0JBQWtCO0VBR2xCLG1CQUFjO1VBQWQsY0FBYztFQUNkLGE5Q3V3QnNDO0FIOG9KeEM7QWlEajVLQTtFQUNFLG9CQUFhO0VBQWIsYUFBYTtFQUNiLGVBQWU7RUFDZix5QkFBbUI7VUFBbkIsbUJBQW1CO0VBQ25CLHFCQUF5QjtVQUF6Qix5QkFBeUI7RUFDekIsZ0JBQWdFO0VBQ2hFLDZCOUN2S2dCO0VPa0JkLDhDUXdHNEQ7RVJ2RzVELDZDUXVHNEQ7QWxCbThLaEU7QWlENTVLQTtFQWNJLGVBQXdDO0FqRGs1SzVDO0FpRDc0S0E7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLFdBQVc7RUFDWCxZQUFZO0VBQ1osZ0JBQWdCO0FqRGc1S2xCO0FjdmhMSTtFbUN6Qko7SUF1S0ksZ0I5Q213QnFDO0k4Q2x3QnJDLG9CQUF5QztFakQ4NEszQztFaURoaUxGO0lBc0pJLCtCL0IzRTREO0VsQnc5SzlEO0VpRG5pTEY7SUF5Sk0sZ0MvQjlFMEQ7RWxCMjlLOUQ7RWlEbmhMRjtJQTJJSSwrQi9CbkY0RDtFbEI4OUs5RDtFaUR0aExGO0lBOElNLDRCL0J0RjBEO0VsQmkrSzlEO0VpRG40S0E7SUFBWSxnQjlDNHVCMkI7RUgwcEp2QztBQUNGO0FjN2lMSTtFbUMwS0Y7O0lBRUUsZ0I5Q291QnFDO0VIbXFKdkM7QUFDRjtBY3BqTEk7RW1DaUxGO0lBQVksaUI5Qzh0QjRCO0VIMHFKeEM7QUFDRjtBa0RybkxBO0VBQ0Usa0JBQWtCO0VBQ2xCLGEvQ21yQnNDO0UrQ2xyQnRDLGNBQWM7RUFDZCxTL0N5MUJtQztFZ0Q3MUJuQyxrTWhEdVJpTjtFZ0RyUmpOLGtCQUFrQjtFQUNsQixnQmhEK1IrQjtFZ0Q5Ui9CLGdC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LE9BQU87RUFDUCxvQ0FBMkY7RUFDM0YsdUNqRGcwQmlFO0FIazdKdkU7QW9EOXZMQTtFQWdCTSxTakRzSzJCO0VpRHJLM0Isb0NBQTJGO0VBQzNGLHdCakRwRVM7QUhzekxmO0FvRDd1TEE7RUFDRSxrQmpEaXpCdUM7QUgrN0p6QztBb0RqdkxBO0VBSUksd0JsQ2dENEQ7QWxCaXNMaEU7QW9EcnZMQTtFQU9NLE1BQU07RUFDTixvQ0FBMkY7RUFDM0Ysd0NqRDR5QmlFO0FIczhKdkU7QW9EM3ZMQTtFQWFNLFFqRGtKMkI7RWlEakozQixvQ0FBMkY7RUFDM0YseUJqRHhGUztBSDAwTGY7QW9EandMQTtFQXFCSSxrQkFBa0I7RUFDbEIsTUFBTTtFQUNOLFNBQVM7RUFDVCxjQUFjO0VBQ2QsV2pEd3hCb0M7RWlEdnhCcEMsb0JBQXNDO0VBQ3RDLFdBQVc7RUFDWCxnQ2pENHdCdUQ7QUhvK0ozRDtBb0Q1dUxBO0VBQ0Usb0JqRGl4QnVDO0FIODlKekM7QW9EaHZMQTtFQUlJLDBCbENnQjREO0VrQ2Y1RCxhakQ2d0JxQztFaUQ1d0JyQyxZakQyd0JvQztFaUQxd0JwQyxnQkFBZ0M7QXBEZ3ZMcEM7QW9EdnZMQTtFQVVNLFFBQVE7RUFDUixvQ2pEdXdCbUM7RWlEdHdCbkMsc0NqRHl3QmlFO0FIdytKdkU7QW9EN3ZMQTtFQWdCTSxVakQrRzJCO0VpRDlHM0Isb0NqRGl3Qm1DO0VpRGh3Qm5DLHVCakQzSFM7QUg0MkxmO0FvRDN0TEE7RUFDRSx1QmpEa3VCd0M7RWlEanVCeEMsZ0JBQWdCO0VoRDNCWixlQXRDWTtFZ0RvRWhCLHlCakQydEJ5RDtFaUQxdEJ6RCxnQ0FBeUU7RTFDaEp2RSwwQ1FzSDREO0VSckg1RCwyQ1FxSDREO0FsQnl2TGhFO0FvRHJ1TEE7RUFVSSxhQUFhO0FwRCt0TGpCO0FvRDN0TEE7RUFDRSx1QmpEb3RCd0M7RWlEbnRCeEMsY2pEeEpnQjtBSHMzTGxCO0FxRHozTEE7RUFDRSxrQkFBa0I7QXJENDNMcEI7QXFEejNMQTtFQUNFLG1CQUFtQjtBckQ0M0xyQjtBcUR6M0xBO0VBQ0Usa0JB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RSxvQ0FBbUM7QXpEd29NdkM7QUs5bk1FOzs7RW9ETEksb0NBQWdEO0F6RHlvTXREO0F5RC9vTUU7RUFDRSxvQ0FBbUM7QXpEa3BNdkM7QUt4b01FOzs7RW9ETEksb0NBQWdEO0F6RG1wTXREO0F5RHpwTUU7RUFDRSxvQ0FBbUM7QXpENHBNdkM7QUtscE1FOzs7RW9ETEksb0NBQWdEO0F6RDZwTXREO0F5RG5xTUU7RUFDRSxvQ0FBbUM7QXpEc3FNdkM7QUs1cE1FOzs7RW9ETEksb0NBQWdEO0F6RHVxTXREO0F5RDdxTUU7RUFDRSxvQ0FBbUM7QXpEZ3JNdkM7QUt0cU1FOzs7RW9ETEksb0NBQWdEO0F6RGlyTXREO0F5RHZyTUU7RUFDRSxvQ0FBbUM7QXpEMHJNdkM7QUtock1FOzs7RW9ETEksb0NBQWdEO0F6RDJyTXREO0F5RGpzTUU7RUFDRSxvQ0FBbUM7QXpEb3NNdkM7QUsxck1FOzs7RW9ETEksb0NBQWdEO0F6RHFzTXREO0F5RDNzTUU7RUFDRSxvQ0FBbUM7QXpEOHNNdkM7QUtwc01FOzs7RW9ETEksb0NBQWdEO0F6RCtzTXREO0EwRDlzTUE7RUFDRSxpQ0FBbUM7QTFEaXRNckM7QTBEOXNNQTtFQUNFLHdDQUF3QztBMURpdE0xQztBMkQ1dE1BO0VBQWtCLG9DQUFvRDtBM0RndU10RTtBMkQvdE1BO0VBQWtCLHdDQUF3RDtBM0RtdU0xRTtBMkRsdU1BO0VBQWtCLDBDQUEwRDtBM0RzdU01RTtBMkRydU1BO0VBQWtCLDJDQUEyRDtBM0R5dU03RTtBMkR4dU1BO0VBQWtCLHlDQUF5RDtBM0Q0dU0zRTtBMkQxdU1BO0VBQW1CLG9CQUFvQjtBM0Q4dU12QztBMkQ3dU1BO0VBQW1CLHdCQUF3QjtBM0Rpdk0zQztBMkRodk1BO0VBQW1CLDBCQUEwQjtBM0Rvdk03QztBMkRudk1BO0VBQW1CLDJCQUEyQjtBM0R1dk05QztBMkR0dk1BO0VBQW1CLHlCQUF5QjtBM0Qwdk01QztBMkR2dk1FO0VBQ0UsZ0NBQStCO0EzRDB2TW5DO0EyRDN2TUU7RUFDRSxnQ0FBK0I7QTNEOHZNbkM7QTJEL3ZNRTtFQUNFLGdD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QTJCO0U5RHNqTzdEO0U4RHJqT0U7SUFBZ0MsaUNBQWlDO0U5RHdqT25FO0U4RHZqT0U7SUFBZ0MsK0JBQStCO0U5RDBqT2pFO0U4RHpqT0U7SUFBZ0MsNkJBQTZCO0U5RDRqTy9EO0U4RDNqT0U7SUFBZ0MsK0JBQStCO0U5RDhqT2pFO0U4RDdqT0U7SUFBZ0MsOEJBQThCO0U5RGdrT2hFO0FBQ0Y7QStEM21PSTtFQUF3QixzQkFBc0I7QS9EK21PbEQ7QStEOW1PSTtFQUF3Qix1QkFBdUI7QS9Ea25PbkQ7QStEam5PSTtFQUF3QixzQkFBc0I7QS9EcW5PbEQ7QWNqa09JO0VpRHREQTtJQUF3QixzQkFBc0I7RS9ENG5PaEQ7RStEM25PRTtJQUF3Qix1QkFBdUI7RS9EOG5PakQ7RStEN25PRTtJQUF3QixzQkFBc0I7RS9EZ29PaEQ7QUFDRjtBYzdrT0k7RWlEdERBO0lBQXdCLHNCQUFzQjtFL0R3b09oRDtFK0R2b09FO0lBQXdCLHVCQUF1QjtFL0Qwb09qRDtFK0R6b09FO0lBQXdCLHNCQUFzQjtFL0Q0b09oRDtBQUNGO0FjemxPSTtFaUR0REE7SUFBd0Isc0JBQXNCO0UvRG9wT2hEO0UrRG5wT0U7SUFBd0IsdUJBQXVCO0UvRHNwT2pEO0UrRHJwT0U7SUFBd0Isc0JBQXNCO0UvRHdwT2hEO0FBQ0Y7QWNybU9JO0VpRHREQTtJQUF3QixzQkFBc0I7RS9EZ3FPaEQ7RStEL3BPRTtJQUF3Qix1QkFBdUI7RS9Ea3FPakQ7RStEanFPRTtJQUF3QixzQkFBc0I7RS9Eb3FPaEQ7QUFDRjtBZ0UxcU9FO0VBQXNCLHlCQUEyQjtBaEU4cU9uRDtBZ0U5cU9FO0VBQXNCLDJCQUEyQjtBaEVrck9uRDtBaUVqck9FO0VBQXlCLDJCQUE4QjtBakVxck96RDtBaUVyck9FO0VBQXlCLDZCQUE4QjtBakV5ck96RDtBaUV6ck9FO0VBQXlCLDZCQUE4QjtBakU2ck96RDtBaUU3ck9FO0VBQXlCLDBCQUE4QjtBakVpc096RDtBaUVqc09FO0VBQXlCLG1DQUE4QjtFQUE5QiwyQkFBOEI7QWpFcXNPekQ7QWlFaHNPQTtFQUNFLGVB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O0F1RTc2T1E7O0VBRUUsZ0NBQTBDO0F2RWc3T3BEO0F1RTk2T1E7O0VBRUUsOEJBQXNDO0F2RWk3T2hEO0F1RWg4T1E7RUFBZ0MsdUJBQTRCO0F2RW84T3BFO0F1RW44T1E7O0VBRUUsMkJBQW9DO0F2RXM4TzlDO0F1RXA4T1E7O0VBRUUsNkJBQXdDO0F2RXU4T2xEO0F1RXI4T1E7O0VBRUUsOEJBQTBDO0F2RXc4T3BEO0F1RXQ4T1E7O0VBRUUsNEJBQXNDO0F2RXk4T2hEO0F1RXg5T1E7RUFBZ0MscUJBQTRCO0F2RTQ5T3BFO0F1RTM5T1E7O0VBRUUseUJBQW9DO0F2RTg5TzlDO0F1RTU5T1E7O0VBRUUsMkJBQXdDO0F2RSs5T2xEO0F1RTc5T1E7O0VBRUUsNEJBQTBDO0F2RWcrT3BEO0F1RTk5T1E7O0VBRUUsMEJBQXNDO0F2RWkrT2hEO0F1RWgvT1E7RUFBZ0MsMkJBQTRCO0F2RW8vT3BFO0F1RW4vT1E7O0VBRUUsK0JBQW9DO0F2RXMvTzlDO0F1RXAvT1E7O0VBRUUsaUNBQXdDO0F2RXUvT2xEO0F1RXIvT1E7O0VBRUUsa0NBQTBDO0F2RXcvT3BEO0F1RXQvT1E7O0VBRUUsZ0NBQXNDO0F2RXkvT2hEO0F1RXhnUFE7RUFBZ0MsMEJBQTRCO0F2RTRnUHBFO0F1RTNnUFE7O0VBRUUsOEJBQW9DO0F2RThnUDlDO0F1RTVnUFE7O0VBRUUsZ0NBQXdDO0F2RStnUGxEO0F1RTdnUFE7O0VBRUUsaUNBQTBDO0F2RWdoUHBEO0F1RTlnUFE7O0VBRUUsK0JBQXNDO0F2RWloUGhEO0F1RWhpUFE7RUFBZ0Msd0JBQTRCO0F2RW9pUHBFO0F1RW5pUFE7O0VBRUUsNEJBQW9DO0F2RXNpUDlDO0F1RXBpUFE7O0VBRUUsOEJBQXdDO0F2RXVpUGxEO0F1RXJpUFE7O0VBRUUsK0JBQTBDO0F2RXdpUHBEO0F1RXRpUFE7O0VBRUUsNkJBQXNDO0F2RXlpUGhEO0F1RXhqUFE7RUFBZ0MsMEJBQTRCO0F2RTRqUHBFO0F1RTNqUFE7O0VBRUUsOEJBQW9DO0F2RThqUDlDO0F1RTVqUFE7O0VBRUUsZ0NBQXdDO0F2RStqUGxEO0F1RTdqUFE7O0VBRUUsaUNBQTBDO0F2RWdrUHBEO0F1RTlqUFE7O0VBRUUsK0JBQXNDO0F2RWlrUGhEO0F1RWhsUFE7RUFBZ0Msd0JBQTRCO0F2RW9sUHBFO0F1RW5sUFE7O0VBRUUsNEJBQW9DO0F2RXNsUDlDO0F1RXBsUFE7O0VBRUUsOEJBQXdDO0F2RXVsUGxEO0F1RXJsUFE7O0VBRUUsK0JBQTBDO0F2RXdsUHBEO0F1RXRsUFE7O0VBRUUsNkJBQXNDO0F2RXlsUGhEO0F1RWpsUFE7RUFBd0IsMkJBQTJCO0F2RXFsUDNEO0F1RXBsUFE7O0VBRUUsK0JBQStCO0F2RXVsUHpDO0F1RXJsUFE7O0VBRUUsaUNBQWlDO0F2RXdsUDNDO0F1RXRsUFE7O0VBRUUsa0NBQWtDO0F2RXlsUDVDO0F1RXZsUFE7O0VBRUUsZ0NBQWdDO0F2RTBsUDFDO0F1RXptUFE7RUFBd0IsMEJBQTJCO0F2RTZtUDNEO0F1RTVtUFE7O0VBRUUsOEJBQStCO0F2RSttUHpDO0F1RTdtUFE7O0VBRUUsZ0NBQWlDO0F2RWduUDNDO0F1RTltUFE7O0VBRUUsaUNBQWtDO0F2RWluUDVDO0F1RS9tUFE7O0VBRUUsK0JBQWdDO0F2RWtuUDFDO0F1RWpvUFE7RUFBd0Isd0JBQTJCO0F2RXFvUDNEO0F1RXBvUFE7O0VBRUUsNEJBQStCO0F2RXVvUHpDO0F1RXJvUFE7O0VBRUUsOEJBQWlDO0F2RXdvUDNDO0F1RXRvUFE7O0VBRUUsK0JBQWtDO0F2RXlvUDVDO0F1RXZvUFE7O0VBRUUsNkJBQWdDO0F2RTBvUDFDO0F1RXpwUFE7RUFBd0IsMEJBQTJCO0F2RTZwUDNEO0F1RTVwUFE7O0VBRUUsOEJBQStCO0F2RStwUHpDO0F1RTdwUFE7O0VBRUUsZ0NBQWlDO0F2RWdxUDNDO0F1RTlwUFE7O0VBRUUsaUNBQWtDO0F2RWlxUDVDO0F1RS9wUFE7O0VBRUUsK0JBQWdDO0F2RWtxUDFDO0F1RWpyUFE7RUFBd0Isd0JBQTJCO0F2RXFyUDNEO0F1RXByUFE7O0VBRUUsNEJBQStCO0F2RXVyUHpDO0F1RXJyUFE7O0VBRUUsOEJBQWlDO0F2RXdyUDNDO0F1RXRyUFE7O0VBRUUsK0JBQWtDO0F2RXlyUDVDO0F1RXZyUFE7O0VBRUUsNkJBQWdDO0F2RTByUDFDO0F1RXByUEk7RUFBbUIsdUJBQXVCO0F2RXdyUDlDO0F1RXZyUEk7O0VBRUUsMkJBQTJCO0F2RTByUGpDO0F1RXhyUEk7O0VBRUUsNkJBQTZCO0F2RTJyUG5DO0F1RXpyUEk7O0VBRUUsOEJBQThCO0F2RTRyUHBDO0F1RTFyUEk7O0VBRUUsNEJBQTRCO0F2RTZyUGxDO0FjdHNQSTtFeURsREk7SUFBZ0Msb0JBQTRCO0V2RTZ2UGxFO0V1RTV2UE07O0lBRUUsd0JBQW9DO0V2RTh2UDVDO0V1RTV2UE07O0lBRUUsMEJBQXdDO0V2RTh2UGhEO0V1RTV2UE07O0lBRUUsMkJBQTBDO0V2RTh2UGxEO0V1RTV2UE07O0lBRUUseUJBQXNDO0V2RTh2UDlDO0V1RTd3UE07SUFBZ0MsMEJBQTRCO0V2RWd4UGxFO0V1RS93UE07O0lBRUUsOEJBQW9DO0V2RWl4UDVDO0V1RS93UE07O0lBRUUsZ0NBQXdDO0V2RWl4UGhEO0V1RS93UE07O0lBRUUsaUNBQTBDO0V2RWl4UGxEO0V1RS93UE07O0lBRUUsK0JBQXNDO0V2RWl4UDlDO0V1RWh5UE07SUFBZ0MseUJBQTRCO0V2RW15UGxFO0V1RWx5UE07O0lBRUUsNkJBQW9DO0V2RW95UDVDO0V1RWx5UE07O0lBRUUsK0JBQXdDO0V2RW95UGhEO0V1RWx5UE07O0lBRUUsZ0NBQTBDO0V2RW95UGxEO0V1RWx5UE07O0lBRUUsOEJBQXNDO0V2RW95UDlDO0V1RW56UE07SUFBZ0MsdUJBQTRCO0V2RXN6UGxFO0V1RXJ6UE07O0lBRUUsMkJBQW9DO0V2RXV6UDVDO0V1RXJ6UE07O0lBRUUsNkJBQXdDO0V2RXV6UGhEO0V1RXJ6UE07O0lBRUUsOEJBQTBDO0V2RXV6UGxEO0V1RXJ6UE07O0lBRUUsNEJBQXNDO0V2RXV6UDlDO0V1RXQwUE07SUFBZ0MseUJBQTRCO0V2RXkwUGxFO0V1RXgwUE07O0lBRUUsNkJBQW9DO0V2RTAwUDVDO0V1RXgwUE07O0lBRUUsK0JBQXdDO0V2RTAwUGhEO0V1RXgwUE07O0lBRUUsZ0NBQTBDO0V2RTAwUGxEO0V1RXgwUE07O0lBRUUsOEJBQXNDO0V2RTAwUDlDO0V1RXoxUE07SUFBZ0MsdUJBQTRCO0V2RTQxUGxFO0V1RTMxUE07O0lBRUUsMkJBQW9DO0V2RTYxUDVDO0V1RTMxUE07O0lBRUUsNkJBQXdDO0V2RTYxUGhEO0V1RTMxUE07O0lBRUUsOEJBQTBDO0V2RTYxUGxEO0V1RTMxUE07O0lBRUUsNEJBQXNDO0V2RTYxUDlDO0V1RTUyUE07SUFBZ0MscUJBQTRCO0V2RSsyUGxFO0V1RTkyUE07O0lBRUUseUJBQW9DO0V2RWczUDVDO0V1RTkyUE07O0lBRUUsMkJBQXdDO0V2RWczUGhEO0V1RTkyUE07O0lBRUUsNEJBQTBDO0V2RWczUGxEO0V1RTkyUE07O0lBRUUsMEJBQXNDO0V2RWczUDlDO0V1RS8zUE07SUFBZ0MsMkJBQTRCO0V2RWs0UGxFO0V1RWo0UE07O0lBRUUsK0JBQW9DO0V2RW00UDVDO0V1RWo0UE07O0lBRUUsaUNBQXdDO0V2RW00UGhEO0V1RWo0UE07O0lBRUUsa0NBQTBDO0V2RW00UGxEO0V1RWo0UE07O0lBRUUsZ0NBQXNDO0V2RW00UDlDO0V1RWw1UE07SUFBZ0MsMEJBQTRCO0V2RXE1UGxFO0V1RXA1UE07O0lBRUUsOEJBQW9DO0V2RXM1UDVDO0V1RXA1UE07O0lBRUUsZ0NBQXdDO0V2RXM1UGhEO0V1RXA1UE07O0lBRUUsaUNBQTBDO0V2RXM1UGxEO0V1RXA1UE07O0lBRUUsK0JBQXNDO0V2RXM1UDlDO0V1RXI2UE07SUFBZ0Msd0JBQTRCO0V2RXc2UGxFO0V1RXY2UE07O0lBRUUsNEJBQW9DO0V2RXk2UDVDO0V1RXY2UE07O0lBRUUsOEJBQXdDO0V2RXk2UGhEO0V1RXY2UE07O0lBRUUsK0JBQTBDO0V2RXk2UGxEO0V1RXY2UE07O0lBRUUsNkJBQXNDO0V2RXk2UDlDO0V1RXg3UE07SUFBZ0MsMEJBQTRCO0V2RTI3UGxFO0V1RTE3UE07O0lBRUUsOEJBQW9DO0V2RTQ3UDVDO0V1RTE3UE07O0lBRUUsZ0NBQXdDO0V2RTQ3UGhEO0V1RTE3UE07O0lBRUUsaUNBQTBDO0V2RTQ3UGxEO0V1RTE3UE07O0lBRUUsK0JBQXNDO0V2RTQ3UDlDO0V1RTM4UE07SUFBZ0Msd0JBQTRCO0V2RTg4UGxFO0V1RTc4UE07O0lBRUUsNEJBQW9DO0V2RSs4UDVDO0V1RTc4UE07O0lBRUUsOEJBQXdDO0V2RSs4UGhEO0V1RTc4UE07O0lBRUUsK0JBQTBDO0V2RSs4UGxEO0V1RTc4UE07O0lBRUUsNkJBQXNDO0V2RSs4UDlDO0V1RXY4UE07SUFBd0IsMkJBQTJCO0V2RTA4UHpEO0V1RXo4UE07O0lBRUUsK0JBQStCO0V2RTI4UHZDO0V1RXo4UE07O0lBRUUsaUNBQWlDO0V2RTI4UHpDO0V1RXo4UE07O0lBRUUsa0NBQWtDO0V2RTI4UDFDO0V1RXo4UE07O0lBRUUsZ0NBQWdDO0V2RTI4UHhDO0V1RTE5UE07SUFBd0IsMEJBQTJCO0V2RTY5UHpEO0V1RTU5UE07O0lBRUUsOEJBQStCO0V2RTg5UHZDO0V1RTU5UE07O0lBRUUsZ0NBQWlDO0V2RTg5UHpDO0V1RTU5UE07O0lBRUUsaUNBQWtDO0V2RTg5UDFDO0V1RTU5UE07O0lBRUUsK0JBQWdDO0V2RTg5UHhDO0V1RTcrUE07SUFBd0Isd0JBQTJCO0V2RWcvUHpEO0V1RS8rUE07O0lBRUUsNEJBQStCO0V2RWkvUHZDO0V1RS8rUE07O0lBRUUsOEJBQWlDO0V2RWkvUHpDO0V1RS8rUE07O0lBRUUsK0JBQWtDO0V2RWkvUDFDO0V1RS8rUE07O0lBRUUsNkJBQWdDO0V2RWkvUHhDO0V1RWhnUU07SUFBd0IsMEJBQTJCO0V2RW1nUXpEO0V1RWxnUU07O0lBRUUsOEJBQStCO0V2RW9nUXZDO0V1RWxnUU07O0lBRUUsZ0NBQWlDO0V2RW9nUXpDO0V1RWxnUU07O0lBRUUsaUNBQWtDO0V2RW9nUTFDO0V1RWxnUU07O0lBRUUsK0JBQWdDO0V2RW9nUXhDO0V1RW5oUU07SUFBd0Isd0JBQTJCO0V2RXNoUXpEO0V1RXJoUU07O0lBRUUsNEJBQStCO0V2RXVoUXZDO0V1RXJoUU07O0lBRUUsOEJBQWlDO0V2RXVoUXpDO0V1RXJoUU07O0lBRUUsK0JBQWtDO0V2RXVoUTFDO0V1RXJoUU07O0lBRUUsNkJBQWdDO0V2RXVoUXhDO0V1RWpoUUU7SUFBbUIsdUJBQXVCO0V2RW9oUTVDO0V1RW5oUUU7O0lBRUUsMkJBQTJCO0V2RXFoUS9CO0V1RW5oUUU7O0lBRUUsNkJBQTZCO0V2RXFoUWpDO0V1RW5oUUU7O0lBRUUsOEJBQThCO0V2RXFoUWxDO0V1RW5oUUU7O0lBRUUsNEJBQTRCO0V2RXFoUWhDO0FBQ0Y7QWMvaFFJO0V5RGxESTtJQUFnQyxvQkFBNEI7RXZFc2xRbEU7RXVFcmxRTTs7SUFFRSx3QkFBb0M7RXZFdWxRNUM7RXVFcmxRTTs7SUFFRSwwQkFBd0M7RXZFdWxRaEQ7RXVFcmxRTTs7SUFFRSwyQkFBMEM7RXZFdWxRbEQ7RXVFcmxRTTs7SUFFRSx5QkFBc0M7RXZFdWxROUM7RXVFdG1RTTtJQUFnQywwQkFBNEI7RXZFeW1RbEU7RXVFeG1RTTs7SUFFRSw4QkFBb0M7RXZFMG1RNUM7RXVFeG1RTTs7SUFFRSxnQ0FBd0M7RXZFMG1RaEQ7RXVFeG1RTTs7SUFFRSxpQ0FBMEM7RXZFMG1RbEQ7RXVFeG1RTTs7SUFFRSwrQkFBc0M7RXZFMG1ROUM7RXVFem5RTTtJQUFnQyx5QkFBNEI7RXZFNG5RbEU7RXVFM25RTTs7SUFFRSw2QkFBb0M7RXZFNm5RNUM7RXVFM25RTTs7SUFFRSwrQkFBd0M7RXZFNm5RaEQ7RXVFM25RTTs7SUFFRSxnQ0FBMEM7RXZFNm5RbEQ7RXVFM25RTTs7SUFFRSw4QkFBc0M7RXZFNm5ROUM7RXVFNW9RTTtJQUFnQyx1QkFBNEI7RXZFK29RbEU7RXVFOW9RTTs7SUFFRSwyQkFBb0M7RXZFZ3BRNUM7RXVFOW9RTTs7SUFFRSw2QkFBd0M7RXZFZ3BRaEQ7RXVFOW9RTTs7SUFFRSw4QkFBMEM7RXZFZ3BRbEQ7RXVFOW9RTTs7SUFFRSw0QkFBc0M7RXZFZ3BROUM7RXVFL3BRTTtJQUFnQyx5QkFBNEI7RXZFa3FRbEU7RXVFanFRTTs7SUFFRSw2QkFBb0M7RXZFbXFRNUM7RXVFanFRTTs7SUFFRSwrQkFBd0M7RXZFbXFRaEQ7RXVFanFRTTs7SUFFRSxnQ0FBMEM7RXZFbXFRbEQ7RXVFanFRTTs7SUFFRSw4QkFBc0M7RXZFbXFROUM7RXVFbHJRTTtJQUFnQyx1QkFBNEI7RXZFcXJRbEU7RXVFcHJRTTs7SUFFRSwyQkFBb0M7RXZFc3JRNUM7RXVFcHJRTTs7SUFFRSw2QkFBd0M7RXZFc3JRaEQ7RXVFcHJRTTs7SUFFRSw4QkFBMEM7RXZFc3JRbEQ7RXVFcHJRTTs7SUFFRSw0QkFBc0M7RXZFc3JROUM7RXVFcnNRTTtJQUFnQyxxQkFBNEI7RXZFd3NRbEU7RXVFdnNRTTs7SUFFRSx5QkFBb0M7RXZFeXNRNUM7RXVFdnNRTTs7SUFFRSwyQkFBd0M7RXZFeXNRaEQ7RXVFdnNRTTs7SUFFRSw0QkFBMEM7RXZFeXNRbEQ7RXVFdnNRTTs7SUFFRSwwQkFBc0M7RXZFeXNROUM7RXVFeHRRTTtJQUFnQywyQkFBNEI7RXZFMnRRbEU7RXVFMXRRTTs7SUFFRSwrQkFBb0M7RXZFNHRRNUM7RXVFMXRRTTs7SUFFRSxpQ0FBd0M7RXZFNHRRaEQ7RXVFMXRRTTs7SUFFRSxrQ0FBMEM7RXZFNHRRbEQ7RXVFMXRRTTs7SUFFRSxnQ0FBc0M7RXZFNHRROUM7RXVFM3VRTTtJQUFnQywwQkFBNEI7RXZFOHVRbEU7RXVFN3VRTTs7SUFFRSw4QkFBb0M7RXZFK3VRNUM7RXVFN3VRTTs7SUFFRSxnQ0FBd0M7RXZFK3VRaEQ7RXVFN3VRTTs7SUFFRSxpQ0FBMEM7RXZFK3VRbEQ7RXVFN3VRTTs7SUFFRSwrQkFBc0M7RXZFK3VROUM7RXVFOXZRTTtJQUFnQyx3QkFBNEI7RXZFaXdRbEU7RXVFaHdRTTs7SUFFRSw0QkFBb0M7RXZFa3dRNUM7RXVFaHdRTTs7SUFFRSw4QkFBd0M7RXZFa3dRaEQ7RXVFaHdRTTs7SUFFRSwrQkFBMEM7RXZFa3dRbEQ7RXVFaHdRTTs7SUFFRSw2QkFBc0M7RXZFa3dROUM7RXVFanhRTTtJQUFnQywwQkFBNEI7RXZFb3hRbEU7RXVFbnhRTTs7SUFFRSw4QkFBb0M7RXZFcXhRNUM7RXVFbnhRTTs7SUFFRSxnQ0FBd0M7RXZFcXhRaEQ7RXVFbnhRTTs7SUFFRSxpQ0FBMEM7RXZFcXhRbEQ7RXVFbnhRTTs7SUFFRSwrQkFBc0M7RXZFcXhROUM7RXVFcHlRTTtJQUFnQyx3QkFBNEI7RXZFdXlRbEU7RXVFdHlRTTs7SUFFRSw0QkFBb0M7RXZFd3lRNUM7RXVFdHlRTTs7SUFFRSw4QkFBd0M7RXZFd3lRaEQ7RXVFdHlRTTs7SUFFRSwrQkFBMEM7RXZFd3lRbEQ7RXVFdHlRTTs7SUFFRSw2QkFBc0M7RXZFd3lROUM7RXVFaHlRTTtJQUF3QiwyQkFBMkI7RXZFbXlRekQ7RXVFbHlRTTs7SUFFRSwrQkFBK0I7RXZFb3lRdkM7RXVFbHlRTTs7SUFFRSxpQ0FBaUM7RXZFb3lRekM7RXVFbHlRTTs7SUFFRSxrQ0FBa0M7RXZFb3lRMUM7RXVFbHlRTTs7SUFFRSxnQ0FBZ0M7RXZFb3lReEM7RXVFbnpRTTtJQUF3QiwwQkFBMkI7RXZFc3pRekQ7RXVFcnpRTTs7SUFFRSw4QkFBK0I7RXZFdXpRdkM7RXVFcnpRTTs7SUFFRSxnQ0FBaUM7RXZFdXpRekM7RXVFcnpRTTs7SUFFRSxpQ0FBa0M7RXZFdXpRMUM7RXVFcnpRTTs7SUFFRSwrQkFBZ0M7RXZFdXpReEM7RXVFdDBRTTtJQUF3Qix3QkFBMkI7RXZFeTBRekQ7RXVFeDBRTTs7SUFFRSw0QkFBK0I7RXZFMDBRdkM7RXVFeDBRTTs7SUFFRSw4QkFBaUM7RXZFMDBRekM7RXVFeDBRTTs7SUFFRSwrQkFBa0M7RXZFMDBRMUM7RXVFeDBRTTs7SUFFRSw2QkFBZ0M7RXZFMDBReEM7RXVFejFRTTtJQUF3QiwwQkFBMkI7RXZFNDFRekQ7RXVFMzFRTTs7SUFFRSw4QkFBK0I7RXZFNjFRdkM7RXVFMzFRTTs7SUFFRSxnQ0FBaUM7RXZFNjFRekM7RXVFMzFRTTs7SUFFRSxpQ0FBa0M7RXZFNjFRMUM7RXVFMzFRTTs7SUFFRSwrQkFBZ0M7RXZFNjFReEM7RXVFNTJRTTtJQUF3Qix3QkFBMkI7RXZFKzJRekQ7RXVFOTJRTTs7SUFFRSw0QkFBK0I7RXZFZzNRdkM7RXVFOTJRTTs7SUFFRSw4QkFBaUM7RXZFZzNRekM7RXVFOTJRTTs7SUFFRSwrQkFBa0M7RXZFZzNRMUM7RXVFOTJRTTs7SUFFRSw2QkFBZ0M7RXZFZzNReEM7RXVFMTJRRTtJQUFtQix1QkFBdUI7RXZFNjJRNUM7RXVFNTJRRTs7SUFFRSwyQkFBMkI7RXZFODJRL0I7RXVFNTJRRTs7SUFFRSw2QkFBNkI7RXZFODJRakM7RXVFNTJRRTs7SUFFRSw4QkFBOEI7RXZFODJRbEM7RXVFNTJRRTs7SUFFRSw0QkFBNEI7RXZFODJRaEM7QUFDRjtBY3gzUUk7RXlEbERJO0lBQWdDLG9CQUE0QjtFdkUrNlFsRTtFdUU5NlFNOztJQUVFLHdCQUFvQztFdkVnN1E1QztFdUU5NlFNOztJQUVFLDBCQUF3QztFdkVnN1FoRDtFdUU5NlFNOztJQUVFLDJCQUEwQztFdkVnN1FsRDtFdUU5NlFNOztJQUVFLHlCQUFzQztFdkVnN1E5QztFdUUvN1FNO0lBQWdDLDBCQUE0QjtFdkVrOFFsRTtFdUVqOFFNOztJQUVFLDhCQUFvQztFdkVtOFE1QztFdUVqOFFNOztJQUVFLGdDQUF3QztFdkVtOFFoRDtFdUVqOFFNOztJQUVFLGlDQUEwQztFdkVtOFFsRDtFdUVqOFFNOztJQUVFLCtCQUFzQztFdkVtOFE5QztFdUVsOVFNO0lBQWdDLHlCQUE0QjtFdkVxOVFsRTtFdUVwOVFNOztJQUVFLDZCQUFvQztFdkVzOVE1QztFdUVwOVFNOztJQUVFLCtCQUF3QztFdkVzOVFoRDtFdUVwOVFNOztJQUVFLGdDQUEwQztFdkVzOVFsRDtFdUVwOVFNOztJQUVFLDhCQUFzQztFdkVzOVE5QztFdUVyK1FNO0lBQWdDLHVCQUE0QjtFdkV3K1FsRTtFdUV2K1FNOztJQUVFLDJCQUFvQztFdkV5K1E1QztFdUV2K1FNOztJQUVFLDZCQUF3QztFdkV5K1FoRDtFdUV2K1FNOztJQUVFLDhCQUEwQztFdkV5K1FsRDtFdUV2K1FNOztJQUVFLDRCQUFzQztFdkV5K1E5QztFdUV4L1FNO0lBQWdDLHlCQUE0QjtFdkUyL1FsRTtFdUUxL1FNOztJQUVFLDZCQUFvQztFdkU0L1E1QztFdUUxL1FNOztJQUVFLCtCQUF3QztFdkU0L1FoRDtFdUUxL1FNOztJQUVFLGdDQUEwQztFdkU0L1FsRDtFdUUxL1FNOztJQUVFLDhCQUFzQztFdkU0L1E5QztFdUUzZ1JNO0lBQWdDLHVCQUE0QjtFdkU4Z1JsRTtFdUU3Z1JNOztJQUVFLDJCQUFvQztFdkUrZ1I1QztFdUU3Z1JNOztJQUVFLDZCQUF3QztFdkUrZ1JoRDtFdUU3Z1JNOztJQUVFLDhCQUEwQztFdkUrZ1JsRDtFdUU3Z1JNOztJQUVFLDRCQUFzQztFdkUrZ1I5QztFdUU5aFJNO0lBQWdDLHFCQUE0QjtFdkVpaVJsRTtFdUVoaVJNOztJQUVFLHlCQUFvQztFdkVraVI1QztFdUVoaVJNOztJQUVFLDJCQUF3QztFdkVraVJoRDtFdUVoaVJNOztJQUVFLDRCQUEwQztFdkVraVJsRDtFdUVoaVJNOztJQUVFLDBCQUFzQztFdkVraVI5QztFdUVqalJNO0lBQWdDLDJCQUE0QjtFdkVvalJsRTtFdUVualJNOztJQUVFLCtCQUFvQztFdkVxalI1QztFdUVualJNOztJQUVFLGlDQUF3QztFdkVxalJoRDtFdUVualJNOztJQUVFLGtDQUEwQztFdkVxalJsRDtFdUVualJNOztJQUVFLGdDQUFzQztFdkVxalI5QztFdUVwa1JNO0lBQWdDLDBCQUE0QjtFdkV1a1JsRTtFdUV0a1JNOztJQUVFLDhCQUFvQztFdkV3a1I1QztFdUV0a1JNOztJQUVFLGdDQUF3QztFdkV3a1JoRDtFdUV0a1JNOztJQUVFLGlDQUEwQztFdkV3a1JsRDtFdUV0a1JNOztJQUVFLCtCQUFzQztFdkV3a1I5QztFdUV2bFJNO0lBQWdDLHdCQUE0QjtFdkUwbFJsRTtFdUV6bFJNOztJQUVFLDRCQUFvQztFdkUybFI1QztFdUV6bFJNOztJQUVFLDhCQUF3QztFdkUybFJoRDtFdUV6bFJNOztJQUVFLCtCQUEwQztFdkUybFJsRDtFdUV6bFJNOztJQUVFLDZCQUFzQztFdkUybFI5QztFdUUxbVJNO0lBQWdDLDBCQUE0QjtFdkU2bVJsRTtFdUU1bVJNOztJQUVFLDhCQUFvQztFdkU4bVI1QztFdUU1bVJNOztJQUVFLGdDQUF3QztFdkU4bVJoRDtFdUU1bVJNOztJQUVFLGlDQUEwQztFdkU4bVJsRDtFdUU1bVJNOztJQUVFLCtCQUFzQztFdkU4bVI5QztFdUU3blJNO0lBQWdDLHdCQUE0QjtFdkVnb1JsRTtFdUUvblJNOztJQUVFLDRCQUFvQztFdkVpb1I1QztFdUUvblJNOztJQUVFLDhCQUF3QztFdkVpb1JoRDtFdUUvblJNOztJQUVFLCtCQUEwQztFdkVpb1JsRDtFdUUvblJNOztJQUVFLDZCQUFzQztFdkVpb1I5QztFdUV6blJNO0lBQXdCLDJCQUEyQjtFdkU0blJ6RDtFdUUzblJNOztJQUVFLCtCQUErQjtFdkU2blJ2QztFdUUzblJNOztJQUVFLGlDQUFpQztFdkU2blJ6QztFdUUzblJNOztJQUVFLGtDQUFrQztFdkU2blIxQztFdUUzblJNOztJQUVFLGdDQUFnQztFdkU2blJ4QztFdUU1b1JNO0lBQXdCLDBCQUEyQjtFdkUrb1J6RDtFdUU5b1JNOztJQUVFLDhCQUErQjtFdkVncFJ2QztFdUU5b1JNOztJQUVFLGdDQUFpQztFdkVncFJ6QztFdUU5b1JNOztJQUVFLGlDQUFrQztFdkVncFIxQztFdUU5b1JNOztJQUVFLCtCQUFnQztFdkVncFJ4QztFdUUvcFJNO0lBQXdCLHdCQUEyQjtFdkVrcVJ6RDtFdUVqcVJNOztJQUVFLDRCQUErQjtFdkVtcVJ2QztFdUVqcVJNOztJQUVFLDhCQUFpQztFdkVtcVJ6QztFdUVqcVJNOztJQUVFLCtCQUFrQztFdkVtcVIxQztFdUVqcVJNOztJQUVFLDZCQUFnQztFdkVtcVJ4QztFdUVsclJNO0lBQXdCLDBCQUEyQjtFdkVxclJ6RDtFdUVwclJNOztJQUVFLDhCQUErQjtFdkVzclJ2QztFdUVwclJNOztJQUVFLGdDQUFpQztFdkVzclJ6QztFdUVwclJNOztJQUVFLGlDQUFrQztFdkVzclIxQztFdUVwclJNOztJQUVFLCtCQUFnQztFdkVzclJ4QztFdUVyc1JNO0lBQXdCLHdCQUEyQjtFdkV3c1J6RDtFdUV2c1JNOztJQUVFLDRCQUErQjtFdkV5c1J2QztFdUV2c1JNOztJQUVFLDhCQUFpQztFdkV5c1J6QztFdUV2c1JNOztJQUVFLCtCQUFrQztFdkV5c1IxQztFdUV2c1JNOztJQUVFLDZCQUFnQztFdkV5c1J4QztFdUVuc1JFO0lBQW1CLHVCQUF1QjtFdkVzc1I1QztFdUVyc1JFOztJQUVFLDJCQUEyQjtFdkV1c1IvQjtFdUVyc1JFOztJQUVFLDZCQUE2QjtFdkV1c1JqQztFdUVyc1JFOztJQUVFLDhCQUE4QjtFdkV1c1JsQztFdUVyc1JFOztJQUVFLDRCQUE0QjtFdkV1c1JoQztBQUNGO0FjanRSSTtFeURsREk7SUFBZ0Msb0JBQTRCO0V2RXd3UmxFO0V1RXZ3Uk07O0lBRUUsd0JBQW9DO0V2RXl3UjVDO0V1RXZ3Uk07O0lBRUUsMEJBQXdDO0V2RXl3UmhEO0V1RXZ3Uk07O0lBRUUsMkJBQTBDO0V2RXl3UmxEO0V1RXZ3Uk07O0lBRUUseUJBQXNDO0V2RXl3UjlDO0V1RXh4Uk07SUFBZ0MsMEJBQTRCO0V2RTJ4UmxFO0V1RTF4Uk07O0lBRUUsOEJBQW9DO0V2RTR4UjVDO0V1RTF4Uk07O0lBRUUsZ0NBQXdDO0V2RTR4UmhEO0V1RTF4Uk07O0lBRUUsaUNBQTBDO0V2RTR4UmxEO0V1RTF4Uk07O0lBRUUsK0JBQXNDO0V2RTR4UjlDO0V1RTN5Uk07SUFBZ0MseUJBQTRCO0V2RTh5UmxFO0V1RTd5Uk07O0lBRUUsNkJBQW9DO0V2RSt5UjVDO0V1RTd5Uk07O0lBRUUsK0JBQXdDO0V2RSt5UmhEO0V1RTd5Uk07O0lBRUUsZ0NBQTBDO0V2RSt5UmxEO0V1RTd5Uk07O0lBRUUsOEJBQXNDO0V2RSt5UjlDO0V1RTl6Uk07SUFBZ0MsdUJBQTRCO0V2RWkwUmxFO0V1RWgwUk07O0lBRUUsMkJBQW9DO0V2RWswUjVDO0V1RWgwUk07O0lBRUUsNkJBQXdDO0V2RWswUmhEO0V1RWgwUk07O0lBRUUsOEJBQTBDO0V2RWswUmxEO0V1RWgwUk07O0lBRUUsNEJBQXNDO0V2RWswUjlDO0V1RWoxUk07SUFBZ0MseUJBQTRCO0V2RW8xUmxFO0V1RW4xUk07O0lBRUUsNkJBQW9DO0V2RXExUjVDO0V1RW4xUk07O0lBRUUsK0JBQXdDO0V2RXExUmhEO0V1RW4xUk07O0lBRUUsZ0NBQTBDO0V2RXExUmxEO0V1RW4xUk07O0lBRUUsOEJBQXNDO0V2RXExUjlDO0V1RXAyUk07SUFBZ0MsdUJBQTRCO0V2RXUyUmxFO0V1RXQyUk07O0lBRUUsMkJBQW9DO0V2RXcyUjVDO0V1RXQyUk07O0lBRUUsNkJBQXdDO0V2RXcyUmhEO0V1RXQyUk07O0lBRUUsOEJBQTBDO0V2RXcyUmxEO0V1RXQyUk07O0lBRUUsNEJBQXNDO0V2RXcyUjlDO0V1RXYzUk07SUFBZ0MscUJBQTRCO0V2RTAzUmxFO0V1RXozUk07O0lBRUUseUJBQW9DO0V2RTIzUjVDO0V1RXozUk07O0lBRUUsMkJBQXdDO0V2RTIzUmhEO0V1RXozUk07O0lBRUUsNEJBQTBDO0V2RTIzUmxEO0V1RXozUk07O0lBRUUsMEJBQXNDO0V2RTIzUjlDO0V1RTE0Uk07SUFBZ0MsMkJBQTRCO0V2RTY0UmxFO0V1RTU0Uk07O0lBRUUsK0JBQW9DO0V2RTg0UjVDO0V1RTU0Uk07O0lBRUUsaUNBQXdDO0V2RTg0UmhEO0V1RTU0Uk07O0lBRUUsa0NBQTBDO0V2RTg0UmxEO0V1RTU0Uk07O0lBRUUsZ0NBQXNDO0V2RTg0UjlDO0V1RTc1Uk07SUFBZ0MsMEJBQTRCO0V2RWc2UmxFO0V1RS81Uk07O0lBRUUsOEJBQW9DO0V2RWk2UjVDO0V1RS81Uk07O0lBRUUsZ0NBQXdDO0V2RWk2UmhEO0V1RS81Uk07O0lBRUUsaUNBQTBDO0V2RWk2UmxEO0V1RS81Uk07O0lBRUUsK0JBQXNDO0V2RWk2UjlDO0V1RWg3Uk07SUFBZ0Msd0JBQTRCO0V2RW03UmxFO0V1RWw3Uk07O0lBRUUsNEJBQW9DO0V2RW83UjVDO0V1RWw3Uk07O0lBRUUsOEJBQXdDO0V2RW83UmhEO0V1RWw3Uk07O0lBRUUsK0JBQTBDO0V2RW83UmxEO0V1RWw3Uk07O0lBRUUsNkJBQXNDO0V2RW83UjlDO0V1RW44Uk07SUFBZ0MsMEJBQTRCO0V2RXM4UmxFO0V1RXI4Uk07O0lBRUUsOEJBQW9DO0V2RXU4UjVDO0V1RXI4Uk07O0lBRUUsZ0NBQXdDO0V2RXU4UmhEO0V1RXI4Uk07O0lBRUUsaUNBQTBDO0V2RXU4UmxEO0V1RXI4Uk07O0lBRUUsK0JBQXNDO0V2RXU4UjlDO0V1RXQ5Uk07SUFBZ0Msd0JBQTRCO0V2RXk5UmxFO0V1RXg5Uk07O0lBRUUsNEJBQW9DO0V2RTA5UjVDO0V1RXg5Uk07O0lBRUUsOEJBQXdDO0V2RTA5UmhEO0V1RXg5Uk07O0lBRUUsK0JBQTBDO0V2RTA5UmxEO0V1RXg5Uk07O0lBRUUsNkJBQXNDO0V2RTA5UjlDO0V1RWw5Uk07SUFBd0IsMkJBQTJCO0V2RXE5UnpEO0V1RXA5Uk07O0lBRUUsK0JBQStCO0V2RXM5UnZDO0V1RXA5Uk07O0lBRUUsaUNBQWlDO0V2RXM5UnpDO0V1RXA5Uk07O0lBRUUsa0NBQWtDO0V2RXM5UjFDO0V1RXA5Uk07O0lBRUUsZ0NBQWdDO0V2RXM5UnhDO0V1RXIrUk07SUFBd0IsMEJBQTJCO0V2RXcrUnpEO0V1RXYrUk07O0lBRUUsOEJBQStCO0V2RXkrUnZDO0V1RXYrUk07O0lBRUUsZ0NBQWlDO0V2RXkrUnpDO0V1RXYrUk07O0lBRUUsaUNBQWtDO0V2RXkrUjFDO0V1RXYrUk07O0lBRUUsK0JBQWdDO0V2RXkrUnhDO0V1RXgvUk07SUFBd0Isd0JBQTJCO0V2RTIvUnpEO0V1RTEvUk07O0lBRUUsNEJBQStCO0V2RTQvUnZDO0V1RTEvUk07O0lBRUUsOEJBQWlDO0V2RTQvUnpDO0V1RTEvUk07O0lBRUUsK0JBQWtDO0V2RTQvUjFDO0V1RTEvUk07O0lBRUUsNkJBQWdDO0V2RTQvUnhDO0V1RTNnU007SUFBd0IsMEJBQTJCO0V2RThnU3pEO0V1RTdnU007O0lBRUUsOEJBQStCO0V2RStnU3ZDO0V1RTdnU007O0lBRUUsZ0NBQWlDO0V2RStnU3pDO0V1RTdnU007O0lBRUUsaUNBQWtDO0V2RStnUzFDO0V1RTdnU007O0lBRUUsK0JBQWdDO0V2RStnU3hDO0V1RTloU007SUFBd0Isd0JBQTJCO0V2RWlpU3pEO0V1RWhpU007O0lBRUUsNEJBQStCO0V2RWtpU3ZDO0V1RWhpU007O0lBRUUsOEJBQWlDO0V2RWtpU3pDO0V1RWhpU007O0lBRUUsK0JBQWtDO0V2RWtpUzFDO0V1RWhpU007O0lBRUUsNkJBQWdDO0V2RWtpU3hDO0V1RTVoU0U7SUFBbUIsdUJBQXVCO0V2RStoUzVDO0V1RTloU0U7O0lBRUUsMkJBQTJCO0V2RWdpUy9CO0V1RTloU0U7O0lBRUUsNkJBQTZCO0V2RWdpU2pDO0V1RTloU0U7O0lBRUUsOEJBQThCO0V2RWdpU2xDO0V1RTloU0U7O0lBRUUsNEJBQTRCO0V2RWdpU2hDO0FBQ0Y7QXdFaG1TQTtFQUFrQiw0R0FBOEM7QXhFb21TaEU7QXdFaG1TQTtFQUFpQiw4QkFBOEI7QXhFb21TL0M7QXdFbm1TQTtFQUFpQiw4QkFBOEI7QXhFdW1TL0M7QXdFdG1TQTtFQUFpQiw4QkFBOEI7QXhFMG1TL0M7QXdFem1TQTtFQ1RFLGdCQUFnQjtFQUNoQix1QkFBdUI7RUFDdkIsbUJBQW1CO0F6RXNuU3JCO0F3RXZtU0k7RUFBd0IsMkJBQTJCO0F4RTJtU3ZEO0F3RTFtU0k7RUFBd0IsNEJBQTRCO0F4RThtU3hEO0F3RTdtU0k7RUFBd0IsNkJBQTZCO0F4RWluU3pEO0FjNWtTSTtFMER2Q0E7SUFBd0IsMkJBQTJCO0V4RXduU3JEO0V3RXZuU0U7SUFBd0IsNEJBQTRCO0V4RTBuU3REO0V3RXpuU0U7SUFBd0IsNkJBQTZCO0V4RTRuU3ZEO0FBQ0Y7QWN4bFNJO0UwRHZDQTtJQUF3QiwyQkFBMkI7RXhFb29TckQ7RXdFbm9TRTtJQUF3Qiw0QkFBNEI7RXhFc29TdEQ7RXdFcm9TRTtJQUF3Qiw2QkFBNkI7RXhFd29TdkQ7QUFDRjtBY3BtU0k7RTBEdkNBO0lBQXdCLDJCQUEyQjtFeEVncFNyRDtFd0Uvb1NFO0lBQXdCLDRCQUE0QjtFeEVrcFN0RDtFd0VqcFNFO0lBQXdCLDZCQUE2QjtFeEVvcFN2RDtBQUNGO0FjaG5TSTtFMER2Q0E7SUFBd0IsMkJBQTJCO0V4RTRwU3JEO0V3RTNwU0U7SUFBd0IsNEJBQTRCO0V4RThwU3REO0V3RTdwU0U7SUFBd0IsNkJBQTZCO0V4RWdxU3ZEO0FBQ0Y7QXdFM3BTQTtFQUFtQixvQ0FBb0M7QXhFK3BTdkQ7QXdFOXBTQTtFQUFtQixvQ0FBb0M7QXhFa3FTdkQ7QXdFanFTQTtFQUFtQixxQ0FBcUM7QXhFcXFTeEQ7QXdFanFTQTtFQUF1QiwyQkFBMEM7QXhFcXFTakU7QXdFcHFTQTtFQUF1QiwrQkFBNEM7QXhFd3FTbkU7QXdFdnFTQTtFQUF1QiwyQkFBMkM7QXhFMnFTbEU7QXdFMXFTQTtFQUF1QiwyQkFBeUM7QXhFOHFTaEU7QXdFN3FTQTtFQUF1Qiw4QkFBMkM7QXhFaXJTbEU7QXdFaHJTQTtFQUF1Qiw2QkFBNkI7QXhFb3JTcEQ7QXdFaHJTQTtFQUFjLHNCQUF3QjtBeEVvclN0QztBMEUzdFNFO0VBQ0UseUJBQXdCO0ExRTh0UzVCO0FLcHRTRTtFcUVMTSx5QkFBMEU7QTFFNnRTbEY7QTBFbnVTRTtFQUNFLHlCQUF3QjtBMUVzdVM1QjtBSzV0U0U7RXFFTE0seUJBQTBFO0ExRXF1U2xGO0EwRTN1U0U7RUFDRSx5QkFBd0I7QTFFOHVTNUI7QUtwdVNFO0VxRUxNLHlCQUEwRTtBMUU2dVNsRjtBMEVudlNFO0VBQ0UseUJBQXdCO0ExRXN2UzVCO0FLNXVTRTtFcUVMTSx5QkFBMEU7QTFFcXZTbEY7QTBFM3ZTRTtFQUNFLHlCQUF3QjtBMUU4dlM1QjtBS3B2U0U7RXFFTE0seUJBQTBFO0ExRTZ2U2xGO0EwRW53U0U7RUFDRSx5QkFBd0I7QTFFc3dTNUI7QUs1dlNFO0VxRUxNLHlCQUEwRTtBMUVxd1NsRjtBMEUzd1NFO0VBQ0UseUJBQXdCO0ExRTh3UzVCO0FLcHdTRTtFcUVMTSx5QkFBMEU7QTFFNndTbEY7QTBFbnhTRTtFQUNFLHlCQUF3QjtBMUVzeFM1QjtBSzV3U0U7RXFFTE0seUJBQTBFO0ExRXF4U2xGO0F3RTl1U0E7RUFBYSx5QkFBNkI7QXhFa3ZTMUM7QXdFanZTQTtFQUFjLHlCQUE2QjtBeEVxdlMzQztBd0VudlNBO0VBQWlCLG9DQUFrQztBeEV1dlNuRDtBd0V0dlNBO0VBQWlCLDBDQUFrQztBeEUwdlNuRDtBd0V0dlNBO0VHdkRFLFdBQVc7RUFDWCxrQkFBa0I7RUFDbEIsaUJBQWlCO0VBQ2pCLDZCQUE2QjtFQUM3QixTQUFTO0EzRWl6U1g7QXdFMXZTQTtFQUF3QixnQ0FBZ0M7QXhFOHZTeEQ7QXdFNXZTQTtFQUNFLGlDQUFpQztFQUNqQyxvQ0FBb0M7QXhFK3ZTdEM7QXdFMXZTQTtFQUFjLHlCQUF5QjtBeEU4dlN2QztBNEUvelNBO0VBQ0UsOEJBQThCO0E1RWswU2hDO0E0RS96U0E7RUFDRSw2QkFBNkI7QTVFazBTL0I7QTZFbDBTRTtFM0VPRjs7O0kyRURNLDRCQUE0QjtJQUU1QiwyQkFBMkI7RTdFazBTL0I7RTZFL3pTRTtJQUVJLDBCQUEwQjtFN0VnMFNoQztFNkV2elNFO0lBQ0UsNkJBQTZCO0U3RXl6U2pDO0VFM25TRjtJMkUvS00sZ0NBQWdDO0U3RTZ5U3BDO0U2RTN5U0U7O0lBRUUseUIxRXpDWTtJMEUwQ1osd0JBQXdCO0U3RTZ5UzVCO0U2RXJ5U0U7SUFDRSwyQkFBMkI7RTdFdXlTL0I7RTZFcHlTRTs7SUFFRSx3QkFBd0I7RTdFc3lTNUI7RTZFbnlTRTs7O0lBR0UsVUFBVTtJQUNWLFNBQVM7RTdFcXlTYjtFNkVseVNFOztJQUVFLHVCQUF1QjtFN0VveVMzQjtFNkU1eFNFO0lBQ0UsUTFFNGhDZ0M7RUhrd1FwQztFRTEwU0Y7STJFK0NNLDJCQUEyQztFN0U4eFMvQztFWXAzU0E7SWlFeUZJLDJCQUEyQztFN0U4eFMvQztFaUM1MlNGO0k0Q21GTSxhQUFhO0U3RTR4U2pCO0VzQzMzU0Y7SXVDa0dNLHNCMUV0RlM7RUhrM1NiO0VnQi8zU0Y7STZEdUdNLG9DQUFvQztFN0UyeFN4QztFNkU1eFNFOztJQUtJLGlDQUFtQztFN0UyeFN6QztFZ0I5MVNGOztJNkQwRVEsb0NBQXNDO0U3RXd4UzVDO0VnQjd3U0Y7STZETk0sY0FBYztFN0VzeFNsQjtFaUI1NFNBOzs7O0k0RDRITSxxQjFFdkhVO0VINjRTaEI7RWdCeHlTRjtJNkR1Qk0sY0FBYztJQUNkLHFCMUU3SFk7RUhpNVNoQjtBQUNGO0FBbWxCQSx3Q0FBd0MiLCJmaWxlIjoibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9kaXN0L2Nzcy9ib290c3RyYXAuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBCb290c3RyYXAgdjQuNC4xIChodHRwczovL2dldGJvb3RzdHJhcC5jb20vKVxuICogQ29weXJpZ2h0IDIwMTEtMjAxOSBUaGUgQm9vdHN0cmFwIEF1dGhvcnNcbiAqIENvcHlyaWdodCAyMDExLTIwMTkgVHdpdHRlciwgSW5jLlxuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcbiAqL1xuXG5AaW1wb3J0IFwiZnVuY3Rpb25zXCI7XG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XG5AaW1wb3J0IFwibWl4aW5zXCI7XG5AaW1wb3J0IFwicm9vdFwiO1xuQGltcG9ydCBcInJlYm9vdFwiO1xuQGltcG9ydCBcInR5cGVcIjtcbkBpbXBvcnQgXCJpbWFnZXNcIjtcbkBpbXBvcnQgXCJjb2RlXCI7XG5AaW1wb3J0IFwiZ3JpZFwiO1xuQGltcG9ydCBcInRhYmxlc1wiO1xuQGltcG9ydCBcImZvcm1zXCI7XG5AaW1wb3J0IFwiYnV0dG9uc1wiO1xuQGltcG9ydCBcInRyYW5zaXRpb25zXCI7XG5AaW1wb3J0IFwiZHJvcGRvd25cIjtcbkBpbXBvcnQgXCJidXR0b24tZ3JvdXBcIjtcbkBpbXBvcnQgXCJpbnB1dC1ncm91cFwiO1xuQGltcG9ydCBcImN1c3RvbS1mb3Jtc1wiO1xuQGltcG9ydCBcIm5hdlwiO1xuQGltcG9ydCBcIm5hdmJhclwiO1xuQGltcG9ydCBcImNhcmRcIjtcbkBpbXBvcnQgXCJicmVhZGNydW1iXCI7XG5AaW1wb3J0IFwicGFnaW5hdGlvblwiO1xuQGltcG9ydCBcImJhZGdlXCI7XG5AaW1wb3J0IFwianVtYm90cm9uXCI7XG5AaW1wb3J0IFwiYWxlcnRcIjtcbkBpbXBvcnQgXCJwcm9ncmVzc1wiO1xuQGltcG9ydCBcIm1lZGlhXCI7XG5AaW1wb3J0IFwibGlzdC1ncm91cFwiO1xuQGltcG9ydCBcImNsb3NlXCI7XG5AaW1wb3J0IFwidG9hc3RzXCI7XG5AaW1wb3J0IFwibW9kYWxcIjtcbkBpbXBvcnQgXCJ0b29sdGlwXCI7XG5AaW1wb3J0IFwicG9wb3ZlclwiO1xuQGltcG9ydCBcImNhcm91c2VsXCI7XG5AaW1wb3J0IFwic3Bpbm5lcnNcIjtcbkBpbXBvcnQgXCJ1dGlsaXRpZXNcIjtcbkBpbXBvcnQgXCJwcmludFwiO1xuIiwiLyohXG4gKiBCb290c3RyYXAgdjQuNC4xIChodHRwczovL2dldGJvb3RzdHJhcC5jb20vKVxuICogQ29weXJpZ2h0IDIwMTEtMjAxOSBUaGUgQm9vdHN0cmFwIEF1dGhvcnNcbiAqIENvcHlyaWdodCAyMDExLTIwMTkgVHdpdHRlciwgSW5jLlxuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcbiAqL1xuOnJvb3Qge1xuICAtLWJsdWU6ICMwMDdiZmY7XG4gIC0taW5kaWdvOiAjNjYxMGYyO1xuICAtLXB1cnBsZTogIzZmNDJjMTtcbiAgLS1waW5rOiAjZTgzZThjO1xuICAtLXJlZDogI2RjMzU0NTtcbiAgLS1vcmFuZ2U6ICNmZDdlMTQ7XG4gIC0teWVsbG93OiAjZmZjMTA3O1xuICAtLWdyZWVuOiAjMjhhNzQ1O1xuICAtLXRlYWw6ICMyMGM5OTc7XG4gIC0tY3lhbjogIzE3YTJiODtcbiAgLS13aGl0ZTogI2ZmZjtcbiAgLS1ncmF5OiAjNmM3NTdkO1xuICAtLWdyYXktZGFyazogIzM0M2E0MDtcbiAgLS1wcmltYXJ5OiAjMDA3YmZmO1xuICAtLXNlY29uZGFyeTogIzZjNzU3ZDtcbiAgLS1zdWNjZXNzOiAjMjhhNzQ1O1xuICAtLWluZm86ICMxN2EyYjg7XG4gIC0td2FybmluZzogI2ZmYzEwNztcbiAgLS1kYW5nZXI6ICNkYzM1NDU7XG4gIC0tbGlnaHQ6ICNmOGY5ZmE7XG4gIC0tZGFyazogIzM0M2E0MDtcbiAgLS1icmVha3BvaW50LXhzOiAwO1xuICAtLWJyZWFrcG9pbnQtc206IDU3NnB4O1xuICAtLWJyZWFrcG9pbnQtbWQ6IDc2OHB4O1xuICAtLWJyZWFrcG9pbnQtbGc6IDk5MnB4O1xuICAtLWJyZWFrcG9pbnQteGw6IDEyMDBweDtcbiAgLS1mb250LWZhbWlseS1zYW5zLXNlcmlmOiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBcIk5vdG8gU2Fuc1wiLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJTZWdvZSBVSSBTeW1ib2xcIiwgXCJOb3RvIENvbG9yIEVtb2ppXCI7XG4gIC0tZm9udC1mYW1pbHktbW9ub3NwYWNlOiBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiQ291cmllciBOZXdcIiwgbW9ub3NwYWNlO1xufVxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcbn1cblxuYXJ0aWNsZSwgYXNpZGUsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbmF2LCBzZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBcIk5vdG8gU2Fuc1wiLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJTZWdvZSBVSSBTeW1ib2xcIiwgXCJOb3RvIENvbG9yIEVtb2ppXCI7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cblt0YWJpbmRleD1cIi0xXCJdOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICBvdXRsaW5lOiAwICFpbXBvcnRhbnQ7XG59XG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIGhlaWdodDogMDtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG5cbnAge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG5hYmJyW3RpdGxlXSxcbmFiYnJbZGF0YS1vcmlnaW5hbC10aXRsZV0ge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICBjdXJzb3I6IGhlbHA7XG4gIGJvcmRlci1ib3R0b206IDA7XG4gIHRleHQtZGVjb3JhdGlvbi1za2lwLWluazogbm9uZTtcbn1cblxuYWRkcmVzcyB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG59XG5cbm9sLFxudWwsXG5kbCB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbm9sIG9sLFxudWwgdWwsXG5vbCB1bCxcbnVsIG9sIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuZHQge1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG5kZCB7XG4gIG1hcmdpbi1ib3R0b206IC41cmVtO1xuICBtYXJnaW4tbGVmdDogMDtcbn1cblxuYmxvY2txdW90ZSB7XG4gIG1hcmdpbjogMCAwIDFyZW07XG59XG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZGVyO1xufVxuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG5zdWIsXG5zdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIge1xuICBib3R0b206IC0uMjVlbTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtLjVlbTtcbn1cblxuYSB7XG4gIGNvbG9yOiAjMDA3YmZmO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG5hOmhvdmVyIHtcbiAgY29sb3I6ICMwMDU2YjM7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG5hOm5vdChbaHJlZl0pIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuYTpub3QoW2hyZWZdKTpob3ZlciB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbnByZSxcbmNvZGUsXG5rYmQsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgXCJMaWJlcmF0aW9uIE1vbm9cIiwgXCJDb3VyaWVyIE5ld1wiLCBtb25vc3BhY2U7XG4gIGZvbnQtc2l6ZTogMWVtO1xufVxuXG5wcmUge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuZmlndXJlIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuaW1nIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG5zdmcge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG59XG5cbmNhcHRpb24ge1xuICBwYWRkaW5nLXRvcDogMC43NXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDAuNzVyZW07XG4gIGNvbG9yOiAjNmM3NTdkO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBjYXB0aW9uLXNpZGU6IGJvdHRvbTtcbn1cblxudGgge1xuICB0ZXh0LWFsaWduOiBpbmhlcml0O1xufVxuXG5sYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuXG5idXR0b24ge1xuICBib3JkZXItcmFkaXVzOiAwO1xufVxuXG5idXR0b246Zm9jdXMge1xuICBvdXRsaW5lOiAxcHggZG90dGVkO1xuICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbmlucHV0LFxuYnV0dG9uLFxuc2VsZWN0LFxub3B0Z3JvdXAsXG50ZXh0YXJlYSB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG59XG5cbmJ1dHRvbixcbmlucHV0IHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG5zZWxlY3Qge1xuICB3b3JkLXdyYXA6IG5vcm1hbDtcbn1cblxuYnV0dG9uLFxuW3R5cGU9XCJidXR0b25cIl0sXG5bdHlwZT1cInJlc2V0XCJdLFxuW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbn1cblxuYnV0dG9uOm5vdCg6ZGlzYWJsZWQpLFxuW3R5cGU9XCJidXR0b25cIl06bm90KDpkaXNhYmxlZCksXG5bdHlwZT1cInJlc2V0XCJdOm5vdCg6ZGlzYWJsZWQpLFxuW3R5cGU9XCJzdWJtaXRcIl06bm90KDpkaXNhYmxlZCkge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0sXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAwO1xufVxuXG5pbnB1dFt0eXBlPVwiZGF0ZVwiXSxcbmlucHV0W3R5cGU9XCJ0aW1lXCJdLFxuaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdLFxuaW5wdXRbdHlwZT1cIm1vbnRoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBsaXN0Ym94O1xufVxuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICByZXNpemU6IHZlcnRpY2FsO1xufVxuXG5maWVsZHNldCB7XG4gIG1pbi13aWR0aDogMDtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBib3JkZXI6IDA7XG59XG5cbmxlZ2VuZCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICBjb2xvcjogaW5oZXJpdDtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICBmb250OiBpbmhlcml0O1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbn1cblxub3V0cHV0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogbGlzdC1pdGVtO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsXG4uaDEsIC5oMiwgLmgzLCAuaDQsIC5oNSwgLmg2IHtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG5oMSwgLmgxIHtcbiAgZm9udC1zaXplOiAyLjVyZW07XG59XG5cbmgyLCAuaDIge1xuICBmb250LXNpemU6IDJyZW07XG59XG5cbmgzLCAuaDMge1xuICBmb250LXNpemU6IDEuNzVyZW07XG59XG5cbmg0LCAuaDQge1xuICBmb250LXNpemU6IDEuNXJlbTtcbn1cblxuaDUsIC5oNSB7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbn1cblxuaDYsIC5oNiB7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbn1cblxuLmxlYWQge1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG59XG5cbi5kaXNwbGF5LTEge1xuICBmb250LXNpemU6IDZyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbi5kaXNwbGF5LTIge1xuICBmb250LXNpemU6IDUuNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLmRpc3BsYXktMyB7XG4gIGZvbnQtc2l6ZTogNC41cmVtO1xuICBmb250LXdlaWdodDogMzAwO1xuICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG4uZGlzcGxheS00IHtcbiAgZm9udC1zaXplOiAzLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbmhyIHtcbiAgbWFyZ2luLXRvcDogMXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG5zbWFsbCxcbi5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xuICBmb250LXdlaWdodDogNDAwO1xufVxuXG5tYXJrLFxuLm1hcmsge1xuICBwYWRkaW5nOiAwLjJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMztcbn1cblxuLmxpc3QtdW5zdHlsZWQge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi5saXN0LWlubGluZSB7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLmxpc3QtaW5saW5lLWl0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5saXN0LWlubGluZS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkge1xuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbn1cblxuLmluaXRpYWxpc20ge1xuICBmb250LXNpemU6IDkwJTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLmJsb2NrcXVvdGUge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBmb250LXNpemU6IDEuMjVyZW07XG59XG5cbi5ibG9ja3F1b3RlLWZvb3RlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDgwJTtcbiAgY29sb3I6ICM2Yzc1N2Q7XG59XG5cbi5ibG9ja3F1b3RlLWZvb3Rlcjo6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXDIwMTRcXDAwQTBcIjtcbn1cblxuLmltZy1mbHVpZCB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4uaW1nLXRodW1ibmFpbCB7XG4gIHBhZGRpbmc6IDAuMjVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4uZmlndXJlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZmlndXJlLWltZyB7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDE7XG59XG5cbi5maWd1cmUtY2FwdGlvbiB7XG4gIGZvbnQtc2l6ZTogOTAlO1xuICBjb2xvcjogIzZjNzU3ZDtcbn1cblxuY29kZSB7XG4gIGZvbnQtc2l6ZTogODcuNSU7XG4gIGNvbG9yOiAjZTgzZThjO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG59XG5cbmEgPiBjb2RlIHtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbmtiZCB7XG4gIHBhZGRpbmc6IDAuMnJlbSAwLjRyZW07XG4gIGZvbnQtc2l6ZTogODcuNSU7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5O1xuICBib3JkZXItcmFkaXVzOiAwLjJyZW07XG59XG5cbmtiZCBrYmQge1xuICBwYWRkaW5nOiAwO1xuICBmb250LXNpemU6IDEwMCU7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5cbnByZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDg3LjUlO1xuICBjb2xvcjogIzIxMjUyOTtcbn1cblxucHJlIGNvZGUge1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG59XG5cbi5wcmUtc2Nyb2xsYWJsZSB7XG4gIG1heC1oZWlnaHQ6IDM0MHB4O1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG59XG5cbi5jb250YWluZXIge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiA1NDBweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiA3MjBweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiA5NjBweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5jb250YWluZXIge1xuICAgIG1heC13aWR0aDogMTE0MHB4O1xuICB9XG59XG5cbi5jb250YWluZXItZmx1aWQsIC5jb250YWluZXItc20sIC5jb250YWluZXItbWQsIC5jb250YWluZXItbGcsIC5jb250YWluZXIteGwge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmNvbnRhaW5lciwgLmNvbnRhaW5lci1zbSB7XG4gICAgbWF4LXdpZHRoOiA1NDBweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmNvbnRhaW5lciwgLmNvbnRhaW5lci1zbSwgLmNvbnRhaW5lci1tZCB7XG4gICAgbWF4LXdpZHRoOiA3MjBweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmNvbnRhaW5lciwgLmNvbnRhaW5lci1zbSwgLmNvbnRhaW5lci1tZCwgLmNvbnRhaW5lci1sZyB7XG4gICAgbWF4LXdpZHRoOiA5NjBweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5jb250YWluZXIsIC5jb250YWluZXItc20sIC5jb250YWluZXItbWQsIC5jb250YWluZXItbGcsIC5jb250YWluZXIteGwge1xuICAgIG1heC13aWR0aDogMTE0MHB4O1xuICB9XG59XG5cbi5yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG1hcmdpbi1yaWdodDogLTE1cHg7XG4gIG1hcmdpbi1sZWZ0OiAtMTVweDtcbn1cblxuLm5vLWd1dHRlcnMge1xuICBtYXJnaW4tcmlnaHQ6IDA7XG4gIG1hcmdpbi1sZWZ0OiAwO1xufVxuXG4ubm8tZ3V0dGVycyA+IC5jb2wsXG4ubm8tZ3V0dGVycyA+IFtjbGFzcyo9XCJjb2wtXCJdIHtcbiAgcGFkZGluZy1yaWdodDogMDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xufVxuXG4uY29sLTEsIC5jb2wtMiwgLmNvbC0zLCAuY29sLTQsIC5jb2wtNSwgLmNvbC02LCAuY29sLTcsIC5jb2wtOCwgLmNvbC05LCAuY29sLTEwLCAuY29sLTExLCAuY29sLTEyLCAuY29sLFxuLmNvbC1hdXRvLCAuY29sLXNtLTEsIC5jb2wtc20tMiwgLmNvbC1zbS0zLCAuY29sLXNtLTQsIC5jb2wtc20tNSwgLmNvbC1zbS02LCAuY29sLXNtLTcsIC5jb2wtc20tOCwgLmNvbC1zbS05LCAuY29sLXNtLTEwLCAuY29sLXNtLTExLCAuY29sLXNtLTEyLCAuY29sLXNtLFxuLmNvbC1zbS1hdXRvLCAuY29sLW1kLTEsIC5jb2wtbWQtMiwgLmNvbC1tZC0zLCAuY29sLW1kLTQsIC5jb2wtbWQtNSwgLmNvbC1tZC02LCAuY29sLW1kLTcsIC5jb2wtbWQtOCwgLmNvbC1tZC05LCAuY29sLW1kLTEwLCAuY29sLW1kLTExLCAuY29sLW1kLTEyLCAuY29sLW1kLFxuLmNvbC1tZC1hdXRvLCAuY29sLWxnLTEsIC5jb2wtbGctMiwgLmNvbC1sZy0zLCAuY29sLWxnLTQsIC5jb2wtbGctNSwgLmNvbC1sZy02LCAuY29sLWxnLTcsIC5jb2wtbGctOCwgLmNvbC1sZy05LCAuY29sLWxnLTEwLCAuY29sLWxnLTExLCAuY29sLWxnLTEyLCAuY29sLWxnLFxuLmNvbC1sZy1hdXRvLCAuY29sLXhsLTEsIC5jb2wteGwtMiwgLmNvbC14bC0zLCAuY29sLXhsLTQsIC5jb2wteGwtNSwgLmNvbC14bC02LCAuY29sLXhsLTcsIC5jb2wteGwtOCwgLmNvbC14bC05LCAuY29sLXhsLTEwLCAuY29sLXhsLTExLCAuY29sLXhsLTEyLCAuY29sLXhsLFxuLmNvbC14bC1hdXRvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgcGFkZGluZy1sZWZ0OiAxNXB4O1xufVxuXG4uY29sIHtcbiAgZmxleC1iYXNpczogMDtcbiAgZmxleC1ncm93OiAxO1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi5yb3ctY29scy0xID4gKiB7XG4gIGZsZXg6IDAgMCAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi5yb3ctY29scy0yID4gKiB7XG4gIGZsZXg6IDAgMCA1MCU7XG4gIG1heC13aWR0aDogNTAlO1xufVxuXG4ucm93LWNvbHMtMyA+ICoge1xuICBmbGV4OiAwIDAgMzMuMzMzMzMzJTtcbiAgbWF4LXdpZHRoOiAzMy4zMzMzMzMlO1xufVxuXG4ucm93LWNvbHMtNCA+ICoge1xuICBmbGV4OiAwIDAgMjUlO1xuICBtYXgtd2lkdGg6IDI1JTtcbn1cblxuLnJvdy1jb2xzLTUgPiAqIHtcbiAgZmxleDogMCAwIDIwJTtcbiAgbWF4LXdpZHRoOiAyMCU7XG59XG5cbi5yb3ctY29scy02ID4gKiB7XG4gIGZsZXg6IDAgMCAxNi42NjY2NjclO1xuICBtYXgtd2lkdGg6IDE2LjY2NjY2NyU7XG59XG5cbi5jb2wtYXV0byB7XG4gIGZsZXg6IDAgMCBhdXRvO1xuICB3aWR0aDogYXV0bztcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4uY29sLTEge1xuICBmbGV4OiAwIDAgOC4zMzMzMzMlO1xuICBtYXgtd2lkdGg6IDguMzMzMzMzJTtcbn1cblxuLmNvbC0yIHtcbiAgZmxleDogMCAwIDE2LjY2NjY2NyU7XG4gIG1heC13aWR0aDogMTYuNjY2NjY3JTtcbn1cblxuLmNvbC0zIHtcbiAgZmxleDogMCAwIDI1JTtcbiAgbWF4LXdpZHRoOiAyNSU7XG59XG5cbi5jb2wtNCB7XG4gIGZsZXg6IDAgMCAzMy4zMzMzMzMlO1xuICBtYXgtd2lkdGg6IDMzLjMzMzMzMyU7XG59XG5cbi5jb2wtNSB7XG4gIGZsZXg6IDAgMCA0MS42NjY2NjclO1xuICBtYXgtd2lkdGg6IDQxLjY2NjY2NyU7XG59XG5cbi5jb2wtNiB7XG4gIGZsZXg6IDAgMCA1MCU7XG4gIG1heC13aWR0aDogNTAlO1xufVxuXG4uY29sLTcge1xuICBmbGV4OiAwIDAgNTguMzMzMzMzJTtcbiAgbWF4LXdpZHRoOiA1OC4zMzMzMzMlO1xufVxuXG4uY29sLTgge1xuICBmbGV4OiAwIDAgNjYuNjY2NjY3JTtcbiAgbWF4LXdpZHRoOiA2Ni42NjY2NjclO1xufVxuXG4uY29sLTkge1xuICBmbGV4OiAwIDAgNzUlO1xuICBtYXgtd2lkdGg6IDc1JTtcbn1cblxuLmNvbC0xMCB7XG4gIGZsZXg6IDAgMCA4My4zMzMzMzMlO1xuICBtYXgtd2lkdGg6IDgzLjMzMzMzMyU7XG59XG5cbi5jb2wtMTEge1xuICBmbGV4OiAwIDAgOTEuNjY2NjY3JTtcbiAgbWF4LXdpZHRoOiA5MS42NjY2NjclO1xufVxuXG4uY29sLTEyIHtcbiAgZmxleDogMCAwIDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cblxuLm9yZGVyLWZpcnN0IHtcbiAgb3JkZXI6IC0xO1xufVxuXG4ub3JkZXItbGFzdCB7XG4gIG9yZGVyOiAxMztcbn1cblxuLm9yZGVyLTAge1xuICBvcmRlcjogMDtcbn1cblxuLm9yZGVyLTEge1xuICBvcmRlcjogMTtcbn1cblxuLm9yZGVyLTIge1xuICBvcmRlcjogMjtcbn1cblxuLm9yZGVyLTMge1xuICBvcmRlcjogMztcbn1cblxuLm9yZGVyLTQge1xuICBvcmRlcjogNDtcbn1cblxuLm9yZGVyLTUge1xuICBvcmRlcjogNTtcbn1cblxuLm9yZGVyLTYge1xuICBvcmRlcjogNjtcbn1cblxuLm9yZGVyLTcge1xuICBvcmRlcjogNztcbn1cblxuLm9yZGVyLTgge1xuICBvcmRlcjogODtcbn1cblxuLm9yZGVyLTkge1xuICBvcmRlcjogOTtcbn1cblxuLm9yZGVyLTEwIHtcbiAgb3JkZXI6IDEwO1xufVxuXG4ub3JkZXItMTEge1xuICBvcmRlcjogMTE7XG59XG5cbi5vcmRlci0xMiB7XG4gIG9yZGVyOiAxMjtcbn1cblxuLm9mZnNldC0xIHtcbiAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzJTtcbn1cblxuLm9mZnNldC0yIHtcbiAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NyU7XG59XG5cbi5vZmZzZXQtMyB7XG4gIG1hcmdpbi1sZWZ0OiAyNSU7XG59XG5cbi5vZmZzZXQtNCB7XG4gIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMlO1xufVxuXG4ub2Zmc2V0LTUge1xuICBtYXJnaW4tbGVmdDogNDEuNjY2NjY3JTtcbn1cblxuLm9mZnNldC02IHtcbiAgbWFyZ2luLWxlZnQ6IDUwJTtcbn1cblxuLm9mZnNldC03IHtcbiAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMyU7XG59XG5cbi5vZmZzZXQtOCB7XG4gIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjclO1xufVxuXG4ub2Zmc2V0LTkge1xuICBtYXJnaW4tbGVmdDogNzUlO1xufVxuXG4ub2Zmc2V0LTEwIHtcbiAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMyU7XG59XG5cbi5vZmZzZXQtMTEge1xuICBtYXJnaW4tbGVmdDogOTEuNjY2NjY3JTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5jb2wtc20ge1xuICAgIGZsZXgtYmFzaXM6IDA7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAucm93LWNvbHMtc20tMSA+ICoge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAucm93LWNvbHMtc20tMiA+ICoge1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgbWF4LXdpZHRoOiA1MCU7XG4gIH1cbiAgLnJvdy1jb2xzLXNtLTMgPiAqIHtcbiAgICBmbGV4OiAwIDAgMzMuMzMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzMyU7XG4gIH1cbiAgLnJvdy1jb2xzLXNtLTQgPiAqIHtcbiAgICBmbGV4OiAwIDAgMjUlO1xuICAgIG1heC13aWR0aDogMjUlO1xuICB9XG4gIC5yb3ctY29scy1zbS01ID4gKiB7XG4gICAgZmxleDogMCAwIDIwJTtcbiAgICBtYXgtd2lkdGg6IDIwJTtcbiAgfVxuICAucm93LWNvbHMtc20tNiA+ICoge1xuICAgIGZsZXg6IDAgMCAxNi42NjY2NjclO1xuICAgIG1heC13aWR0aDogMTYuNjY2NjY3JTtcbiAgfVxuICAuY29sLXNtLWF1dG8ge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAuY29sLXNtLTEge1xuICAgIGZsZXg6IDAgMCA4LjMzMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA4LjMzMzMzMyU7XG4gIH1cbiAgLmNvbC1zbS0yIHtcbiAgICBmbGV4OiAwIDAgMTYuNjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY2NyU7XG4gIH1cbiAgLmNvbC1zbS0zIHtcbiAgICBmbGV4OiAwIDAgMjUlO1xuICAgIG1heC13aWR0aDogMjUlO1xuICB9XG4gIC5jb2wtc20tNCB7XG4gICAgZmxleDogMCAwIDMzLjMzMzMzMyU7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMzMlO1xuICB9XG4gIC5jb2wtc20tNSB7XG4gICAgZmxleDogMCAwIDQxLjY2NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA0MS42NjY2NjclO1xuICB9XG4gIC5jb2wtc20tNiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTtcbiAgfVxuICAuY29sLXNtLTcge1xuICAgIGZsZXg6IDAgMCA1OC4zMzMzMzMlO1xuICAgIG1heC13aWR0aDogNTguMzMzMzMzJTtcbiAgfVxuICAuY29sLXNtLTgge1xuICAgIGZsZXg6IDAgMCA2Ni42NjY2NjclO1xuICAgIG1heC13aWR0aDogNjYuNjY2NjY3JTtcbiAgfVxuICAuY29sLXNtLTkge1xuICAgIGZsZXg6IDAgMCA3NSU7XG4gICAgbWF4LXdpZHRoOiA3NSU7XG4gIH1cbiAgLmNvbC1zbS0xMCB7XG4gICAgZmxleDogMCAwIDgzLjMzMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA4My4zMzMzMzMlO1xuICB9XG4gIC5jb2wtc20tMTEge1xuICAgIGZsZXg6IDAgMCA5MS42NjY2NjclO1xuICAgIG1heC13aWR0aDogOTEuNjY2NjY3JTtcbiAgfVxuICAuY29sLXNtLTEyIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLm9yZGVyLXNtLWZpcnN0IHtcbiAgICBvcmRlcjogLTE7XG4gIH1cbiAgLm9yZGVyLXNtLWxhc3Qge1xuICAgIG9yZGVyOiAxMztcbiAgfVxuICAub3JkZXItc20tMCB7XG4gICAgb3JkZXI6IDA7XG4gIH1cbiAgLm9yZGVyLXNtLTEge1xuICAgIG9yZGVyOiAxO1xuICB9XG4gIC5vcmRlci1zbS0yIHtcbiAgICBvcmRlcjogMjtcbiAgfVxuICAub3JkZXItc20tMyB7XG4gICAgb3JkZXI6IDM7XG4gIH1cbiAgLm9yZGVyLXNtLTQge1xuICAgIG9yZGVyOiA0O1xuICB9XG4gIC5vcmRlci1zbS01IHtcbiAgICBvcmRlcjogNTtcbiAgfVxuICAub3JkZXItc20tNiB7XG4gICAgb3JkZXI6IDY7XG4gIH1cbiAgLm9yZGVyLXNtLTcge1xuICAgIG9yZGVyOiA3O1xuICB9XG4gIC5vcmRlci1zbS04IHtcbiAgICBvcmRlcjogODtcbiAgfVxuICAub3JkZXItc20tOSB7XG4gICAgb3JkZXI6IDk7XG4gIH1cbiAgLm9yZGVyLXNtLTEwIHtcbiAgICBvcmRlcjogMTA7XG4gIH1cbiAgLm9yZGVyLXNtLTExIHtcbiAgICBvcmRlcjogMTE7XG4gIH1cbiAgLm9yZGVyLXNtLTEyIHtcbiAgICBvcmRlcjogMTI7XG4gIH1cbiAgLm9mZnNldC1zbS0wIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuICAub2Zmc2V0LXNtLTEge1xuICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMyU7XG4gIH1cbiAgLm9mZnNldC1zbS0yIHtcbiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY3JTtcbiAgfVxuICAub2Zmc2V0LXNtLTMge1xuICAgIG1hcmdpbi1sZWZ0OiAyNSU7XG4gIH1cbiAgLm9mZnNldC1zbS00IHtcbiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzJTtcbiAgfVxuICAub2Zmc2V0LXNtLTUge1xuICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjclO1xuICB9XG4gIC5vZmZzZXQtc20tNiB7XG4gICAgbWFyZ2luLWxlZnQ6IDUwJTtcbiAgfVxuICAub2Zmc2V0LXNtLTcge1xuICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMlO1xuICB9XG4gIC5vZmZzZXQtc20tOCB7XG4gICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NyU7XG4gIH1cbiAgLm9mZnNldC1zbS05IHtcbiAgICBtYXJnaW4tbGVmdDogNzUlO1xuICB9XG4gIC5vZmZzZXQtc20tMTAge1xuICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMlO1xuICB9XG4gIC5vZmZzZXQtc20tMTEge1xuICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjclO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuY29sLW1kIHtcbiAgICBmbGV4LWJhc2lzOiAwO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLnJvdy1jb2xzLW1kLTEgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLnJvdy1jb2xzLW1kLTIgPiAqIHtcbiAgICBmbGV4OiAwIDAgNTAlO1xuICAgIG1heC13aWR0aDogNTAlO1xuICB9XG4gIC5yb3ctY29scy1tZC0zID4gKiB7XG4gICAgZmxleDogMCAwIDMzLjMzMzMzMyU7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMzMlO1xuICB9XG4gIC5yb3ctY29scy1tZC00ID4gKiB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAucm93LWNvbHMtbWQtNSA+ICoge1xuICAgIGZsZXg6IDAgMCAyMCU7XG4gICAgbWF4LXdpZHRoOiAyMCU7XG4gIH1cbiAgLnJvdy1jb2xzLW1kLTYgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTYuNjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY2NyU7XG4gIH1cbiAgLmNvbC1tZC1hdXRvIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmNvbC1tZC0xIHtcbiAgICBmbGV4OiAwIDAgOC4zMzMzMzMlO1xuICAgIG1heC13aWR0aDogOC4zMzMzMzMlO1xuICB9XG4gIC5jb2wtbWQtMiB7XG4gICAgZmxleDogMCAwIDE2LjY2NjY2NyU7XG4gICAgbWF4LXdpZHRoOiAxNi42NjY2NjclO1xuICB9XG4gIC5jb2wtbWQtMyB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAuY29sLW1kLTQge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMlO1xuICAgIG1heC13aWR0aDogMzMuMzMzMzMzJTtcbiAgfVxuICAuY29sLW1kLTUge1xuICAgIGZsZXg6IDAgMCA0MS42NjY2NjclO1xuICAgIG1heC13aWR0aDogNDEuNjY2NjY3JTtcbiAgfVxuICAuY29sLW1kLTYge1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgbWF4LXdpZHRoOiA1MCU7XG4gIH1cbiAgLmNvbC1tZC03IHtcbiAgICBmbGV4OiAwIDAgNTguMzMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDU4LjMzMzMzMyU7XG4gIH1cbiAgLmNvbC1tZC04IHtcbiAgICBmbGV4OiAwIDAgNjYuNjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NyU7XG4gIH1cbiAgLmNvbC1tZC05IHtcbiAgICBmbGV4OiAwIDAgNzUlO1xuICAgIG1heC13aWR0aDogNzUlO1xuICB9XG4gIC5jb2wtbWQtMTAge1xuICAgIGZsZXg6IDAgMCA4My4zMzMzMzMlO1xuICAgIG1heC13aWR0aDogODMuMzMzMzMzJTtcbiAgfVxuICAuY29sLW1kLTExIHtcbiAgICBmbGV4OiAwIDAgOTEuNjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDkxLjY2NjY2NyU7XG4gIH1cbiAgLmNvbC1tZC0xMiB7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIC5vcmRlci1tZC1maXJzdCB7XG4gICAgb3JkZXI6IC0xO1xuICB9XG4gIC5vcmRlci1tZC1sYXN0IHtcbiAgICBvcmRlcjogMTM7XG4gIH1cbiAgLm9yZGVyLW1kLTAge1xuICAgIG9yZGVyOiAwO1xuICB9XG4gIC5vcmRlci1tZC0xIHtcbiAgICBvcmRlcjogMTtcbiAgfVxuICAub3JkZXItbWQtMiB7XG4gICAgb3JkZXI6IDI7XG4gIH1cbiAgLm9yZGVyLW1kLTMge1xuICAgIG9yZGVyOiAzO1xuICB9XG4gIC5vcmRlci1tZC00IHtcbiAgICBvcmRlcjogNDtcbiAgfVxuICAub3JkZXItbWQtNSB7XG4gICAgb3JkZXI6IDU7XG4gIH1cbiAgLm9yZGVyLW1kLTYge1xuICAgIG9yZGVyOiA2O1xuICB9XG4gIC5vcmRlci1tZC03IHtcbiAgICBvcmRlcjogNztcbiAgfVxuICAub3JkZXItbWQtOCB7XG4gICAgb3JkZXI6IDg7XG4gIH1cbiAgLm9yZGVyLW1kLTkge1xuICAgIG9yZGVyOiA5O1xuICB9XG4gIC5vcmRlci1tZC0xMCB7XG4gICAgb3JkZXI6IDEwO1xuICB9XG4gIC5vcmRlci1tZC0xMSB7XG4gICAgb3JkZXI6IDExO1xuICB9XG4gIC5vcmRlci1tZC0xMiB7XG4gICAgb3JkZXI6IDEyO1xuICB9XG4gIC5vZmZzZXQtbWQtMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbiAgLm9mZnNldC1tZC0xIHtcbiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMlO1xuICB9XG4gIC5vZmZzZXQtbWQtMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NyU7XG4gIH1cbiAgLm9mZnNldC1tZC0zIHtcbiAgICBtYXJnaW4tbGVmdDogMjUlO1xuICB9XG4gIC5vZmZzZXQtbWQtNCB7XG4gICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMyU7XG4gIH1cbiAgLm9mZnNldC1tZC01IHtcbiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY3JTtcbiAgfVxuICAub2Zmc2V0LW1kLTYge1xuICAgIG1hcmdpbi1sZWZ0OiA1MCU7XG4gIH1cbiAgLm9mZnNldC1tZC03IHtcbiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzJTtcbiAgfVxuICAub2Zmc2V0LW1kLTgge1xuICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjclO1xuICB9XG4gIC5vZmZzZXQtbWQtOSB7XG4gICAgbWFyZ2luLWxlZnQ6IDc1JTtcbiAgfVxuICAub2Zmc2V0LW1kLTEwIHtcbiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzJTtcbiAgfVxuICAub2Zmc2V0LW1kLTExIHtcbiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY3JTtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmNvbC1sZyB7XG4gICAgZmxleC1iYXNpczogMDtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIC5yb3ctY29scy1sZy0xID4gKiB7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIC5yb3ctY29scy1sZy0yID4gKiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTtcbiAgfVxuICAucm93LWNvbHMtbGctMyA+ICoge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMlO1xuICAgIG1heC13aWR0aDogMzMuMzMzMzMzJTtcbiAgfVxuICAucm93LWNvbHMtbGctNCA+ICoge1xuICAgIGZsZXg6IDAgMCAyNSU7XG4gICAgbWF4LXdpZHRoOiAyNSU7XG4gIH1cbiAgLnJvdy1jb2xzLWxnLTUgPiAqIHtcbiAgICBmbGV4OiAwIDAgMjAlO1xuICAgIG1heC13aWR0aDogMjAlO1xuICB9XG4gIC5yb3ctY29scy1sZy02ID4gKiB7XG4gICAgZmxleDogMCAwIDE2LjY2NjY2NyU7XG4gICAgbWF4LXdpZHRoOiAxNi42NjY2NjclO1xuICB9XG4gIC5jb2wtbGctYXV0byB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIC5jb2wtbGctMSB7XG4gICAgZmxleDogMCAwIDguMzMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDguMzMzMzMzJTtcbiAgfVxuICAuY29sLWxnLTIge1xuICAgIGZsZXg6IDAgMCAxNi42NjY2NjclO1xuICAgIG1heC13aWR0aDogMTYuNjY2NjY3JTtcbiAgfVxuICAuY29sLWxnLTMge1xuICAgIGZsZXg6IDAgMCAyNSU7XG4gICAgbWF4LXdpZHRoOiAyNSU7XG4gIH1cbiAgLmNvbC1sZy00IHtcbiAgICBmbGV4OiAwIDAgMzMuMzMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzMyU7XG4gIH1cbiAgLmNvbC1sZy01IHtcbiAgICBmbGV4OiAwIDAgNDEuNjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDQxLjY2NjY2NyU7XG4gIH1cbiAgLmNvbC1sZy02IHtcbiAgICBmbGV4OiAwIDAgNTAlO1xuICAgIG1heC13aWR0aDogNTAlO1xuICB9XG4gIC5jb2wtbGctNyB7XG4gICAgZmxleDogMCAwIDU4LjMzMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA1OC4zMzMzMzMlO1xuICB9XG4gIC5jb2wtbGctOCB7XG4gICAgZmxleDogMCAwIDY2LjY2NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA2Ni42NjY2NjclO1xuICB9XG4gIC5jb2wtbGctOSB7XG4gICAgZmxleDogMCAwIDc1JTtcbiAgICBtYXgtd2lkdGg6IDc1JTtcbiAgfVxuICAuY29sLWxnLTEwIHtcbiAgICBmbGV4OiAwIDAgODMuMzMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDgzLjMzMzMzMyU7XG4gIH1cbiAgLmNvbC1sZy0xMSB7XG4gICAgZmxleDogMCAwIDkxLjY2NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA5MS42NjY2NjclO1xuICB9XG4gIC5jb2wtbGctMTIge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAub3JkZXItbGctZmlyc3Qge1xuICAgIG9yZGVyOiAtMTtcbiAgfVxuICAub3JkZXItbGctbGFzdCB7XG4gICAgb3JkZXI6IDEzO1xuICB9XG4gIC5vcmRlci1sZy0wIHtcbiAgICBvcmRlcjogMDtcbiAgfVxuICAub3JkZXItbGctMSB7XG4gICAgb3JkZXI6IDE7XG4gIH1cbiAgLm9yZGVyLWxnLTIge1xuICAgIG9yZGVyOiAyO1xuICB9XG4gIC5vcmRlci1sZy0zIHtcbiAgICBvcmRlcjogMztcbiAgfVxuICAub3JkZXItbGctNCB7XG4gICAgb3JkZXI6IDQ7XG4gIH1cbiAgLm9yZGVyLWxnLTUge1xuICAgIG9yZGVyOiA1O1xuICB9XG4gIC5vcmRlci1sZy02IHtcbiAgICBvcmRlcjogNjtcbiAgfVxuICAub3JkZXItbGctNyB7XG4gICAgb3JkZXI6IDc7XG4gIH1cbiAgLm9yZGVyLWxnLTgge1xuICAgIG9yZGVyOiA4O1xuICB9XG4gIC5vcmRlci1sZy05IHtcbiAgICBvcmRlcjogOTtcbiAgfVxuICAub3JkZXItbGctMTAge1xuICAgIG9yZGVyOiAxMDtcbiAgfVxuICAub3JkZXItbGctMTEge1xuICAgIG9yZGVyOiAxMTtcbiAgfVxuICAub3JkZXItbGctMTIge1xuICAgIG9yZGVyOiAxMjtcbiAgfVxuICAub2Zmc2V0LWxnLTAge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG4gIC5vZmZzZXQtbGctMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzJTtcbiAgfVxuICAub2Zmc2V0LWxnLTIge1xuICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjclO1xuICB9XG4gIC5vZmZzZXQtbGctMyB7XG4gICAgbWFyZ2luLWxlZnQ6IDI1JTtcbiAgfVxuICAub2Zmc2V0LWxnLTQge1xuICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMlO1xuICB9XG4gIC5vZmZzZXQtbGctNSB7XG4gICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NyU7XG4gIH1cbiAgLm9mZnNldC1sZy02IHtcbiAgICBtYXJnaW4tbGVmdDogNTAlO1xuICB9XG4gIC5vZmZzZXQtbGctNyB7XG4gICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMyU7XG4gIH1cbiAgLm9mZnNldC1sZy04IHtcbiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY3JTtcbiAgfVxuICAub2Zmc2V0LWxnLTkge1xuICAgIG1hcmdpbi1sZWZ0OiA3NSU7XG4gIH1cbiAgLm9mZnNldC1sZy0xMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMyU7XG4gIH1cbiAgLm9mZnNldC1sZy0xMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NyU7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAuY29sLXhsIHtcbiAgICBmbGV4LWJhc2lzOiAwO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLnJvdy1jb2xzLXhsLTEgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLnJvdy1jb2xzLXhsLTIgPiAqIHtcbiAgICBmbGV4OiAwIDAgNTAlO1xuICAgIG1heC13aWR0aDogNTAlO1xuICB9XG4gIC5yb3ctY29scy14bC0zID4gKiB7XG4gICAgZmxleDogMCAwIDMzLjMzMzMzMyU7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMzMlO1xuICB9XG4gIC5yb3ctY29scy14bC00ID4gKiB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAucm93LWNvbHMteGwtNSA+ICoge1xuICAgIGZsZXg6IDAgMCAyMCU7XG4gICAgbWF4LXdpZHRoOiAyMCU7XG4gIH1cbiAgLnJvdy1jb2xzLXhsLTYgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTYuNjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY2NyU7XG4gIH1cbiAgLmNvbC14bC1hdXRvIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmNvbC14bC0xIHtcbiAgICBmbGV4OiAwIDAgOC4zMzMzMzMlO1xuICAgIG1heC13aWR0aDogOC4zMzMzMzMlO1xuICB9XG4gIC5jb2wteGwtMiB7XG4gICAgZmxleDogMCAwIDE2LjY2NjY2NyU7XG4gICAgbWF4LXdpZHRoOiAxNi42NjY2NjclO1xuICB9XG4gIC5jb2wteGwtMyB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAuY29sLXhsLTQge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMlO1xuICAgIG1heC13aWR0aDogMzMuMzMzMzMzJTtcbiAgfVxuICAuY29sLXhsLTUge1xuICAgIGZsZXg6IDAgMCA0MS42NjY2NjclO1xuICAgIG1heC13aWR0aDogNDEuNjY2NjY3JTtcbiAgfVxuICAuY29sLXhsLTYge1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgbWF4LXdpZHRoOiA1MCU7XG4gIH1cbiAgLmNvbC14bC03IHtcbiAgICBmbGV4OiAwIDAgNTguMzMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDU4LjMzMzMzMyU7XG4gIH1cbiAgLmNvbC14bC04IHtcbiAgICBmbGV4OiAwIDAgNjYuNjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NyU7XG4gIH1cbiAgLmNvbC14bC05IHtcbiAgICBmbGV4OiAwIDAgNzUlO1xuICAgIG1heC13aWR0aDogNzUlO1xuICB9XG4gIC5jb2wteGwtMTAge1xuICAgIGZsZXg6IDAgMCA4My4zMzMzMzMlO1xuICAgIG1heC13aWR0aDogODMuMzMzMzMzJTtcbiAgfVxuICAuY29sLXhsLTExIHtcbiAgICBmbGV4OiAwIDAgOTEuNjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDkxLjY2NjY2NyU7XG4gIH1cbiAgLmNvbC14bC0xMiB7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIC5vcmRlci14bC1maXJzdCB7XG4gICAgb3JkZXI6IC0xO1xuICB9XG4gIC5vcmRlci14bC1sYXN0IHtcbiAgICBvcmRlcjogMTM7XG4gIH1cbiAgLm9yZGVyLXhsLTAge1xuICAgIG9yZGVyOiAwO1xuICB9XG4gIC5vcmRlci14bC0xIHtcbiAgICBvcmRlcjogMTtcbiAgfVxuICAub3JkZXIteGwtMiB7XG4gICAgb3JkZXI6IDI7XG4gIH1cbiAgLm9yZGVyLXhsLTMge1xuICAgIG9yZGVyOiAzO1xuICB9XG4gIC5vcmRlci14bC00IHtcbiAgICBvcmRlcjogNDtcbiAgfVxuICAub3JkZXIteGwtNSB7XG4gICAgb3JkZXI6IDU7XG4gIH1cbiAgLm9yZGVyLXhsLTYge1xuICAgIG9yZGVyOiA2O1xuICB9XG4gIC5vcmRlci14bC03IHtcbiAgICBvcmRlcjogNztcbiAgfVxuICAub3JkZXIteGwtOCB7XG4gICAgb3JkZXI6IDg7XG4gIH1cbiAgLm9yZGVyLXhsLTkge1xuICAgIG9yZGVyOiA5O1xuICB9XG4gIC5vcmRlci14bC0xMCB7XG4gICAgb3JkZXI6IDEwO1xuICB9XG4gIC5vcmRlci14bC0xMSB7XG4gICAgb3JkZXI6IDExO1xuICB9XG4gIC5vcmRlci14bC0xMiB7XG4gICAgb3JkZXI6IDEyO1xuICB9XG4gIC5vZmZzZXQteGwtMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbiAgLm9mZnNldC14bC0xIHtcbiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMlO1xuICB9XG4gIC5vZmZzZXQteGwtMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NyU7XG4gIH1cbiAgLm9mZnNldC14bC0zIHtcbiAgICBtYXJnaW4tbGVmdDogMjUlO1xuICB9XG4gIC5vZmZzZXQteGwtNCB7XG4gICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMyU7XG4gIH1cbiAgLm9mZnNldC14bC01IHtcbiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY3JTtcbiAgfVxuICAub2Zmc2V0LXhsLTYge1xuICAgIG1hcmdpbi1sZWZ0OiA1MCU7XG4gIH1cbiAgLm9mZnNldC14bC03IHtcbiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzJTtcbiAgfVxuICAub2Zmc2V0LXhsLTgge1xuICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjclO1xuICB9XG4gIC5vZmZzZXQteGwtOSB7XG4gICAgbWFyZ2luLWxlZnQ6IDc1JTtcbiAgfVxuICAub2Zmc2V0LXhsLTEwIHtcbiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzJTtcbiAgfVxuICAub2Zmc2V0LXhsLTExIHtcbiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY3JTtcbiAgfVxufVxuXG4udGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgY29sb3I6ICMyMTI1Mjk7XG59XG5cbi50YWJsZSB0aCxcbi50YWJsZSB0ZCB7XG4gIHBhZGRpbmc6IDAuNzVyZW07XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGVlMmU2O1xufVxuXG4udGFibGUgdGhlYWQgdGgge1xuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2RlZTJlNjtcbn1cblxuLnRhYmxlIHRib2R5ICsgdGJvZHkge1xuICBib3JkZXItdG9wOiAycHggc29saWQgI2RlZTJlNjtcbn1cblxuLnRhYmxlLXNtIHRoLFxuLnRhYmxlLXNtIHRkIHtcbiAgcGFkZGluZzogMC4zcmVtO1xufVxuXG4udGFibGUtYm9yZGVyZWQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2O1xufVxuXG4udGFibGUtYm9yZGVyZWQgdGgsXG4udGFibGUtYm9yZGVyZWQgdGQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2O1xufVxuXG4udGFibGUtYm9yZGVyZWQgdGhlYWQgdGgsXG4udGFibGUtYm9yZGVyZWQgdGhlYWQgdGQge1xuICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7XG59XG5cbi50YWJsZS1ib3JkZXJsZXNzIHRoLFxuLnRhYmxlLWJvcmRlcmxlc3MgdGQsXG4udGFibGUtYm9yZGVybGVzcyB0aGVhZCB0aCxcbi50YWJsZS1ib3JkZXJsZXNzIHRib2R5ICsgdGJvZHkge1xuICBib3JkZXI6IDA7XG59XG5cbi50YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDUpO1xufVxuXG4udGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIge1xuICBjb2xvcjogIzIxMjUyOTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA3NSk7XG59XG5cbi50YWJsZS1wcmltYXJ5LFxuLnRhYmxlLXByaW1hcnkgPiB0aCxcbi50YWJsZS1wcmltYXJ5ID4gdGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhkYWZmO1xufVxuXG4udGFibGUtcHJpbWFyeSB0aCxcbi50YWJsZS1wcmltYXJ5IHRkLFxuLnRhYmxlLXByaW1hcnkgdGhlYWQgdGgsXG4udGFibGUtcHJpbWFyeSB0Ym9keSArIHRib2R5IHtcbiAgYm9yZGVyLWNvbG9yOiAjN2FiYWZmO1xufVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWZjZGZmO1xufVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIgPiB0ZCxcbi50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciA+IHRoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzlmY2RmZjtcbn1cblxuLnRhYmxlLXNlY29uZGFyeSxcbi50YWJsZS1zZWNvbmRhcnkgPiB0aCxcbi50YWJsZS1zZWNvbmRhcnkgPiB0ZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkNmQ4ZGI7XG59XG5cbi50YWJsZS1zZWNvbmRhcnkgdGgsXG4udGFibGUtc2Vjb25kYXJ5IHRkLFxuLnRhYmxlLXNlY29uZGFyeSB0aGVhZCB0aCxcbi50YWJsZS1zZWNvbmRhcnkgdGJvZHkgKyB0Ym9keSB7XG4gIGJvcmRlci1jb2xvcjogI2IzYjdiYjtcbn1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS1zZWNvbmRhcnk6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzhjYmNmO1xufVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciA+IHRkLFxuLnRhYmxlLWhvdmVyIC50YWJsZS1zZWNvbmRhcnk6aG92ZXIgPiB0aCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjOGNiY2Y7XG59XG5cbi50YWJsZS1zdWNjZXNzLFxuLnRhYmxlLXN1Y2Nlc3MgPiB0aCxcbi50YWJsZS1zdWNjZXNzID4gdGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzNlNmNiO1xufVxuXG4udGFibGUtc3VjY2VzcyB0aCxcbi50YWJsZS1zdWNjZXNzIHRkLFxuLnRhYmxlLXN1Y2Nlc3MgdGhlYWQgdGgsXG4udGFibGUtc3VjY2VzcyB0Ym9keSArIHRib2R5IHtcbiAgYm9yZGVyLWNvbG9yOiAjOGZkMTllO1xufVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjFkZmJiO1xufVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgPiB0ZCxcbi50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlciA+IHRoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjtcbn1cblxuLnRhYmxlLWluZm8sXG4udGFibGUtaW5mbyA+IHRoLFxuLnRhYmxlLWluZm8gPiB0ZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiZWU1ZWI7XG59XG5cbi50YWJsZS1pbmZvIHRoLFxuLnRhYmxlLWluZm8gdGQsXG4udGFibGUtaW5mbyB0aGVhZCB0aCxcbi50YWJsZS1pbmZvIHRib2R5ICsgdGJvZHkge1xuICBib3JkZXItY29sb3I6ICM4NmNmZGE7XG59XG5cbi50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhYmRkZTU7XG59XG5cbi50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciA+IHRkLFxuLnRhYmxlLWhvdmVyIC50YWJsZS1pbmZvOmhvdmVyID4gdGgge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWJkZGU1O1xufVxuXG4udGFibGUtd2FybmluZyxcbi50YWJsZS13YXJuaW5nID4gdGgsXG4udGFibGUtd2FybmluZyA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWViYTtcbn1cblxuLnRhYmxlLXdhcm5pbmcgdGgsXG4udGFibGUtd2FybmluZyB0ZCxcbi50YWJsZS13YXJuaW5nIHRoZWFkIHRoLFxuLnRhYmxlLXdhcm5pbmcgdGJvZHkgKyB0Ym9keSB7XG4gIGJvcmRlci1jb2xvcjogI2ZmZGY3ZTtcbn1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZThhMTtcbn1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyID4gdGQsXG4udGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIgPiB0aCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmU4YTE7XG59XG5cbi50YWJsZS1kYW5nZXIsXG4udGFibGUtZGFuZ2VyID4gdGgsXG4udGFibGUtZGFuZ2VyID4gdGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVjNmNiO1xufVxuXG4udGFibGUtZGFuZ2VyIHRoLFxuLnRhYmxlLWRhbmdlciB0ZCxcbi50YWJsZS1kYW5nZXIgdGhlYWQgdGgsXG4udGFibGUtZGFuZ2VyIHRib2R5ICsgdGJvZHkge1xuICBib3JkZXItY29sb3I6ICNlZDk2OWU7XG59XG5cbi50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YxYjBiNztcbn1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgPiB0ZCxcbi50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyID4gdGgge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFiMGI3O1xufVxuXG4udGFibGUtbGlnaHQsXG4udGFibGUtbGlnaHQgPiB0aCxcbi50YWJsZS1saWdodCA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZTtcbn1cblxuLnRhYmxlLWxpZ2h0IHRoLFxuLnRhYmxlLWxpZ2h0IHRkLFxuLnRhYmxlLWxpZ2h0IHRoZWFkIHRoLFxuLnRhYmxlLWxpZ2h0IHRib2R5ICsgdGJvZHkge1xuICBib3JkZXItY29sb3I6ICNmYmZjZmM7XG59XG5cbi50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlY2Y2O1xufVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyID4gdGQsXG4udGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyID4gdGgge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlY2Y2O1xufVxuXG4udGFibGUtZGFyayxcbi50YWJsZS1kYXJrID4gdGgsXG4udGFibGUtZGFyayA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M2YzhjYTtcbn1cblxuLnRhYmxlLWRhcmsgdGgsXG4udGFibGUtZGFyayB0ZCxcbi50YWJsZS1kYXJrIHRoZWFkIHRoLFxuLnRhYmxlLWRhcmsgdGJvZHkgKyB0Ym9keSB7XG4gIGJvcmRlci1jb2xvcjogIzk1OTk5Yztcbn1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I5YmJiZTtcbn1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyID4gdGQsXG4udGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIgPiB0aCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiOWJiYmU7XG59XG5cbi50YWJsZS1hY3RpdmUsXG4udGFibGUtYWN0aXZlID4gdGgsXG4udGFibGUtYWN0aXZlID4gdGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTtcbn1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS1hY3RpdmU6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTtcbn1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS1hY3RpdmU6aG92ZXIgPiB0ZCxcbi50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyID4gdGgge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTtcbn1cblxuLnRhYmxlIC50aGVhZC1kYXJrIHRoIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7XG4gIGJvcmRlci1jb2xvcjogIzQ1NGQ1NTtcbn1cblxuLnRhYmxlIC50aGVhZC1saWdodCB0aCB7XG4gIGNvbG9yOiAjNDk1MDU3O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBib3JkZXItY29sb3I6ICNkZWUyZTY7XG59XG5cbi50YWJsZS1kYXJrIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7XG59XG5cbi50YWJsZS1kYXJrIHRoLFxuLnRhYmxlLWRhcmsgdGQsXG4udGFibGUtZGFyayB0aGVhZCB0aCB7XG4gIGJvcmRlci1jb2xvcjogIzQ1NGQ1NTtcbn1cblxuLnRhYmxlLWRhcmsudGFibGUtYm9yZGVyZWQge1xuICBib3JkZXI6IDA7XG59XG5cbi50YWJsZS1kYXJrLnRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG59XG5cbi50YWJsZS1kYXJrLnRhYmxlLWhvdmVyIHRib2R5IHRyOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNzUpO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHtcbiAgLnRhYmxlLXJlc3BvbnNpdmUtc20ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC50YWJsZS1yZXNwb25zaXZlLXNtID4gLnRhYmxlLWJvcmRlcmVkIHtcbiAgICBib3JkZXI6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gIC50YWJsZS1yZXNwb25zaXZlLW1kIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuICAudGFibGUtcmVzcG9uc2l2ZS1tZCA+IC50YWJsZS1ib3JkZXJlZCB7XG4gICAgYm9yZGVyOiAwO1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkge1xuICAudGFibGUtcmVzcG9uc2l2ZS1sZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIH1cbiAgLnRhYmxlLXJlc3BvbnNpdmUtbGcgPiAudGFibGUtYm9yZGVyZWQge1xuICAgIGJvcmRlcjogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7XG4gIC50YWJsZS1yZXNwb25zaXZlLXhsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuICAudGFibGUtcmVzcG9uc2l2ZS14bCA+IC50YWJsZS1ib3JkZXJlZCB7XG4gICAgYm9yZGVyOiAwO1xuICB9XG59XG5cbi50YWJsZS1yZXNwb25zaXZlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdy14OiBhdXRvO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkIHtcbiAgYm9yZGVyOiAwO1xufVxuXG4uZm9ybS1jb250cm9sIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGNhbGMoMS41ZW0gKyAwLjc1cmVtICsgMnB4KTtcbiAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogIzQ5NTA1NztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O1xufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuZm9ybS1jb250cm9sIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG59XG5cbi5mb3JtLWNvbnRyb2w6Oi1tcy1leHBhbmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAwO1xufVxuXG4uZm9ybS1jb250cm9sOi1tb3otZm9jdXNyaW5nIHtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICB0ZXh0LXNoYWRvdzogMCAwIDAgIzQ5NTA1Nztcbn1cblxuLmZvcm0tY29udHJvbDpmb2N1cyB7XG4gIGNvbG9yOiAjNDk1MDU3O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBib3JkZXItY29sb3I6ICM4MGJkZmY7XG4gIG91dGxpbmU6IDA7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTtcbn1cblxuLmZvcm0tY29udHJvbDo6cGxhY2Vob2xkZXIge1xuICBjb2xvcjogIzZjNzU3ZDtcbiAgb3BhY2l0eTogMTtcbn1cblxuLmZvcm0tY29udHJvbDpkaXNhYmxlZCwgLmZvcm0tY29udHJvbFtyZWFkb25seV0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBvcGFjaXR5OiAxO1xufVxuXG5zZWxlY3QuZm9ybS1jb250cm9sOmZvY3VzOjotbXMtdmFsdWUge1xuICBjb2xvcjogIzQ5NTA1NztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cblxuLmZvcm0tY29udHJvbC1maWxlLFxuLmZvcm0tY29udHJvbC1yYW5nZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmNvbC1mb3JtLWxhYmVsIHtcbiAgcGFkZGluZy10b3A6IGNhbGMoMC4zNzVyZW0gKyAxcHgpO1xuICBwYWRkaW5nLWJvdHRvbTogY2FsYygwLjM3NXJlbSArIDFweCk7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmNvbC1mb3JtLWxhYmVsLWxnIHtcbiAgcGFkZGluZy10b3A6IGNhbGMoMC41cmVtICsgMXB4KTtcbiAgcGFkZGluZy1ib3R0b206IGNhbGMoMC41cmVtICsgMXB4KTtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBsaW5lLWhlaWdodDogMS41O1xufVxuXG4uY29sLWZvcm0tbGFiZWwtc20ge1xuICBwYWRkaW5nLXRvcDogY2FsYygwLjI1cmVtICsgMXB4KTtcbiAgcGFkZGluZy1ib3R0b206IGNhbGMoMC4yNXJlbSArIDFweCk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwLjM3NXJlbSAwO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBmb250LXNpemU6IDFyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXdpZHRoOiAxcHggMDtcbn1cblxuLmZvcm0tY29udHJvbC1wbGFpbnRleHQuZm9ybS1jb250cm9sLXNtLCAuZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wtbGcge1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG59XG5cbi5mb3JtLWNvbnRyb2wtc20ge1xuICBoZWlnaHQ6IGNhbGMoMS41ZW0gKyAwLjVyZW0gKyAycHgpO1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm9yZGVyLXJhZGl1czogMC4ycmVtO1xufVxuXG4uZm9ybS1jb250cm9sLWxnIHtcbiAgaGVpZ2h0OiBjYWxjKDEuNWVtICsgMXJlbSArIDJweCk7XG4gIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGJvcmRlci1yYWRpdXM6IDAuM3JlbTtcbn1cblxuc2VsZWN0LmZvcm0tY29udHJvbFtzaXplXSwgc2VsZWN0LmZvcm0tY29udHJvbFttdWx0aXBsZV0ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbnRleHRhcmVhLmZvcm0tY29udHJvbCB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLmZvcm0tZ3JvdXAge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG4uZm9ybS10ZXh0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IDAuMjVyZW07XG59XG5cbi5mb3JtLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgbWFyZ2luLXJpZ2h0OiAtNXB4O1xuICBtYXJnaW4tbGVmdDogLTVweDtcbn1cblxuLmZvcm0tcm93ID4gLmNvbCxcbi5mb3JtLXJvdyA+IFtjbGFzcyo9XCJjb2wtXCJdIHtcbiAgcGFkZGluZy1yaWdodDogNXB4O1xuICBwYWRkaW5nLWxlZnQ6IDVweDtcbn1cblxuLmZvcm0tY2hlY2sge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07XG59XG5cbi5mb3JtLWNoZWNrLWlucHV0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXJnaW4tdG9wOiAwLjNyZW07XG4gIG1hcmdpbi1sZWZ0OiAtMS4yNXJlbTtcbn1cblxuLmZvcm0tY2hlY2staW5wdXRbZGlzYWJsZWRdIH4gLmZvcm0tY2hlY2stbGFiZWwsXG4uZm9ybS1jaGVjay1pbnB1dDpkaXNhYmxlZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgY29sb3I6ICM2Yzc1N2Q7XG59XG5cbi5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmZvcm0tY2hlY2staW5saW5lIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtO1xufVxuXG4uZm9ybS1jaGVjay1pbmxpbmUgLmZvcm0tY2hlY2staW5wdXQge1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tcmlnaHQ6IDAuMzEyNXJlbTtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbi52YWxpZC1mZWVkYmFjayB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xuICBmb250LXNpemU6IDgwJTtcbiAgY29sb3I6ICMyOGE3NDU7XG59XG5cbi52YWxpZC10b29sdGlwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIHotaW5kZXg6IDU7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XG4gIG1hcmdpbi10b3A6IC4xcmVtO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MCwgMTY3LCA2OSwgMC45KTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLndhcy12YWxpZGF0ZWQgOnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLFxuLndhcy12YWxpZGF0ZWQgOnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsXG4uaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssXG4uaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOnZhbGlkLCAuZm9ybS1jb250cm9sLmlzLXZhbGlkIHtcbiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1O1xuICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDEuNWVtICsgMC43NXJlbSk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nOCcgaGVpZ2h0PSc4JyB2aWV3Qm94PScwIDAgOCA4JyUzZSUzY3BhdGggZmlsbD0nJTIzMjhhNzQ1JyBkPSdNMi4zIDYuNzNMLjYgNC41M2MtLjQtMS4wNC40Ni0xLjQgMS4xLS44bDEuMSAxLjQgMy40LTMuOGMuNi0uNjMgMS42LS4yNyAxLjIuN2wtNCA0LjZjLS40My41LS44LjQtMS4xLjF6Jy8lM2UlM2Mvc3ZnJTNlXCIpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCBjYWxjKDAuMzc1ZW0gKyAwLjE4NzVyZW0pIGNlbnRlcjtcbiAgYmFja2dyb3VuZC1zaXplOiBjYWxjKDAuNzVlbSArIDAuMzc1cmVtKSBjYWxjKDAuNzVlbSArIDAuMzc1cmVtKTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZDpmb2N1cywgLmZvcm0tY29udHJvbC5pcy12YWxpZDpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NTtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpO1xufVxuXG4ud2FzLXZhbGlkYXRlZCB0ZXh0YXJlYS5mb3JtLWNvbnRyb2w6dmFsaWQsIHRleHRhcmVhLmZvcm0tY29udHJvbC5pcy12YWxpZCB7XG4gIHBhZGRpbmctcmlnaHQ6IGNhbGMoMS41ZW0gKyAwLjc1cmVtKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wIGNhbGMoMC4zNzVlbSArIDAuMTg3NXJlbSkgcmlnaHQgY2FsYygwLjM3NWVtICsgMC4xODc1cmVtKTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIHtcbiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1O1xuICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDAuNzVlbSArIDIuMzEyNXJlbSk7XG4gIGJhY2tncm91bmQ6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nNCcgaGVpZ2h0PSc1JyB2aWV3Qm94PScwIDAgNCA1JyUzZSUzY3BhdGggZmlsbD0nJTIzMzQzYTQwJyBkPSdNMiAwTDAgMmg0em0wIDVMMCAzaDR6Jy8lM2UlM2Mvc3ZnJTNlXCIpIG5vLXJlcGVhdCByaWdodCAwLjc1cmVtIGNlbnRlci84cHggMTBweCwgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc4JyBoZWlnaHQ9JzgnIHZpZXdCb3g9JzAgMCA4IDgnJTNlJTNjcGF0aCBmaWxsPSclMjMyOGE3NDUnIGQ9J00yLjMgNi43M0wuNiA0LjUzYy0uNC0xLjA0LjQ2LTEuNCAxLjEtLjhsMS4xIDEuNCAzLjQtMy44Yy42LS42MyAxLjYtLjI3IDEuMi43bC00IDQuNmMtLjQzLjUtLjguNC0xLjEuMXonLyUzZSUzYy9zdmclM2VcIikgI2ZmZiBuby1yZXBlYXQgY2VudGVyIHJpZ2h0IDEuNzVyZW0vY2FsYygwLjc1ZW0gKyAwLjM3NXJlbSkgY2FsYygwLjc1ZW0gKyAwLjM3NXJlbSk7XG59XG5cbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OnZhbGlkOmZvY3VzLCAuY3VzdG9tLXNlbGVjdC5pcy12YWxpZDpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NTtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpO1xufVxuXG4ud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDp2YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsLCAuZm9ybS1jaGVjay1pbnB1dC5pcy12YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgY29sb3I6ICMyOGE3NDU7XG59XG5cbi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLFxuLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssXG4uZm9ybS1jaGVjay1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLXZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsIHtcbiAgY29sb3I6ICMyOGE3NDU7XG59XG5cbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLXZhbGlkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGJvcmRlci1jb2xvcjogIzM0Y2U1NztcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0Y2U1Nztcbn1cblxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpO1xufVxuXG4ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQ6Zm9jdXM6bm90KDpjaGVja2VkKSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Zm9jdXM6bm90KDpjaGVja2VkKSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1O1xufVxuXG4ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7XG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwge1xuICBib3JkZXItY29sb3I6ICMyOGE3NDU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjI1KTtcbn1cblxuLmludmFsaWQtZmVlZGJhY2sge1xuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbiAgZm9udC1zaXplOiA4MCU7XG4gIGNvbG9yOiAjZGMzNTQ1O1xufVxuXG4uaW52YWxpZC10b29sdGlwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIHotaW5kZXg6IDU7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XG4gIG1hcmdpbi10b3A6IC4xcmVtO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjAsIDUzLCA2OSwgMC45KTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLndhcy12YWxpZGF0ZWQgOmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjayxcbi53YXMtdmFsaWRhdGVkIDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCxcbi5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssXG4uaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkLCAuZm9ybS1jb250cm9sLmlzLWludmFsaWQge1xuICBib3JkZXItY29sb3I6ICNkYzM1NDU7XG4gIHBhZGRpbmctcmlnaHQ6IGNhbGMoMS41ZW0gKyAwLjc1cmVtKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMicgaGVpZ2h0PScxMicgZmlsbD0nbm9uZScgc3Ryb2tlPSclMjNkYzM1NDUnIHZpZXdCb3g9JzAgMCAxMiAxMiclM2UlM2NjaXJjbGUgY3g9JzYnIGN5PSc2JyByPSc0LjUnLyUzZSUzY3BhdGggc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgZD0nTTUuOCAzLjZoLjRMNiA2LjV6Jy8lM2UlM2NjaXJjbGUgY3g9JzYnIGN5PSc4LjInIHI9Jy42JyBmaWxsPSclMjNkYzM1NDUnIHN0cm9rZT0nbm9uZScvJTNlJTNjL3N2ZyUzZVwiKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgY2FsYygwLjM3NWVtICsgMC4xODc1cmVtKSBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogY2FsYygwLjc1ZW0gKyAwLjM3NXJlbSkgY2FsYygwLjc1ZW0gKyAwLjM3NXJlbSk7XG59XG5cbi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZDpmb2N1cywgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkOmZvY3VzIHtcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1O1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC4yNSk7XG59XG5cbi53YXMtdmFsaWRhdGVkIHRleHRhcmVhLmZvcm0tY29udHJvbDppbnZhbGlkLCB0ZXh0YXJlYS5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCB7XG4gIHBhZGRpbmctcmlnaHQ6IGNhbGMoMS41ZW0gKyAwLjc1cmVtKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wIGNhbGMoMC4zNzVlbSArIDAuMTg3NXJlbSkgcmlnaHQgY2FsYygwLjM3NWVtICsgMC4xODc1cmVtKTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6aW52YWxpZCwgLmN1c3RvbS1zZWxlY3QuaXMtaW52YWxpZCB7XG4gIGJvcmRlci1jb2xvcjogI2RjMzU0NTtcbiAgcGFkZGluZy1yaWdodDogY2FsYygwLjc1ZW0gKyAyLjMxMjVyZW0pO1xuICBiYWNrZ3JvdW5kOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzQnIGhlaWdodD0nNScgdmlld0JveD0nMCAwIDQgNSclM2UlM2NwYXRoIGZpbGw9JyUyMzM0M2E0MCcgZD0nTTIgMEwwIDJoNHptMCA1TDAgM2g0eicvJTNlJTNjL3N2ZyUzZVwiKSBuby1yZXBlYXQgcmlnaHQgMC43NXJlbSBjZW50ZXIvOHB4IDEwcHgsIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTInIGhlaWdodD0nMTInIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzZGMzNTQ1JyB2aWV3Qm94PScwIDAgMTIgMTInJTNlJTNjY2lyY2xlIGN4PSc2JyBjeT0nNicgcj0nNC41Jy8lM2UlM2NwYXRoIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIGQ9J001LjggMy42aC40TDYgNi41eicvJTNlJTNjY2lyY2xlIGN4PSc2JyBjeT0nOC4yJyByPScuNicgZmlsbD0nJTIzZGMzNTQ1JyBzdHJva2U9J25vbmUnLyUzZSUzYy9zdmclM2VcIikgI2ZmZiBuby1yZXBlYXQgY2VudGVyIHJpZ2h0IDEuNzVyZW0vY2FsYygwLjc1ZW0gKyAwLjM3NXJlbSkgY2FsYygwLjc1ZW0gKyAwLjM3NXJlbSk7XG59XG5cbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWQ6Zm9jdXMsIC5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQ6Zm9jdXMge1xuICBib3JkZXItY29sb3I6ICNkYzM1NDU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjI1KTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsLCAuZm9ybS1jaGVjay1pbnB1dC5pcy1pbnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwge1xuICBjb2xvcjogI2RjMzU0NTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLFxuLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5mb3JtLWNoZWNrLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjayxcbi5mb3JtLWNoZWNrLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7XG4gIGNvbG9yOiAjZGMzNTQ1O1xufVxuXG4ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1O1xufVxuXG4ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGJvcmRlci1jb2xvcjogI2U0NjA2ZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U0NjA2ZDtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjI1KTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQ6Zm9jdXM6bm90KDpjaGVja2VkKSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZDpmb2N1czpub3QoOmNoZWNrZWQpIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICBib3JkZXItY29sb3I6ICNkYzM1NDU7XG59XG5cbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7XG4gIGJvcmRlci1jb2xvcjogI2RjMzU0NTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OmludmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsIHtcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1O1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC4yNSk7XG59XG5cbi5mb3JtLWlubGluZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5mb3JtLWlubGluZSAuZm9ybS1jaGVjayB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmZvcm0taW5saW5lIGxhYmVsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuICAuZm9ybS1pbmxpbmUgLmZvcm0tZ3JvdXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbiAgLmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogYXV0bztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG4gIC5mb3JtLWlubGluZSAuZm9ybS1jb250cm9sLXBsYWludGV4dCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG4gIC5mb3JtLWlubGluZSAuaW5wdXQtZ3JvdXAsXG4gIC5mb3JtLWlubGluZSAuY3VzdG9tLXNlbGVjdCB7XG4gICAgd2lkdGg6IGF1dG87XG4gIH1cbiAgLmZvcm0taW5saW5lIC5mb3JtLWNoZWNrIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG4gIC5mb3JtLWlubGluZSAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG4gIC5mb3JtLWlubGluZSAuY3VzdG9tLWNvbnRyb2wge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbiAgLmZvcm0taW5saW5lIC5jdXN0b20tY29udHJvbC1sYWJlbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4uYnRuIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogIzIxMjUyOTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmJ0biB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxufVxuXG4uYnRuOmhvdmVyIHtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLmJ0bjpmb2N1cywgLmJ0bi5mb2N1cyB7XG4gIG91dGxpbmU6IDA7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTtcbn1cblxuLmJ0bi5kaXNhYmxlZCwgLmJ0bjpkaXNhYmxlZCB7XG4gIG9wYWNpdHk6IDAuNjU7XG59XG5cbmEuYnRuLmRpc2FibGVkLFxuZmllbGRzZXQ6ZGlzYWJsZWQgYS5idG4ge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmJ0bi1wcmltYXJ5IHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbn1cblxuLmJ0bi1wcmltYXJ5OmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDY5ZDk7XG4gIGJvcmRlci1jb2xvcjogIzAwNjJjYztcbn1cblxuLmJ0bi1wcmltYXJ5OmZvY3VzLCAuYnRuLXByaW1hcnkuZm9jdXMge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjlkOTtcbiAgYm9yZGVyLWNvbG9yOiAjMDA2MmNjO1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgzOCwgMTQzLCAyNTUsIDAuNSk7XG59XG5cbi5idG4tcHJpbWFyeS5kaXNhYmxlZCwgLmJ0bi1wcmltYXJ5OmRpc2FibGVkIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbn1cblxuLmJ0bi1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbi5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2MmNjO1xuICBib3JkZXItY29sb3I6ICMwMDVjYmY7XG59XG5cbi5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsXG4uc2hvdyA+IC5idG4tcHJpbWFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgzOCwgMTQzLCAyNTUsIDAuNSk7XG59XG5cbi5idG4tc2Vjb25kYXJ5IHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7XG4gIGJvcmRlci1jb2xvcjogIzZjNzU3ZDtcbn1cblxuLmJ0bi1zZWNvbmRhcnk6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVhNjI2ODtcbiAgYm9yZGVyLWNvbG9yOiAjNTQ1YjYyO1xufVxuXG4uYnRuLXNlY29uZGFyeTpmb2N1cywgLmJ0bi1zZWNvbmRhcnkuZm9jdXMge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVhNjI2ODtcbiAgYm9yZGVyLWNvbG9yOiAjNTQ1YjYyO1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgxMzAsIDEzOCwgMTQ1LCAwLjUpO1xufVxuXG4uYnRuLXNlY29uZGFyeS5kaXNhYmxlZCwgLmJ0bi1zZWNvbmRhcnk6ZGlzYWJsZWQge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDtcbiAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkO1xufVxuXG4uYnRuLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbi5zaG93ID4gLmJ0bi1zZWNvbmRhcnkuZHJvcGRvd24tdG9nZ2xlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NDViNjI7XG4gIGJvcmRlci1jb2xvcjogIzRlNTU1Yjtcbn1cblxuLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsXG4uc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEzMCwgMTM4LCAxNDUsIDAuNSk7XG59XG5cbi5idG4tc3VjY2VzcyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xuICBib3JkZXItY29sb3I6ICMyOGE3NDU7XG59XG5cbi5idG4tc3VjY2Vzczpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE4ODM4O1xuICBib3JkZXItY29sb3I6ICMxZTdlMzQ7XG59XG5cbi5idG4tc3VjY2Vzczpmb2N1cywgLmJ0bi1zdWNjZXNzLmZvY3VzIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyMTg4Mzg7XG4gIGJvcmRlci1jb2xvcjogIzFlN2UzNDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNzIsIDE4MCwgOTcsIDAuNSk7XG59XG5cbi5idG4tc3VjY2Vzcy5kaXNhYmxlZCwgLmJ0bi1zdWNjZXNzOmRpc2FibGVkIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7XG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NTtcbn1cblxuLmJ0bi1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbi5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWU3ZTM0O1xuICBib3JkZXItY29sb3I6ICMxYzc0MzA7XG59XG5cbi5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsXG4uc2hvdyA+IC5idG4tc3VjY2Vzcy5kcm9wZG93bi10b2dnbGU6Zm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg3MiwgMTgwLCA5NywgMC41KTtcbn1cblxuLmJ0bi1pbmZvIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7XG4gIGJvcmRlci1jb2xvcjogIzE3YTJiODtcbn1cblxuLmJ0bi1pbmZvOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxMzg0OTY7XG4gIGJvcmRlci1jb2xvcjogIzExN2E4Yjtcbn1cblxuLmJ0bi1pbmZvOmZvY3VzLCAuYnRuLWluZm8uZm9jdXMge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzEzODQ5NjtcbiAgYm9yZGVyLWNvbG9yOiAjMTE3YThiO1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg1OCwgMTc2LCAxOTUsIDAuNSk7XG59XG5cbi5idG4taW5mby5kaXNhYmxlZCwgLmJ0bi1pbmZvOmRpc2FibGVkIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7XG4gIGJvcmRlci1jb2xvcjogIzE3YTJiODtcbn1cblxuLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbi5zaG93ID4gLmJ0bi1pbmZvLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE3YThiO1xuICBib3JkZXItY29sb3I6ICMxMDcwN2Y7XG59XG5cbi5idG4taW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4taW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsXG4uc2hvdyA+IC5idG4taW5mby5kcm9wZG93bi10b2dnbGU6Zm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg1OCwgMTc2LCAxOTUsIDAuNSk7XG59XG5cbi5idG4td2FybmluZyB7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3O1xuICBib3JkZXItY29sb3I6ICNmZmMxMDc7XG59XG5cbi5idG4td2FybmluZzpob3ZlciB7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBhODAwO1xuICBib3JkZXItY29sb3I6ICNkMzllMDA7XG59XG5cbi5idG4td2FybmluZzpmb2N1cywgLmJ0bi13YXJuaW5nLmZvY3VzIHtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGE4MDA7XG4gIGJvcmRlci1jb2xvcjogI2QzOWUwMDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIyLCAxNzAsIDEyLCAwLjUpO1xufVxuXG4uYnRuLXdhcm5pbmcuZGlzYWJsZWQsIC5idG4td2FybmluZzpkaXNhYmxlZCB7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3O1xuICBib3JkZXItY29sb3I6ICNmZmMxMDc7XG59XG5cbi5idG4td2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4td2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsXG4uc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGUge1xuICBjb2xvcjogIzIxMjUyOTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QzOWUwMDtcbiAgYm9yZGVyLWNvbG9yOiAjYzY5NTAwO1xufVxuXG4uYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLFxuLnNob3cgPiAuYnRuLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIyLCAxNzAsIDEyLCAwLjUpO1xufVxuXG4uYnRuLWRhbmdlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1O1xuICBib3JkZXItY29sb3I6ICNkYzM1NDU7XG59XG5cbi5idG4tZGFuZ2VyOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjODIzMzM7XG4gIGJvcmRlci1jb2xvcjogI2JkMjEzMDtcbn1cblxuLmJ0bi1kYW5nZXI6Zm9jdXMsIC5idG4tZGFuZ2VyLmZvY3VzIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjODIzMzM7XG4gIGJvcmRlci1jb2xvcjogI2JkMjEzMDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjI1LCA4MywgOTcsIDAuNSk7XG59XG5cbi5idG4tZGFuZ2VyLmRpc2FibGVkLCAuYnRuLWRhbmdlcjpkaXNhYmxlZCB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1O1xuICBib3JkZXItY29sb3I6ICNkYzM1NDU7XG59XG5cbi5idG4tZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLFxuLnNob3cgPiAuYnRuLWRhbmdlci5kcm9wZG93bi10b2dnbGUge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMDtcbiAgYm9yZGVyLWNvbG9yOiAjYjIxZjJkO1xufVxuXG4uYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cyxcbi5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjI1LCA4MywgOTcsIDAuNSk7XG59XG5cbi5idG4tbGlnaHQge1xuICBjb2xvcjogIzIxMjUyOTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhO1xufVxuXG4uYnRuLWxpZ2h0OmhvdmVyIHtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMmU2ZWE7XG4gIGJvcmRlci1jb2xvcjogI2RhZTBlNTtcbn1cblxuLmJ0bi1saWdodDpmb2N1cywgLmJ0bi1saWdodC5mb2N1cyB7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTJlNmVhO1xuICBib3JkZXItY29sb3I6ICNkYWUwZTU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIxNiwgMjE3LCAyMTksIDAuNSk7XG59XG5cbi5idG4tbGlnaHQuZGlzYWJsZWQsIC5idG4tbGlnaHQ6ZGlzYWJsZWQge1xuICBjb2xvcjogIzIxMjUyOTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhO1xufVxuXG4uYnRuLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsXG4uc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlIHtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYWUwZTU7XG4gIGJvcmRlci1jb2xvcjogI2QzZDlkZjtcbn1cblxuLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLFxuLnNob3cgPiAuYnRuLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIxNiwgMjE3LCAyMTksIDAuNSk7XG59XG5cbi5idG4tZGFyayB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwO1xuICBib3JkZXItY29sb3I6ICMzNDNhNDA7XG59XG5cbi5idG4tZGFyazpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjMyNzJiO1xuICBib3JkZXItY29sb3I6ICMxZDIxMjQ7XG59XG5cbi5idG4tZGFyazpmb2N1cywgLmJ0bi1kYXJrLmZvY3VzIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyMzI3MmI7XG4gIGJvcmRlci1jb2xvcjogIzFkMjEyNDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoODIsIDg4LCA5MywgMC41KTtcbn1cblxuLmJ0bi1kYXJrLmRpc2FibGVkLCAuYnRuLWRhcms6ZGlzYWJsZWQge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDtcbiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwO1xufVxuXG4uYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLFxuLnNob3cgPiAuYnRuLWRhcmsuZHJvcGRvd24tdG9nZ2xlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZDIxMjQ7XG4gIGJvcmRlci1jb2xvcjogIzE3MWExZDtcbn1cblxuLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cyxcbi5zaG93ID4gLmJ0bi1kYXJrLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDgyLCA4OCwgOTMsIDAuNSk7XG59XG5cbi5idG4tb3V0bGluZS1wcmltYXJ5IHtcbiAgY29sb3I6ICMwMDdiZmY7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbn1cblxuLmJ0bi1vdXRsaW5lLXByaW1hcnk6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmO1xufVxuXG4uYnRuLW91dGxpbmUtcHJpbWFyeTpmb2N1cywgLmJ0bi1vdXRsaW5lLXByaW1hcnkuZm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC41KTtcbn1cblxuLmJ0bi1vdXRsaW5lLXByaW1hcnkuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1wcmltYXJ5OmRpc2FibGVkIHtcbiAgY29sb3I6ICMwMDdiZmY7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbi5zaG93ID4gLmJ0bi1vdXRsaW5lLXByaW1hcnkuZHJvcGRvd24tdG9nZ2xlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbn1cblxuLmJ0bi1vdXRsaW5lLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsXG4uc2hvdyA+IC5idG4tb3V0bGluZS1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjUpO1xufVxuXG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHtcbiAgY29sb3I6ICM2Yzc1N2Q7XG4gIGJvcmRlci1jb2xvcjogIzZjNzU3ZDtcbn1cblxuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkO1xuICBib3JkZXItY29sb3I6ICM2Yzc1N2Q7XG59XG5cbi5idG4tb3V0bGluZS1zZWNvbmRhcnk6Zm9jdXMsIC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgxMDgsIDExNywgMTI1LCAwLjUpO1xufVxuXG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRpc2FibGVkLCAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVkIHtcbiAgY29sb3I6ICM2Yzc1N2Q7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsXG4uc2hvdyA+IC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZHJvcGRvd24tdG9nZ2xlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7XG4gIGJvcmRlci1jb2xvcjogIzZjNzU3ZDtcbn1cblxuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLFxuLnNob3cgPiAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIDAuNSk7XG59XG5cbi5idG4tb3V0bGluZS1zdWNjZXNzIHtcbiAgY29sb3I6ICMyOGE3NDU7XG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NTtcbn1cblxuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTtcbiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1O1xufVxuXG4uYnRuLW91dGxpbmUtc3VjY2Vzczpmb2N1cywgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgMC41KTtcbn1cblxuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1zdWNjZXNzOmRpc2FibGVkIHtcbiAgY29sb3I6ICMyOGE3NDU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbi5zaG93ID4gLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZHJvcGRvd24tdG9nZ2xlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7XG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NTtcbn1cblxuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsXG4uc2hvdyA+IC5idG4tb3V0bGluZS1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpO1xufVxuXG4uYnRuLW91dGxpbmUtaW5mbyB7XG4gIGNvbG9yOiAjMTdhMmI4O1xuICBib3JkZXItY29sb3I6ICMxN2EyYjg7XG59XG5cbi5idG4tb3V0bGluZS1pbmZvOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7XG4gIGJvcmRlci1jb2xvcjogIzE3YTJiODtcbn1cblxuLmJ0bi1vdXRsaW5lLWluZm86Zm9jdXMsIC5idG4tb3V0bGluZS1pbmZvLmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAwLjUpO1xufVxuXG4uYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJsZWQge1xuICBjb2xvcjogIzE3YTJiODtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLFxuLnNob3cgPiAuYnRuLW91dGxpbmUtaW5mby5kcm9wZG93bi10b2dnbGUge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODtcbiAgYm9yZGVyLWNvbG9yOiAjMTdhMmI4O1xufVxuXG4uYnRuLW91dGxpbmUtaW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cyxcbi5zaG93ID4gLmJ0bi1vdXRsaW5lLWluZm8uZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAwLjUpO1xufVxuXG4uYnRuLW91dGxpbmUtd2FybmluZyB7XG4gIGNvbG9yOiAjZmZjMTA3O1xuICBib3JkZXItY29sb3I6ICNmZmMxMDc7XG59XG5cbi5idG4tb3V0bGluZS13YXJuaW5nOmhvdmVyIHtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDc7XG4gIGJvcmRlci1jb2xvcjogI2ZmYzEwNztcbn1cblxuLmJ0bi1vdXRsaW5lLXdhcm5pbmc6Zm9jdXMsIC5idG4tb3V0bGluZS13YXJuaW5nLmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjU1LCAxOTMsIDcsIDAuNSk7XG59XG5cbi5idG4tb3V0bGluZS13YXJuaW5nLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtd2FybmluZzpkaXNhYmxlZCB7XG4gIGNvbG9yOiAjZmZjMTA3O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsXG4uc2hvdyA+IC5idG4tb3V0bGluZS13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3O1xuICBib3JkZXItY29sb3I6ICNmZmMxMDc7XG59XG5cbi5idG4tb3V0bGluZS13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLFxuLnNob3cgPiAuYnRuLW91dGxpbmUtd2FybmluZy5kcm9wZG93bi10b2dnbGU6Zm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTtcbn1cblxuLmJ0bi1vdXRsaW5lLWRhbmdlciB7XG4gIGNvbG9yOiAjZGMzNTQ1O1xuICBib3JkZXItY29sb3I6ICNkYzM1NDU7XG59XG5cbi5idG4tb3V0bGluZS1kYW5nZXI6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTtcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1O1xufVxuXG4uYnRuLW91dGxpbmUtZGFuZ2VyOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFuZ2VyLmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuNSk7XG59XG5cbi5idG4tb3V0bGluZS1kYW5nZXIuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1kYW5nZXI6ZGlzYWJsZWQge1xuICBjb2xvcjogI2RjMzU0NTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbi5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhbmdlci5kcm9wZG93bi10b2dnbGUge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTtcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1O1xufVxuXG4uYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsXG4uc2hvdyA+IC5idG4tb3V0bGluZS1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuNSk7XG59XG5cbi5idG4tb3V0bGluZS1saWdodCB7XG4gIGNvbG9yOiAjZjhmOWZhO1xuICBib3JkZXItY29sb3I6ICNmOGY5ZmE7XG59XG5cbi5idG4tb3V0bGluZS1saWdodDpob3ZlciB7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICBib3JkZXItY29sb3I6ICNmOGY5ZmE7XG59XG5cbi5idG4tb3V0bGluZS1saWdodDpmb2N1cywgLmJ0bi1vdXRsaW5lLWxpZ2h0LmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgMC41KTtcbn1cblxuLmJ0bi1vdXRsaW5lLWxpZ2h0LmRpc2FibGVkLCAuYnRuLW91dGxpbmUtbGlnaHQ6ZGlzYWJsZWQge1xuICBjb2xvcjogI2Y4ZjlmYTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsXG4uc2hvdyA+IC5idG4tb3V0bGluZS1saWdodC5kcm9wZG93bi10b2dnbGUge1xuICBjb2xvcjogIzIxMjUyOTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhO1xufVxuXG4uYnRuLW91dGxpbmUtbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLFxuLnNob3cgPiAuYnRuLW91dGxpbmUtbGlnaHQuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgMC41KTtcbn1cblxuLmJ0bi1vdXRsaW5lLWRhcmsge1xuICBjb2xvcjogIzM0M2E0MDtcbiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwO1xufVxuXG4uYnRuLW91dGxpbmUtZGFyazpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwO1xuICBib3JkZXItY29sb3I6ICMzNDNhNDA7XG59XG5cbi5idG4tb3V0bGluZS1kYXJrOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFyay5mb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDUyLCA1OCwgNjQsIDAuNSk7XG59XG5cbi5idG4tb3V0bGluZS1kYXJrLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtZGFyazpkaXNhYmxlZCB7XG4gIGNvbG9yOiAjMzQzYTQwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsXG4uc2hvdyA+IC5idG4tb3V0bGluZS1kYXJrLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwO1xuICBib3JkZXItY29sb3I6ICMzNDNhNDA7XG59XG5cbi5idG4tb3V0bGluZS1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLFxuLnNob3cgPiAuYnRuLW91dGxpbmUtZGFyay5kcm9wZG93bi10b2dnbGU6Zm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg1MiwgNTgsIDY0LCAwLjUpO1xufVxuXG4uYnRuLWxpbmsge1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogIzAwN2JmZjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uYnRuLWxpbms6aG92ZXIge1xuICBjb2xvcjogIzAwNTZiMztcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5idG4tbGluazpmb2N1cywgLmJ0bi1saW5rLmZvY3VzIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi5idG4tbGluazpkaXNhYmxlZCwgLmJ0bi1saW5rLmRpc2FibGVkIHtcbiAgY29sb3I6ICM2Yzc1N2Q7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uYnRuLWxnLCAuYnRuLWdyb3VwLWxnID4gLmJ0biB7XG4gIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGJvcmRlci1yYWRpdXM6IDAuM3JlbTtcbn1cblxuLmJ0bi1zbSwgLmJ0bi1ncm91cC1zbSA+IC5idG4ge1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm9yZGVyLXJhZGl1czogMC4ycmVtO1xufVxuXG4uYnRuLWJsb2NrIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uYnRuLWJsb2NrICsgLmJ0bi1ibG9jayB7XG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcbn1cblxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXS5idG4tYmxvY2ssXG5pbnB1dFt0eXBlPVwicmVzZXRcIl0uYnRuLWJsb2NrLFxuaW5wdXRbdHlwZT1cImJ1dHRvblwiXS5idG4tYmxvY2sge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmZhZGUge1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGxpbmVhcjtcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmZhZGUge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cbn1cblxuLmZhZGU6bm90KC5zaG93KSB7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5jb2xsYXBzZTpub3QoLnNob3cpIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmNvbGxhcHNpbmcge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMzVzIGVhc2U7XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5jb2xsYXBzaW5nIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG59XG5cbi5kcm9wdXAsXG4uZHJvcHJpZ2h0LFxuLmRyb3Bkb3duLFxuLmRyb3BsZWZ0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZHJvcGRvd24tdG9nZ2xlIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1sZWZ0OiAwLjI1NWVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogMC4yNTVlbTtcbiAgY29udGVudDogXCJcIjtcbiAgYm9yZGVyLXRvcDogMC4zZW0gc29saWQ7XG4gIGJvcmRlci1yaWdodDogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1ib3R0b206IDA7XG4gIGJvcmRlci1sZWZ0OiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDtcbn1cblxuLmRyb3Bkb3duLXRvZ2dsZTplbXB0eTo6YWZ0ZXIge1xuICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLmRyb3Bkb3duLW1lbnUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTAwMDtcbiAgZGlzcGxheTogbm9uZTtcbiAgZmxvYXQ6IGxlZnQ7XG4gIG1pbi13aWR0aDogMTByZW07XG4gIHBhZGRpbmc6IDAuNXJlbSAwO1xuICBtYXJnaW46IDAuMTI1cmVtIDAgMDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBjb2xvcjogIzIxMjUyOTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLmRyb3Bkb3duLW1lbnUtbGVmdCB7XG4gIHJpZ2h0OiBhdXRvO1xuICBsZWZ0OiAwO1xufVxuXG4uZHJvcGRvd24tbWVudS1yaWdodCB7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiBhdXRvO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmRyb3Bkb3duLW1lbnUtc20tbGVmdCB7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogMDtcbiAgfVxuICAuZHJvcGRvd24tbWVudS1zbS1yaWdodCB7XG4gICAgcmlnaHQ6IDA7XG4gICAgbGVmdDogYXV0bztcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmRyb3Bkb3duLW1lbnUtbWQtbGVmdCB7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogMDtcbiAgfVxuICAuZHJvcGRvd24tbWVudS1tZC1yaWdodCB7XG4gICAgcmlnaHQ6IDA7XG4gICAgbGVmdDogYXV0bztcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmRyb3Bkb3duLW1lbnUtbGctbGVmdCB7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogMDtcbiAgfVxuICAuZHJvcGRvd24tbWVudS1sZy1yaWdodCB7XG4gICAgcmlnaHQ6IDA7XG4gICAgbGVmdDogYXV0bztcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5kcm9wZG93bi1tZW51LXhsLWxlZnQge1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IDA7XG4gIH1cbiAgLmRyb3Bkb3duLW1lbnUteGwtcmlnaHQge1xuICAgIHJpZ2h0OiAwO1xuICAgIGxlZnQ6IGF1dG87XG4gIH1cbn1cblxuLmRyb3B1cCAuZHJvcGRvd24tbWVudSB7XG4gIHRvcDogYXV0bztcbiAgYm90dG9tOiAxMDAlO1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAwLjEyNXJlbTtcbn1cblxuLmRyb3B1cCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDAuMjU1ZW07XG4gIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtO1xuICBjb250ZW50OiBcIlwiO1xuICBib3JkZXItdG9wOiAwO1xuICBib3JkZXItcmlnaHQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItYm90dG9tOiAwLjNlbSBzb2xpZDtcbiAgYm9yZGVyLWxlZnQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG4uZHJvcHVwIC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbi5kcm9wcmlnaHQgLmRyb3Bkb3duLW1lbnUge1xuICB0b3A6IDA7XG4gIHJpZ2h0OiBhdXRvO1xuICBsZWZ0OiAxMDAlO1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tbGVmdDogMC4xMjVyZW07XG59XG5cbi5kcm9wcmlnaHQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1sZWZ0OiAwLjI1NWVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogMC4yNTVlbTtcbiAgY29udGVudDogXCJcIjtcbiAgYm9yZGVyLXRvcDogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodDogMDtcbiAgYm9yZGVyLWJvdHRvbTogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1sZWZ0OiAwLjNlbSBzb2xpZDtcbn1cblxuLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xufVxuXG4uZHJvcHJpZ2h0IC5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHtcbiAgdmVydGljYWwtYWxpZ246IDA7XG59XG5cbi5kcm9wbGVmdCAuZHJvcGRvd24tbWVudSB7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDEwMCU7XG4gIGxlZnQ6IGF1dG87XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1yaWdodDogMC4xMjVyZW07XG59XG5cbi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDAuMjU1ZW07XG4gIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtO1xuICBjb250ZW50OiBcIlwiO1xufVxuXG4uZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDAuMjU1ZW07XG4gIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtO1xuICBjb250ZW50OiBcIlwiO1xuICBib3JkZXItdG9wOiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJpZ2h0OiAwLjNlbSBzb2xpZDtcbiAgYm9yZGVyLWJvdHRvbTogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xufVxuXG4uZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHtcbiAgdmVydGljYWwtYWxpZ246IDA7XG59XG5cbi5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj1cInRvcFwiXSwgLmRyb3Bkb3duLW1lbnVbeC1wbGFjZW1lbnRePVwicmlnaHRcIl0sIC5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj1cImJvdHRvbVwiXSwgLmRyb3Bkb3duLW1lbnVbeC1wbGFjZW1lbnRePVwibGVmdFwiXSB7XG4gIHJpZ2h0OiBhdXRvO1xuICBib3R0b206IGF1dG87XG59XG5cbi5kcm9wZG93bi1kaXZpZGVyIHtcbiAgaGVpZ2h0OiAwO1xuICBtYXJnaW46IDAuNXJlbSAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2U5ZWNlZjtcbn1cblxuLmRyb3Bkb3duLWl0ZW0ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDAuMjVyZW0gMS41cmVtO1xuICBjbGVhcjogYm90aDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDA7XG59XG5cbi5kcm9wZG93bi1pdGVtOmhvdmVyLCAuZHJvcGRvd24taXRlbTpmb2N1cyB7XG4gIGNvbG9yOiAjMTYxODFiO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XG59XG5cbi5kcm9wZG93bi1pdGVtLmFjdGl2ZSwgLmRyb3Bkb3duLWl0ZW06YWN0aXZlIHtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbn1cblxuLmRyb3Bkb3duLWl0ZW0uZGlzYWJsZWQsIC5kcm9wZG93bi1pdGVtOmRpc2FibGVkIHtcbiAgY29sb3I6ICM2Yzc1N2Q7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRyb3Bkb3duLW1lbnUuc2hvdyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uZHJvcGRvd24taGVhZGVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuNXJlbSAxLjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiAjNmM3NTdkO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uZHJvcGRvd24taXRlbS10ZXh0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuMjVyZW0gMS41cmVtO1xuICBjb2xvcjogIzIxMjUyOTtcbn1cblxuLmJ0bi1ncm91cCxcbi5idG4tZ3JvdXAtdmVydGljYWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uYnRuLWdyb3VwID4gLmJ0bixcbi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmbGV4OiAxIDEgYXV0bztcbn1cblxuLmJ0bi1ncm91cCA+IC5idG46aG92ZXIsXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpob3ZlciB7XG4gIHotaW5kZXg6IDE7XG59XG5cbi5idG4tZ3JvdXAgPiAuYnRuOmZvY3VzLCAuYnRuLWdyb3VwID4gLmJ0bjphY3RpdmUsIC5idG4tZ3JvdXAgPiAuYnRuLmFjdGl2ZSxcbi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmZvY3VzLFxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46YWN0aXZlLFxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4uYWN0aXZlIHtcbiAgei1pbmRleDogMTtcbn1cblxuLmJ0bi10b29sYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG5cbi5idG4tdG9vbGJhciAuaW5wdXQtZ3JvdXAge1xuICB3aWR0aDogYXV0bztcbn1cblxuLmJ0bi1ncm91cCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksXG4uYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gIG1hcmdpbi1sZWZ0OiAtMXB4O1xufVxuXG4uYnRuLWdyb3VwID4gLmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSxcbi5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xufVxuXG4uYnRuLWdyb3VwID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSxcbi5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG59XG5cbi5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjU2MjVyZW07XG4gIHBhZGRpbmctbGVmdDogMC41NjI1cmVtO1xufVxuXG4uZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlcixcbi5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdDo6YWZ0ZXIsXG4uZHJvcHJpZ2h0IC5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmFmdGVyIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjpiZWZvcmUge1xuICBtYXJnaW4tcmlnaHQ6IDA7XG59XG5cbi5idG4tc20gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0LCAuYnRuLWdyb3VwLXNtID4gLmJ0biArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjM3NXJlbTtcbiAgcGFkZGluZy1sZWZ0OiAwLjM3NXJlbTtcbn1cblxuLmJ0bi1sZyArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQsIC5idG4tZ3JvdXAtbGcgPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XG4gIHBhZGRpbmctbGVmdDogMC43NXJlbTtcbn1cblxuLmJ0bi1ncm91cC12ZXJ0aWNhbCB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4sXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSxcbi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgbWFyZ2luLXRvcDogLTFweDtcbn1cblxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biB7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xufVxuXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSxcbi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xufVxuXG4uYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4sXG4uYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4tZ3JvdXAgPiAuYnRuIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuIGlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbi5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0biBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG4uYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4tZ3JvdXAgPiAuYnRuIGlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbi5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0bi1ncm91cCA+IC5idG4gaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmlucHV0LWdyb3VwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbCxcbi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LFxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QsXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXg6IDEgMSAwJTtcbiAgbWluLXdpZHRoOiAwO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmZvcm0tY29udHJvbCxcbi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wgKyAuY3VzdG9tLXNlbGVjdCxcbi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wgKyAuY3VzdG9tLWZpbGUsXG4uaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sLXBsYWludGV4dCArIC5mb3JtLWNvbnRyb2wsXG4uaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sLXBsYWludGV4dCArIC5jdXN0b20tc2VsZWN0LFxuLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbC1wbGFpbnRleHQgKyAuY3VzdG9tLWZpbGUsXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCArIC5mb3JtLWNvbnRyb2wsXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCArIC5jdXN0b20tc2VsZWN0LFxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QgKyAuY3VzdG9tLWZpbGUsXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgKyAuZm9ybS1jb250cm9sLFxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlICsgLmN1c3RvbS1zZWxlY3QsXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgKyAuY3VzdG9tLWZpbGUge1xuICBtYXJnaW4tbGVmdDogLTFweDtcbn1cblxuLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbDpmb2N1cyxcbi5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0OmZvY3VzLFxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlIC5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7XG4gIHotaW5kZXg6IDM7XG59XG5cbi5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSAuY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXMge1xuICB6LWluZGV4OiA0O1xufVxuXG4uaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOm5vdCg6bGFzdC1jaGlsZCksXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpub3QoOmxhc3QtY2hpbGQpIHtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xufVxuXG4uaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOm5vdCg6Zmlyc3QtY2hpbGQpLFxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3Q6bm90KDpmaXJzdC1jaGlsZCkge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xufVxuXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6bm90KDpsYXN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWwsXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6bm90KDpsYXN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xufVxuXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6bm90KDpmaXJzdC1jaGlsZCkgLmN1c3RvbS1maWxlLWxhYmVsIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuLmlucHV0LWdyb3VwLXByZXBlbmQsXG4uaW5wdXQtZ3JvdXAtYXBwZW5kIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0bixcbi5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMjtcbn1cblxuLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0bjpmb2N1cyxcbi5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0bjpmb2N1cyB7XG4gIHotaW5kZXg6IDM7XG59XG5cbi5pbnB1dC1ncm91cC1wcmVwZW5kIC5idG4gKyAuYnRuLFxuLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0biArIC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLXByZXBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuaW5wdXQtZ3JvdXAtdGV4dCxcbi5pbnB1dC1ncm91cC1wcmVwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmJ0bixcbi5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biArIC5idG4sXG4uaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4gKyAuaW5wdXQtZ3JvdXAtdGV4dCxcbi5pbnB1dC1ncm91cC1hcHBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuaW5wdXQtZ3JvdXAtdGV4dCxcbi5pbnB1dC1ncm91cC1hcHBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuYnRuIHtcbiAgbWFyZ2luLWxlZnQ6IC0xcHg7XG59XG5cbi5pbnB1dC1ncm91cC1wcmVwZW5kIHtcbiAgbWFyZ2luLXJpZ2h0OiAtMXB4O1xufVxuXG4uaW5wdXQtZ3JvdXAtYXBwZW5kIHtcbiAgbWFyZ2luLWxlZnQ6IC0xcHg7XG59XG5cbi5pbnB1dC1ncm91cC10ZXh0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogIzQ5NTA1NztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhO1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xufVxuXG4uaW5wdXQtZ3JvdXAtdGV4dCBpbnB1dFt0eXBlPVwicmFkaW9cIl0sXG4uaW5wdXQtZ3JvdXAtdGV4dCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuXG4uaW5wdXQtZ3JvdXAtbGcgPiAuZm9ybS1jb250cm9sOm5vdCh0ZXh0YXJlYSksXG4uaW5wdXQtZ3JvdXAtbGcgPiAuY3VzdG9tLXNlbGVjdCB7XG4gIGhlaWdodDogY2FsYygxLjVlbSArIDFyZW0gKyAycHgpO1xufVxuXG4uaW5wdXQtZ3JvdXAtbGcgPiAuZm9ybS1jb250cm9sLFxuLmlucHV0LWdyb3VwLWxnID4gLmN1c3RvbS1zZWxlY3QsXG4uaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuYnRuLFxuLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4ge1xuICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBib3JkZXItcmFkaXVzOiAwLjNyZW07XG59XG5cbi5pbnB1dC1ncm91cC1zbSA+IC5mb3JtLWNvbnRyb2w6bm90KHRleHRhcmVhKSxcbi5pbnB1dC1ncm91cC1zbSA+IC5jdXN0b20tc2VsZWN0IHtcbiAgaGVpZ2h0OiBjYWxjKDEuNWVtICsgMC41cmVtICsgMnB4KTtcbn1cblxuLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCxcbi5pbnB1dC1ncm91cC1zbSA+IC5jdXN0b20tc2VsZWN0LFxuLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCxcbi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCxcbi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0bixcbi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuIHtcbiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGJvcmRlci1yYWRpdXM6IDAuMnJlbTtcbn1cblxuLmlucHV0LWdyb3VwLWxnID4gLmN1c3RvbS1zZWxlY3QsXG4uaW5wdXQtZ3JvdXAtc20gPiAuY3VzdG9tLXNlbGVjdCB7XG4gIHBhZGRpbmctcmlnaHQ6IDEuNzVyZW07XG59XG5cbi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0bixcbi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuLFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmlucHV0LWdyb3VwLXRleHQsXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOmxhc3QtY2hpbGQgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpsYXN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpsYXN0LWNoaWxkKSB7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbn1cblxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4sXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4sXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6Zmlyc3QtY2hpbGQgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6Zmlyc3QtY2hpbGQgPiAuaW5wdXQtZ3JvdXAtdGV4dDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG59XG5cbi5jdXN0b20tY29udHJvbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1pbi1oZWlnaHQ6IDEuNXJlbTtcbiAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XG59XG5cbi5jdXN0b20tY29udHJvbC1pbmxpbmUge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xufVxuXG4uY3VzdG9tLWNvbnRyb2wtaW5wdXQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IC0xO1xuICB3aWR0aDogMXJlbTtcbiAgaGVpZ2h0OiAxLjI1cmVtO1xuICBvcGFjaXR5OiAwO1xufVxuXG4uY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbn1cblxuLmN1c3RvbS1jb250cm9sLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7XG59XG5cbi5jdXN0b20tY29udHJvbC1pbnB1dDpmb2N1czpub3QoOmNoZWNrZWQpIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICBib3JkZXItY29sb3I6ICM4MGJkZmY7XG59XG5cbi5jdXN0b20tY29udHJvbC1pbnB1dDpub3QoOmRpc2FibGVkKTphY3RpdmUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmO1xuICBib3JkZXItY29sb3I6ICNiM2Q3ZmY7XG59XG5cbi5jdXN0b20tY29udHJvbC1pbnB1dFtkaXNhYmxlZF0gfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwsIC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7XG4gIGNvbG9yOiAjNmM3NTdkO1xufVxuXG4uY3VzdG9tLWNvbnRyb2wtaW5wdXRbZGlzYWJsZWRdIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjtcbn1cblxuLmN1c3RvbS1jb250cm9sLWxhYmVsIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG4uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwLjI1cmVtO1xuICBsZWZ0OiAtMS41cmVtO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJvcmRlcjogI2FkYjViZCBzb2xpZCAxcHg7XG59XG5cbi5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMC4yNXJlbTtcbiAgbGVmdDogLTEuNXJlbTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxcmVtO1xuICBoZWlnaHQ6IDFyZW07XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGJhY2tncm91bmQ6IG5vLXJlcGVhdCA1MCUgLyA1MCUgNTAlO1xufVxuXG4uY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzgnIGhlaWdodD0nOCcgdmlld0JveD0nMCAwIDggOCclM2UlM2NwYXRoIGZpbGw9JyUyM2ZmZicgZD0nTTYuNTY0Ljc1bC0zLjU5IDMuNjEyLTEuNTM4LTEuNTVMMCA0LjI2bDIuOTc0IDIuOTlMOCAyLjE5M3onLyUzZSUzYy9zdmclM2VcIik7XG59XG5cbi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbn1cblxuLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW5kZXRlcm1pbmF0ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzQnIGhlaWdodD0nNCcgdmlld0JveD0nMCAwIDQgNCclM2UlM2NwYXRoIHN0cm9rZT0nJTIzZmZmJyBkPSdNMCAyaDQnLyUzZSUzYy9zdmclM2VcIik7XG59XG5cbi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7XG59XG5cbi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7XG59XG5cbi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG5cbi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMicgaGVpZ2h0PScxMicgdmlld0JveD0nLTQgLTQgOCA4JyUzZSUzY2NpcmNsZSByPSczJyBmaWxsPSclMjNmZmYnLyUzZSUzYy9zdmclM2VcIik7XG59XG5cbi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7XG59XG5cbi5jdXN0b20tc3dpdGNoIHtcbiAgcGFkZGluZy1sZWZ0OiAyLjI1cmVtO1xufVxuXG4uY3VzdG9tLXN3aXRjaCAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGxlZnQ6IC0yLjI1cmVtO1xuICB3aWR0aDogMS43NXJlbTtcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xufVxuXG4uY3VzdG9tLXN3aXRjaCAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHtcbiAgdG9wOiBjYWxjKDAuMjVyZW0gKyAycHgpO1xuICBsZWZ0OiBjYWxjKC0yLjI1cmVtICsgMnB4KTtcbiAgd2lkdGg6IGNhbGMoMXJlbSAtIDRweCk7XG4gIGhlaWdodDogY2FsYygxcmVtIC0gNHB4KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FkYjViZDtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmN1c3RvbS1zd2l0Y2ggLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxufVxuXG4uY3VzdG9tLXN3aXRjaCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMC43NXJlbSk7XG59XG5cbi5jdXN0b20tc3dpdGNoIC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDEyMywgMjU1LCAwLjUpO1xufVxuXG4uY3VzdG9tLXNlbGVjdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogY2FsYygxLjVlbSArIDAuNzVyZW0gKyAycHgpO1xuICBwYWRkaW5nOiAwLjM3NXJlbSAxLjc1cmVtIDAuMzc1cmVtIDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgY29sb3I6ICM0OTUwNTc7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc0JyBoZWlnaHQ9JzUnIHZpZXdCb3g9JzAgMCA0IDUnJTNlJTNjcGF0aCBmaWxsPSclMjMzNDNhNDAnIGQ9J00yIDBMMCAyaDR6bTAgNUwwIDNoNHonLyUzZSUzYy9zdmclM2VcIikgbm8tcmVwZWF0IHJpZ2h0IDAuNzVyZW0gY2VudGVyLzhweCAxMHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhO1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xuICBhcHBlYXJhbmNlOiBub25lO1xufVxuXG4uY3VzdG9tLXNlbGVjdDpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogIzgwYmRmZjtcbiAgb3V0bGluZTogMDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpO1xufVxuXG4uY3VzdG9tLXNlbGVjdDpmb2N1czo6LW1zLXZhbHVlIHtcbiAgY29sb3I6ICM0OTUwNTc7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cbi5jdXN0b20tc2VsZWN0W211bHRpcGxlXSwgLmN1c3RvbS1zZWxlY3Rbc2l6ZV06bm90KFtzaXplPVwiMVwiXSkge1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG59XG5cbi5jdXN0b20tc2VsZWN0OmRpc2FibGVkIHtcbiAgY29sb3I6ICM2Yzc1N2Q7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG59XG5cbi5jdXN0b20tc2VsZWN0OjotbXMtZXhwYW5kIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmN1c3RvbS1zZWxlY3Q6LW1vei1mb2N1c3Jpbmcge1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHRleHQtc2hhZG93OiAwIDAgMCAjNDk1MDU3O1xufVxuXG4uY3VzdG9tLXNlbGVjdC1zbSB7XG4gIGhlaWdodDogY2FsYygxLjVlbSArIDAuNXJlbSArIDJweCk7XG4gIHBhZGRpbmctdG9wOiAwLjI1cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbTtcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5jdXN0b20tc2VsZWN0LWxnIHtcbiAgaGVpZ2h0OiBjYWxjKDEuNWVtICsgMXJlbSArIDJweCk7XG4gIHBhZGRpbmctdG9wOiAwLjVyZW07XG4gIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XG4gIHBhZGRpbmctbGVmdDogMXJlbTtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xufVxuXG4uY3VzdG9tLWZpbGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogY2FsYygxLjVlbSArIDAuNzVyZW0gKyAycHgpO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY3VzdG9tLWZpbGUtaW5wdXQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDI7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGNhbGMoMS41ZW0gKyAwLjc1cmVtICsgMnB4KTtcbiAgbWFyZ2luOiAwO1xuICBvcGFjaXR5OiAwO1xufVxuXG4uY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwge1xuICBib3JkZXItY29sb3I6ICM4MGJkZmY7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTtcbn1cblxuLmN1c3RvbS1maWxlLWlucHV0W2Rpc2FibGVkXSB+IC5jdXN0b20tZmlsZS1sYWJlbCxcbi5jdXN0b20tZmlsZS1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG59XG5cbi5jdXN0b20tZmlsZS1pbnB1dDpsYW5nKGVuKSB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIge1xuICBjb250ZW50OiBcIkJyb3dzZVwiO1xufVxuXG4uY3VzdG9tLWZpbGUtaW5wdXQgfiAuY3VzdG9tLWZpbGUtbGFiZWxbZGF0YS1icm93c2VdOjphZnRlciB7XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1icm93c2UpO1xufVxuXG4uY3VzdG9tLWZpbGUtbGFiZWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDE7XG4gIGhlaWdodDogY2FsYygxLjVlbSArIDAuNzVyZW0gKyAycHgpO1xuICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogIzQ5NTA1NztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICB6LWluZGV4OiAzO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiBjYWxjKDEuNWVtICsgMC43NXJlbSk7XG4gIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGNvbG9yOiAjNDk1MDU3O1xuICBjb250ZW50OiBcIkJyb3dzZVwiO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBib3JkZXItbGVmdDogaW5oZXJpdDtcbiAgYm9yZGVyLXJhZGl1czogMCAwLjI1cmVtIDAuMjVyZW0gMDtcbn1cblxuLmN1c3RvbS1yYW5nZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEuNHJlbTtcbiAgcGFkZGluZzogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi5jdXN0b20tcmFuZ2U6Zm9jdXMge1xuICBvdXRsaW5lOiBub25lO1xufVxuXG4uY3VzdG9tLXJhbmdlOmZvY3VzOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmZmLCAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7XG59XG5cbi5jdXN0b20tcmFuZ2U6Zm9jdXM6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpO1xufVxuXG4uY3VzdG9tLXJhbmdlOmZvY3VzOjotbXMtdGh1bWIge1xuICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpO1xufVxuXG4uY3VzdG9tLXJhbmdlOjotbW96LWZvY3VzLW91dGVyIHtcbiAgYm9yZGVyOiAwO1xufVxuXG4uY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gIHdpZHRoOiAxcmVtO1xuICBoZWlnaHQ6IDFyZW07XG4gIG1hcmdpbi10b3A6IC0wLjI1cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmN1c3RvbS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cbn1cblxuLmN1c3RvbS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWI6YWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IzZDdmZjtcbn1cblxuLmN1c3RvbS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAwLjVyZW07XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2O1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiAxcmVtO1xufVxuXG4uY3VzdG9tLXJhbmdlOjotbW96LXJhbmdlLXRodW1iIHtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cbn1cblxuLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10aHVtYjphY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmO1xufVxuXG4uY3VzdG9tLXJhbmdlOjotbW96LXJhbmdlLXRyYWNrIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMC41cmVtO1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogMXJlbTtcbn1cblxuLmN1c3RvbS1yYW5nZTo6LW1zLXRodW1iIHtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLXJpZ2h0OiAwLjJyZW07XG4gIG1hcmdpbi1sZWZ0OiAwLjJyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O1xuICBhcHBlYXJhbmNlOiBub25lO1xufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuY3VzdG9tLXJhbmdlOjotbXMtdGh1bWIge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cbn1cblxuLmN1c3RvbS1yYW5nZTo6LW1zLXRodW1iOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7XG59XG5cbi5jdXN0b20tcmFuZ2U6Oi1tcy10cmFjayB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDAuNXJlbTtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbn1cblxuLmN1c3RvbS1yYW5nZTo6LW1zLWZpbGwtbG93ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2O1xuICBib3JkZXItcmFkaXVzOiAxcmVtO1xufVxuXG4uY3VzdG9tLXJhbmdlOjotbXMtZmlsbC11cHBlciB7XG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjtcbiAgYm9yZGVyLXJhZGl1czogMXJlbTtcbn1cblxuLmN1c3RvbS1yYW5nZTpkaXNhYmxlZDo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWRiNWJkO1xufVxuXG4uY3VzdG9tLXJhbmdlOmRpc2FibGVkOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLmN1c3RvbS1yYW5nZTpkaXNhYmxlZDo6LW1vei1yYW5nZS10aHVtYiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhZGI1YmQ7XG59XG5cbi5jdXN0b20tcmFuZ2U6ZGlzYWJsZWQ6Oi1tb3otcmFuZ2UtdHJhY2sge1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5jdXN0b20tcmFuZ2U6ZGlzYWJsZWQ6Oi1tcy10aHVtYiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhZGI1YmQ7XG59XG5cbi5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLFxuLmN1c3RvbS1maWxlLWxhYmVsLFxuLmN1c3RvbS1zZWxlY3Qge1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLFxuICAuY3VzdG9tLWZpbGUtbGFiZWwsXG4gIC5jdXN0b20tc2VsZWN0IHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG59XG5cbi5uYXYge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLm5hdi1saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xufVxuXG4ubmF2LWxpbms6aG92ZXIsIC5uYXYtbGluazpmb2N1cyB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLm5hdi1saW5rLmRpc2FibGVkIHtcbiAgY29sb3I6ICM2Yzc1N2Q7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5uYXYtdGFicyB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGVlMmU2O1xufVxuXG4ubmF2LXRhYnMgLm5hdi1pdGVtIHtcbiAgbWFyZ2luLWJvdHRvbTogLTFweDtcbn1cblxuLm5hdi10YWJzIC5uYXYtbGluayB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcbn1cblxuLm5hdi10YWJzIC5uYXYtbGluazpob3ZlciwgLm5hdi10YWJzIC5uYXYtbGluazpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogI2U5ZWNlZiAjZTllY2VmICNkZWUyZTY7XG59XG5cbi5uYXYtdGFicyAubmF2LWxpbmsuZGlzYWJsZWQge1xuICBjb2xvcjogIzZjNzU3ZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5uYXYtdGFicyAubmF2LWxpbmsuYWN0aXZlLFxuLm5hdi10YWJzIC5uYXYtaXRlbS5zaG93IC5uYXYtbGluayB7XG4gIGNvbG9yOiAjNDk1MDU3O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBib3JkZXItY29sb3I6ICNkZWUyZTYgI2RlZTJlNiAjZmZmO1xufVxuXG4ubmF2LXRhYnMgLmRyb3Bkb3duLW1lbnUge1xuICBtYXJnaW4tdG9wOiAtMXB4O1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbn1cblxuLm5hdi1waWxscyAubmF2LWxpbmsge1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xufVxuXG4ubmF2LXBpbGxzIC5uYXYtbGluay5hY3RpdmUsXG4ubmF2LXBpbGxzIC5zaG93ID4gLm5hdi1saW5rIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG59XG5cbi5uYXYtZmlsbCAubmF2LWl0ZW0ge1xuICBmbGV4OiAxIDEgYXV0bztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ubmF2LWp1c3RpZmllZCAubmF2LWl0ZW0ge1xuICBmbGV4LWJhc2lzOiAwO1xuICBmbGV4LWdyb3c6IDE7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnRhYi1jb250ZW50ID4gLnRhYi1wYW5lIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnRhYi1jb250ZW50ID4gLmFjdGl2ZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubmF2YmFyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgcGFkZGluZzogMC41cmVtIDFyZW07XG59XG5cbi5uYXZiYXIgLmNvbnRhaW5lcixcbi5uYXZiYXIgLmNvbnRhaW5lci1mbHVpZCwgLm5hdmJhciAuY29udGFpbmVyLXNtLCAubmF2YmFyIC5jb250YWluZXItbWQsIC5uYXZiYXIgLmNvbnRhaW5lci1sZywgLm5hdmJhciAuY29udGFpbmVyLXhsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi5uYXZiYXItYnJhbmQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmctdG9wOiAwLjMxMjVyZW07XG4gIHBhZGRpbmctYm90dG9tOiAwLjMxMjVyZW07XG4gIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLm5hdmJhci1icmFuZDpob3ZlciwgLm5hdmJhci1icmFuZDpmb2N1cyB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLm5hdmJhci1uYXYge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi5uYXZiYXItbmF2IC5uYXYtbGluayB7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG4gIHBhZGRpbmctbGVmdDogMDtcbn1cblxuLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUge1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBmbG9hdDogbm9uZTtcbn1cblxuLm5hdmJhci10ZXh0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nLXRvcDogMC41cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xufVxuXG4ubmF2YmFyLWNvbGxhcHNlIHtcbiAgZmxleC1iYXNpczogMTAwJTtcbiAgZmxleC1ncm93OiAxO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubmF2YmFyLXRvZ2dsZXIge1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLm5hdmJhci10b2dnbGVyOmhvdmVyLCAubmF2YmFyLXRvZ2dsZXI6Zm9jdXMge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5uYXZiYXItdG9nZ2xlci1pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMS41ZW07XG4gIGhlaWdodDogMS41ZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGJhY2tncm91bmQ6IG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7XG4gIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lcixcbiAgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLWZsdWlkLCAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXItc20sIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lci1tZCwgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLWxnLCAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIteGwge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAubmF2YmFyLWV4cGFuZC1zbSB7XG4gICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgfVxuICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgfVxuICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG4gIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IC5uYXYtbGluayB7XG4gICAgcGFkZGluZy1yaWdodDogMC41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC41cmVtO1xuICB9XG4gIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lcixcbiAgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLWZsdWlkLCAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXItc20sIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lci1tZCwgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLWxnLCAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIteGwge1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICB9XG4gIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItY29sbGFwc2Uge1xuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICB9XG4gIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItdG9nZ2xlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHtcbiAgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLFxuICAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItZmx1aWQsIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lci1zbSwgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLW1kLCAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItbGcsIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lci14bCB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5uYXZiYXItZXhwYW5kLW1kIHtcbiAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICB9XG4gIC5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICB9XG4gIC5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cbiAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gIH1cbiAgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLFxuICAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItZmx1aWQsIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lci1zbSwgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLW1kLCAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItbGcsIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lci14bCB7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gIH1cbiAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1jb2xsYXBzZSB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gIH1cbiAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci10b2dnbGVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkge1xuICAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXIsXG4gIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1mbHVpZCwgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLXNtLCAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXItbWQsIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1sZywgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLXhsIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLm5hdmJhci1leHBhbmQtbGcge1xuICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIH1cbiAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIH1cbiAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgfVxuICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLW5hdiAubmF2LWxpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgfVxuICAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXIsXG4gIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1mbHVpZCwgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLXNtLCAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXItbWQsIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1sZywgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLXhsIHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgfVxuICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLWNvbGxhcHNlIHtcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgZmxleC1iYXNpczogYXV0bztcbiAgfVxuICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLXRvZ2dsZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkge1xuICAubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXIsXG4gIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1mbHVpZCwgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLXNtLCAubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXItbWQsIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1sZywgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLXhsIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5uYXZiYXItZXhwYW5kLXhsIHtcbiAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICB9XG4gIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICB9XG4gIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cbiAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gIH1cbiAgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLFxuICAubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXItZmx1aWQsIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1zbSwgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLW1kLCAubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXItbGcsIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci14bCB7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gIH1cbiAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1jb2xsYXBzZSB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gIH1cbiAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci10b2dnbGVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5uYXZiYXItZXhwYW5kIHtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG5cbi5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lcixcbi5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1mbHVpZCwgLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLXNtLCAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItbWQsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1sZywgLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLXhsIHtcbiAgcGFkZGluZy1yaWdodDogMDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xufVxuXG4ubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiB7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG59XG5cbi5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4ubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiAubmF2LWxpbmsge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gIHBhZGRpbmctbGVmdDogMC41cmVtO1xufVxuXG4ubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIsXG4ubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItZmx1aWQsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1zbSwgLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLW1kLCAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItbGcsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci14bCB7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xufVxuXG4ubmF2YmFyLWV4cGFuZCAubmF2YmFyLWNvbGxhcHNlIHtcbiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICBmbGV4LWJhc2lzOiBhdXRvO1xufVxuXG4ubmF2YmFyLWV4cGFuZCAubmF2YmFyLXRvZ2dsZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjkpO1xufVxuXG4ubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQ6aG92ZXIsIC5uYXZiYXItbGlnaHQgLm5hdmJhci1icmFuZDpmb2N1cyB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7XG59XG5cbi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbn1cblxuLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbms6aG92ZXIsIC5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rOmZvY3VzIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC43KTtcbn1cblxuLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsuZGlzYWJsZWQge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjMpO1xufVxuXG4ubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5zaG93ID4gLm5hdi1saW5rLFxuLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLFxuLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsuc2hvdyxcbi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLmFjdGl2ZSB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7XG59XG5cbi5uYXZiYXItbGlnaHQgLm5hdmJhci10b2dnbGVyIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi5uYXZiYXItbGlnaHQgLm5hdmJhci10b2dnbGVyLWljb24ge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzMwJyBoZWlnaHQ9JzMwJyB2aWV3Qm94PScwIDAgMzAgMzAnJTNlJTNjcGF0aCBzdHJva2U9J3JnYmEoMCwgMCwgMCwgMC41KScgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbWl0ZXJsaW1pdD0nMTAnIHN0cm9rZS13aWR0aD0nMicgZD0nTTQgN2gyMk00IDE1aDIyTTQgMjNoMjInLyUzZSUzYy9zdmclM2VcIik7XG59XG5cbi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbn1cblxuLm5hdmJhci1saWdodCAubmF2YmFyLXRleHQgYSB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7XG59XG5cbi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGE6aG92ZXIsIC5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGE6Zm9jdXMge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjkpO1xufVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZCB7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZDpob3ZlciwgLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQ6Zm9jdXMge1xuICBjb2xvcjogI2ZmZjtcbn1cblxuLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluayB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG59XG5cbi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6aG92ZXIsIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6Zm9jdXMge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTtcbn1cblxuLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluay5kaXNhYmxlZCB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpO1xufVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cgPiAubmF2LWxpbmssXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLmFjdGl2ZSA+IC5uYXYtbGluayxcbi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuc2hvdyxcbi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlIHtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi5uYXZiYXItZGFyayAubmF2YmFyLXRvZ2dsZXIge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbn1cblxuLm5hdmJhci1kYXJrIC5uYXZiYXItdG9nZ2xlci1pY29uIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSczMCcgaGVpZ2h0PSczMCcgdmlld0JveD0nMCAwIDMwIDMwJyUzZSUzY3BhdGggc3Ryb2tlPSdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSknIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBzdHJva2Utd2lkdGg9JzInIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8lM2UlM2Mvc3ZnJTNlXCIpO1xufVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci10ZXh0IHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbn1cblxuLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhIHtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYTpob3ZlciwgLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhOmZvY3VzIHtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi5jYXJkIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBtaW4td2lkdGg6IDA7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jbGlwOiBib3JkZXItYm94O1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTI1KTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLmNhcmQgPiBociB7XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbi5jYXJkID4gLmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW07XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xufVxuXG4uY2FyZCA+IC5saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW07XG59XG5cbi5jYXJkLWJvZHkge1xuICBmbGV4OiAxIDEgYXV0bztcbiAgbWluLWhlaWdodDogMXB4O1xuICBwYWRkaW5nOiAxLjI1cmVtO1xufVxuXG4uY2FyZC10aXRsZSB7XG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG59XG5cbi5jYXJkLXN1YnRpdGxlIHtcbiAgbWFyZ2luLXRvcDogLTAuMzc1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY2FyZC10ZXh0Omxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY2FyZC1saW5rOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uY2FyZC1saW5rICsgLmNhcmQtbGluayB7XG4gIG1hcmdpbi1sZWZ0OiAxLjI1cmVtO1xufVxuXG4uY2FyZC1oZWFkZXIge1xuICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wMyk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTI1KTtcbn1cblxuLmNhcmQtaGVhZGVyOmZpcnN0LWNoaWxkIHtcbiAgYm9yZGVyLXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KSBjYWxjKDAuMjVyZW0gLSAxcHgpIDAgMDtcbn1cblxuLmNhcmQtaGVhZGVyICsgLmxpc3QtZ3JvdXAgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7XG4gIGJvcmRlci10b3A6IDA7XG59XG5cbi5jYXJkLWZvb3RlciB7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzKTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMjUpO1xufVxuXG4uY2FyZC1mb290ZXI6bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCBjYWxjKDAuMjVyZW0gLSAxcHgpIGNhbGMoMC4yNXJlbSAtIDFweCk7XG59XG5cbi5jYXJkLWhlYWRlci10YWJzIHtcbiAgbWFyZ2luLXJpZ2h0OiAtMC42MjVyZW07XG4gIG1hcmdpbi1ib3R0b206IC0wLjc1cmVtO1xuICBtYXJnaW4tbGVmdDogLTAuNjI1cmVtO1xuICBib3JkZXItYm90dG9tOiAwO1xufVxuXG4uY2FyZC1oZWFkZXItcGlsbHMge1xuICBtYXJnaW4tcmlnaHQ6IC0wLjYyNXJlbTtcbiAgbWFyZ2luLWxlZnQ6IC0wLjYyNXJlbTtcbn1cblxuLmNhcmQtaW1nLW92ZXJsYXkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgcGFkZGluZzogMS4yNXJlbTtcbn1cblxuLmNhcmQtaW1nLFxuLmNhcmQtaW1nLXRvcCxcbi5jYXJkLWltZy1ib3R0b20ge1xuICBmbGV4LXNocmluazogMDtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5jYXJkLWltZyxcbi5jYXJkLWltZy10b3Age1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTtcbn1cblxuLmNhcmQtaW1nLFxuLmNhcmQtaW1nLWJvdHRvbSB7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpO1xufVxuXG4uY2FyZC1kZWNrIC5jYXJkIHtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5jYXJkLWRlY2sge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgICBtYXJnaW4tcmlnaHQ6IC0xNXB4O1xuICAgIG1hcmdpbi1sZWZ0OiAtMTVweDtcbiAgfVxuICAuY2FyZC1kZWNrIC5jYXJkIHtcbiAgICBmbGV4OiAxIDAgMCU7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gIH1cbn1cblxuLmNhcmQtZ3JvdXAgPiAuY2FyZCB7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAuY2FyZC1ncm91cCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICB9XG4gIC5jYXJkLWdyb3VwID4gLmNhcmQge1xuICAgIGZsZXg6IDEgMCAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG4gIC5jYXJkLWdyb3VwID4gLmNhcmQgKyAuY2FyZCB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gIH1cbiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgfVxuICAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6bGFzdC1jaGlsZCkgLmNhcmQtaW1nLXRvcCxcbiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmxhc3QtY2hpbGQpIC5jYXJkLWhlYWRlciB7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gIH1cbiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmxhc3QtY2hpbGQpIC5jYXJkLWltZy1ib3R0b20sXG4gIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpsYXN0LWNoaWxkKSAuY2FyZC1mb290ZXIge1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICB9XG4gIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgfVxuICAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpIC5jYXJkLWltZy10b3AsXG4gIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCkgLmNhcmQtaGVhZGVyIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICB9XG4gIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCkgLmNhcmQtaW1nLWJvdHRvbSxcbiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKSAuY2FyZC1mb290ZXIge1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gIH1cbn1cblxuLmNhcmQtY29sdW1ucyAuY2FyZCB7XG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAuY2FyZC1jb2x1bW5zIHtcbiAgICBjb2x1bW4tY291bnQ6IDM7XG4gICAgY29sdW1uLWdhcDogMS4yNXJlbTtcbiAgICBvcnBoYW5zOiAxO1xuICAgIHdpZG93czogMTtcbiAgfVxuICAuY2FyZC1jb2x1bW5zIC5jYXJkIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cblxuLmFjY29yZGlvbiA+IC5jYXJkIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmFjY29yZGlvbiA+IC5jYXJkOm5vdCg6bGFzdC1vZi10eXBlKSB7XG4gIGJvcmRlci1ib3R0b206IDA7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xufVxuXG4uYWNjb3JkaW9uID4gLmNhcmQ6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xufVxuXG4uYWNjb3JkaW9uID4gLmNhcmQgPiAuY2FyZC1oZWFkZXIge1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBtYXJnaW4tYm90dG9tOiAtMXB4O1xufVxuXG4uYnJlYWRjcnVtYiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgcGFkZGluZzogMC43NXJlbSAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xufVxuXG4uYnJlYWRjcnVtYi1pdGVtICsgLmJyZWFkY3J1bWItaXRlbSB7XG4gIHBhZGRpbmctbGVmdDogMC41cmVtO1xufVxuXG4uYnJlYWRjcnVtYi1pdGVtICsgLmJyZWFkY3J1bWItaXRlbTo6YmVmb3JlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gIGNvbG9yOiAjNmM3NTdkO1xuICBjb250ZW50OiBcIi9cIjtcbn1cblxuLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4uYnJlYWRjcnVtYi1pdGVtICsgLmJyZWFkY3J1bWItaXRlbTpob3Zlcjo6YmVmb3JlIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uYnJlYWRjcnVtYi1pdGVtLmFjdGl2ZSB7XG4gIGNvbG9yOiAjNmM3NTdkO1xufVxuXG4ucGFnaW5hdGlvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLnBhZ2UtbGluayB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICBtYXJnaW4tbGVmdDogLTFweDtcbiAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gIGNvbG9yOiAjMDA3YmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2O1xufVxuXG4ucGFnZS1saW5rOmhvdmVyIHtcbiAgei1pbmRleDogMjtcbiAgY29sb3I6ICMwMDU2YjM7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjtcbiAgYm9yZGVyLWNvbG9yOiAjZGVlMmU2O1xufVxuXG4ucGFnZS1saW5rOmZvY3VzIHtcbiAgei1pbmRleDogMztcbiAgb3V0bGluZTogMDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpO1xufVxuXG4ucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbTtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbTtcbn1cblxuLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmsge1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07XG59XG5cbi5wYWdlLWl0ZW0uYWN0aXZlIC5wYWdlLWxpbmsge1xuICB6LWluZGV4OiAzO1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmO1xufVxuXG4ucGFnZS1pdGVtLmRpc2FibGVkIC5wYWdlLWxpbmsge1xuICBjb2xvcjogIzZjNzU3ZDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGN1cnNvcjogYXV0bztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyLWNvbG9yOiAjZGVlMmU2O1xufVxuXG4ucGFnaW5hdGlvbi1sZyAucGFnZS1saW5rIHtcbiAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLnBhZ2luYXRpb24tbGcgLnBhZ2UtaXRlbTpmaXJzdC1jaGlsZCAucGFnZS1saW5rIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4zcmVtO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjNyZW07XG59XG5cbi5wYWdpbmF0aW9uLWxnIC5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5rIHtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuM3JlbTtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuM3JlbTtcbn1cblxuLnBhZ2luYXRpb24tc20gLnBhZ2UtbGluayB7XG4gIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBsaW5lLWhlaWdodDogMS41O1xufVxuXG4ucGFnaW5hdGlvbi1zbSAucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjJyZW07XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMnJlbTtcbn1cblxuLnBhZ2luYXRpb24tc20gLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmsge1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4ycmVtO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4ycmVtO1xufVxuXG4uYmFkZ2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDAuMjVlbSAwLjRlbTtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmJhZGdlIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG59XG5cbmEuYmFkZ2U6aG92ZXIsIGEuYmFkZ2U6Zm9jdXMge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5iYWRnZTplbXB0eSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5idG4gLmJhZGdlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IC0xcHg7XG59XG5cbi5iYWRnZS1waWxsIHtcbiAgcGFkZGluZy1yaWdodDogMC42ZW07XG4gIHBhZGRpbmctbGVmdDogMC42ZW07XG4gIGJvcmRlci1yYWRpdXM6IDEwcmVtO1xufVxuXG4uYmFkZ2UtcHJpbWFyeSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmO1xufVxuXG5hLmJhZGdlLXByaW1hcnk6aG92ZXIsIGEuYmFkZ2UtcHJpbWFyeTpmb2N1cyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2MmNjO1xufVxuXG5hLmJhZGdlLXByaW1hcnk6Zm9jdXMsIGEuYmFkZ2UtcHJpbWFyeS5mb2N1cyB7XG4gIG91dGxpbmU6IDA7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjUpO1xufVxuXG4uYmFkZ2Utc2Vjb25kYXJ5IHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7XG59XG5cbmEuYmFkZ2Utc2Vjb25kYXJ5OmhvdmVyLCBhLmJhZGdlLXNlY29uZGFyeTpmb2N1cyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ1YjYyO1xufVxuXG5hLmJhZGdlLXNlY29uZGFyeTpmb2N1cywgYS5iYWRnZS1zZWNvbmRhcnkuZm9jdXMge1xuICBvdXRsaW5lOiAwO1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgxMDgsIDExNywgMTI1LCAwLjUpO1xufVxuXG4uYmFkZ2Utc3VjY2VzcyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xufVxuXG5hLmJhZGdlLXN1Y2Nlc3M6aG92ZXIsIGEuYmFkZ2Utc3VjY2Vzczpmb2N1cyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWU3ZTM0O1xufVxuXG5hLmJhZGdlLXN1Y2Nlc3M6Zm9jdXMsIGEuYmFkZ2Utc3VjY2Vzcy5mb2N1cyB7XG4gIG91dGxpbmU6IDA7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpO1xufVxuXG4uYmFkZ2UtaW5mbyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4O1xufVxuXG5hLmJhZGdlLWluZm86aG92ZXIsIGEuYmFkZ2UtaW5mbzpmb2N1cyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE3YThiO1xufVxuXG5hLmJhZGdlLWluZm86Zm9jdXMsIGEuYmFkZ2UtaW5mby5mb2N1cyB7XG4gIG91dGxpbmU6IDA7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIzLCAxNjIsIDE4NCwgMC41KTtcbn1cblxuLmJhZGdlLXdhcm5pbmcge1xuICBjb2xvcjogIzIxMjUyOTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNztcbn1cblxuYS5iYWRnZS13YXJuaW5nOmhvdmVyLCBhLmJhZGdlLXdhcm5pbmc6Zm9jdXMge1xuICBjb2xvcjogIzIxMjUyOTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QzOWUwMDtcbn1cblxuYS5iYWRnZS13YXJuaW5nOmZvY3VzLCBhLmJhZGdlLXdhcm5pbmcuZm9jdXMge1xuICBvdXRsaW5lOiAwO1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTtcbn1cblxuLmJhZGdlLWRhbmdlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1O1xufVxuXG5hLmJhZGdlLWRhbmdlcjpob3ZlciwgYS5iYWRnZS1kYW5nZXI6Zm9jdXMge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMDtcbn1cblxuYS5iYWRnZS1kYW5nZXI6Zm9jdXMsIGEuYmFkZ2UtZGFuZ2VyLmZvY3VzIHtcbiAgb3V0bGluZTogMDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuNSk7XG59XG5cbi5iYWRnZS1saWdodCB7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xufVxuXG5hLmJhZGdlLWxpZ2h0OmhvdmVyLCBhLmJhZGdlLWxpZ2h0OmZvY3VzIHtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYWUwZTU7XG59XG5cbmEuYmFkZ2UtbGlnaHQ6Zm9jdXMsIGEuYmFkZ2UtbGlnaHQuZm9jdXMge1xuICBvdXRsaW5lOiAwO1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpO1xufVxuXG4uYmFkZ2UtZGFyayB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwO1xufVxuXG5hLmJhZGdlLWRhcms6aG92ZXIsIGEuYmFkZ2UtZGFyazpmb2N1cyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI0O1xufVxuXG5hLmJhZGdlLWRhcms6Zm9jdXMsIGEuYmFkZ2UtZGFyay5mb2N1cyB7XG4gIG91dGxpbmU6IDA7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDUyLCA1OCwgNjQsIDAuNSk7XG59XG5cbi5qdW1ib3Ryb24ge1xuICBwYWRkaW5nOiAycmVtIDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDJyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG4gIGJvcmRlci1yYWRpdXM6IDAuM3JlbTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5qdW1ib3Ryb24ge1xuICAgIHBhZGRpbmc6IDRyZW0gMnJlbTtcbiAgfVxufVxuXG4uanVtYm90cm9uLWZsdWlkIHtcbiAgcGFkZGluZy1yaWdodDogMDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBib3JkZXItcmFkaXVzOiAwO1xufVxuXG4uYWxlcnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG59XG5cbi5hbGVydC1oZWFkaW5nIHtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbi5hbGVydC1saW5rIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLmFsZXJ0LWRpc21pc3NpYmxlIHtcbiAgcGFkZGluZy1yaWdodDogNHJlbTtcbn1cblxuLmFsZXJ0LWRpc21pc3NpYmxlIC5jbG9zZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtO1xuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLmFsZXJ0LXByaW1hcnkge1xuICBjb2xvcjogIzAwNDA4NTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjZTVmZjtcbiAgYm9yZGVyLWNvbG9yOiAjYjhkYWZmO1xufVxuXG4uYWxlcnQtcHJpbWFyeSBociB7XG4gIGJvcmRlci10b3AtY29sb3I6ICM5ZmNkZmY7XG59XG5cbi5hbGVydC1wcmltYXJ5IC5hbGVydC1saW5rIHtcbiAgY29sb3I6ICMwMDI3NTI7XG59XG5cbi5hbGVydC1zZWNvbmRhcnkge1xuICBjb2xvcjogIzM4M2Q0MTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTNlNTtcbiAgYm9yZGVyLWNvbG9yOiAjZDZkOGRiO1xufVxuXG4uYWxlcnQtc2Vjb25kYXJ5IGhyIHtcbiAgYm9yZGVyLXRvcC1jb2xvcjogI2M4Y2JjZjtcbn1cblxuLmFsZXJ0LXNlY29uZGFyeSAuYWxlcnQtbGluayB7XG4gIGNvbG9yOiAjMjAyMzI2O1xufVxuXG4uYWxlcnQtc3VjY2VzcyB7XG4gIGNvbG9yOiAjMTU1NzI0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDRlZGRhO1xuICBib3JkZXItY29sb3I6ICNjM2U2Y2I7XG59XG5cbi5hbGVydC1zdWNjZXNzIGhyIHtcbiAgYm9yZGVyLXRvcC1jb2xvcjogI2IxZGZiYjtcbn1cblxuLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWxpbmsge1xuICBjb2xvcjogIzBiMmUxMztcbn1cblxuLmFsZXJ0LWluZm8ge1xuICBjb2xvcjogIzBjNTQ2MDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QxZWNmMTtcbiAgYm9yZGVyLWNvbG9yOiAjYmVlNWViO1xufVxuXG4uYWxlcnQtaW5mbyBociB7XG4gIGJvcmRlci10b3AtY29sb3I6ICNhYmRkZTU7XG59XG5cbi5hbGVydC1pbmZvIC5hbGVydC1saW5rIHtcbiAgY29sb3I6ICMwNjJjMzM7XG59XG5cbi5hbGVydC13YXJuaW5nIHtcbiAgY29sb3I6ICM4NTY0MDQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYzY2Q7XG4gIGJvcmRlci1jb2xvcjogI2ZmZWViYTtcbn1cblxuLmFsZXJ0LXdhcm5pbmcgaHIge1xuICBib3JkZXItdG9wLWNvbG9yOiAjZmZlOGExO1xufVxuXG4uYWxlcnQtd2FybmluZyAuYWxlcnQtbGluayB7XG4gIGNvbG9yOiAjNTMzZjAzO1xufVxuXG4uYWxlcnQtZGFuZ2VyIHtcbiAgY29sb3I6ICM3MjFjMjQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGQ3ZGE7XG4gIGJvcmRlci1jb2xvcjogI2Y1YzZjYjtcbn1cblxuLmFsZXJ0LWRhbmdlciBociB7XG4gIGJvcmRlci10b3AtY29sb3I6ICNmMWIwYjc7XG59XG5cbi5hbGVydC1kYW5nZXIgLmFsZXJ0LWxpbmsge1xuICBjb2xvcjogIzQ5MTIxNztcbn1cblxuLmFsZXJ0LWxpZ2h0IHtcbiAgY29sb3I6ICM4MTgxODI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZWZlZmU7XG4gIGJvcmRlci1jb2xvcjogI2ZkZmRmZTtcbn1cblxuLmFsZXJ0LWxpZ2h0IGhyIHtcbiAgYm9yZGVyLXRvcC1jb2xvcjogI2VjZWNmNjtcbn1cblxuLmFsZXJ0LWxpZ2h0IC5hbGVydC1saW5rIHtcbiAgY29sb3I6ICM2ODY4Njg7XG59XG5cbi5hbGVydC1kYXJrIHtcbiAgY29sb3I6ICMxYjFlMjE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkNmQ4ZDk7XG4gIGJvcmRlci1jb2xvcjogI2M2YzhjYTtcbn1cblxuLmFsZXJ0LWRhcmsgaHIge1xuICBib3JkZXItdG9wLWNvbG9yOiAjYjliYmJlO1xufVxuXG4uYWxlcnQtZGFyayAuYWxlcnQtbGluayB7XG4gIGNvbG9yOiAjMDQwNTA1O1xufVxuXG5Aa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHtcbiAgZnJvbSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMXJlbSAwO1xuICB9XG4gIHRvIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7XG4gIH1cbn1cblxuLnByb2dyZXNzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAxcmVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG59XG5cbi5wcm9ncmVzcy1iYXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgdHJhbnNpdGlvbjogd2lkdGggMC42cyBlYXNlO1xufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAucHJvZ3Jlc3MtYmFyIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG59XG5cbi5wcm9ncmVzcy1iYXItc3RyaXBlZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO1xuICBiYWNrZ3JvdW5kLXNpemU6IDFyZW0gMXJlbTtcbn1cblxuLnByb2dyZXNzLWJhci1hbmltYXRlZCB7XG4gIGFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMXMgbGluZWFyIGluZmluaXRlO1xufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAucHJvZ3Jlc3MtYmFyLWFuaW1hdGVkIHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cbn1cblxuLm1lZGlhIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG5cbi5tZWRpYS1ib2R5IHtcbiAgZmxleDogMTtcbn1cblxuLmxpc3QtZ3JvdXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGNvbG9yOiAjNDk1MDU3O1xuICB0ZXh0LWFsaWduOiBpbmhlcml0O1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMge1xuICB6LWluZGV4OiAxO1xuICBjb2xvcjogIzQ5NTA1NztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLWFjdGlvbjphY3RpdmUge1xuICBjb2xvcjogIzIxMjUyOTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW07XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQsIC5saXN0LWdyb3VwLWl0ZW06ZGlzYWJsZWQge1xuICBjb2xvcjogIzZjNzU3ZDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHtcbiAgei1pbmRleDogMjtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbSArIC5saXN0LWdyb3VwLWl0ZW0ge1xuICBib3JkZXItdG9wLXdpZHRoOiAwO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtICsgLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUge1xuICBtYXJnaW4tdG9wOiAtMXB4O1xuICBib3JkZXItdG9wLXdpZHRoOiAxcHg7XG59XG5cbi5saXN0LWdyb3VwLWhvcml6b250YWwge1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuXG4ubGlzdC1ncm91cC1ob3Jpem9udGFsIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQge1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbn1cblxuLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbCAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQge1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbCAubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5cbi5saXN0LWdyb3VwLWhvcml6b250YWwgLmxpc3QtZ3JvdXAtaXRlbSArIC5saXN0LWdyb3VwLWl0ZW0ge1xuICBib3JkZXItdG9wLXdpZHRoOiAxcHg7XG4gIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xufVxuXG4ubGlzdC1ncm91cC1ob3Jpem9udGFsIC5saXN0LWdyb3VwLWl0ZW0gKyAubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSB7XG4gIG1hcmdpbi1sZWZ0OiAtMXB4O1xuICBib3JkZXItbGVmdC13aWR0aDogMXB4O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1zbSB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgfVxuICAubGlzdC1ncm91cC1ob3Jpem9udGFsLXNtIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW07XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gIH1cbiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1zbSAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gIH1cbiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1zbSAubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICAubGlzdC1ncm91cC1ob3Jpem9udGFsLXNtIC5saXN0LWdyb3VwLWl0ZW0gKyAubGlzdC1ncm91cC1pdGVtIHtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAxcHg7XG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gIH1cbiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1zbSAubGlzdC1ncm91cC1pdGVtICsgLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUge1xuICAgIG1hcmdpbi1sZWZ0OiAtMXB4O1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwtbWQge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIH1cbiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1tZCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICB9XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwtbWQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICB9XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwtbWQgLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1tZCAubGlzdC1ncm91cC1pdGVtICsgLmxpc3QtZ3JvdXAtaXRlbSB7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogMXB4O1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICB9XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwtbWQgLmxpc3QtZ3JvdXAtaXRlbSArIC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHtcbiAgICBtYXJnaW4tbGVmdDogLTFweDtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMXB4O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAubGlzdC1ncm91cC1ob3Jpem9udGFsLWxnIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICB9XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwtbGcgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbTtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgfVxuICAubGlzdC1ncm91cC1ob3Jpem9udGFsLWxnIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMjVyZW07XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgfVxuICAubGlzdC1ncm91cC1ob3Jpem9udGFsLWxnIC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwtbGcgLmxpc3QtZ3JvdXAtaXRlbSArIC5saXN0LWdyb3VwLWl0ZW0ge1xuICAgIGJvcmRlci10b3Atd2lkdGg6IDFweDtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgfVxuICAubGlzdC1ncm91cC1ob3Jpem9udGFsLWxnIC5saXN0LWdyb3VwLWl0ZW0gKyAubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcHg7XG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDFweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwteGwge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIH1cbiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC14bCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICB9XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwteGwgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICB9XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwteGwgLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC14bCAubGlzdC1ncm91cC1pdGVtICsgLmxpc3QtZ3JvdXAtaXRlbSB7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogMXB4O1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICB9XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwteGwgLmxpc3QtZ3JvdXAtaXRlbSArIC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHtcbiAgICBtYXJnaW4tbGVmdDogLTFweDtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMXB4O1xuICB9XG59XG5cbi5saXN0LWdyb3VwLWZsdXNoIC5saXN0LWdyb3VwLWl0ZW0ge1xuICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICBib3JkZXItcmFkaXVzOiAwO1xufVxuXG4ubGlzdC1ncm91cC1mbHVzaCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHtcbiAgYm9yZGVyLXRvcC13aWR0aDogMDtcbn1cblxuLmxpc3QtZ3JvdXAtZmx1c2g6bGFzdC1jaGlsZCAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQge1xuICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLXByaW1hcnkge1xuICBjb2xvcjogIzAwNDA4NTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I4ZGFmZjtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHtcbiAgY29sb3I6ICMwMDQwODU7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5ZmNkZmY7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0MDg1O1xuICBib3JkZXItY29sb3I6ICMwMDQwODU7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5IHtcbiAgY29sb3I6ICMzODNkNDE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkNmQ4ZGI7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMge1xuICBjb2xvcjogIzM4M2Q0MTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M4Y2JjZjtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM4M2Q0MTtcbiAgYm9yZGVyLWNvbG9yOiAjMzgzZDQxO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3Mge1xuICBjb2xvcjogIzE1NTcyNDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2MzZTZjYjtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHtcbiAgY29sb3I6ICMxNTU3MjQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiMWRmYmI7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTU1NzI0O1xuICBib3JkZXItY29sb3I6ICMxNTU3MjQ7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0taW5mbyB7XG4gIGNvbG9yOiAjMGM1NDYwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmVlNWViO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLWluZm8ubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMge1xuICBjb2xvcjogIzBjNTQ2MDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FiZGRlNTtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwYzU0NjA7XG4gIGJvcmRlci1jb2xvcjogIzBjNTQ2MDtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nIHtcbiAgY29sb3I6ICM4NTY0MDQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmVlYmE7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7XG4gIGNvbG9yOiAjODU2NDA0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlOGExO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzg1NjQwNDtcbiAgYm9yZGVyLWNvbG9yOiAjODU2NDA0O1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLWRhbmdlciB7XG4gIGNvbG9yOiAjNzIxYzI0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVjNmNiO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHtcbiAgY29sb3I6ICM3MjFjMjQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMWIwYjc7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3MjFjMjQ7XG4gIGJvcmRlci1jb2xvcjogIzcyMWMyNDtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbS1saWdodCB7XG4gIGNvbG9yOiAjODE4MTgyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRmZGZlO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tbGlnaHQubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7XG4gIGNvbG9yOiAjODE4MTgyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlY2Y2O1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MTgxODI7XG4gIGJvcmRlci1jb2xvcjogIzgxODE4Mjtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbS1kYXJrIHtcbiAgY29sb3I6ICMxYjFlMjE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjNmM4Y2E7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0tZGFyay5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWRhcmsubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7XG4gIGNvbG9yOiAjMWIxZTIxO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjliYmJlO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLWRhcmsubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFiMWUyMTtcbiAgYm9yZGVyLWNvbG9yOiAjMWIxZTIxO1xufVxuXG4uY2xvc2Uge1xuICBmbG9hdDogcmlnaHQ7XG4gIGZvbnQtc2l6ZTogMS41cmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6ICMwMDA7XG4gIHRleHQtc2hhZG93OiAwIDFweCAwICNmZmY7XG4gIG9wYWNpdHk6IC41O1xufVxuXG4uY2xvc2U6aG92ZXIge1xuICBjb2xvcjogIzAwMDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uY2xvc2U6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIsIC5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpmb2N1cyB7XG4gIG9wYWNpdHk6IC43NTtcbn1cblxuYnV0dG9uLmNsb3NlIHtcbiAgcGFkZGluZzogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuYS5jbG9zZS5kaXNhYmxlZCB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4udG9hc3Qge1xuICBtYXgtd2lkdGg6IDM1MHB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIGJveC1zaGFkb3c6IDAgMC4yNXJlbSAwLjc1cmVtIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICBvcGFjaXR5OiAwO1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xufVxuXG4udG9hc3Q6bm90KDpsYXN0LWNoaWxkKSB7XG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG59XG5cbi50b2FzdC5zaG93aW5nIHtcbiAgb3BhY2l0eTogMTtcbn1cblxuLnRvYXN0LnNob3cge1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3BhY2l0eTogMTtcbn1cblxuLnRvYXN0LmhpZGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4udG9hc3QtaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMC4yNXJlbSAwLjc1cmVtO1xuICBjb2xvcjogIzZjNzU3ZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KTtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wNSk7XG59XG5cbi50b2FzdC1ib2R5IHtcbiAgcGFkZGluZzogMC43NXJlbTtcbn1cblxuLm1vZGFsLW9wZW4ge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ubW9kYWwtb3BlbiAubW9kYWwge1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5tb2RhbCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAxMDUwO1xuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBvdXRsaW5lOiAwO1xufVxuXG4ubW9kYWwtZGlhbG9nIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogYXV0bztcbiAgbWFyZ2luOiAwLjVyZW07XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9nIHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MHB4KTtcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLm1vZGFsLmZhZGUgLm1vZGFsLWRpYWxvZyB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxufVxuXG4ubW9kYWwuc2hvdyAubW9kYWwtZGlhbG9nIHtcbiAgdHJhbnNmb3JtOiBub25lO1xufVxuXG4ubW9kYWwubW9kYWwtc3RhdGljIC5tb2RhbC1kaWFsb2cge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMDIpO1xufVxuXG4ubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAxcmVtKTtcbn1cblxuLm1vZGFsLWRpYWxvZy1zY3JvbGxhYmxlIC5tb2RhbC1jb250ZW50IHtcbiAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDFyZW0pO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUgLm1vZGFsLWhlYWRlcixcbi5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSAubW9kYWwtZm9vdGVyIHtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSAubW9kYWwtYm9keSB7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5tb2RhbC1kaWFsb2ctY2VudGVyZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSAxcmVtKTtcbn1cblxuLm1vZGFsLWRpYWxvZy1jZW50ZXJlZDo6YmVmb3JlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogY2FsYygxMDB2aCAtIDFyZW0pO1xuICBjb250ZW50OiBcIlwiO1xufVxuXG4ubW9kYWwtZGlhbG9nLWNlbnRlcmVkLm1vZGFsLWRpYWxvZy1zY3JvbGxhYmxlIHtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuLm1vZGFsLWRpYWxvZy1jZW50ZXJlZC5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSAubW9kYWwtY29udGVudCB7XG4gIG1heC1oZWlnaHQ6IG5vbmU7XG59XG5cbi5tb2RhbC1kaWFsb2ctY2VudGVyZWQubW9kYWwtZGlhbG9nLXNjcm9sbGFibGU6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IG5vbmU7XG59XG5cbi5tb2RhbC1jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwJTtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgYm9yZGVyLXJhZGl1czogMC4zcmVtO1xuICBvdXRsaW5lOiAwO1xufVxuXG4ubW9kYWwtYmFja2Ryb3Age1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTA0MDtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IDEwMHZoO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwO1xufVxuXG4ubW9kYWwtYmFja2Ryb3AuZmFkZSB7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5tb2RhbC1iYWNrZHJvcC5zaG93IHtcbiAgb3BhY2l0eTogMC41O1xufVxuXG4ubW9kYWwtaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgcGFkZGluZzogMXJlbSAxcmVtO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RlZTJlNjtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogY2FsYygwLjNyZW0gLSAxcHgpO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYygwLjNyZW0gLSAxcHgpO1xufVxuXG4ubW9kYWwtaGVhZGVyIC5jbG9zZSB7XG4gIHBhZGRpbmc6IDFyZW0gMXJlbTtcbiAgbWFyZ2luOiAtMXJlbSAtMXJlbSAtMXJlbSBhdXRvO1xufVxuXG4ubW9kYWwtdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBsaW5lLWhlaWdodDogMS41O1xufVxuXG4ubW9kYWwtYm9keSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxleDogMSAxIGF1dG87XG4gIHBhZGRpbmc6IDFyZW07XG59XG5cbi5tb2RhbC1mb290ZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHBhZGRpbmc6IDAuNzVyZW07XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGVlMmU2O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogY2FsYygwLjNyZW0gLSAxcHgpO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBjYWxjKDAuM3JlbSAtIDFweCk7XG59XG5cbi5tb2RhbC1mb290ZXIgPiAqIHtcbiAgbWFyZ2luOiAwLjI1cmVtO1xufVxuXG4ubW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTk5OTlweDtcbiAgd2lkdGg6IDUwcHg7XG4gIGhlaWdodDogNTBweDtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5tb2RhbC1kaWFsb2cge1xuICAgIG1heC13aWR0aDogNTAwcHg7XG4gICAgbWFyZ2luOiAxLjc1cmVtIGF1dG87XG4gIH1cbiAgLm1vZGFsLWRpYWxvZy1zY3JvbGxhYmxlIHtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAzLjVyZW0pO1xuICB9XG4gIC5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSAubW9kYWwtY29udGVudCB7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDMuNXJlbSk7XG4gIH1cbiAgLm1vZGFsLWRpYWxvZy1jZW50ZXJlZCB7XG4gICAgbWluLWhlaWdodDogY2FsYygxMDAlIC0gMy41cmVtKTtcbiAgfVxuICAubW9kYWwtZGlhbG9nLWNlbnRlcmVkOjpiZWZvcmUge1xuICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDMuNXJlbSk7XG4gIH1cbiAgLm1vZGFsLXNtIHtcbiAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAubW9kYWwtbGcsXG4gIC5tb2RhbC14bCB7XG4gICAgbWF4LXdpZHRoOiA4MDBweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5tb2RhbC14bCB7XG4gICAgbWF4LXdpZHRoOiAxMTQwcHg7XG4gIH1cbn1cblxuLnRvb2x0aXAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDEwNzA7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDA7XG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBcIk5vdG8gU2Fuc1wiLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJTZWdvZSBVSSBTeW1ib2xcIiwgXCJOb3RvIENvbG9yIEVtb2ppXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG4gIHdvcmQtc3BhY2luZzogbm9ybWFsO1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICBsaW5lLWJyZWFrOiBhdXRvO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi50b29sdGlwLnNob3cge1xuICBvcGFjaXR5OiAwLjk7XG59XG5cbi50b29sdGlwIC5hcnJvdyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwLjhyZW07XG4gIGhlaWdodDogMC40cmVtO1xufVxuXG4udG9vbHRpcCAuYXJyb3c6OmJlZm9yZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY29udGVudDogXCJcIjtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbn1cblxuLmJzLXRvb2x0aXAtdG9wLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cInRvcFwiXSB7XG4gIHBhZGRpbmc6IDAuNHJlbSAwO1xufVxuXG4uYnMtdG9vbHRpcC10b3AgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cInRvcFwiXSAuYXJyb3cge1xuICBib3R0b206IDA7XG59XG5cbi5icy10b29sdGlwLXRvcCAuYXJyb3c6OmJlZm9yZSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XCJ0b3BcIl0gLmFycm93OjpiZWZvcmUge1xuICB0b3A6IDA7XG4gIGJvcmRlci13aWR0aDogMC40cmVtIDAuNHJlbSAwO1xuICBib3JkZXItdG9wLWNvbG9yOiAjMDAwO1xufVxuXG4uYnMtdG9vbHRpcC1yaWdodCwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XCJyaWdodFwiXSB7XG4gIHBhZGRpbmc6IDAgMC40cmVtO1xufVxuXG4uYnMtdG9vbHRpcC1yaWdodCAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwicmlnaHRcIl0gLmFycm93IHtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDAuNHJlbTtcbiAgaGVpZ2h0OiAwLjhyZW07XG59XG5cbi5icy10b29sdGlwLXJpZ2h0IC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cInJpZ2h0XCJdIC5hcnJvdzo6YmVmb3JlIHtcbiAgcmlnaHQ6IDA7XG4gIGJvcmRlci13aWR0aDogMC40cmVtIDAuNHJlbSAwLjRyZW0gMDtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjMDAwO1xufVxuXG4uYnMtdG9vbHRpcC1ib3R0b20sIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwiYm90dG9tXCJdIHtcbiAgcGFkZGluZzogMC40cmVtIDA7XG59XG5cbi5icy10b29sdGlwLWJvdHRvbSAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwiYm90dG9tXCJdIC5hcnJvdyB7XG4gIHRvcDogMDtcbn1cblxuLmJzLXRvb2x0aXAtYm90dG9tIC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cImJvdHRvbVwiXSAuYXJyb3c6OmJlZm9yZSB7XG4gIGJvdHRvbTogMDtcbiAgYm9yZGVyLXdpZHRoOiAwIDAuNHJlbSAwLjRyZW07XG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMDA7XG59XG5cbi5icy10b29sdGlwLWxlZnQsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwibGVmdFwiXSB7XG4gIHBhZGRpbmc6IDAgMC40cmVtO1xufVxuXG4uYnMtdG9vbHRpcC1sZWZ0IC5hcnJvdywgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XCJsZWZ0XCJdIC5hcnJvdyB7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMC40cmVtO1xuICBoZWlnaHQ6IDAuOHJlbTtcbn1cblxuLmJzLXRvb2x0aXAtbGVmdCAuYXJyb3c6OmJlZm9yZSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XCJsZWZ0XCJdIC5hcnJvdzo6YmVmb3JlIHtcbiAgbGVmdDogMDtcbiAgYm9yZGVyLXdpZHRoOiAwLjRyZW0gMCAwLjRyZW0gMC40cmVtO1xuICBib3JkZXItbGVmdC1jb2xvcjogIzAwMDtcbn1cblxuLnRvb2x0aXAtaW5uZXIge1xuICBtYXgtd2lkdGg6IDIwMHB4O1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLnBvcG92ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTA2MDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1heC13aWR0aDogMjc2cHg7XG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBcIk5vdG8gU2Fuc1wiLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJTZWdvZSBVSSBTeW1ib2xcIiwgXCJOb3RvIENvbG9yIEVtb2ppXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG4gIHdvcmQtc3BhY2luZzogbm9ybWFsO1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICBsaW5lLWJyZWFrOiBhdXRvO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgYm9yZGVyLXJhZGl1czogMC4zcmVtO1xufVxuXG4ucG9wb3ZlciAuYXJyb3cge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMXJlbTtcbiAgaGVpZ2h0OiAwLjVyZW07XG4gIG1hcmdpbjogMCAwLjNyZW07XG59XG5cbi5wb3BvdmVyIC5hcnJvdzo6YmVmb3JlLCAucG9wb3ZlciAuYXJyb3c6OmFmdGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgY29udGVudDogXCJcIjtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbn1cblxuLmJzLXBvcG92ZXItdG9wLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cInRvcFwiXSB7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cblxuLmJzLXBvcG92ZXItdG9wID4gLmFycm93LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cInRvcFwiXSA+IC5hcnJvdyB7XG4gIGJvdHRvbTogY2FsYygtMC41cmVtIC0gMXB4KTtcbn1cblxuLmJzLXBvcG92ZXItdG9wID4gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVwidG9wXCJdID4gLmFycm93OjpiZWZvcmUge1xuICBib3R0b206IDA7XG4gIGJvcmRlci13aWR0aDogMC41cmVtIDAuNXJlbSAwO1xuICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xufVxuXG4uYnMtcG9wb3Zlci10b3AgPiAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cInRvcFwiXSA+IC5hcnJvdzo6YWZ0ZXIge1xuICBib3R0b206IDFweDtcbiAgYm9yZGVyLXdpZHRoOiAwLjVyZW0gMC41cmVtIDA7XG4gIGJvcmRlci10b3AtY29sb3I6ICNmZmY7XG59XG5cbi5icy1wb3BvdmVyLXJpZ2h0LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cInJpZ2h0XCJdIHtcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbn1cblxuLmJzLXBvcG92ZXItcmlnaHQgPiAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVwicmlnaHRcIl0gPiAuYXJyb3cge1xuICBsZWZ0OiBjYWxjKC0wLjVyZW0gLSAxcHgpO1xuICB3aWR0aDogMC41cmVtO1xuICBoZWlnaHQ6IDFyZW07XG4gIG1hcmdpbjogMC4zcmVtIDA7XG59XG5cbi5icy1wb3BvdmVyLXJpZ2h0ID4gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVwicmlnaHRcIl0gPiAuYXJyb3c6OmJlZm9yZSB7XG4gIGxlZnQ6IDA7XG4gIGJvcmRlci13aWR0aDogMC41cmVtIDAuNXJlbSAwLjVyZW0gMDtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xufVxuXG4uYnMtcG9wb3Zlci1yaWdodCA+IC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVwicmlnaHRcIl0gPiAuYXJyb3c6OmFmdGVyIHtcbiAgbGVmdDogMXB4O1xuICBib3JkZXItd2lkdGg6IDAuNXJlbSAwLjVyZW0gMC41cmVtIDA7XG4gIGJvcmRlci1yaWdodC1jb2xvcjogI2ZmZjtcbn1cblxuLmJzLXBvcG92ZXItYm90dG9tLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cImJvdHRvbVwiXSB7XG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcbn1cblxuLmJzLXBvcG92ZXItYm90dG9tID4gLmFycm93LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cImJvdHRvbVwiXSA+IC5hcnJvdyB7XG4gIHRvcDogY2FsYygtMC41cmVtIC0gMXB4KTtcbn1cblxuLmJzLXBvcG92ZXItYm90dG9tID4gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVwiYm90dG9tXCJdID4gLmFycm93OjpiZWZvcmUge1xuICB0b3A6IDA7XG4gIGJvcmRlci13aWR0aDogMCAwLjVyZW0gMC41cmVtIDAuNXJlbTtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcbn1cblxuLmJzLXBvcG92ZXItYm90dG9tID4gLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49XCJib3R0b21cIl0gPiAuYXJyb3c6OmFmdGVyIHtcbiAgdG9wOiAxcHg7XG4gIGJvcmRlci13aWR0aDogMCAwLjVyZW0gMC41cmVtIDAuNXJlbTtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjtcbn1cblxuLmJzLXBvcG92ZXItYm90dG9tIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cImJvdHRvbVwiXSAucG9wb3Zlci1oZWFkZXI6OmJlZm9yZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiA1MCU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMXJlbTtcbiAgbWFyZ2luLWxlZnQ6IC0wLjVyZW07XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjdmN2Y3O1xufVxuXG4uYnMtcG9wb3Zlci1sZWZ0LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cImxlZnRcIl0ge1xuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbn1cblxuLmJzLXBvcG92ZXItbGVmdCA+IC5hcnJvdywgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49XCJsZWZ0XCJdID4gLmFycm93IHtcbiAgcmlnaHQ6IGNhbGMoLTAuNXJlbSAtIDFweCk7XG4gIHdpZHRoOiAwLjVyZW07XG4gIGhlaWdodDogMXJlbTtcbiAgbWFyZ2luOiAwLjNyZW0gMDtcbn1cblxuLmJzLXBvcG92ZXItbGVmdCA+IC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cImxlZnRcIl0gPiAuYXJyb3c6OmJlZm9yZSB7XG4gIHJpZ2h0OiAwO1xuICBib3JkZXItd2lkdGg6IDAuNXJlbSAwIDAuNXJlbSAwLjVyZW07XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xufVxuXG4uYnMtcG9wb3Zlci1sZWZ0ID4gLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49XCJsZWZ0XCJdID4gLmFycm93OjphZnRlciB7XG4gIHJpZ2h0OiAxcHg7XG4gIGJvcmRlci13aWR0aDogMC41cmVtIDAgMC41cmVtIDAuNXJlbTtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNmZmY7XG59XG5cbi5wb3BvdmVyLWhlYWRlciB7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBmb250LXNpemU6IDFyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWJlYmViO1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBjYWxjKDAuM3JlbSAtIDFweCk7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBjYWxjKDAuM3JlbSAtIDFweCk7XG59XG5cbi5wb3BvdmVyLWhlYWRlcjplbXB0eSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5wb3BvdmVyLWJvZHkge1xuICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTtcbiAgY29sb3I6ICMyMTI1Mjk7XG59XG5cbi5jYXJvdXNlbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmNhcm91c2VsLnBvaW50ZXItZXZlbnQge1xuICB0b3VjaC1hY3Rpb246IHBhbi15O1xufVxuXG4uY2Fyb3VzZWwtaW5uZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uY2Fyb3VzZWwtaW5uZXI6OmFmdGVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGNsZWFyOiBib3RoO1xuICBjb250ZW50OiBcIlwiO1xufVxuXG4uY2Fyb3VzZWwtaXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogbm9uZTtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjZzIGVhc2UtaW4tb3V0O1xufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuY2Fyb3VzZWwtaXRlbSB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxufVxuXG4uY2Fyb3VzZWwtaXRlbS5hY3RpdmUsXG4uY2Fyb3VzZWwtaXRlbS1uZXh0LFxuLmNhcm91c2VsLWl0ZW0tcHJldiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uY2Fyb3VzZWwtaXRlbS1uZXh0Om5vdCguY2Fyb3VzZWwtaXRlbS1sZWZ0KSxcbi5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cblxuLmNhcm91c2VsLWl0ZW0tcHJldjpub3QoLmNhcm91c2VsLWl0ZW0tcmlnaHQpLFxuLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xufVxuXG4uY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbSB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IG9wYWNpdHk7XG4gIHRyYW5zZm9ybTogbm9uZTtcbn1cblxuLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0uYWN0aXZlLFxuLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0tbmV4dC5jYXJvdXNlbC1pdGVtLWxlZnQsXG4uY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQge1xuICB6LWluZGV4OiAxO1xuICBvcGFjaXR5OiAxO1xufVxuXG4uY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCxcbi5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7XG4gIHotaW5kZXg6IDA7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMHMgMC42cztcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQsXG4gIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxufVxuXG4uY2Fyb3VzZWwtY29udHJvbC1wcmV2LFxuLmNhcm91c2VsLWNvbnRyb2wtbmV4dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHotaW5kZXg6IDE7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMTUlO1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBvcGFjaXR5OiAwLjU7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTtcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmNhcm91c2VsLWNvbnRyb2wtcHJldixcbiAgLmNhcm91c2VsLWNvbnRyb2wtbmV4dCB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxufVxuXG4uY2Fyb3VzZWwtY29udHJvbC1wcmV2OmhvdmVyLCAuY2Fyb3VzZWwtY29udHJvbC1wcmV2OmZvY3VzLFxuLmNhcm91c2VsLWNvbnRyb2wtbmV4dDpob3Zlcixcbi5jYXJvdXNlbC1jb250cm9sLW5leHQ6Zm9jdXMge1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBvdXRsaW5lOiAwO1xuICBvcGFjaXR5OiAwLjk7XG59XG5cbi5jYXJvdXNlbC1jb250cm9sLXByZXYge1xuICBsZWZ0OiAwO1xufVxuXG4uY2Fyb3VzZWwtY29udHJvbC1uZXh0IHtcbiAgcmlnaHQ6IDA7XG59XG5cbi5jYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbixcbi5jYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgYmFja2dyb3VuZDogbm8tcmVwZWF0IDUwJSAvIDEwMCUgMTAwJTtcbn1cblxuLmNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyM2ZmZicgd2lkdGg9JzgnIGhlaWdodD0nOCcgdmlld0JveD0nMCAwIDggOCclM2UlM2NwYXRoIGQ9J001LjI1IDBsLTQgNCA0IDQgMS41LTEuNUw0LjI1IDRsMi41LTIuNUw1LjI1IDB6Jy8lM2UlM2Mvc3ZnJTNlXCIpO1xufVxuXG4uY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24ge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbD0nJTIzZmZmJyB3aWR0aD0nOCcgaGVpZ2h0PSc4JyB2aWV3Qm94PScwIDAgOCA4JyUzZSUzY3BhdGggZD0nTTIuNzUgMGwtMS41IDEuNUwzLjc1IDRsLTIuNSAyLjVMMi43NSA4bDQtNC00LTR6Jy8lM2UlM2Mvc3ZnJTNlXCIpO1xufVxuXG4uY2Fyb3VzZWwtaW5kaWNhdG9ycyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbi1yaWdodDogMTUlO1xuICBtYXJnaW4tbGVmdDogMTUlO1xuICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG4uY2Fyb3VzZWwtaW5kaWNhdG9ycyBsaSB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBmbGV4OiAwIDEgYXV0bztcbiAgd2lkdGg6IDMwcHg7XG4gIGhlaWdodDogM3B4O1xuICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgbWFyZ2luLWxlZnQ6IDNweDtcbiAgdGV4dC1pbmRlbnQ6IC05OTlweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXItdG9wOiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItYm90dG9tOiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBvcGFjaXR5OiAuNTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjZzIGVhc2U7XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG59XG5cbi5jYXJvdXNlbC1pbmRpY2F0b3JzIC5hY3RpdmUge1xuICBvcGFjaXR5OiAxO1xufVxuXG4uY2Fyb3VzZWwtY2FwdGlvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDE1JTtcbiAgYm90dG9tOiAyMHB4O1xuICBsZWZ0OiAxNSU7XG4gIHotaW5kZXg6IDEwO1xuICBwYWRkaW5nLXRvcDogMjBweDtcbiAgcGFkZGluZy1ib3R0b206IDIwcHg7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbkBrZXlmcmFtZXMgc3Bpbm5lci1ib3JkZXIge1xuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuXG4uc3Bpbm5lci1ib3JkZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAycmVtO1xuICBoZWlnaHQ6IDJyZW07XG4gIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTtcbiAgYm9yZGVyOiAwLjI1ZW0gc29saWQgY3VycmVudENvbG9yO1xuICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGFuaW1hdGlvbjogc3Bpbm5lci1ib3JkZXIgLjc1cyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbi5zcGlubmVyLWJvcmRlci1zbSB7XG4gIHdpZHRoOiAxcmVtO1xuICBoZWlnaHQ6IDFyZW07XG4gIGJvcmRlci13aWR0aDogMC4yZW07XG59XG5cbkBrZXlmcmFtZXMgc3Bpbm5lci1ncm93IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbi5zcGlubmVyLWdyb3cge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAycmVtO1xuICBoZWlnaHQ6IDJyZW07XG4gIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIG9wYWNpdHk6IDA7XG4gIGFuaW1hdGlvbjogc3Bpbm5lci1ncm93IC43NXMgbGluZWFyIGluZmluaXRlO1xufVxuXG4uc3Bpbm5lci1ncm93LXNtIHtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbn1cblxuLmFsaWduLWJhc2VsaW5lIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi10b3Age1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1taWRkbGUge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1ib3R0b20ge1xuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi10ZXh0LWJvdHRvbSB7XG4gIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbSAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24tdGV4dC10b3Age1xuICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3AgIWltcG9ydGFudDtcbn1cblxuLmJnLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7XG59XG5cbmEuYmctcHJpbWFyeTpob3ZlciwgYS5iZy1wcmltYXJ5OmZvY3VzLFxuYnV0dG9uLmJnLXByaW1hcnk6aG92ZXIsXG5idXR0b24uYmctcHJpbWFyeTpmb2N1cyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDYyY2MgIWltcG9ydGFudDtcbn1cblxuLmJnLXNlY29uZGFyeSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDtcbn1cblxuYS5iZy1zZWNvbmRhcnk6aG92ZXIsIGEuYmctc2Vjb25kYXJ5OmZvY3VzLFxuYnV0dG9uLmJnLXNlY29uZGFyeTpob3ZlcixcbmJ1dHRvbi5iZy1zZWNvbmRhcnk6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ1YjYyICFpbXBvcnRhbnQ7XG59XG5cbi5iZy1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50O1xufVxuXG5hLmJnLXN1Y2Nlc3M6aG92ZXIsIGEuYmctc3VjY2Vzczpmb2N1cyxcbmJ1dHRvbi5iZy1zdWNjZXNzOmhvdmVyLFxuYnV0dG9uLmJnLXN1Y2Nlc3M6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWU3ZTM0ICFpbXBvcnRhbnQ7XG59XG5cbi5iZy1pbmZvIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiOCAhaW1wb3J0YW50O1xufVxuXG5hLmJnLWluZm86aG92ZXIsIGEuYmctaW5mbzpmb2N1cyxcbmJ1dHRvbi5iZy1pbmZvOmhvdmVyLFxuYnV0dG9uLmJnLWluZm86Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE3YThiICFpbXBvcnRhbnQ7XG59XG5cbi5iZy13YXJuaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50O1xufVxuXG5hLmJnLXdhcm5pbmc6aG92ZXIsIGEuYmctd2FybmluZzpmb2N1cyxcbmJ1dHRvbi5iZy13YXJuaW5nOmhvdmVyLFxuYnV0dG9uLmJnLXdhcm5pbmc6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDM5ZTAwICFpbXBvcnRhbnQ7XG59XG5cbi5iZy1kYW5nZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7XG59XG5cbmEuYmctZGFuZ2VyOmhvdmVyLCBhLmJnLWRhbmdlcjpmb2N1cyxcbmJ1dHRvbi5iZy1kYW5nZXI6aG92ZXIsXG5idXR0b24uYmctZGFuZ2VyOmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMCAhaW1wb3J0YW50O1xufVxuXG4uYmctbGlnaHQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7XG59XG5cbmEuYmctbGlnaHQ6aG92ZXIsIGEuYmctbGlnaHQ6Zm9jdXMsXG5idXR0b24uYmctbGlnaHQ6aG92ZXIsXG5idXR0b24uYmctbGlnaHQ6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFlMGU1ICFpbXBvcnRhbnQ7XG59XG5cbi5iZy1kYXJrIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50O1xufVxuXG5hLmJnLWRhcms6aG92ZXIsIGEuYmctZGFyazpmb2N1cyxcbmJ1dHRvbi5iZy1kYXJrOmhvdmVyLFxuYnV0dG9uLmJnLWRhcms6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI0ICFpbXBvcnRhbnQ7XG59XG5cbi5iZy13aGl0ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbn1cblxuLmJnLXRyYW5zcGFyZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cblxuLmJvcmRlciB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTYgIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci10b3Age1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50O1xufVxuXG4uYm9yZGVyLXJpZ2h0IHtcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50O1xufVxuXG4uYm9yZGVyLWJvdHRvbSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGVlMmU2ICFpbXBvcnRhbnQ7XG59XG5cbi5ib3JkZXItbGVmdCB7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50O1xufVxuXG4uYm9yZGVyLTAge1xuICBib3JkZXI6IDAgIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci10b3AtMCB7XG4gIGJvcmRlci10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci1yaWdodC0wIHtcbiAgYm9yZGVyLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG59XG5cbi5ib3JkZXItYm90dG9tLTAge1xuICBib3JkZXItYm90dG9tOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5ib3JkZXItbGVmdC0wIHtcbiAgYm9yZGVyLWxlZnQ6IDAgIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci1wcmltYXJ5IHtcbiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7XG59XG5cbi5ib3JkZXItc2Vjb25kYXJ5IHtcbiAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkICFpbXBvcnRhbnQ7XG59XG5cbi5ib3JkZXItc3VjY2VzcyB7XG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50O1xufVxuXG4uYm9yZGVyLWluZm8ge1xuICBib3JkZXItY29sb3I6ICMxN2EyYjggIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci13YXJuaW5nIHtcbiAgYm9yZGVyLWNvbG9yOiAjZmZjMTA3ICFpbXBvcnRhbnQ7XG59XG5cbi5ib3JkZXItZGFuZ2VyIHtcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7XG59XG5cbi5ib3JkZXItbGlnaHQge1xuICBib3JkZXItY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci1kYXJrIHtcbiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwICFpbXBvcnRhbnQ7XG59XG5cbi5ib3JkZXItd2hpdGUge1xuICBib3JkZXItY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQtc20ge1xuICBib3JkZXItcmFkaXVzOiAwLjJyZW0gIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQge1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLXRvcCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQtcmlnaHQge1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC1ib3R0b20ge1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50O1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLWxlZnQge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQtbGcge1xuICBib3JkZXItcmFkaXVzOiAwLjNyZW0gIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQtY2lyY2xlIHtcbiAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLXBpbGwge1xuICBib3JkZXItcmFkaXVzOiA1MHJlbSAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC0wIHtcbiAgYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xufVxuXG4uY2xlYXJmaXg6OmFmdGVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGNsZWFyOiBib3RoO1xuICBjb250ZW50OiBcIlwiO1xufVxuXG4uZC1ub25lIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uZC1pbmxpbmUge1xuICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcbn1cblxuLmQtaW5saW5lLWJsb2NrIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG59XG5cbi5kLWJsb2NrIHtcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbn1cblxuLmQtdGFibGUge1xuICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50O1xufVxuXG4uZC10YWJsZS1yb3cge1xuICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDtcbn1cblxuLmQtdGFibGUtY2VsbCB7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDtcbn1cblxuLmQtZmxleCB7XG4gIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbn1cblxuLmQtaW5saW5lLWZsZXgge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmQtc20tbm9uZSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC5kLXNtLWlubGluZSB7XG4gICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtc20taW5saW5lLWJsb2NrIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDtcbiAgfVxuICAuZC1zbS1ibG9jayB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgfVxuICAuZC1zbS10YWJsZSB7XG4gICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDtcbiAgfVxuICAuZC1zbS10YWJsZS1yb3cge1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50O1xuICB9XG4gIC5kLXNtLXRhYmxlLWNlbGwge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDtcbiAgfVxuICAuZC1zbS1mbGV4IHtcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtc20taW5saW5lLWZsZXgge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5kLW1kLW5vbmUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAuZC1tZC1pbmxpbmUge1xuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xuICB9XG4gIC5kLW1kLWlubGluZS1ibG9jayB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtbWQtYmxvY2sge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtbWQtdGFibGUge1xuICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtbWQtdGFibGUtcm93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDtcbiAgfVxuICAuZC1tZC10YWJsZS1jZWxsIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtbWQtZmxleCB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICB9XG4gIC5kLW1kLWlubGluZS1mbGV4IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuZC1sZy1ub25lIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtbGctaW5saW5lIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcbiAgfVxuICAuZC1sZy1pbmxpbmUtYmxvY2sge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xuICB9XG4gIC5kLWxnLWJsb2NrIHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICB9XG4gIC5kLWxnLXRhYmxlIHtcbiAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50O1xuICB9XG4gIC5kLWxnLXRhYmxlLXJvdyB7XG4gICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtbGctdGFibGUtY2VsbCB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50O1xuICB9XG4gIC5kLWxnLWZsZXgge1xuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgfVxuICAuZC1sZy1pbmxpbmUtZmxleCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5kLXhsLW5vbmUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAuZC14bC1pbmxpbmUge1xuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xuICB9XG4gIC5kLXhsLWlubGluZS1ibG9jayB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQteGwtYmxvY2sge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQteGwtdGFibGUge1xuICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQteGwtdGFibGUtcm93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDtcbiAgfVxuICAuZC14bC10YWJsZS1jZWxsIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQteGwtZmxleCB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICB9XG4gIC5kLXhsLWlubGluZS1mbGV4IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSBwcmludCB7XG4gIC5kLXByaW50LW5vbmUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAuZC1wcmludC1pbmxpbmUge1xuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xuICB9XG4gIC5kLXByaW50LWlubGluZS1ibG9jayB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtcHJpbnQtYmxvY2sge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtcHJpbnQtdGFibGUge1xuICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtcHJpbnQtdGFibGUtcm93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDtcbiAgfVxuICAuZC1wcmludC10YWJsZS1jZWxsIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtcHJpbnQtZmxleCB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICB9XG4gIC5kLXByaW50LWlubGluZS1mbGV4IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5lbWJlZC1yZXNwb25zaXZlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5lbWJlZC1yZXNwb25zaXZlOjpiZWZvcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgY29udGVudDogXCJcIjtcbn1cblxuLmVtYmVkLXJlc3BvbnNpdmUgLmVtYmVkLXJlc3BvbnNpdmUtaXRlbSxcbi5lbWJlZC1yZXNwb25zaXZlIGlmcmFtZSxcbi5lbWJlZC1yZXNwb25zaXZlIGVtYmVkLFxuLmVtYmVkLXJlc3BvbnNpdmUgb2JqZWN0LFxuLmVtYmVkLXJlc3BvbnNpdmUgdmlkZW8ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3JkZXI6IDA7XG59XG5cbi5lbWJlZC1yZXNwb25zaXZlLTIxYnk5OjpiZWZvcmUge1xuICBwYWRkaW5nLXRvcDogNDIuODU3MTQzJTtcbn1cblxuLmVtYmVkLXJlc3BvbnNpdmUtMTZieTk6OmJlZm9yZSB7XG4gIHBhZGRpbmctdG9wOiA1Ni4yNSU7XG59XG5cbi5lbWJlZC1yZXNwb25zaXZlLTRieTM6OmJlZm9yZSB7XG4gIHBhZGRpbmctdG9wOiA3NSU7XG59XG5cbi5lbWJlZC1yZXNwb25zaXZlLTFieTE6OmJlZm9yZSB7XG4gIHBhZGRpbmctdG9wOiAxMDAlO1xufVxuXG4uZmxleC1yb3cge1xuICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7XG59XG5cbi5mbGV4LWNvbHVtbiB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDtcbn1cblxuLmZsZXgtcm93LXJldmVyc2Uge1xuICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDtcbn1cblxuLmZsZXgtY29sdW1uLXJldmVyc2Uge1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDtcbn1cblxuLmZsZXgtd3JhcCB7XG4gIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50O1xufVxuXG4uZmxleC1ub3dyYXAge1xuICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50O1xufVxuXG4uZmxleC13cmFwLXJldmVyc2Uge1xuICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50O1xufVxuXG4uZmxleC1maWxsIHtcbiAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmZsZXgtZ3Jvdy0wIHtcbiAgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7XG59XG5cbi5mbGV4LWdyb3ctMSB7XG4gIGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50O1xufVxuXG4uZmxleC1zaHJpbmstMCB7XG4gIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5mbGV4LXNocmluay0xIHtcbiAgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDtcbn1cblxuLmp1c3RpZnktY29udGVudC1zdGFydCB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50O1xufVxuXG4uanVzdGlmeS1jb250ZW50LWVuZCB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDtcbn1cblxuLmp1c3RpZnktY29udGVudC1jZW50ZXIge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xufVxuXG4uanVzdGlmeS1jb250ZW50LWJldHdlZW4ge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDtcbn1cblxuLmp1c3RpZnktY29udGVudC1hcm91bmQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24taXRlbXMtc3RhcnQge1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24taXRlbXMtZW5kIHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1pdGVtcy1jZW50ZXIge1xuICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1pdGVtcy1iYXNlbGluZSB7XG4gIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24taXRlbXMtc3RyZXRjaCB7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1jb250ZW50LXN0YXJ0IHtcbiAgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24tY29udGVudC1lbmQge1xuICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24tY29udGVudC1jZW50ZXIge1xuICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbn1cblxuLmFsaWduLWNvbnRlbnQtYmV0d2VlbiB7XG4gIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDtcbn1cblxuLmFsaWduLWNvbnRlbnQtYXJvdW5kIHtcbiAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1jb250ZW50LXN0cmV0Y2gge1xuICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1zZWxmLWF1dG8ge1xuICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1zZWxmLXN0YXJ0IHtcbiAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24tc2VsZi1lbmQge1xuICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24tc2VsZi1jZW50ZXIge1xuICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDtcbn1cblxuLmFsaWduLXNlbGYtYmFzZWxpbmUge1xuICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24tc2VsZi1zdHJldGNoIHtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmZsZXgtc20tcm93IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtc20tY29sdW1uIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtc20tcm93LXJldmVyc2Uge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LXNtLWNvbHVtbi1yZXZlcnNlIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1zbS13cmFwIHtcbiAgICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1zbS1ub3dyYXAge1xuICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtc20td3JhcC1yZXZlcnNlIHtcbiAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LXNtLWZpbGwge1xuICAgIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtc20tZ3Jvdy0wIHtcbiAgICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1zbS1ncm93LTEge1xuICAgIGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LXNtLXNocmluay0wIHtcbiAgICBmbGV4LXNocmluazogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LXNtLXNocmluay0xIHtcbiAgICBmbGV4LXNocmluazogMSAhaW1wb3J0YW50O1xuICB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtc20tc3RhcnQge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtc20tZW5kIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmp1c3RpZnktY29udGVudC1zbS1jZW50ZXIge1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmp1c3RpZnktY29udGVudC1zbS1iZXR3ZWVuIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDtcbiAgfVxuICAuanVzdGlmeS1jb250ZW50LXNtLWFyb3VuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24taXRlbXMtc20tc3RhcnQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWl0ZW1zLXNtLWVuZCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWl0ZW1zLXNtLWNlbnRlciB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1pdGVtcy1zbS1iYXNlbGluZSB7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWl0ZW1zLXNtLXN0cmV0Y2gge1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQtc20tc3RhcnQge1xuICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tY29udGVudC1zbS1lbmQge1xuICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQtc20tY2VudGVyIHtcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tY29udGVudC1zbS1iZXR3ZWVuIHtcbiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQtc20tYXJvdW5kIHtcbiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tY29udGVudC1zbS1zdHJldGNoIHtcbiAgICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLXNlbGYtc20tYXV0byB7XG4gICAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLXNtLXN0YXJ0IHtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLXNlbGYtc20tZW5kIHtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLXNtLWNlbnRlciB7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLXNlbGYtc20tYmFzZWxpbmUge1xuICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLXNlbGYtc20tc3RyZXRjaCB7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuZmxleC1tZC1yb3cge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1tZC1jb2x1bW4ge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1tZC1yb3ctcmV2ZXJzZSB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtbWQtY29sdW1uLXJldmVyc2Uge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LW1kLXdyYXAge1xuICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LW1kLW5vd3JhcCB7XG4gICAgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1tZC13cmFwLXJldmVyc2Uge1xuICAgIGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtbWQtZmlsbCB7XG4gICAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1tZC1ncm93LTAge1xuICAgIGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LW1kLWdyb3ctMSB7XG4gICAgZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtbWQtc2hyaW5rLTAge1xuICAgIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtbWQtc2hyaW5rLTEge1xuICAgIGZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmp1c3RpZnktY29udGVudC1tZC1zdGFydCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmp1c3RpZnktY29udGVudC1tZC1lbmQge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDtcbiAgfVxuICAuanVzdGlmeS1jb250ZW50LW1kLWNlbnRlciB7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbiAgfVxuICAuanVzdGlmeS1jb250ZW50LW1kLWJldHdlZW4ge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50O1xuICB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtbWQtYXJvdW5kIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1pdGVtcy1tZC1zdGFydCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24taXRlbXMtbWQtZW5kIHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24taXRlbXMtbWQtY2VudGVyIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWl0ZW1zLW1kLWJhc2VsaW5lIHtcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24taXRlbXMtbWQtc3RyZXRjaCB7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tY29udGVudC1tZC1zdGFydCB7XG4gICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LW1kLWVuZCB7XG4gICAgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tY29udGVudC1tZC1jZW50ZXIge1xuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LW1kLWJldHdlZW4ge1xuICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tY29udGVudC1tZC1hcm91bmQge1xuICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LW1kLXN0cmV0Y2gge1xuICAgIGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tc2VsZi1tZC1hdXRvIHtcbiAgICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLXNlbGYtbWQtc3RhcnQge1xuICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tc2VsZi1tZC1lbmQge1xuICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLXNlbGYtbWQtY2VudGVyIHtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tc2VsZi1tZC1iYXNlbGluZSB7XG4gICAgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tc2VsZi1tZC1zdHJldGNoIHtcbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5mbGV4LWxnLXJvdyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LWxnLWNvbHVtbiB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LWxnLXJvdy1yZXZlcnNlIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1sZy1jb2x1bW4tcmV2ZXJzZSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtbGctd3JhcCB7XG4gICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtbGctbm93cmFwIHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LWxnLXdyYXAtcmV2ZXJzZSB7XG4gICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1sZy1maWxsIHtcbiAgICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LWxnLWdyb3ctMCB7XG4gICAgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtbGctZ3Jvdy0xIHtcbiAgICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1sZy1zaHJpbmstMCB7XG4gICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1sZy1zaHJpbmstMSB7XG4gICAgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDtcbiAgfVxuICAuanVzdGlmeS1jb250ZW50LWxnLXN0YXJ0IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgfVxuICAuanVzdGlmeS1jb250ZW50LWxnLWVuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtbGctY2VudGVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtbGctYmV0d2VlbiB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmp1c3RpZnktY29udGVudC1sZy1hcm91bmQge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWl0ZW1zLWxnLXN0YXJ0IHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1pdGVtcy1sZy1lbmQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1pdGVtcy1sZy1jZW50ZXIge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24taXRlbXMtbGctYmFzZWxpbmUge1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1pdGVtcy1sZy1zdHJldGNoIHtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LWxnLXN0YXJ0IHtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQtbGctZW5kIHtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LWxnLWNlbnRlciB7XG4gICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQtbGctYmV0d2VlbiB7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LWxnLWFyb3VuZCB7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQtbGctc3RyZXRjaCB7XG4gICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLWxnLWF1dG8ge1xuICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tc2VsZi1sZy1zdGFydCB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLWxnLWVuZCB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tc2VsZi1sZy1jZW50ZXIge1xuICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLWxnLWJhc2VsaW5lIHtcbiAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLWxnLXN0cmV0Y2gge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5mbGV4LXhsLXJvdyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LXhsLWNvbHVtbiB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LXhsLXJvdy1yZXZlcnNlIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC14bC1jb2x1bW4tcmV2ZXJzZSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgteGwtd3JhcCB7XG4gICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgteGwtbm93cmFwIHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LXhsLXdyYXAtcmV2ZXJzZSB7XG4gICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC14bC1maWxsIHtcbiAgICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LXhsLWdyb3ctMCB7XG4gICAgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgteGwtZ3Jvdy0xIHtcbiAgICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC14bC1zaHJpbmstMCB7XG4gICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC14bC1zaHJpbmstMSB7XG4gICAgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDtcbiAgfVxuICAuanVzdGlmeS1jb250ZW50LXhsLXN0YXJ0IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgfVxuICAuanVzdGlmeS1jb250ZW50LXhsLWVuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQteGwtY2VudGVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQteGwtYmV0d2VlbiB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmp1c3RpZnktY29udGVudC14bC1hcm91bmQge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWl0ZW1zLXhsLXN0YXJ0IHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1pdGVtcy14bC1lbmQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1pdGVtcy14bC1jZW50ZXIge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24taXRlbXMteGwtYmFzZWxpbmUge1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1pdGVtcy14bC1zdHJldGNoIHtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LXhsLXN0YXJ0IHtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQteGwtZW5kIHtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LXhsLWNlbnRlciB7XG4gICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQteGwtYmV0d2VlbiB7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LXhsLWFyb3VuZCB7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQteGwtc3RyZXRjaCB7XG4gICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLXhsLWF1dG8ge1xuICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tc2VsZi14bC1zdGFydCB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLXhsLWVuZCB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tc2VsZi14bC1jZW50ZXIge1xuICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLXhsLWJhc2VsaW5lIHtcbiAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLXhsLXN0cmV0Y2gge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDtcbiAgfVxufVxuXG4uZmxvYXQtbGVmdCB7XG4gIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7XG59XG5cbi5mbG9hdC1yaWdodCB7XG4gIGZsb2F0OiByaWdodCAhaW1wb3J0YW50O1xufVxuXG4uZmxvYXQtbm9uZSB7XG4gIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAuZmxvYXQtc20tbGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDtcbiAgfVxuICAuZmxvYXQtc20tcmlnaHQge1xuICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50O1xuICB9XG4gIC5mbG9hdC1zbS1ub25lIHtcbiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuZmxvYXQtbWQtbGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDtcbiAgfVxuICAuZmxvYXQtbWQtcmlnaHQge1xuICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50O1xuICB9XG4gIC5mbG9hdC1tZC1ub25lIHtcbiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuZmxvYXQtbGctbGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDtcbiAgfVxuICAuZmxvYXQtbGctcmlnaHQge1xuICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50O1xuICB9XG4gIC5mbG9hdC1sZy1ub25lIHtcbiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLmZsb2F0LXhsLWxlZnQge1xuICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsb2F0LXhsLXJpZ2h0IHtcbiAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDtcbiAgfVxuICAuZmxvYXQteGwtbm9uZSB7XG4gICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4ub3ZlcmZsb3ctYXV0byB7XG4gIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi5vdmVyZmxvdy1oaWRkZW4ge1xuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG59XG5cbi5wb3NpdGlvbi1zdGF0aWMge1xuICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7XG59XG5cbi5wb3NpdGlvbi1yZWxhdGl2ZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xufVxuXG4ucG9zaXRpb24tYWJzb2x1dGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbn1cblxuLnBvc2l0aW9uLWZpeGVkIHtcbiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7XG59XG5cbi5wb3NpdGlvbi1zdGlja3kge1xuICBwb3NpdGlvbjogc3RpY2t5ICFpbXBvcnRhbnQ7XG59XG5cbi5maXhlZC10b3Age1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDEwMzA7XG59XG5cbi5maXhlZC1ib3R0b20ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDEwMzA7XG59XG5cbkBzdXBwb3J0cyAocG9zaXRpb246IHN0aWNreSkge1xuICAuc3RpY2t5LXRvcCB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IDA7XG4gICAgei1pbmRleDogMTAyMDtcbiAgfVxufVxuXG4uc3Itb25seSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgYm9yZGVyOiAwO1xufVxuXG4uc3Itb25seS1mb2N1c2FibGU6YWN0aXZlLCAuc3Itb25seS1mb2N1c2FibGU6Zm9jdXMge1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiBhdXRvO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgY2xpcDogYXV0bztcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cblxuLnNoYWRvdy1zbSB7XG4gIGJveC1zaGFkb3c6IDAgMC4xMjVyZW0gMC4yNXJlbSByZ2JhKDAsIDAsIDAsIDAuMDc1KSAhaW1wb3J0YW50O1xufVxuXG4uc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAwLjVyZW0gMXJlbSByZ2JhKDAsIDAsIDAsIDAuMTUpICFpbXBvcnRhbnQ7XG59XG5cbi5zaGFkb3ctbGcge1xuICBib3gtc2hhZG93OiAwIDFyZW0gM3JlbSByZ2JhKDAsIDAsIDAsIDAuMTc1KSAhaW1wb3J0YW50O1xufVxuXG4uc2hhZG93LW5vbmUge1xuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi53LTI1IHtcbiAgd2lkdGg6IDI1JSAhaW1wb3J0YW50O1xufVxuXG4udy01MCB7XG4gIHdpZHRoOiA1MCUgIWltcG9ydGFudDtcbn1cblxuLnctNzUge1xuICB3aWR0aDogNzUlICFpbXBvcnRhbnQ7XG59XG5cbi53LTEwMCB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi53LWF1dG8ge1xuICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xufVxuXG4uaC0yNSB7XG4gIGhlaWdodDogMjUlICFpbXBvcnRhbnQ7XG59XG5cbi5oLTUwIHtcbiAgaGVpZ2h0OiA1MCUgIWltcG9ydGFudDtcbn1cblxuLmgtNzUge1xuICBoZWlnaHQ6IDc1JSAhaW1wb3J0YW50O1xufVxuXG4uaC0xMDAge1xuICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbn1cblxuLmgtYXV0byB7XG4gIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuXG4ubXctMTAwIHtcbiAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi5taC0xMDAge1xuICBtYXgtaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi5taW4tdnctMTAwIHtcbiAgbWluLXdpZHRoOiAxMDB2dyAhaW1wb3J0YW50O1xufVxuXG4ubWluLXZoLTEwMCB7XG4gIG1pbi1oZWlnaHQ6IDEwMHZoICFpbXBvcnRhbnQ7XG59XG5cbi52dy0xMDAge1xuICB3aWR0aDogMTAwdncgIWltcG9ydGFudDtcbn1cblxuLnZoLTEwMCB7XG4gIGhlaWdodDogMTAwdmggIWltcG9ydGFudDtcbn1cblxuLnN0cmV0Y2hlZC1saW5rOjphZnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAxO1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgY29udGVudDogXCJcIjtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcbn1cblxuLm0tMCB7XG4gIG1hcmdpbjogMCAhaW1wb3J0YW50O1xufVxuXG4ubXQtMCxcbi5teS0wIHtcbiAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xufVxuXG4ubXItMCxcbi5teC0wIHtcbiAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG59XG5cbi5tYi0wLFxuLm15LTAge1xuICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5tbC0wLFxuLm14LTAge1xuICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xufVxuXG4ubS0xIHtcbiAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tdC0xLFxuLm15LTEge1xuICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tci0xLFxuLm14LTEge1xuICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDtcbn1cblxuLm1iLTEsXG4ubXktMSB7XG4gIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDtcbn1cblxuLm1sLTEsXG4ubXgtMSB7XG4gIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tLTIge1xuICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXQtMixcbi5teS0yIHtcbiAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tci0yLFxuLm14LTIge1xuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubWItMixcbi5teS0yIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tbC0yLFxuLm14LTIge1xuICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tLTMge1xuICBtYXJnaW46IDFyZW0gIWltcG9ydGFudDtcbn1cblxuLm10LTMsXG4ubXktMyB7XG4gIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDtcbn1cblxuLm1yLTMsXG4ubXgtMyB7XG4gIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubWItMyxcbi5teS0zIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubWwtMyxcbi5teC0zIHtcbiAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDtcbn1cblxuLm0tNCB7XG4gIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tdC00LFxuLm15LTQge1xuICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLm1yLTQsXG4ubXgtNCB7XG4gIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tYi00LFxuLm15LTQge1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLm1sLTQsXG4ubXgtNCB7XG4gIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLm0tNSB7XG4gIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50O1xufVxuXG4ubXQtNSxcbi5teS01IHtcbiAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50O1xufVxuXG4ubXItNSxcbi5teC01IHtcbiAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tYi01LFxuLm15LTUge1xuICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tbC01LFxuLm14LTUge1xuICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50O1xufVxuXG4ucC0wIHtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4ucHQtMCxcbi5weS0wIHtcbiAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuLnByLTAsXG4ucHgtMCB7XG4gIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcbn1cblxuLnBiLTAsXG4ucHktMCB7XG4gIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5wbC0wLFxuLnB4LTAge1xuICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcbn1cblxuLnAtMSB7XG4gIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnB0LTEsXG4ucHktMSB7XG4gIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wci0xLFxuLnB4LTEge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wYi0xLFxuLnB5LTEge1xuICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucGwtMSxcbi5weC0xIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wLTIge1xuICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnB0LTIsXG4ucHktMiB7XG4gIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnByLTIsXG4ucHgtMiB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucGItMixcbi5weS0yIHtcbiAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucGwtMixcbi5weC0yIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnAtMyB7XG4gIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDtcbn1cblxuLnB0LTMsXG4ucHktMyB7XG4gIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wci0zLFxuLnB4LTMge1xuICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wYi0zLFxuLnB5LTMge1xuICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucGwtMyxcbi5weC0zIHtcbiAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wLTQge1xuICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnB0LTQsXG4ucHktNCB7XG4gIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnByLTQsXG4ucHgtNCB7XG4gIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucGItNCxcbi5weS00IHtcbiAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucGwtNCxcbi5weC00IHtcbiAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnAtNSB7XG4gIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDtcbn1cblxuLnB0LTUsXG4ucHktNSB7XG4gIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wci01LFxuLnB4LTUge1xuICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wYi01LFxuLnB5LTUge1xuICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50O1xufVxuXG4ucGwtNSxcbi5weC01IHtcbiAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tLW4xIHtcbiAgbWFyZ2luOiAtMC4yNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXQtbjEsXG4ubXktbjEge1xuICBtYXJnaW4tdG9wOiAtMC4yNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXItbjEsXG4ubXgtbjEge1xuICBtYXJnaW4tcmlnaHQ6IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tYi1uMSxcbi5teS1uMSB7XG4gIG1hcmdpbi1ib3R0b206IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tbC1uMSxcbi5teC1uMSB7XG4gIG1hcmdpbi1sZWZ0OiAtMC4yNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubS1uMiB7XG4gIG1hcmdpbjogLTAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXQtbjIsXG4ubXktbjIge1xuICBtYXJnaW4tdG9wOiAtMC41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tci1uMixcbi5teC1uMiB7XG4gIG1hcmdpbi1yaWdodDogLTAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubWItbjIsXG4ubXktbjIge1xuICBtYXJnaW4tYm90dG9tOiAtMC41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tbC1uMixcbi5teC1uMiB7XG4gIG1hcmdpbi1sZWZ0OiAtMC41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tLW4zIHtcbiAgbWFyZ2luOiAtMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXQtbjMsXG4ubXktbjMge1xuICBtYXJnaW4tdG9wOiAtMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXItbjMsXG4ubXgtbjMge1xuICBtYXJnaW4tcmlnaHQ6IC0xcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tYi1uMyxcbi5teS1uMyB7XG4gIG1hcmdpbi1ib3R0b206IC0xcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tbC1uMyxcbi5teC1uMyB7XG4gIG1hcmdpbi1sZWZ0OiAtMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubS1uNCB7XG4gIG1hcmdpbjogLTEuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXQtbjQsXG4ubXktbjQge1xuICBtYXJnaW4tdG9wOiAtMS41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tci1uNCxcbi5teC1uNCB7XG4gIG1hcmdpbi1yaWdodDogLTEuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubWItbjQsXG4ubXktbjQge1xuICBtYXJnaW4tYm90dG9tOiAtMS41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tbC1uNCxcbi5teC1uNCB7XG4gIG1hcmdpbi1sZWZ0OiAtMS41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tLW41IHtcbiAgbWFyZ2luOiAtM3JlbSAhaW1wb3J0YW50O1xufVxuXG4ubXQtbjUsXG4ubXktbjUge1xuICBtYXJnaW4tdG9wOiAtM3JlbSAhaW1wb3J0YW50O1xufVxuXG4ubXItbjUsXG4ubXgtbjUge1xuICBtYXJnaW4tcmlnaHQ6IC0zcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tYi1uNSxcbi5teS1uNSB7XG4gIG1hcmdpbi1ib3R0b206IC0zcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tbC1uNSxcbi5teC1uNSB7XG4gIG1hcmdpbi1sZWZ0OiAtM3JlbSAhaW1wb3J0YW50O1xufVxuXG4ubS1hdXRvIHtcbiAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi5tdC1hdXRvLFxuLm15LWF1dG8ge1xuICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi5tci1hdXRvLFxuLm14LWF1dG8ge1xuICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLm1iLWF1dG8sXG4ubXktYXV0byB7XG4gIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLm1sLWF1dG8sXG4ubXgtYXV0byB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAubS1zbS0wIHtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgfVxuICAubXQtc20tMCxcbiAgLm15LXNtLTAge1xuICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcbiAgfVxuICAubXItc20tMCxcbiAgLm14LXNtLTAge1xuICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1zbS0wLFxuICAubXktc20tMCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1zbS0wLFxuICAubXgtc20tMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgfVxuICAubS1zbS0xIHtcbiAgICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtc20tMSxcbiAgLm15LXNtLTEge1xuICAgIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItc20tMSxcbiAgLm14LXNtLTEge1xuICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1zbS0xLFxuICAubXktc20tMSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1zbS0xLFxuICAubXgtc20tMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1zbS0yIHtcbiAgICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1zbS0yLFxuICAubXktc20tMiB7XG4gICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLXNtLTIsXG4gIC5teC1zbS0yIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1zbS0yLFxuICAubXktc20tMiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLXNtLTIsXG4gIC5teC1zbS0yIHtcbiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tc20tMyB7XG4gICAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXNtLTMsXG4gIC5teS1zbS0zIHtcbiAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLXNtLTMsXG4gIC5teC1zbS0zIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItc20tMyxcbiAgLm15LXNtLTMge1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtc20tMyxcbiAgLm14LXNtLTMge1xuICAgIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tc20tNCB7XG4gICAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtc20tNCxcbiAgLm15LXNtLTQge1xuICAgIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1zbS00LFxuICAubXgtc20tNCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItc20tNCxcbiAgLm15LXNtLTQge1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1zbS00LFxuICAubXgtc20tNCB7XG4gICAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLXNtLTUge1xuICAgIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1zbS01LFxuICAubXktc20tNSB7XG4gICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1zbS01LFxuICAubXgtc20tNSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLXNtLTUsXG4gIC5teS1zbS01IHtcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLXNtLTUsXG4gIC5teC1zbS01IHtcbiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wLXNtLTAge1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgfVxuICAucHQtc20tMCxcbiAgLnB5LXNtLTAge1xuICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnByLXNtLTAsXG4gIC5weC1zbS0wIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBiLXNtLTAsXG4gIC5weS1zbS0wIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5wbC1zbS0wLFxuICAucHgtc20tMCB7XG4gICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnAtc20tMSB7XG4gICAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wdC1zbS0xLFxuICAucHktc20tMSB7XG4gICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHItc20tMSxcbiAgLnB4LXNtLTEge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGItc20tMSxcbiAgLnB5LXNtLTEge1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBsLXNtLTEsXG4gIC5weC1zbS0xIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucC1zbS0yIHtcbiAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHQtc20tMixcbiAgLnB5LXNtLTIge1xuICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHItc20tMixcbiAgLnB4LXNtLTIge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi1zbS0yLFxuICAucHktc20tMiB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wbC1zbS0yLFxuICAucHgtc20tMiB7XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucC1zbS0zIHtcbiAgICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LXNtLTMsXG4gIC5weS1zbS0zIHtcbiAgICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wci1zbS0zLFxuICAucHgtc20tMyB7XG4gICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi1zbS0zLFxuICAucHktc20tMyB7XG4gICAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGwtc20tMyxcbiAgLnB4LXNtLTMge1xuICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wLXNtLTQge1xuICAgIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wdC1zbS00LFxuICAucHktc20tNCB7XG4gICAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wci1zbS00LFxuICAucHgtc20tNCB7XG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBiLXNtLTQsXG4gIC5weS1zbS00IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBsLXNtLTQsXG4gIC5weC1zbS00IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wLXNtLTUge1xuICAgIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHQtc20tNSxcbiAgLnB5LXNtLTUge1xuICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnByLXNtLTUsXG4gIC5weC1zbS01IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBiLXNtLTUsXG4gIC5weS1zbS01IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wbC1zbS01LFxuICAucHgtc20tNSB7XG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tc20tbjEge1xuICAgIG1hcmdpbjogLTAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtc20tbjEsXG4gIC5teS1zbS1uMSB7XG4gICAgbWFyZ2luLXRvcDogLTAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItc20tbjEsXG4gIC5teC1zbS1uMSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1zbS1uMSxcbiAgLm15LXNtLW4xIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1zbS1uMSxcbiAgLm14LXNtLW4xIHtcbiAgICBtYXJnaW4tbGVmdDogLTAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1zbS1uMiB7XG4gICAgbWFyZ2luOiAtMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXNtLW4yLFxuICAubXktc20tbjIge1xuICAgIG1hcmdpbi10b3A6IC0wLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItc20tbjIsXG4gIC5teC1zbS1uMiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLXNtLW4yLFxuICAubXktc20tbjIge1xuICAgIG1hcmdpbi1ib3R0b206IC0wLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtc20tbjIsXG4gIC5teC1zbS1uMiB7XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1zbS1uMyB7XG4gICAgbWFyZ2luOiAtMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1zbS1uMyxcbiAgLm15LXNtLW4zIHtcbiAgICBtYXJnaW4tdG9wOiAtMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1zbS1uMyxcbiAgLm14LXNtLW4zIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0xcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLXNtLW4zLFxuICAubXktc20tbjMge1xuICAgIG1hcmdpbi1ib3R0b206IC0xcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLXNtLW4zLFxuICAubXgtc20tbjMge1xuICAgIG1hcmdpbi1sZWZ0OiAtMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLXNtLW40IHtcbiAgICBtYXJnaW46IC0xLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtc20tbjQsXG4gIC5teS1zbS1uNCB7XG4gICAgbWFyZ2luLXRvcDogLTEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1zbS1uNCxcbiAgLm14LXNtLW40IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0xLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItc20tbjQsXG4gIC5teS1zbS1uNCB7XG4gICAgbWFyZ2luLWJvdHRvbTogLTEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1zbS1uNCxcbiAgLm14LXNtLW40IHtcbiAgICBtYXJnaW4tbGVmdDogLTEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLXNtLW41IHtcbiAgICBtYXJnaW46IC0zcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXNtLW41LFxuICAubXktc20tbjUge1xuICAgIG1hcmdpbi10b3A6IC0zcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLXNtLW41LFxuICAubXgtc20tbjUge1xuICAgIG1hcmdpbi1yaWdodDogLTNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItc20tbjUsXG4gIC5teS1zbS1uNSB7XG4gICAgbWFyZ2luLWJvdHRvbTogLTNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtc20tbjUsXG4gIC5teC1zbS1uNSB7XG4gICAgbWFyZ2luLWxlZnQ6IC0zcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tc20tYXV0byB7XG4gICAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXNtLWF1dG8sXG4gIC5teS1zbS1hdXRvIHtcbiAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLXNtLWF1dG8sXG4gIC5teC1zbS1hdXRvIHtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgfVxuICAubWItc20tYXV0byxcbiAgLm15LXNtLWF1dG8ge1xuICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDtcbiAgfVxuICAubWwtc20tYXV0byxcbiAgLm14LXNtLWF1dG8ge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5tLW1kLTAge1xuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1tZC0wLFxuICAubXktbWQtMCB7XG4gICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1tZC0wLFxuICAubXgtbWQtMCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLW1kLTAsXG4gIC5teS1tZC0wIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLW1kLTAsXG4gIC5teC1tZC0wIHtcbiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5tLW1kLTEge1xuICAgIG1hcmdpbjogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1tZC0xLFxuICAubXktbWQtMSB7XG4gICAgbWFyZ2luLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1tZC0xLFxuICAubXgtbWQtMSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLW1kLTEsXG4gIC5teS1tZC0xIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLW1kLTEsXG4gIC5teC1tZC0xIHtcbiAgICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLW1kLTIge1xuICAgIG1hcmdpbjogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LW1kLTIsXG4gIC5teS1tZC0yIHtcbiAgICBtYXJnaW4tdG9wOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItbWQtMixcbiAgLm14LW1kLTIge1xuICAgIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLW1kLTIsXG4gIC5teS1tZC0yIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtbWQtMixcbiAgLm14LW1kLTIge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1tZC0zIHtcbiAgICBtYXJnaW46IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtbWQtMyxcbiAgLm15LW1kLTMge1xuICAgIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItbWQtMyxcbiAgLm14LW1kLTMge1xuICAgIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1tZC0zLFxuICAubXktbWQtMyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1tZC0zLFxuICAubXgtbWQtMyB7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1tZC00IHtcbiAgICBtYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1tZC00LFxuICAubXktbWQtNCB7XG4gICAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLW1kLTQsXG4gIC5teC1tZC00IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1tZC00LFxuICAubXktbWQtNCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLW1kLTQsXG4gIC5teC1tZC00IHtcbiAgICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tbWQtNSB7XG4gICAgbWFyZ2luOiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LW1kLTUsXG4gIC5teS1tZC01IHtcbiAgICBtYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLW1kLTUsXG4gIC5teC1tZC01IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItbWQtNSxcbiAgLm15LW1kLTUge1xuICAgIG1hcmdpbi1ib3R0b206IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtbWQtNSxcbiAgLm14LW1kLTUge1xuICAgIG1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnAtbWQtMCB7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5wdC1tZC0wLFxuICAucHktbWQtMCB7XG4gICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcbiAgfVxuICAucHItbWQtMCxcbiAgLnB4LW1kLTAge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgfVxuICAucGItbWQtMCxcbiAgLnB5LW1kLTAge1xuICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBsLW1kLTAsXG4gIC5weC1tZC0wIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgfVxuICAucC1tZC0xIHtcbiAgICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LW1kLTEsXG4gIC5weS1tZC0xIHtcbiAgICBwYWRkaW5nLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wci1tZC0xLFxuICAucHgtbWQtMSB7XG4gICAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi1tZC0xLFxuICAucHktbWQtMSB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGwtbWQtMSxcbiAgLnB4LW1kLTEge1xuICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wLW1kLTIge1xuICAgIHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wdC1tZC0yLFxuICAucHktbWQtMiB7XG4gICAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wci1tZC0yLFxuICAucHgtbWQtMiB7XG4gICAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBiLW1kLTIsXG4gIC5weS1tZC0yIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBsLW1kLTIsXG4gIC5weC1tZC0yIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wLW1kLTMge1xuICAgIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHQtbWQtMyxcbiAgLnB5LW1kLTMge1xuICAgIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnByLW1kLTMsXG4gIC5weC1tZC0zIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBiLW1kLTMsXG4gIC5weS1tZC0zIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wbC1tZC0zLFxuICAucHgtbWQtMyB7XG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnAtbWQtNCB7XG4gICAgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LW1kLTQsXG4gIC5weS1tZC00IHtcbiAgICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnByLW1kLTQsXG4gIC5weC1tZC00IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGItbWQtNCxcbiAgLnB5LW1kLTQge1xuICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGwtbWQtNCxcbiAgLnB4LW1kLTQge1xuICAgIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnAtbWQtNSB7XG4gICAgcGFkZGluZzogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wdC1tZC01LFxuICAucHktbWQtNSB7XG4gICAgcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHItbWQtNSxcbiAgLnB4LW1kLTUge1xuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGItbWQtNSxcbiAgLnB5LW1kLTUge1xuICAgIHBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBsLW1kLTUsXG4gIC5weC1tZC01IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1tZC1uMSB7XG4gICAgbWFyZ2luOiAtMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1tZC1uMSxcbiAgLm15LW1kLW4xIHtcbiAgICBtYXJnaW4tdG9wOiAtMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1tZC1uMSxcbiAgLm14LW1kLW4xIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLW1kLW4xLFxuICAubXktbWQtbjEge1xuICAgIG1hcmdpbi1ib3R0b206IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLW1kLW4xLFxuICAubXgtbWQtbjEge1xuICAgIG1hcmdpbi1sZWZ0OiAtMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLW1kLW4yIHtcbiAgICBtYXJnaW46IC0wLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtbWQtbjIsXG4gIC5teS1tZC1uMiB7XG4gICAgbWFyZ2luLXRvcDogLTAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1tZC1uMixcbiAgLm14LW1kLW4yIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItbWQtbjIsXG4gIC5teS1tZC1uMiB7XG4gICAgbWFyZ2luLWJvdHRvbTogLTAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1tZC1uMixcbiAgLm14LW1kLW4yIHtcbiAgICBtYXJnaW4tbGVmdDogLTAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLW1kLW4zIHtcbiAgICBtYXJnaW46IC0xcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LW1kLW4zLFxuICAubXktbWQtbjMge1xuICAgIG1hcmdpbi10b3A6IC0xcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLW1kLW4zLFxuICAubXgtbWQtbjMge1xuICAgIG1hcmdpbi1yaWdodDogLTFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItbWQtbjMsXG4gIC5teS1tZC1uMyB7XG4gICAgbWFyZ2luLWJvdHRvbTogLTFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtbWQtbjMsXG4gIC5teC1tZC1uMyB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tbWQtbjQge1xuICAgIG1hcmdpbjogLTEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1tZC1uNCxcbiAgLm15LW1kLW40IHtcbiAgICBtYXJnaW4tdG9wOiAtMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLW1kLW40LFxuICAubXgtbWQtbjQge1xuICAgIG1hcmdpbi1yaWdodDogLTEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1tZC1uNCxcbiAgLm15LW1kLW40IHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLW1kLW40LFxuICAubXgtbWQtbjQge1xuICAgIG1hcmdpbi1sZWZ0OiAtMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tbWQtbjUge1xuICAgIG1hcmdpbjogLTNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtbWQtbjUsXG4gIC5teS1tZC1uNSB7XG4gICAgbWFyZ2luLXRvcDogLTNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItbWQtbjUsXG4gIC5teC1tZC1uNSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1tZC1uNSxcbiAgLm15LW1kLW41IHtcbiAgICBtYXJnaW4tYm90dG9tOiAtM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1tZC1uNSxcbiAgLm14LW1kLW41IHtcbiAgICBtYXJnaW4tbGVmdDogLTNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1tZC1hdXRvIHtcbiAgICBtYXJnaW46IGF1dG8gIWltcG9ydGFudDtcbiAgfVxuICAubXQtbWQtYXV0byxcbiAgLm15LW1kLWF1dG8ge1xuICAgIG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDtcbiAgfVxuICAubXItbWQtYXV0byxcbiAgLm14LW1kLWF1dG8ge1xuICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1tZC1hdXRvLFxuICAubXktbWQtYXV0byB7XG4gICAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1tZC1hdXRvLFxuICAubXgtbWQtYXV0byB7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLm0tbGctMCB7XG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LWxnLTAsXG4gIC5teS1sZy0wIHtcbiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLWxnLTAsXG4gIC5teC1sZy0wIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgfVxuICAubWItbGctMCxcbiAgLm15LWxnLTAge1xuICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgfVxuICAubWwtbGctMCxcbiAgLm14LWxnLTAge1xuICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tbGctMSB7XG4gICAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LWxnLTEsXG4gIC5teS1sZy0xIHtcbiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLWxnLTEsXG4gIC5teC1sZy0xIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItbGctMSxcbiAgLm15LWxnLTEge1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtbGctMSxcbiAgLm14LWxnLTEge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tbGctMiB7XG4gICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtbGctMixcbiAgLm15LWxnLTIge1xuICAgIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1sZy0yLFxuICAubXgtbGctMiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItbGctMixcbiAgLm15LWxnLTIge1xuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1sZy0yLFxuICAubXgtbGctMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLWxnLTMge1xuICAgIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1sZy0zLFxuICAubXktbGctMyB7XG4gICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1sZy0zLFxuICAubXgtbGctMyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLWxnLTMsXG4gIC5teS1sZy0zIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLWxnLTMsXG4gIC5teC1sZy0zIHtcbiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLWxnLTQge1xuICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LWxnLTQsXG4gIC5teS1sZy00IHtcbiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItbGctNCxcbiAgLm14LWxnLTQge1xuICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLWxnLTQsXG4gIC5teS1sZy00IHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtbGctNCxcbiAgLm14LWxnLTQge1xuICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1sZy01IHtcbiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtbGctNSxcbiAgLm15LWxnLTUge1xuICAgIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItbGctNSxcbiAgLm14LWxnLTUge1xuICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1sZy01LFxuICAubXktbGctNSB7XG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1sZy01LFxuICAubXgtbGctNSB7XG4gICAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucC1sZy0wIHtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LWxnLTAsXG4gIC5weS1sZy0wIHtcbiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5wci1sZy0wLFxuICAucHgtbGctMCB7XG4gICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi1sZy0wLFxuICAucHktbGctMCB7XG4gICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgfVxuICAucGwtbGctMCxcbiAgLnB4LWxnLTAge1xuICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5wLWxnLTEge1xuICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHQtbGctMSxcbiAgLnB5LWxnLTEge1xuICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnByLWxnLTEsXG4gIC5weC1sZy0xIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBiLWxnLTEsXG4gIC5weS1sZy0xIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wbC1sZy0xLFxuICAucHgtbGctMSB7XG4gICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnAtbGctMiB7XG4gICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LWxnLTIsXG4gIC5weS1sZy0yIHtcbiAgICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnByLWxnLTIsXG4gIC5weC1sZy0yIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGItbGctMixcbiAgLnB5LWxnLTIge1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGwtbGctMixcbiAgLnB4LWxnLTIge1xuICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnAtbGctMyB7XG4gICAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wdC1sZy0zLFxuICAucHktbGctMyB7XG4gICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHItbGctMyxcbiAgLnB4LWxnLTMge1xuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGItbGctMyxcbiAgLnB5LWxnLTMge1xuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBsLWxnLTMsXG4gIC5weC1sZy0zIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucC1sZy00IHtcbiAgICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHQtbGctNCxcbiAgLnB5LWxnLTQge1xuICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHItbGctNCxcbiAgLnB4LWxnLTQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi1sZy00LFxuICAucHktbGctNCB7XG4gICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wbC1sZy00LFxuICAucHgtbGctNCB7XG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucC1sZy01IHtcbiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LWxnLTUsXG4gIC5weS1sZy01IHtcbiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wci1sZy01LFxuICAucHgtbGctNSB7XG4gICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi1sZy01LFxuICAucHktbGctNSB7XG4gICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGwtbGctNSxcbiAgLnB4LWxnLTUge1xuICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLWxnLW4xIHtcbiAgICBtYXJnaW46IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LWxnLW4xLFxuICAubXktbGctbjEge1xuICAgIG1hcmdpbi10b3A6IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLWxnLW4xLFxuICAubXgtbGctbjEge1xuICAgIG1hcmdpbi1yaWdodDogLTAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItbGctbjEsXG4gIC5teS1sZy1uMSB7XG4gICAgbWFyZ2luLWJvdHRvbTogLTAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtbGctbjEsXG4gIC5teC1sZy1uMSB7XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tbGctbjIge1xuICAgIG1hcmdpbjogLTAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1sZy1uMixcbiAgLm15LWxnLW4yIHtcbiAgICBtYXJnaW4tdG9wOiAtMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLWxnLW4yLFxuICAubXgtbGctbjIge1xuICAgIG1hcmdpbi1yaWdodDogLTAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1sZy1uMixcbiAgLm15LWxnLW4yIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLWxnLW4yLFxuICAubXgtbGctbjIge1xuICAgIG1hcmdpbi1sZWZ0OiAtMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tbGctbjMge1xuICAgIG1hcmdpbjogLTFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtbGctbjMsXG4gIC5teS1sZy1uMyB7XG4gICAgbWFyZ2luLXRvcDogLTFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItbGctbjMsXG4gIC5teC1sZy1uMyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1sZy1uMyxcbiAgLm15LWxnLW4zIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1sZy1uMyxcbiAgLm14LWxnLW4zIHtcbiAgICBtYXJnaW4tbGVmdDogLTFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1sZy1uNCB7XG4gICAgbWFyZ2luOiAtMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LWxnLW40LFxuICAubXktbGctbjQge1xuICAgIG1hcmdpbi10b3A6IC0xLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItbGctbjQsXG4gIC5teC1sZy1uNCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLWxnLW40LFxuICAubXktbGctbjQge1xuICAgIG1hcmdpbi1ib3R0b206IC0xLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtbGctbjQsXG4gIC5teC1sZy1uNCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1sZy1uNSB7XG4gICAgbWFyZ2luOiAtM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1sZy1uNSxcbiAgLm15LWxnLW41IHtcbiAgICBtYXJnaW4tdG9wOiAtM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1sZy1uNSxcbiAgLm14LWxnLW41IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0zcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLWxnLW41LFxuICAubXktbGctbjUge1xuICAgIG1hcmdpbi1ib3R0b206IC0zcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLWxnLW41LFxuICAubXgtbGctbjUge1xuICAgIG1hcmdpbi1sZWZ0OiAtM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLWxnLWF1dG8ge1xuICAgIG1hcmdpbjogYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1sZy1hdXRvLFxuICAubXktbGctYXV0byB7XG4gICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1sZy1hdXRvLFxuICAubXgtbGctYXV0byB7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLWxnLWF1dG8sXG4gIC5teS1sZy1hdXRvIHtcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLWxnLWF1dG8sXG4gIC5teC1sZy1hdXRvIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLm0teGwtMCB7XG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXhsLTAsXG4gIC5teS14bC0wIHtcbiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLXhsLTAsXG4gIC5teC14bC0wIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgfVxuICAubWIteGwtMCxcbiAgLm15LXhsLTAge1xuICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgfVxuICAubWwteGwtMCxcbiAgLm14LXhsLTAge1xuICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0teGwtMSB7XG4gICAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXhsLTEsXG4gIC5teS14bC0xIHtcbiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLXhsLTEsXG4gIC5teC14bC0xIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWIteGwtMSxcbiAgLm15LXhsLTEge1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwteGwtMSxcbiAgLm14LXhsLTEge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0teGwtMiB7XG4gICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQteGwtMixcbiAgLm15LXhsLTIge1xuICAgIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci14bC0yLFxuICAubXgteGwtMiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWIteGwtMixcbiAgLm15LXhsLTIge1xuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC14bC0yLFxuICAubXgteGwtMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLXhsLTMge1xuICAgIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC14bC0zLFxuICAubXkteGwtMyB7XG4gICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci14bC0zLFxuICAubXgteGwtMyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLXhsLTMsXG4gIC5teS14bC0zIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLXhsLTMsXG4gIC5teC14bC0zIHtcbiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLXhsLTQge1xuICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXhsLTQsXG4gIC5teS14bC00IHtcbiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXIteGwtNCxcbiAgLm14LXhsLTQge1xuICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLXhsLTQsXG4gIC5teS14bC00IHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwteGwtNCxcbiAgLm14LXhsLTQge1xuICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS14bC01IHtcbiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQteGwtNSxcbiAgLm15LXhsLTUge1xuICAgIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXIteGwtNSxcbiAgLm14LXhsLTUge1xuICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi14bC01LFxuICAubXkteGwtNSB7XG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC14bC01LFxuICAubXgteGwtNSB7XG4gICAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucC14bC0wIHtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LXhsLTAsXG4gIC5weS14bC0wIHtcbiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5wci14bC0wLFxuICAucHgteGwtMCB7XG4gICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi14bC0wLFxuICAucHkteGwtMCB7XG4gICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgfVxuICAucGwteGwtMCxcbiAgLnB4LXhsLTAge1xuICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5wLXhsLTEge1xuICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHQteGwtMSxcbiAgLnB5LXhsLTEge1xuICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnByLXhsLTEsXG4gIC5weC14bC0xIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBiLXhsLTEsXG4gIC5weS14bC0xIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wbC14bC0xLFxuICAucHgteGwtMSB7XG4gICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnAteGwtMiB7XG4gICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LXhsLTIsXG4gIC5weS14bC0yIHtcbiAgICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnByLXhsLTIsXG4gIC5weC14bC0yIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGIteGwtMixcbiAgLnB5LXhsLTIge1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGwteGwtMixcbiAgLnB4LXhsLTIge1xuICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnAteGwtMyB7XG4gICAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wdC14bC0zLFxuICAucHkteGwtMyB7XG4gICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHIteGwtMyxcbiAgLnB4LXhsLTMge1xuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGIteGwtMyxcbiAgLnB5LXhsLTMge1xuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBsLXhsLTMsXG4gIC5weC14bC0zIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucC14bC00IHtcbiAgICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHQteGwtNCxcbiAgLnB5LXhsLTQge1xuICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHIteGwtNCxcbiAgLnB4LXhsLTQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi14bC00LFxuICAucHkteGwtNCB7XG4gICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wbC14bC00LFxuICAucHgteGwtNCB7XG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucC14bC01IHtcbiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LXhsLTUsXG4gIC5weS14bC01IHtcbiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wci14bC01LFxuICAucHgteGwtNSB7XG4gICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi14bC01LFxuICAucHkteGwtNSB7XG4gICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGwteGwtNSxcbiAgLnB4LXhsLTUge1xuICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLXhsLW4xIHtcbiAgICBtYXJnaW46IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXhsLW4xLFxuICAubXkteGwtbjEge1xuICAgIG1hcmdpbi10b3A6IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLXhsLW4xLFxuICAubXgteGwtbjEge1xuICAgIG1hcmdpbi1yaWdodDogLTAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWIteGwtbjEsXG4gIC5teS14bC1uMSB7XG4gICAgbWFyZ2luLWJvdHRvbTogLTAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwteGwtbjEsXG4gIC5teC14bC1uMSB7XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0teGwtbjIge1xuICAgIG1hcmdpbjogLTAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC14bC1uMixcbiAgLm15LXhsLW4yIHtcbiAgICBtYXJnaW4tdG9wOiAtMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLXhsLW4yLFxuICAubXgteGwtbjIge1xuICAgIG1hcmdpbi1yaWdodDogLTAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi14bC1uMixcbiAgLm15LXhsLW4yIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLXhsLW4yLFxuICAubXgteGwtbjIge1xuICAgIG1hcmdpbi1sZWZ0OiAtMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0teGwtbjMge1xuICAgIG1hcmdpbjogLTFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQteGwtbjMsXG4gIC5teS14bC1uMyB7XG4gICAgbWFyZ2luLXRvcDogLTFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXIteGwtbjMsXG4gIC5teC14bC1uMyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi14bC1uMyxcbiAgLm15LXhsLW4zIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC14bC1uMyxcbiAgLm14LXhsLW4zIHtcbiAgICBtYXJnaW4tbGVmdDogLTFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS14bC1uNCB7XG4gICAgbWFyZ2luOiAtMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXhsLW40LFxuICAubXkteGwtbjQge1xuICAgIG1hcmdpbi10b3A6IC0xLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXIteGwtbjQsXG4gIC5teC14bC1uNCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLXhsLW40LFxuICAubXkteGwtbjQge1xuICAgIG1hcmdpbi1ib3R0b206IC0xLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwteGwtbjQsXG4gIC5teC14bC1uNCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS14bC1uNSB7XG4gICAgbWFyZ2luOiAtM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC14bC1uNSxcbiAgLm15LXhsLW41IHtcbiAgICBtYXJnaW4tdG9wOiAtM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci14bC1uNSxcbiAgLm14LXhsLW41IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0zcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLXhsLW41LFxuICAubXkteGwtbjUge1xuICAgIG1hcmdpbi1ib3R0b206IC0zcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLXhsLW41LFxuICAubXgteGwtbjUge1xuICAgIG1hcmdpbi1sZWZ0OiAtM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLXhsLWF1dG8ge1xuICAgIG1hcmdpbjogYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC14bC1hdXRvLFxuICAubXkteGwtYXV0byB7XG4gICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5tci14bC1hdXRvLFxuICAubXgteGwtYXV0byB7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLXhsLWF1dG8sXG4gIC5teS14bC1hdXRvIHtcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLXhsLWF1dG8sXG4gIC5teC14bC1hdXRvIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICB9XG59XG5cbi50ZXh0LW1vbm9zcGFjZSB7XG4gIGZvbnQtZmFtaWx5OiBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiQ291cmllciBOZXdcIiwgbW9ub3NwYWNlICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LWp1c3RpZnkge1xuICB0ZXh0LWFsaWduOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LXdyYXAge1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LW5vd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcbn1cblxuLnRleHQtdHJ1bmNhdGUge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnRleHQtbGVmdCB7XG4gIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDtcbn1cblxuLnRleHQtcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC50ZXh0LXNtLWxlZnQge1xuICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDtcbiAgfVxuICAudGV4dC1zbS1yaWdodCB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDtcbiAgfVxuICAudGV4dC1zbS1jZW50ZXIge1xuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAudGV4dC1tZC1sZWZ0IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnRleHQtbWQtcmlnaHQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnRleHQtbWQtY2VudGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLnRleHQtbGctbGVmdCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50O1xuICB9XG4gIC50ZXh0LWxnLXJpZ2h0IHtcbiAgICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50O1xuICB9XG4gIC50ZXh0LWxnLWNlbnRlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAudGV4dC14bC1sZWZ0IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnRleHQteGwtcmlnaHQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnRleHQteGwtY2VudGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgfVxufVxuXG4udGV4dC1sb3dlcmNhc2Uge1xuICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LXVwcGVyY2FzZSB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDtcbn1cblxuLnRleHQtY2FwaXRhbGl6ZSB7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplICFpbXBvcnRhbnQ7XG59XG5cbi5mb250LXdlaWdodC1saWdodCB7XG4gIGZvbnQtd2VpZ2h0OiAzMDAgIWltcG9ydGFudDtcbn1cblxuLmZvbnQtd2VpZ2h0LWxpZ2h0ZXIge1xuICBmb250LXdlaWdodDogbGlnaHRlciAhaW1wb3J0YW50O1xufVxuXG4uZm9udC13ZWlnaHQtbm9ybWFsIHtcbiAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50O1xufVxuXG4uZm9udC13ZWlnaHQtYm9sZCB7XG4gIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDtcbn1cblxuLmZvbnQtd2VpZ2h0LWJvbGRlciB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXIgIWltcG9ydGFudDtcbn1cblxuLmZvbnQtaXRhbGljIHtcbiAgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LXdoaXRlIHtcbiAgY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbn1cblxuLnRleHQtcHJpbWFyeSB7XG4gIGNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7XG59XG5cbmEudGV4dC1wcmltYXJ5OmhvdmVyLCBhLnRleHQtcHJpbWFyeTpmb2N1cyB7XG4gIGNvbG9yOiAjMDA1NmIzICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LXNlY29uZGFyeSB7XG4gIGNvbG9yOiAjNmM3NTdkICFpbXBvcnRhbnQ7XG59XG5cbmEudGV4dC1zZWNvbmRhcnk6aG92ZXIsIGEudGV4dC1zZWNvbmRhcnk6Zm9jdXMge1xuICBjb2xvcjogIzQ5NGY1NCAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1zdWNjZXNzIHtcbiAgY29sb3I6ICMyOGE3NDUgIWltcG9ydGFudDtcbn1cblxuYS50ZXh0LXN1Y2Nlc3M6aG92ZXIsIGEudGV4dC1zdWNjZXNzOmZvY3VzIHtcbiAgY29sb3I6ICMxOTY5MmMgIWltcG9ydGFudDtcbn1cblxuLnRleHQtaW5mbyB7XG4gIGNvbG9yOiAjMTdhMmI4ICFpbXBvcnRhbnQ7XG59XG5cbmEudGV4dC1pbmZvOmhvdmVyLCBhLnRleHQtaW5mbzpmb2N1cyB7XG4gIGNvbG9yOiAjMGY2Njc0ICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LXdhcm5pbmcge1xuICBjb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50O1xufVxuXG5hLnRleHQtd2FybmluZzpob3ZlciwgYS50ZXh0LXdhcm5pbmc6Zm9jdXMge1xuICBjb2xvcjogI2JhOGIwMCAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1kYW5nZXIge1xuICBjb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50O1xufVxuXG5hLnRleHQtZGFuZ2VyOmhvdmVyLCBhLnRleHQtZGFuZ2VyOmZvY3VzIHtcbiAgY29sb3I6ICNhNzFkMmEgIWltcG9ydGFudDtcbn1cblxuLnRleHQtbGlnaHQge1xuICBjb2xvcjogI2Y4ZjlmYSAhaW1wb3J0YW50O1xufVxuXG5hLnRleHQtbGlnaHQ6aG92ZXIsIGEudGV4dC1saWdodDpmb2N1cyB7XG4gIGNvbG9yOiAjY2JkM2RhICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LWRhcmsge1xuICBjb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50O1xufVxuXG5hLnRleHQtZGFyazpob3ZlciwgYS50ZXh0LWRhcms6Zm9jdXMge1xuICBjb2xvcjogIzEyMTQxNiAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1ib2R5IHtcbiAgY29sb3I6ICMyMTI1MjkgIWltcG9ydGFudDtcbn1cblxuLnRleHQtbXV0ZWQge1xuICBjb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1ibGFjay01MCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSkgIWltcG9ydGFudDtcbn1cblxuLnRleHQtd2hpdGUtNTAge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LWhpZGUge1xuICBmb250OiAwLzAgYTtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbn1cblxuLnRleHQtZGVjb3JhdGlvbi1ub25lIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LWJyZWFrIHtcbiAgd29yZC1icmVhazogYnJlYWstd29yZCAhaW1wb3J0YW50O1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LXJlc2V0IHtcbiAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbn1cblxuLnZpc2libGUge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG59XG5cbi5pbnZpc2libGUge1xuICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cblxuQG1lZGlhIHByaW50IHtcbiAgKixcbiAgKjo6YmVmb3JlLFxuICAqOjphZnRlciB7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgYTpub3QoLmJ0bikge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB9XG4gIGFiYnJbdGl0bGVdOjphZnRlciB7XG4gICAgY29udGVudDogXCIgKFwiIGF0dHIodGl0bGUpIFwiKVwiO1xuICB9XG4gIHByZSB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwICFpbXBvcnRhbnQ7XG4gIH1cbiAgcHJlLFxuICBibG9ja3F1b3RlIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYWRiNWJkO1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgfVxuICB0aGVhZCB7XG4gICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwO1xuICB9XG4gIHRyLFxuICBpbWcge1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgfVxuICBwLFxuICBoMixcbiAgaDMge1xuICAgIG9ycGhhbnM6IDM7XG4gICAgd2lkb3dzOiAzO1xuICB9XG4gIGgyLFxuICBoMyB7XG4gICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7XG4gIH1cbiAgQHBhZ2Uge1xuICAgIHNpemU6IGEzO1xuICB9XG4gIGJvZHkge1xuICAgIG1pbi13aWR0aDogOTkycHggIWltcG9ydGFudDtcbiAgfVxuICAuY29udGFpbmVyIHtcbiAgICBtaW4td2lkdGg6IDk5MnB4ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm5hdmJhciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAuYmFkZ2Uge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7XG4gIH1cbiAgLnRhYmxlIHtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnRhYmxlIHRkLFxuICAudGFibGUgdGgge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgfVxuICAudGFibGUtYm9yZGVyZWQgdGgsXG4gIC50YWJsZS1ib3JkZXJlZCB0ZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50O1xuICB9XG4gIC50YWJsZS1kYXJrIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgfVxuICAudGFibGUtZGFyayB0aCxcbiAgLnRhYmxlLWRhcmsgdGQsXG4gIC50YWJsZS1kYXJrIHRoZWFkIHRoLFxuICAudGFibGUtZGFyayB0Ym9keSArIHRib2R5IHtcbiAgICBib3JkZXItY29sb3I6ICNkZWUyZTY7XG4gIH1cbiAgLnRhYmxlIC50aGVhZC1kYXJrIHRoIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBib3JkZXItY29sb3I6ICNkZWUyZTY7XG4gIH1cbn1cblxuLyojIHNvdXJjZU1hcHBpbmdVUkw9Ym9vdHN0cmFwLmNzcy5tYXAgKi8iLCIvLyBEbyBub3QgZm9yZ2V0IHRvIHVwZGF0ZSBnZXR0aW5nLXN0YXJ0ZWQvdGhlbWluZy5tZCFcbjpyb290IHtcbiAgLy8gQ3VzdG9tIHZhcmlhYmxlIHZhbHVlcyBvbmx5IHN1cHBvcnQgU2Fzc1NjcmlwdCBpbnNpZGUgYCN7fWAuXG4gIEBlYWNoICRjb2xvciwgJHZhbHVlIGluICRjb2xvcnMge1xuICAgIC0tI3skY29sb3J9OiAjeyR2YWx1ZX07XG4gIH1cblxuICBAZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgICAtLSN7JGNvbG9yfTogI3skdmFsdWV9O1xuICB9XG5cbiAgQGVhY2ggJGJwLCAkdmFsdWUgaW4gJGdyaWQtYnJlYWtwb2ludHMge1xuICAgIC0tYnJlYWtwb2ludC0jeyRicH06ICN7JHZhbHVlfTtcbiAgfVxuXG4gIC8vIFVzZSBgaW5zcGVjdGAgZm9yIGxpc3RzIHNvIHRoYXQgcXVvdGVkIGl0ZW1zIGtlZXAgdGhlIHF1b3Rlcy5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL3Nhc3MvaXNzdWVzLzIzODMjaXNzdWVjb21tZW50LTMzNjM0OTE3MlxuICAtLWZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICN7aW5zcGVjdCgkZm9udC1mYW1pbHktc2Fucy1zZXJpZil9O1xuICAtLWZvbnQtZmFtaWx5LW1vbm9zcGFjZTogI3tpbnNwZWN0KCRmb250LWZhbWlseS1tb25vc3BhY2UpfTtcbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGF0LXJ1bGUtbm8tdmVuZG9yLXByZWZpeCwgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50LCBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGUsIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblxuLy8gUmVib290XG4vL1xuLy8gTm9ybWFsaXphdGlvbiBvZiBIVE1MIGVsZW1lbnRzLCBtYW51YWxseSBmb3JrZWQgZnJvbSBOb3JtYWxpemUuY3NzIHRvIHJlbW92ZVxuLy8gc3R5bGVzIHRhcmdldGluZyBpcnJlbGV2YW50IGJyb3dzZXJzIHdoaWxlIGFwcGx5aW5nIG5ldyBzdHlsZXMuXG4vL1xuLy8gTm9ybWFsaXplIGlzIGxpY2Vuc2VkIE1JVC4gaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzc1xuXG5cbi8vIERvY3VtZW50XG4vL1xuLy8gMS4gQ2hhbmdlIGZyb20gYGJveC1zaXppbmc6IGNvbnRlbnQtYm94YCBzbyB0aGF0IGB3aWR0aGAgaXMgbm90IGFmZmVjdGVkIGJ5IGBwYWRkaW5nYCBvciBgYm9yZGVyYC5cbi8vIDIuIENoYW5nZSB0aGUgZGVmYXVsdCBmb250IGZhbWlseSBpbiBhbGwgYnJvd3NlcnMuXG4vLyAzLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4vLyA0LiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIElFIG9uIFdpbmRvd3MgUGhvbmUgYW5kIGluIGlPUy5cbi8vIDUuIENoYW5nZSB0aGUgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IHRvIGJlIGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQgaW4gaU9TLlxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvLyAxXG59XG5cbmh0bWwge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLy8gMlxuICBsaW5lLWhlaWdodDogMS4xNTsgLy8gM1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8vIDRcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKCRibGFjaywgMCk7IC8vIDVcbn1cblxuLy8gU2hpbSBmb3IgXCJuZXdcIiBIVE1MNSBzdHJ1Y3R1cmFsIGVsZW1lbnRzIHRvIGRpc3BsYXkgY29ycmVjdGx5IChJRTEwLCBvbGRlciBicm93c2Vycylcbi8vIFRPRE86IHJlbW92ZSBpbiB2NVxuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLWxpc3QtY29tbWEtbmV3bGluZS1hZnRlclxuYXJ0aWNsZSwgYXNpZGUsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbmF2LCBzZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8vIEJvZHlcbi8vXG4vLyAxLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXG4vLyAyLiBBcyBhIGJlc3QgcHJhY3RpY2UsIGFwcGx5IGEgZGVmYXVsdCBgYmFja2dyb3VuZC1jb2xvcmAuXG4vLyAzLiBTZXQgYW4gZXhwbGljaXQgaW5pdGlhbCB0ZXh0LWFsaWduIHZhbHVlIHNvIHRoYXQgd2UgY2FuIGxhdGVyIHVzZVxuLy8gICAgdGhlIGBpbmhlcml0YCB2YWx1ZSBvbiB0aGluZ3MgbGlrZSBgPHRoPmAgZWxlbWVudHMuXG5cbmJvZHkge1xuICBtYXJnaW46IDA7IC8vIDFcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1iYXNlO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGZvbnQtc2l6ZS1iYXNlKTtcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1iYXNlO1xuICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWJhc2U7XG4gIGNvbG9yOiAkYm9keS1jb2xvcjtcbiAgdGV4dC1hbGlnbjogbGVmdDsgLy8gM1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYm9keS1iZzsgLy8gMlxufVxuXG4vLyBGdXR1cmUtcHJvb2YgcnVsZTogaW4gYnJvd3NlcnMgdGhhdCBzdXBwb3J0IDpmb2N1cy12aXNpYmxlLCBzdXBwcmVzcyB0aGUgZm9jdXMgb3V0bGluZVxuLy8gb24gZWxlbWVudHMgdGhhdCBwcm9ncmFtbWF0aWNhbGx5IHJlY2VpdmUgZm9jdXMgYnV0IHdvdWxkbid0IG5vcm1hbGx5IHNob3cgYSB2aXNpYmxlXG4vLyBmb2N1cyBvdXRsaW5lLiBJbiBnZW5lcmFsLCB0aGlzIHdvdWxkIG1lYW4gdGhhdCB0aGUgb3V0bGluZSBpcyBvbmx5IGFwcGxpZWQgaWYgdGhlXG4vLyBpbnRlcmFjdGlvbiB0aGF0IGxlZCB0byB0aGUgZWxlbWVudCByZWNlaXZpbmcgcHJvZ3JhbW1hdGljIGZvY3VzIHdhcyBhIGtleWJvYXJkIGludGVyYWN0aW9uLFxuLy8gb3IgdGhlIGJyb3dzZXIgaGFzIHNvbWVob3cgZGV0ZXJtaW5lZCB0aGF0IHRoZSB1c2VyIGlzIHByaW1hcmlseSBhIGtleWJvYXJkIHVzZXIgYW5kL29yXG4vLyB3YW50cyBmb2N1cyBvdXRsaW5lcyB0byBhbHdheXMgYmUgcHJlc2VudGVkLlxuLy9cbi8vIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvOmZvY3VzLXZpc2libGVcbi8vIGFuZCBodHRwczovL2RldmVsb3Blci5wYWNpZWxsb2dyb3VwLmNvbS9ibG9nLzIwMTgvMDMvZm9jdXMtdmlzaWJsZS1hbmQtYmFja3dhcmRzLWNvbXBhdGliaWxpdHkvXG5bdGFiaW5kZXg9XCItMVwiXTpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcbiAgb3V0bGluZTogMCAhaW1wb3J0YW50O1xufVxuXG5cbi8vIENvbnRlbnQgZ3JvdXBpbmdcbi8vXG4vLyAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94LlxuLy8gMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8vIDFcbiAgaGVpZ2h0OiAwOyAvLyAxXG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvLyAyXG59XG5cblxuLy9cbi8vIFR5cG9ncmFwaHlcbi8vXG5cbi8vIFJlbW92ZSB0b3AgbWFyZ2lucyBmcm9tIGhlYWRpbmdzXG4vL1xuLy8gQnkgZGVmYXVsdCwgYDxoMT5gLWA8aDY+YCBhbGwgcmVjZWl2ZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zLiBXZSBudWtlIHRoZSB0b3Bcbi8vIG1hcmdpbiBmb3IgZWFzaWVyIGNvbnRyb2wgd2l0aGluIHR5cGUgc2NhbGVzIGFzIGl0IGF2b2lkcyBtYXJnaW4gY29sbGFwc2luZy5cbi8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1saXN0LWNvbW1hLW5ld2xpbmUtYWZ0ZXJcbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAkaGVhZGluZ3MtbWFyZ2luLWJvdHRvbTtcbn1cblxuLy8gUmVzZXQgbWFyZ2lucyBvbiBwYXJhZ3JhcGhzXG4vL1xuLy8gU2ltaWxhcmx5LCB0aGUgdG9wIG1hcmdpbiBvbiBgPHA+YHMgZ2V0IHJlc2V0LiBIb3dldmVyLCB3ZSBhbHNvIHJlc2V0IHRoZVxuLy8gYm90dG9tIG1hcmdpbiB0byB1c2UgYHJlbWAgdW5pdHMgaW5zdGVhZCBvZiBgZW1gLlxucCB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206ICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTtcbn1cblxuLy8gQWJicmV2aWF0aW9uc1xuLy9cbi8vIDEuIER1cGxpY2F0ZSBiZWhhdmlvciB0byB0aGUgZGF0YS0qIGF0dHJpYnV0ZSBmb3Igb3VyIHRvb2x0aXAgcGx1Z2luXG4vLyAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxuLy8gMy4gQWRkIGV4cGxpY2l0IGN1cnNvciB0byBpbmRpY2F0ZSBjaGFuZ2VkIGJlaGF2aW9yLlxuLy8gNC4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIEZpcmVmb3ggMzktLlxuLy8gNS4gUHJldmVudCB0aGUgdGV4dC1kZWNvcmF0aW9uIHRvIGJlIHNraXBwZWQuXG5cbmFiYnJbdGl0bGVdLFxuYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXSB7IC8vIDFcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8vIDJcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvLyAyXG4gIGN1cnNvcjogaGVscDsgLy8gM1xuICBib3JkZXItYm90dG9tOiAwOyAvLyA0XG4gIHRleHQtZGVjb3JhdGlvbi1za2lwLWluazogbm9uZTsgLy8gNVxufVxuXG5hZGRyZXNzIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbn1cblxub2wsXG51bCxcbmRsIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxub2wgb2wsXG51bCB1bCxcbm9sIHVsLFxudWwgb2wge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG5kdCB7XG4gIGZvbnQtd2VpZ2h0OiAkZHQtZm9udC13ZWlnaHQ7XG59XG5cbmRkIHtcbiAgbWFyZ2luLWJvdHRvbTogLjVyZW07XG4gIG1hcmdpbi1sZWZ0OiAwOyAvLyBVbmRvIGJyb3dzZXIgZGVmYXVsdFxufVxuXG5ibG9ja3F1b3RlIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZGVyOyAvLyBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpXG59XG5cbnNtYWxsIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKDgwJSk7IC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzXG59XG5cbi8vXG4vLyBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbi8vIGFsbCBicm93c2Vycy5cbi8vXG5cbnN1YixcbnN1cCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKDc1JSk7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1YiB7IGJvdHRvbTogLS4yNWVtOyB9XG5zdXAgeyB0b3A6IC0uNWVtOyB9XG5cblxuLy9cbi8vIExpbmtzXG4vL1xuXG5hIHtcbiAgY29sb3I6ICRsaW5rLWNvbG9yO1xuICB0ZXh0LWRlY29yYXRpb246ICRsaW5rLWRlY29yYXRpb247XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAvLyBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG5cbiAgQGluY2x1ZGUgaG92ZXIoKSB7XG4gICAgY29sb3I6ICRsaW5rLWhvdmVyLWNvbG9yO1xuICAgIHRleHQtZGVjb3JhdGlvbjogJGxpbmstaG92ZXItZGVjb3JhdGlvbjtcbiAgfVxufVxuXG4vLyBBbmQgdW5kbyB0aGVzZSBzdHlsZXMgZm9yIHBsYWNlaG9sZGVyIGxpbmtzL25hbWVkIGFuY2hvcnMgKHdpdGhvdXQgaHJlZikuXG4vLyBJdCB3b3VsZCBiZSBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCB0byBqdXN0IHVzZSBhW2hyZWZdIGluIHByZXZpb3VzIGJsb2NrLCBidXQgdGhhdFxuLy8gY2F1c2VzIHNwZWNpZmljaXR5IGlzc3VlcyBpbiBtYW55IG90aGVyIHN0eWxlcyB0aGF0IGFyZSB0b28gY29tcGxleCB0byBmaXguXG4vLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xOTQwMlxuXG5hOm5vdChbaHJlZl0pIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICBAaW5jbHVkZSBob3ZlcigpIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cbn1cblxuXG4vL1xuLy8gQ29kZVxuLy9cblxucHJlLFxuY29kZSxcbmtiZCxcbnNhbXAge1xuICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKDFlbSk7IC8vIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbn1cblxucHJlIHtcbiAgLy8gUmVtb3ZlIGJyb3dzZXIgZGVmYXVsdCB0b3AgbWFyZ2luXG4gIG1hcmdpbi10b3A6IDA7XG4gIC8vIFJlc2V0IGJyb3dzZXIgZGVmYXVsdCBvZiBgMWVtYCB0byB1c2UgYHJlbWBzXG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIC8vIERvbid0IGFsbG93IGNvbnRlbnQgdG8gYnJlYWsgb3V0c2lkZVxuICBvdmVyZmxvdzogYXV0bztcbn1cblxuXG4vL1xuLy8gRmlndXJlc1xuLy9cblxuZmlndXJlIHtcbiAgLy8gQXBwbHkgYSBjb25zaXN0ZW50IG1hcmdpbiBzdHJhdGVneSAobWF0Y2hlcyBvdXIgdHlwZSBzdHlsZXMpLlxuICBtYXJnaW46IDAgMCAxcmVtO1xufVxuXG5cbi8vXG4vLyBJbWFnZXMgYW5kIGNvbnRlbnRcbi8vXG5cbmltZyB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGJvcmRlci1zdHlsZTogbm9uZTsgLy8gUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC0uXG59XG5cbnN2ZyB7XG4gIC8vIFdvcmthcm91bmQgZm9yIHRoZSBTVkcgb3ZlcmZsb3cgYnVnIGluIElFMTAvMTEgaXMgc3RpbGwgcmVxdWlyZWQuXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI2ODc4XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cblxuLy9cbi8vIFRhYmxlc1xuLy9cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyAvLyBQcmV2ZW50IGRvdWJsZSBib3JkZXJzXG59XG5cbmNhcHRpb24ge1xuICBwYWRkaW5nLXRvcDogJHRhYmxlLWNlbGwtcGFkZGluZztcbiAgcGFkZGluZy1ib3R0b206ICR0YWJsZS1jZWxsLXBhZGRpbmc7XG4gIGNvbG9yOiAkdGFibGUtY2FwdGlvbi1jb2xvcjtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgY2FwdGlvbi1zaWRlOiBib3R0b207XG59XG5cbnRoIHtcbiAgLy8gTWF0Y2hlcyBkZWZhdWx0IGA8dGQ+YCBhbGlnbm1lbnQgYnkgaW5oZXJpdGluZyBmcm9tIHRoZSBgPGJvZHk+YCwgb3IgdGhlXG4gIC8vIGNsb3Nlc3QgcGFyZW50IHdpdGggYSBzZXQgYHRleHQtYWxpZ25gLlxuICB0ZXh0LWFsaWduOiBpbmhlcml0O1xufVxuXG5cbi8vXG4vLyBGb3Jtc1xuLy9cblxubGFiZWwge1xuICAvLyBBbGxvdyBsYWJlbHMgdG8gdXNlIGBtYXJnaW5gIGZvciBzcGFjaW5nLlxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206ICRsYWJlbC1tYXJnaW4tYm90dG9tO1xufVxuXG4vLyBSZW1vdmUgdGhlIGRlZmF1bHQgYGJvcmRlci1yYWRpdXNgIHRoYXQgbWFjT1MgQ2hyb21lIGFkZHMuXG4vL1xuLy8gRGV0YWlscyBhdCBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI0MDkzXG5idXR0b24ge1xuICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktYmxhY2tsaXN0XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG5cbi8vIFdvcmsgYXJvdW5kIGEgRmlyZWZveC9JRSBidWcgd2hlcmUgdGhlIHRyYW5zcGFyZW50IGBidXR0b25gIGJhY2tncm91bmRcbi8vIHJlc3VsdHMgaW4gYSBsb3NzIG9mIHRoZSBkZWZhdWx0IGBidXR0b25gIGZvY3VzIHN0eWxlcy5cbi8vXG4vLyBDcmVkaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdWl0Y3NzL2Jhc2UvXG5idXR0b246Zm9jdXMge1xuICBvdXRsaW5lOiAxcHggZG90dGVkO1xuICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbmlucHV0LFxuYnV0dG9uLFxuc2VsZWN0LFxub3B0Z3JvdXAsXG50ZXh0YXJlYSB7XG4gIG1hcmdpbjogMDsgLy8gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBAaW5jbHVkZSBmb250LXNpemUoaW5oZXJpdCk7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG5idXR0b24sXG5pbnB1dCB7XG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvLyBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlXG59XG5cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lOyAvLyBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3hcbn1cblxuLy8gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB3b3JkLXdyYXAgaW4gU2FmYXJpLlxuLy9cbi8vIERldGFpbHMgYXQgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNDk5MFxuc2VsZWN0IHtcbiAgd29yZC13cmFwOiBub3JtYWw7XG59XG5cblxuLy8gMS4gUHJldmVudCBhIFdlYktpdCBidWcgd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gIGFuZCBgdmlkZW9gXG4vLyAgICBjb250cm9scyBpbiBBbmRyb2lkIDQuXG4vLyAyLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuYnV0dG9uLFxuW3R5cGU9XCJidXR0b25cIl0sIC8vIDFcblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvLyAyXG59XG5cbi8vIE9waW5pb25hdGVkOiBhZGQgXCJoYW5kXCIgY3Vyc29yIHRvIG5vbi1kaXNhYmxlZCBidXR0b24gZWxlbWVudHMuXG5AaWYgJGVuYWJsZS1wb2ludGVyLWN1cnNvci1mb3ItYnV0dG9ucyB7XG4gIGJ1dHRvbixcbiAgW3R5cGU9XCJidXR0b25cIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0sXG4gIFt0eXBlPVwic3VibWl0XCJdIHtcbiAgICAmOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gIH1cbn1cblxuLy8gUmVtb3ZlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBmcm9tIEZpcmVmb3gsIGJ1dCBkb24ndCByZXN0b3JlIHRoZSBvdXRsaW5lIGxpa2UgTm9ybWFsaXplLlxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbmlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLVxuICBwYWRkaW5nOiAwOyAvLyAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAtXG59XG5cblxuaW5wdXRbdHlwZT1cImRhdGVcIl0sXG5pbnB1dFt0eXBlPVwidGltZVwiXSxcbmlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXSxcbmlucHV0W3R5cGU9XCJtb250aFwiXSB7XG4gIC8vIFJlbW92ZSB0aGUgZGVmYXVsdCBhcHBlYXJhbmNlIG9mIHRlbXBvcmFsIGlucHV0cyB0byBhdm9pZCBhIE1vYmlsZSBTYWZhcmlcbiAgLy8gYnVnIHdoZXJlIHNldHRpbmcgYSBjdXN0b20gbGluZS1oZWlnaHQgcHJldmVudHMgdGV4dCBmcm9tIGJlaW5nIHZlcnRpY2FsbHlcbiAgLy8gY2VudGVyZWQgd2l0aGluIHRoZSBpbnB1dC5cbiAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk4NDhcbiAgLy8gYW5kIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTEyNjZcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBsaXN0Ym94O1xufVxuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvOyAvLyBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFLlxuICAvLyBUZXh0YXJlYXMgc2hvdWxkIHJlYWxseSBvbmx5IHJlc2l6ZSB2ZXJ0aWNhbGx5IHNvIHRoZXkgZG9uJ3QgYnJlYWsgdGhlaXIgKGhvcml6b250YWwpIGNvbnRhaW5lcnMuXG4gIHJlc2l6ZTogdmVydGljYWw7XG59XG5cbmZpZWxkc2V0IHtcbiAgLy8gQnJvd3NlcnMgc2V0IGEgZGVmYXVsdCBgbWluLXdpZHRoOiBtaW4tY29udGVudDtgIG9uIGZpZWxkc2V0cyxcbiAgLy8gdW5saWtlIGUuZy4gYDxkaXY+YHMsIHdoaWNoIGhhdmUgYG1pbi13aWR0aDogMDtgIGJ5IGRlZmF1bHQuXG4gIC8vIFNvIHdlIHJlc2V0IHRoYXQgdG8gZW5zdXJlIGZpZWxkc2V0cyBiZWhhdmUgbW9yZSBsaWtlIGEgc3RhbmRhcmQgYmxvY2sgZWxlbWVudC5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTIzNTlcbiAgLy8gYW5kIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlLyN0aGUtZmllbGRzZXQtYW5kLWxlZ2VuZC1lbGVtZW50c1xuICBtaW4td2lkdGg6IDA7XG4gIC8vIFJlc2V0IHRoZSBkZWZhdWx0IG91dGxpbmUgYmVoYXZpb3Igb2YgZmllbGRzZXRzIHNvIHRoZXkgZG9uJ3QgYWZmZWN0IHBhZ2UgbGF5b3V0LlxuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGJvcmRlcjogMDtcbn1cblxuLy8gMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbi8vIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbmxlZ2VuZCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlOyAvLyAxXG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbi1ib3R0b206IC41cmVtO1xuICBAaW5jbHVkZSBmb250LXNpemUoMS41cmVtKTtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIGNvbG9yOiBpbmhlcml0OyAvLyAyXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8vIDFcbn1cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8vIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG59XG5cbi8vIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLy8gVGhpcyBvdmVycmlkZXMgdGhlIGV4dHJhIHJvdW5kZWQgY29ybmVycyBvbiBzZWFyY2ggaW5wdXRzIGluIGlPUyBzbyB0aGF0IG91clxuICAvLyBgLmZvcm0tY29udHJvbGAgY2xhc3MgY2FuIHByb3Blcmx5IHN0eWxlIHRoZW0uIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCBzaW1wbHlcbiAgLy8gYmUgYWRkZWQgdG8gYC5mb3JtLWNvbnRyb2xgIGFzIGl0J3Mgbm90IHNwZWNpZmljIGVub3VnaC4gRm9yIGRldGFpbHMsIHNlZVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzExNTg2LlxuICBvdXRsaW5lLW9mZnNldDogLTJweDsgLy8gMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLy9cbi8vIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cbi8vXG5cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vL1xuLy8gMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbi8vIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbi8vXG5cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICBmb250OiBpbmhlcml0OyAvLyAyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvLyAxXG59XG5cbi8vXG4vLyBDb3JyZWN0IGVsZW1lbnQgZGlzcGxheXNcbi8vXG5cbm91dHB1dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTsgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzXG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lOyAvLyBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRVxufVxuXG4vLyBBbHdheXMgaGlkZSBhbiBlbGVtZW50IHdpdGggdGhlIGBoaWRkZW5gIEhUTUwgYXR0cmlidXRlIChmcm9tIFB1cmVDU1MpLlxuLy8gTmVlZGVkIGZvciBwcm9wZXIgZGlzcGxheSBpbiBJRSAxMC0uXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbiIsIi8vIFZhcmlhYmxlc1xuLy9cbi8vIFZhcmlhYmxlcyBzaG91bGQgZm9sbG93IHRoZSBgJGNvbXBvbmVudC1zdGF0ZS1wcm9wZXJ0eS1zaXplYCBmb3JtdWxhIGZvclxuLy8gY29uc2lzdGVudCBuYW1pbmcuIEV4OiAkbmF2LWxpbmstZGlzYWJsZWQtY29sb3IgYW5kICRtb2RhbC1jb250ZW50LWJveC1zaGFkb3cteHMuXG5cbi8vIENvbG9yIHN5c3RlbVxuXG4kd2hpdGU6ICAgICNmZmYgIWRlZmF1bHQ7XG4kZ3JheS0xMDA6ICNmOGY5ZmEgIWRlZmF1bHQ7XG4kZ3JheS0yMDA6ICNlOWVjZWYgIWRlZmF1bHQ7XG4kZ3JheS0zMDA6ICNkZWUyZTYgIWRlZmF1bHQ7XG4kZ3JheS00MDA6ICNjZWQ0ZGEgIWRlZmF1bHQ7XG4kZ3JheS01MDA6ICNhZGI1YmQgIWRlZmF1bHQ7XG4kZ3JheS02MDA6ICM2Yzc1N2QgIWRlZmF1bHQ7XG4kZ3JheS03MDA6ICM0OTUwNTcgIWRlZmF1bHQ7XG4kZ3JheS04MDA6ICMzNDNhNDAgIWRlZmF1bHQ7XG4kZ3JheS05MDA6ICMyMTI1MjkgIWRlZmF1bHQ7XG4kYmxhY2s6ICAgICMwMDAgIWRlZmF1bHQ7XG5cbiRncmF5czogKCkgIWRlZmF1bHQ7XG4vLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2Nzcy9kb2xsYXItdmFyaWFibGUtZGVmYXVsdFxuJGdyYXlzOiBtYXAtbWVyZ2UoXG4gIChcbiAgICBcIjEwMFwiOiAkZ3JheS0xMDAsXG4gICAgXCIyMDBcIjogJGdyYXktMjAwLFxuICAgIFwiMzAwXCI6ICRncmF5LTMwMCxcbiAgICBcIjQwMFwiOiAkZ3JheS00MDAsXG4gICAgXCI1MDBcIjogJGdyYXktNTAwLFxuICAgIFwiNjAwXCI6ICRncmF5LTYwMCxcbiAgICBcIjcwMFwiOiAkZ3JheS03MDAsXG4gICAgXCI4MDBcIjogJGdyYXktODAwLFxuICAgIFwiOTAwXCI6ICRncmF5LTkwMFxuICApLFxuICAkZ3JheXNcbik7XG5cbiRibHVlOiAgICAjMDA3YmZmICFkZWZhdWx0O1xuJGluZGlnbzogICM2NjEwZjIgIWRlZmF1bHQ7XG4kcHVycGxlOiAgIzZmNDJjMSAhZGVmYXVsdDtcbiRwaW5rOiAgICAjZTgzZThjICFkZWZhdWx0O1xuJHJlZDogICAgICNkYzM1NDUgIWRlZmF1bHQ7XG4kb3JhbmdlOiAgI2ZkN2UxNCAhZGVmYXVsdDtcbiR5ZWxsb3c6ICAjZmZjMTA3ICFkZWZhdWx0O1xuJGdyZWVuOiAgICMyOGE3NDUgIWRlZmF1bHQ7XG4kdGVhbDogICAgIzIwYzk5NyAhZGVmYXVsdDtcbiRjeWFuOiAgICAjMTdhMmI4ICFkZWZhdWx0O1xuXG4kY29sb3JzOiAoKSAhZGVmYXVsdDtcbi8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzY3NzL2RvbGxhci12YXJpYWJsZS1kZWZhdWx0XG4kY29sb3JzOiBtYXAtbWVyZ2UoXG4gIChcbiAgICBcImJsdWVcIjogICAgICAgJGJsdWUsXG4gICAgXCJpbmRpZ29cIjogICAgICRpbmRpZ28sXG4gICAgXCJwdXJwbGVcIjogICAgICRwdXJwbGUsXG4gICAgXCJwaW5rXCI6ICAgICAgICRwaW5rLFxuICAgIFwicmVkXCI6ICAgICAgICAkcmVkLFxuICAgIFwib3JhbmdlXCI6ICAgICAkb3JhbmdlLFxuICAgIFwieWVsbG93XCI6ICAgICAkeWVsbG93LFxuICAgIFwiZ3JlZW5cIjogICAgICAkZ3JlZW4sXG4gICAgXCJ0ZWFsXCI6ICAgICAgICR0ZWFsLFxuICAgIFwiY3lhblwiOiAgICAgICAkY3lhbixcbiAgICBcIndoaXRlXCI6ICAgICAgJHdoaXRlLFxuICAgIFwiZ3JheVwiOiAgICAgICAkZ3JheS02MDAsXG4gICAgXCJncmF5LWRhcmtcIjogICRncmF5LTgwMFxuICApLFxuICAkY29sb3JzXG4pO1xuXG4kcHJpbWFyeTogICAgICAgJGJsdWUgIWRlZmF1bHQ7XG4kc2Vjb25kYXJ5OiAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJHN1Y2Nlc3M6ICAgICAgICRncmVlbiAhZGVmYXVsdDtcbiRpbmZvOiAgICAgICAgICAkY3lhbiAhZGVmYXVsdDtcbiR3YXJuaW5nOiAgICAgICAkeWVsbG93ICFkZWZhdWx0O1xuJGRhbmdlcjogICAgICAgICRyZWQgIWRlZmF1bHQ7XG4kbGlnaHQ6ICAgICAgICAgJGdyYXktMTAwICFkZWZhdWx0O1xuJGRhcms6ICAgICAgICAgICRncmF5LTgwMCAhZGVmYXVsdDtcblxuJHRoZW1lLWNvbG9yczogKCkgIWRlZmF1bHQ7XG4vLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2Nzcy9kb2xsYXItdmFyaWFibGUtZGVmYXVsdFxuJHRoZW1lLWNvbG9yczogbWFwLW1lcmdlKFxuICAoXG4gICAgXCJwcmltYXJ5XCI6ICAgICRwcmltYXJ5LFxuICAgIFwic2Vjb25kYXJ5XCI6ICAkc2Vjb25kYXJ5LFxuICAgIFwic3VjY2Vzc1wiOiAgICAkc3VjY2VzcyxcbiAgICBcImluZm9cIjogICAgICAgJGluZm8sXG4gICAgXCJ3YXJuaW5nXCI6ICAgICR3YXJuaW5nLFxuICAgIFwiZGFuZ2VyXCI6ICAgICAkZGFuZ2VyLFxuICAgIFwibGlnaHRcIjogICAgICAkbGlnaHQsXG4gICAgXCJkYXJrXCI6ICAgICAgICRkYXJrXG4gICksXG4gICR0aGVtZS1jb2xvcnNcbik7XG5cbi8vIFNldCBhIHNwZWNpZmljIGp1bXAgcG9pbnQgZm9yIHJlcXVlc3RpbmcgY29sb3IganVtcHNcbiR0aGVtZS1jb2xvci1pbnRlcnZhbDogICAgICA4JSAhZGVmYXVsdDtcblxuLy8gVGhlIHlpcSBsaWdodG5lc3MgdmFsdWUgdGhhdCBkZXRlcm1pbmVzIHdoZW4gdGhlIGxpZ2h0bmVzcyBvZiBjb2xvciBjaGFuZ2VzIGZyb20gXCJkYXJrXCIgdG8gXCJsaWdodFwiLiBBY2NlcHRhYmxlIHZhbHVlcyBhcmUgYmV0d2VlbiAwIGFuZCAyNTUuXG4keWlxLWNvbnRyYXN0ZWQtdGhyZXNob2xkOiAgMTUwICFkZWZhdWx0O1xuXG4vLyBDdXN0b21pemUgdGhlIGxpZ2h0IGFuZCBkYXJrIHRleHQgY29sb3JzIGZvciB1c2UgaW4gb3VyIFlJUSBjb2xvciBjb250cmFzdCBmdW5jdGlvbi5cbiR5aXEtdGV4dC1kYXJrOiAgICAgICAgICAgICAkZ3JheS05MDAgIWRlZmF1bHQ7XG4keWlxLXRleHQtbGlnaHQ6ICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuXG4vLyBDaGFyYWN0ZXJzIHdoaWNoIGFyZSBlc2NhcGVkIGJ5IHRoZSBlc2NhcGUtc3ZnIGZ1bmN0aW9uXG4kZXNjYXBlZC1jaGFyYWN0ZXJzOiAoXG4gIChcIjxcIixcIiUzY1wiKSxcbiAgKFwiPlwiLFwiJTNlXCIpLFxuICAoXCIjXCIsXCIlMjNcIiksXG4pICFkZWZhdWx0O1xuXG5cbi8vIE9wdGlvbnNcbi8vXG4vLyBRdWlja2x5IG1vZGlmeSBnbG9iYWwgc3R5bGluZyBieSBlbmFibGluZyBvciBkaXNhYmxpbmcgb3B0aW9uYWwgZmVhdHVyZXMuXG5cbiRlbmFibGUtY2FyZXQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1yb3VuZGVkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLXNoYWRvd3M6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kZW5hYmxlLWdyYWRpZW50czogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kZW5hYmxlLXRyYW5zaXRpb25zOiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1tZWRpYS1xdWVyeTogICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1ob3Zlci1tZWRpYS1xdWVyeTogICAgICAgICAgICAgICAgICAgIGZhbHNlICFkZWZhdWx0OyAvLyBEZXByZWNhdGVkLCBubyBsb25nZXIgYWZmZWN0cyBhbnkgY29tcGlsZWQgQ1NTXG4kZW5hYmxlLWdyaWQtY2xhc3NlczogICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtcG9pbnRlci1jdXJzb3ItZm9yLWJ1dHRvbnM6ICAgICAgICAgICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1wcmludC1zdHlsZXM6ICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLXJlc3BvbnNpdmUtZm9udC1zaXplczogICAgICAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kZW5hYmxlLXZhbGlkYXRpb24taWNvbnM6ICAgICAgICAgICAgICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtZGVwcmVjYXRpb24tbWVzc2FnZXM6ICAgICAgICAgICAgICAgICB0cnVlICFkZWZhdWx0O1xuXG5cbi8vIFNwYWNpbmdcbi8vXG4vLyBDb250cm9sIHRoZSBkZWZhdWx0IHN0eWxpbmcgb2YgbW9zdCBCb290c3RyYXAgZWxlbWVudHMgYnkgbW9kaWZ5aW5nIHRoZXNlXG4vLyB2YXJpYWJsZXMuIE1vc3RseSBmb2N1c2VkIG9uIHNwYWNpbmcuXG4vLyBZb3UgY2FuIGFkZCBtb3JlIGVudHJpZXMgdG8gdGhlICRzcGFjZXJzIG1hcCwgc2hvdWxkIHlvdSBuZWVkIG1vcmUgdmFyaWF0aW9uLlxuXG4kc3BhY2VyOiAxcmVtICFkZWZhdWx0O1xuJHNwYWNlcnM6ICgpICFkZWZhdWx0O1xuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3MvZG9sbGFyLXZhcmlhYmxlLWRlZmF1bHRcbiRzcGFjZXJzOiBtYXAtbWVyZ2UoXG4gIChcbiAgICAwOiAwLFxuICAgIDE6ICgkc3BhY2VyICogLjI1KSxcbiAgICAyOiAoJHNwYWNlciAqIC41KSxcbiAgICAzOiAkc3BhY2VyLFxuICAgIDQ6ICgkc3BhY2VyICogMS41KSxcbiAgICA1OiAoJHNwYWNlciAqIDMpXG4gICksXG4gICRzcGFjZXJzXG4pO1xuXG4vLyBUaGlzIHZhcmlhYmxlIGFmZmVjdHMgdGhlIGAuaC0qYCBhbmQgYC53LSpgIGNsYXNzZXMuXG4kc2l6ZXM6ICgpICFkZWZhdWx0O1xuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3MvZG9sbGFyLXZhcmlhYmxlLWRlZmF1bHRcbiRzaXplczogbWFwLW1lcmdlKFxuICAoXG4gICAgMjU6IDI1JSxcbiAgICA1MDogNTAlLFxuICAgIDc1OiA3NSUsXG4gICAgMTAwOiAxMDAlLFxuICAgIGF1dG86IGF1dG9cbiAgKSxcbiAgJHNpemVzXG4pO1xuXG5cbi8vIEJvZHlcbi8vXG4vLyBTZXR0aW5ncyBmb3IgdGhlIGA8Ym9keT5gIGVsZW1lbnQuXG5cbiRib2R5LWJnOiAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kYm9keS1jb2xvcjogICAgICAgICAgICAgICAgJGdyYXktOTAwICFkZWZhdWx0O1xuXG5cbi8vIExpbmtzXG4vL1xuLy8gU3R5bGUgYW5jaG9yIGVsZW1lbnRzLlxuXG4kbGluay1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZS1jb2xvcihcInByaW1hcnlcIikgIWRlZmF1bHQ7XG4kbGluay1kZWNvcmF0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICBub25lICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgZGFya2VuKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogICAgICAgICAgICAgICAgICAgdW5kZXJsaW5lICFkZWZhdWx0O1xuLy8gRGFya2VuIHBlcmNlbnRhZ2UgZm9yIGxpbmtzIHdpdGggYC50ZXh0LSpgIGNsYXNzIChlLmcuIGAudGV4dC1zdWNjZXNzYClcbiRlbXBoYXNpemVkLWxpbmstaG92ZXItZGFya2VuLXBlcmNlbnRhZ2U6IDE1JSAhZGVmYXVsdDtcblxuLy8gUGFyYWdyYXBoc1xuLy9cbi8vIFN0eWxlIHAgZWxlbWVudC5cblxuJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tOiAgIDFyZW0gIWRlZmF1bHQ7XG5cblxuLy8gR3JpZCBicmVha3BvaW50c1xuLy9cbi8vIERlZmluZSB0aGUgbWluaW11bSBkaW1lbnNpb25zIGF0IHdoaWNoIHlvdXIgbGF5b3V0IHdpbGwgY2hhbmdlLFxuLy8gYWRhcHRpbmcgdG8gZGlmZmVyZW50IHNjcmVlbiBzaXplcywgZm9yIHVzZSBpbiBtZWRpYSBxdWVyaWVzLlxuXG4kZ3JpZC1icmVha3BvaW50czogKFxuICB4czogMCxcbiAgc206IDU3NnB4LFxuICBtZDogNzY4cHgsXG4gIGxnOiA5OTJweCxcbiAgeGw6IDEyMDBweFxuKSAhZGVmYXVsdDtcblxuQGluY2x1ZGUgX2Fzc2VydC1hc2NlbmRpbmcoJGdyaWQtYnJlYWtwb2ludHMsIFwiJGdyaWQtYnJlYWtwb2ludHNcIik7XG5AaW5jbHVkZSBfYXNzZXJ0LXN0YXJ0cy1hdC16ZXJvKCRncmlkLWJyZWFrcG9pbnRzLCBcIiRncmlkLWJyZWFrcG9pbnRzXCIpO1xuXG5cbi8vIEdyaWQgY29udGFpbmVyc1xuLy9cbi8vIERlZmluZSB0aGUgbWF4aW11bSB3aWR0aCBvZiBgLmNvbnRhaW5lcmAgZm9yIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMuXG5cbiRjb250YWluZXItbWF4LXdpZHRoczogKFxuICBzbTogNTQwcHgsXG4gIG1kOiA3MjBweCxcbiAgbGc6IDk2MHB4LFxuICB4bDogMTE0MHB4XG4pICFkZWZhdWx0O1xuXG5AaW5jbHVkZSBfYXNzZXJ0LWFzY2VuZGluZygkY29udGFpbmVyLW1heC13aWR0aHMsIFwiJGNvbnRhaW5lci1tYXgtd2lkdGhzXCIpO1xuXG5cbi8vIEdyaWQgY29sdW1uc1xuLy9cbi8vIFNldCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYW5kIHNwZWNpZnkgdGhlIHdpZHRoIG9mIHRoZSBndXR0ZXJzLlxuXG4kZ3JpZC1jb2x1bW5zOiAgICAgICAgICAgICAgICAxMiAhZGVmYXVsdDtcbiRncmlkLWd1dHRlci13aWR0aDogICAgICAgICAgIDMwcHggIWRlZmF1bHQ7XG4kZ3JpZC1yb3ctY29sdW1uczogICAgICAgICAgICA2ICFkZWZhdWx0O1xuXG5cbi8vIENvbXBvbmVudHNcbi8vXG4vLyBEZWZpbmUgY29tbW9uIHBhZGRpbmcgYW5kIGJvcmRlciByYWRpdXMgc2l6ZXMgYW5kIG1vcmUuXG5cbiRsaW5lLWhlaWdodC1sZzogICAgICAgICAgICAgIDEuNSAhZGVmYXVsdDtcbiRsaW5lLWhlaWdodC1zbTogICAgICAgICAgICAgIDEuNSAhZGVmYXVsdDtcblxuJGJvcmRlci13aWR0aDogICAgICAgICAgICAgICAgMXB4ICFkZWZhdWx0O1xuJGJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgJGdyYXktMzAwICFkZWZhdWx0O1xuXG4kYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kYm9yZGVyLXJhZGl1cy1sZzogICAgICAgICAgICAuM3JlbSAhZGVmYXVsdDtcbiRib3JkZXItcmFkaXVzLXNtOiAgICAgICAgICAgIC4ycmVtICFkZWZhdWx0O1xuXG4kcm91bmRlZC1waWxsOiAgICAgICAgICAgICAgICA1MHJlbSAhZGVmYXVsdDtcblxuJGJveC1zaGFkb3ctc206ICAgICAgICAgICAgICAgMCAuMTI1cmVtIC4yNXJlbSByZ2JhKCRibGFjaywgLjA3NSkgIWRlZmF1bHQ7XG4kYm94LXNoYWRvdzogICAgICAgICAgICAgICAgICAwIC41cmVtIDFyZW0gcmdiYSgkYmxhY2ssIC4xNSkgIWRlZmF1bHQ7XG4kYm94LXNoYWRvdy1sZzogICAgICAgICAgICAgICAwIDFyZW0gM3JlbSByZ2JhKCRibGFjaywgLjE3NSkgIWRlZmF1bHQ7XG5cbiRjb21wb25lbnQtYWN0aXZlLWNvbG9yOiAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRjb21wb25lbnQtYWN0aXZlLWJnOiAgICAgICAgIHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSAhZGVmYXVsdDtcblxuJGNhcmV0LXdpZHRoOiAgICAgICAgICAgICAgICAgLjNlbSAhZGVmYXVsdDtcbiRjYXJldC12ZXJ0aWNhbC1hbGlnbjogICAgICAgICRjYXJldC13aWR0aCAqIC44NSAhZGVmYXVsdDtcbiRjYXJldC1zcGFjaW5nOiAgICAgICAgICAgICAgICRjYXJldC13aWR0aCAqIC44NSAhZGVmYXVsdDtcblxuJHRyYW5zaXRpb24tYmFzZTogICAgICAgICAgICAgYWxsIC4ycyBlYXNlLWluLW91dCAhZGVmYXVsdDtcbiR0cmFuc2l0aW9uLWZhZGU6ICAgICAgICAgICAgIG9wYWNpdHkgLjE1cyBsaW5lYXIgIWRlZmF1bHQ7XG4kdHJhbnNpdGlvbi1jb2xsYXBzZTogICAgICAgICBoZWlnaHQgLjM1cyBlYXNlICFkZWZhdWx0O1xuXG4kZW1iZWQtcmVzcG9uc2l2ZS1hc3BlY3QtcmF0aW9zOiAoKSAhZGVmYXVsdDtcbi8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzY3NzL2RvbGxhci12YXJpYWJsZS1kZWZhdWx0XG4kZW1iZWQtcmVzcG9uc2l2ZS1hc3BlY3QtcmF0aW9zOiBqb2luKFxuICAoXG4gICAgKDIxIDkpLFxuICAgICgxNiA5KSxcbiAgICAoNCAzKSxcbiAgICAoMSAxKSxcbiAgKSxcbiAgJGVtYmVkLXJlc3BvbnNpdmUtYXNwZWN0LXJhdGlvc1xuKTtcblxuLy8gVHlwb2dyYXBoeVxuLy9cbi8vIEZvbnQsIGxpbmUtaGVpZ2h0LCBhbmQgY29sb3IgZm9yIGJvZHkgdGV4dCwgaGVhZGluZ3MsIGFuZCBtb3JlLlxuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSB2YWx1ZS1rZXl3b3JkLWNhc2VcbiRmb250LWZhbWlseS1zYW5zLXNlcmlmOiAgICAgIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIFwiTm90byBTYW5zXCIsIHNhbnMtc2VyaWYsIFwiQXBwbGUgQ29sb3IgRW1vamlcIiwgXCJTZWdvZSBVSSBFbW9qaVwiLCBcIlNlZ29lIFVJIFN5bWJvbFwiLCBcIk5vdG8gQ29sb3IgRW1vamlcIiAhZGVmYXVsdDtcbiRmb250LWZhbWlseS1tb25vc3BhY2U6ICAgICAgIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgXCJMaWJlcmF0aW9uIE1vbm9cIiwgXCJDb3VyaWVyIE5ld1wiLCBtb25vc3BhY2UgIWRlZmF1bHQ7XG4kZm9udC1mYW1pbHktYmFzZTogICAgICAgICAgICAkZm9udC1mYW1pbHktc2Fucy1zZXJpZiAhZGVmYXVsdDtcbi8vIHN0eWxlbGludC1lbmFibGUgdmFsdWUta2V5d29yZC1jYXNlXG5cbiRmb250LXNpemUtYmFzZTogICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7IC8vIEFzc3VtZXMgdGhlIGJyb3dzZXIgZGVmYXVsdCwgdHlwaWNhbGx5IGAxNnB4YFxuJGZvbnQtc2l6ZS1sZzogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMS4yNSAhZGVmYXVsdDtcbiRmb250LXNpemUtc206ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIC44NzUgIWRlZmF1bHQ7XG5cbiRmb250LXdlaWdodC1saWdodGVyOiAgICAgICAgIGxpZ2h0ZXIgIWRlZmF1bHQ7XG4kZm9udC13ZWlnaHQtbGlnaHQ6ICAgICAgICAgICAzMDAgIWRlZmF1bHQ7XG4kZm9udC13ZWlnaHQtbm9ybWFsOiAgICAgICAgICA0MDAgIWRlZmF1bHQ7XG4kZm9udC13ZWlnaHQtYm9sZDogICAgICAgICAgICA3MDAgIWRlZmF1bHQ7XG4kZm9udC13ZWlnaHQtYm9sZGVyOiAgICAgICAgICBib2xkZXIgIWRlZmF1bHQ7XG5cbiRmb250LXdlaWdodC1iYXNlOiAgICAgICAgICAgICRmb250LXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG4kbGluZS1oZWlnaHQtYmFzZTogICAgICAgICAgICAxLjUgIWRlZmF1bHQ7XG5cbiRoMS1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDIuNSAhZGVmYXVsdDtcbiRoMi1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDIgIWRlZmF1bHQ7XG4kaDMtZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjc1ICFkZWZhdWx0O1xuJGg0LWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMS41ICFkZWZhdWx0O1xuJGg1LWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMS4yNSAhZGVmYXVsdDtcbiRoNi1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAhZGVmYXVsdDtcblxuJGhlYWRpbmdzLW1hcmdpbi1ib3R0b206ICAgICAgJHNwYWNlciAvIDIgIWRlZmF1bHQ7XG4kaGVhZGluZ3MtZm9udC1mYW1pbHk6ICAgICAgICBudWxsICFkZWZhdWx0O1xuJGhlYWRpbmdzLWZvbnQtd2VpZ2h0OiAgICAgICAgNTAwICFkZWZhdWx0O1xuJGhlYWRpbmdzLWxpbmUtaGVpZ2h0OiAgICAgICAgMS4yICFkZWZhdWx0O1xuJGhlYWRpbmdzLWNvbG9yOiAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcblxuJGRpc3BsYXkxLXNpemU6ICAgICAgICAgICAgICAgNnJlbSAhZGVmYXVsdDtcbiRkaXNwbGF5Mi1zaXplOiAgICAgICAgICAgICAgIDUuNXJlbSAhZGVmYXVsdDtcbiRkaXNwbGF5My1zaXplOiAgICAgICAgICAgICAgIDQuNXJlbSAhZGVmYXVsdDtcbiRkaXNwbGF5NC1zaXplOiAgICAgICAgICAgICAgIDMuNXJlbSAhZGVmYXVsdDtcblxuJGRpc3BsYXkxLXdlaWdodDogICAgICAgICAgICAgMzAwICFkZWZhdWx0O1xuJGRpc3BsYXkyLXdlaWdodDogICAgICAgICAgICAgMzAwICFkZWZhdWx0O1xuJGRpc3BsYXkzLXdlaWdodDogICAgICAgICAgICAgMzAwICFkZWZhdWx0O1xuJGRpc3BsYXk0LXdlaWdodDogICAgICAgICAgICAgMzAwICFkZWZhdWx0O1xuJGRpc3BsYXktbGluZS1oZWlnaHQ6ICAgICAgICAgJGhlYWRpbmdzLWxpbmUtaGVpZ2h0ICFkZWZhdWx0O1xuXG4kbGVhZC1mb250LXNpemU6ICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjI1ICFkZWZhdWx0O1xuJGxlYWQtZm9udC13ZWlnaHQ6ICAgICAgICAgICAgMzAwICFkZWZhdWx0O1xuXG4kc21hbGwtZm9udC1zaXplOiAgICAgICAgICAgICA4MCUgIWRlZmF1bHQ7XG5cbiR0ZXh0LW11dGVkOiAgICAgICAgICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcblxuJGJsb2NrcXVvdGUtc21hbGwtY29sb3I6ICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJGJsb2NrcXVvdGUtc21hbGwtZm9udC1zaXplOiAgJHNtYWxsLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRibG9ja3F1b3RlLWZvbnQtc2l6ZTogICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuMjUgIWRlZmF1bHQ7XG5cbiRoci1ib3JkZXItY29sb3I6ICAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAuMSkgIWRlZmF1bHQ7XG4kaHItYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuXG4kbWFyay1wYWRkaW5nOiAgICAgICAgICAgICAgICAuMmVtICFkZWZhdWx0O1xuXG4kZHQtZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICAkZm9udC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcblxuJGtiZC1ib3gtc2hhZG93OiAgICAgICAgICAgICAgaW5zZXQgMCAtLjFyZW0gMCByZ2JhKCRibGFjaywgLjI1KSAhZGVmYXVsdDtcbiRuZXN0ZWQta2JkLWZvbnQtd2VpZ2h0OiAgICAgICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xuXG4kbGlzdC1pbmxpbmUtcGFkZGluZzogICAgICAgICAuNXJlbSAhZGVmYXVsdDtcblxuJG1hcmstYmc6ICAgICAgICAgICAgICAgICAgICAgI2ZjZjhlMyAhZGVmYXVsdDtcblxuJGhyLW1hcmdpbi15OiAgICAgICAgICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcblxuXG4vLyBUYWJsZXNcbi8vXG4vLyBDdXN0b21pemVzIHRoZSBgLnRhYmxlYCBjb21wb25lbnQgd2l0aCBiYXNpYyB2YWx1ZXMsIGVhY2ggdXNlZCBhY3Jvc3MgYWxsIHRhYmxlIHZhcmlhdGlvbnMuXG5cbiR0YWJsZS1jZWxsLXBhZGRpbmc6ICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiR0YWJsZS1jZWxsLXBhZGRpbmctc206ICAgICAgIC4zcmVtICFkZWZhdWx0O1xuXG4kdGFibGUtY29sb3I6ICAgICAgICAgICAgICAgICAkYm9keS1jb2xvciAhZGVmYXVsdDtcbiR0YWJsZS1iZzogICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kdGFibGUtYWNjZW50LWJnOiAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjA1KSAhZGVmYXVsdDtcbiR0YWJsZS1ob3Zlci1jb2xvcjogICAgICAgICAgICR0YWJsZS1jb2xvciAhZGVmYXVsdDtcbiR0YWJsZS1ob3Zlci1iZzogICAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAuMDc1KSAhZGVmYXVsdDtcbiR0YWJsZS1hY3RpdmUtYmc6ICAgICAgICAgICAgICR0YWJsZS1ob3Zlci1iZyAhZGVmYXVsdDtcblxuJHRhYmxlLWJvcmRlci13aWR0aDogICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiR0YWJsZS1ib3JkZXItY29sb3I6ICAgICAgICAgICRib3JkZXItY29sb3IgIWRlZmF1bHQ7XG5cbiR0YWJsZS1oZWFkLWJnOiAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiR0YWJsZS1oZWFkLWNvbG9yOiAgICAgICAgICAgICRncmF5LTcwMCAhZGVmYXVsdDtcblxuJHRhYmxlLWRhcmstY29sb3I6ICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJHRhYmxlLWRhcmstYmc6ICAgICAgICAgICAgICAgJGdyYXktODAwICFkZWZhdWx0O1xuJHRhYmxlLWRhcmstYWNjZW50LWJnOiAgICAgICAgcmdiYSgkd2hpdGUsIC4wNSkgIWRlZmF1bHQ7XG4kdGFibGUtZGFyay1ob3Zlci1jb2xvcjogICAgICAkdGFibGUtZGFyay1jb2xvciAhZGVmYXVsdDtcbiR0YWJsZS1kYXJrLWhvdmVyLWJnOiAgICAgICAgIHJnYmEoJHdoaXRlLCAuMDc1KSAhZGVmYXVsdDtcbiR0YWJsZS1kYXJrLWJvcmRlci1jb2xvcjogICAgIGxpZ2h0ZW4oJHRhYmxlLWRhcmstYmcsIDcuNSUpICFkZWZhdWx0O1xuXG4kdGFibGUtc3RyaXBlZC1vcmRlcjogICAgICAgICBvZGQgIWRlZmF1bHQ7XG5cbiR0YWJsZS1jYXB0aW9uLWNvbG9yOiAgICAgICAgICR0ZXh0LW11dGVkICFkZWZhdWx0O1xuXG4kdGFibGUtYmctbGV2ZWw6ICAgICAgICAgICAgICAtOSAhZGVmYXVsdDtcbiR0YWJsZS1ib3JkZXItbGV2ZWw6ICAgICAgICAgIC02ICFkZWZhdWx0O1xuXG5cbi8vIEJ1dHRvbnMgKyBGb3Jtc1xuLy9cbi8vIFNoYXJlZCB2YXJpYWJsZXMgdGhhdCBhcmUgcmVhc3NpZ25lZCB0byBgJGlucHV0LWAgYW5kIGAkYnRuLWAgc3BlY2lmaWMgdmFyaWFibGVzLlxuXG4kaW5wdXQtYnRuLXBhZGRpbmcteTogICAgICAgICAuMzc1cmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1wYWRkaW5nLXg6ICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1mb250LWZhbWlseTogICAgICAgbnVsbCAhZGVmYXVsdDtcbiRpbnB1dC1idG4tZm9udC1zaXplOiAgICAgICAgICRmb250LXNpemUtYmFzZSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tbGluZS1oZWlnaHQ6ICAgICAgICRsaW5lLWhlaWdodC1iYXNlICFkZWZhdWx0O1xuXG4kaW5wdXQtYnRuLWZvY3VzLXdpZHRoOiAgICAgICAuMnJlbSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tZm9jdXMtY29sb3I6ICAgICAgIHJnYmEoJGNvbXBvbmVudC1hY3RpdmUtYmcsIC4yNSkgIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLWZvY3VzLWJveC1zaGFkb3c6ICAwIDAgMCAkaW5wdXQtYnRuLWZvY3VzLXdpZHRoICRpbnB1dC1idG4tZm9jdXMtY29sb3IgIWRlZmF1bHQ7XG5cbiRpbnB1dC1idG4tcGFkZGluZy15LXNtOiAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tcGFkZGluZy14LXNtOiAgICAgIC41cmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1mb250LXNpemUtc206ICAgICAgJGZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tbGluZS1oZWlnaHQtc206ICAgICRsaW5lLWhlaWdodC1zbSAhZGVmYXVsdDtcblxuJGlucHV0LWJ0bi1wYWRkaW5nLXktbGc6ICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLXBhZGRpbmcteC1sZzogICAgICAxcmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1mb250LXNpemUtbGc6ICAgICAgJGZvbnQtc2l6ZS1sZyAhZGVmYXVsdDtcbiRpbnB1dC1idG4tbGluZS1oZWlnaHQtbGc6ICAgICRsaW5lLWhlaWdodC1sZyAhZGVmYXVsdDtcblxuJGlucHV0LWJ0bi1ib3JkZXItd2lkdGg6ICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcblxuXG4vLyBCdXR0b25zXG4vL1xuLy8gRm9yIGVhY2ggb2YgQm9vdHN0cmFwJ3MgYnV0dG9ucywgZGVmaW5lIHRleHQsIGJhY2tncm91bmQsIGFuZCBib3JkZXIgY29sb3IuXG5cbiRidG4tcGFkZGluZy15OiAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15ICFkZWZhdWx0O1xuJGJ0bi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kYnRuLWZvbnQtZmFtaWx5OiAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtZmFtaWx5ICFkZWZhdWx0O1xuJGJ0bi1mb250LXNpemU6ICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUgIWRlZmF1bHQ7XG4kYnRuLWxpbmUtaGVpZ2h0OiAgICAgICAgICAgICAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0ICFkZWZhdWx0O1xuJGJ0bi13aGl0ZS1zcGFjZTogICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDsgLy8gU2V0IHRvIGBub3dyYXBgIHRvIHByZXZlbnQgdGV4dCB3cmFwcGluZ1xuXG4kYnRuLXBhZGRpbmcteS1zbTogICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteS1zbSAhZGVmYXVsdDtcbiRidG4tcGFkZGluZy14LXNtOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy14LXNtICFkZWZhdWx0O1xuJGJ0bi1mb250LXNpemUtc206ICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUtc20gIWRlZmF1bHQ7XG4kYnRuLWxpbmUtaGVpZ2h0LXNtOiAgICAgICAgICAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0LXNtICFkZWZhdWx0O1xuXG4kYnRuLXBhZGRpbmcteS1sZzogICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteS1sZyAhZGVmYXVsdDtcbiRidG4tcGFkZGluZy14LWxnOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy14LWxnICFkZWZhdWx0O1xuJGJ0bi1mb250LXNpemUtbGc6ICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUtbGcgIWRlZmF1bHQ7XG4kYnRuLWxpbmUtaGVpZ2h0LWxnOiAgICAgICAgICAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0LWxnICFkZWZhdWx0O1xuXG4kYnRuLWJvcmRlci13aWR0aDogICAgICAgICAgICAkaW5wdXQtYnRuLWJvcmRlci13aWR0aCAhZGVmYXVsdDtcblxuJGJ0bi1mb250LXdlaWdodDogICAgICAgICAgICAgJGZvbnQtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcbiRidG4tYm94LXNoYWRvdzogICAgICAgICAgICAgIGluc2V0IDAgMXB4IDAgcmdiYSgkd2hpdGUsIC4xNSksIDAgMXB4IDFweCByZ2JhKCRibGFjaywgLjA3NSkgIWRlZmF1bHQ7XG4kYnRuLWZvY3VzLXdpZHRoOiAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvY3VzLXdpZHRoICFkZWZhdWx0O1xuJGJ0bi1mb2N1cy1ib3gtc2hhZG93OiAgICAgICAgJGlucHV0LWJ0bi1mb2N1cy1ib3gtc2hhZG93ICFkZWZhdWx0O1xuJGJ0bi1kaXNhYmxlZC1vcGFjaXR5OiAgICAgICAgLjY1ICFkZWZhdWx0O1xuJGJ0bi1hY3RpdmUtYm94LXNoYWRvdzogICAgICAgaW5zZXQgMCAzcHggNXB4IHJnYmEoJGJsYWNrLCAuMTI1KSAhZGVmYXVsdDtcblxuJGJ0bi1saW5rLWRpc2FibGVkLWNvbG9yOiAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kYnRuLWJsb2NrLXNwYWNpbmcteTogICAgICAgICAuNXJlbSAhZGVmYXVsdDtcblxuLy8gQWxsb3dzIGZvciBjdXN0b21pemluZyBidXR0b24gcmFkaXVzIGluZGVwZW5kZW50bHkgZnJvbSBnbG9iYWwgYm9yZGVyIHJhZGl1c1xuJGJ0bi1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kYnRuLWJvcmRlci1yYWRpdXMtbGc6ICAgICAgICAkYm9yZGVyLXJhZGl1cy1sZyAhZGVmYXVsdDtcbiRidG4tYm9yZGVyLXJhZGl1cy1zbTogICAgICAgICRib3JkZXItcmFkaXVzLXNtICFkZWZhdWx0O1xuXG4kYnRuLXRyYW5zaXRpb246ICAgICAgICAgICAgICBjb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cblxuLy8gRm9ybXNcblxuJGxhYmVsLW1hcmdpbi1ib3R0b206ICAgICAgICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuXG4kaW5wdXQtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXkgIWRlZmF1bHQ7XG4kaW5wdXQtcGFkZGluZy14OiAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kaW5wdXQtZm9udC1mYW1pbHk6ICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LWZhbWlseSAhZGVmYXVsdDtcbiRpbnB1dC1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRpbnB1dC1mb250LXdlaWdodDogICAgICAgICAgICAgICAgICAgICAkZm9udC13ZWlnaHQtYmFzZSAhZGVmYXVsdDtcbiRpbnB1dC1saW5lLWhlaWdodDogICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0ICFkZWZhdWx0O1xuXG4kaW5wdXQtcGFkZGluZy15LXNtOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXktc20gIWRlZmF1bHQ7XG4kaW5wdXQtcGFkZGluZy14LXNtOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXgtc20gIWRlZmF1bHQ7XG4kaW5wdXQtZm9udC1zaXplLXNtOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUtc20gIWRlZmF1bHQ7XG4kaW5wdXQtbGluZS1oZWlnaHQtc206ICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1saW5lLWhlaWdodC1zbSAhZGVmYXVsdDtcblxuJGlucHV0LXBhZGRpbmcteS1sZzogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15LWxnICFkZWZhdWx0O1xuJGlucHV0LXBhZGRpbmcteC1sZzogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy14LWxnICFkZWZhdWx0O1xuJGlucHV0LWZvbnQtc2l6ZS1sZzogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tZm9udC1zaXplLWxnICFkZWZhdWx0O1xuJGlucHV0LWxpbmUtaGVpZ2h0LWxnOiAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQtbGcgIWRlZmF1bHQ7XG5cbiRpbnB1dC1iZzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kaW5wdXQtZGlzYWJsZWQtYmc6ICAgICAgICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuXG4kaW5wdXQtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdyYXktNzAwICFkZWZhdWx0O1xuJGlucHV0LWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgICAgICRncmF5LTQwMCAhZGVmYXVsdDtcbiRpbnB1dC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRpbnB1dC1ib3gtc2hhZG93OiAgICAgICAgICAgICAgICAgICAgICBpbnNldCAwIDFweCAxcHggcmdiYSgkYmxhY2ssIC4wNzUpICFkZWZhdWx0O1xuXG4kaW5wdXQtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kaW5wdXQtYm9yZGVyLXJhZGl1cy1sZzogICAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMtbGcgIWRlZmF1bHQ7XG4kaW5wdXQtYm9yZGVyLXJhZGl1cy1zbTogICAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMtc20gIWRlZmF1bHQ7XG5cbiRpbnB1dC1mb2N1cy1iZzogICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYmcgIWRlZmF1bHQ7XG4kaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgbGlnaHRlbigkY29tcG9uZW50LWFjdGl2ZS1iZywgMjUlKSAhZGVmYXVsdDtcbiRpbnB1dC1mb2N1cy1jb2xvcjogICAgICAgICAgICAgICAgICAgICAkaW5wdXQtY29sb3IgIWRlZmF1bHQ7XG4kaW5wdXQtZm9jdXMtd2lkdGg6ICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb2N1cy13aWR0aCAhZGVmYXVsdDtcbiRpbnB1dC1mb2N1cy1ib3gtc2hhZG93OiAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvY3VzLWJveC1zaGFkb3cgIWRlZmF1bHQ7XG5cbiRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjogICAgICAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kaW5wdXQtcGxhaW50ZXh0LWNvbG9yOiAgICAgICAgICAgICAgICAgJGJvZHktY29sb3IgIWRlZmF1bHQ7XG5cbiRpbnB1dC1oZWlnaHQtYm9yZGVyOiAgICAgICAgICAgICAgICAgICAkaW5wdXQtYm9yZGVyLXdpZHRoICogMiAhZGVmYXVsdDtcblxuJGlucHV0LWhlaWdodC1pbm5lcjogICAgICAgICAgICAgICAgICAgIGFkZCgkaW5wdXQtbGluZS1oZWlnaHQgKiAxZW0sICRpbnB1dC1wYWRkaW5nLXkgKiAyKSAhZGVmYXVsdDtcbiRpbnB1dC1oZWlnaHQtaW5uZXItaGFsZjogICAgICAgICAgICAgICBhZGQoJGlucHV0LWxpbmUtaGVpZ2h0ICogLjVlbSwgJGlucHV0LXBhZGRpbmcteSkgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LWlubmVyLXF1YXJ0ZXI6ICAgICAgICAgICAgYWRkKCRpbnB1dC1saW5lLWhlaWdodCAqIC4yNWVtLCAkaW5wdXQtcGFkZGluZy15IC8gMikgIWRlZmF1bHQ7XG5cbiRpbnB1dC1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQoJGlucHV0LWxpbmUtaGVpZ2h0ICogMWVtLCBhZGQoJGlucHV0LXBhZGRpbmcteSAqIDIsICRpbnB1dC1oZWlnaHQtYm9yZGVyLCBmYWxzZSkpICFkZWZhdWx0O1xuJGlucHV0LWhlaWdodC1zbTogICAgICAgICAgICAgICAgICAgICAgIGFkZCgkaW5wdXQtbGluZS1oZWlnaHQtc20gKiAxZW0sIGFkZCgkaW5wdXQtcGFkZGluZy15LXNtICogMiwgJGlucHV0LWhlaWdodC1ib3JkZXIsIGZhbHNlKSkgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LWxnOiAgICAgICAgICAgICAgICAgICAgICAgYWRkKCRpbnB1dC1saW5lLWhlaWdodC1sZyAqIDFlbSwgYWRkKCRpbnB1dC1wYWRkaW5nLXktbGcgKiAyLCAkaW5wdXQtaGVpZ2h0LWJvcmRlciwgZmFsc2UpKSAhZGVmYXVsdDtcblxuJGlucHV0LXRyYW5zaXRpb246ICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cbiRmb3JtLXRleHQtbWFyZ2luLXRvcDogICAgICAgICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG5cbiRmb3JtLWNoZWNrLWlucHV0LWd1dHRlcjogICAgICAgICAgICAgICAxLjI1cmVtICFkZWZhdWx0O1xuJGZvcm0tY2hlY2staW5wdXQtbWFyZ2luLXk6ICAgICAgICAgICAgIC4zcmVtICFkZWZhdWx0O1xuJGZvcm0tY2hlY2staW5wdXQtbWFyZ2luLXg6ICAgICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcblxuJGZvcm0tY2hlY2staW5saW5lLW1hcmdpbi14OiAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLWlubGluZS1pbnB1dC1tYXJnaW4teDogICAgICAuMzEyNXJlbSAhZGVmYXVsdDtcblxuJGZvcm0tZ3JpZC1ndXR0ZXItd2lkdGg6ICAgICAgICAgICAgICAgIDEwcHggIWRlZmF1bHQ7XG4kZm9ybS1ncm91cC1tYXJnaW4tYm90dG9tOiAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcblxuJGlucHV0LWdyb3VwLWFkZG9uLWNvbG9yOiAgICAgICAgICAgICAgICRpbnB1dC1jb2xvciAhZGVmYXVsdDtcbiRpbnB1dC1ncm91cC1hZGRvbi1iZzogICAgICAgICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG4kaW5wdXQtZ3JvdXAtYWRkb24tYm9yZGVyLWNvbG9yOiAgICAgICAgJGlucHV0LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcblxuJGN1c3RvbS1mb3Jtcy10cmFuc2l0aW9uOiAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dCAhZGVmYXVsdDtcblxuJGN1c3RvbS1jb250cm9sLWd1dHRlcjogICAgICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLXNwYWNlci14OiAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtY3Vyc29yOiAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcblxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplOiAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnOiAgICAgICAgICAgJGlucHV0LWJnICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnLXNpemU6ICAgICAgNTAlIDUwJSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm94LXNoYWRvdzogICAkaW5wdXQtYm94LXNoYWRvdyAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm9yZGVyLWNvbG9yOiAkZ3JheS01MDAgIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJvcmRlci13aWR0aDogJGlucHV0LWJvcmRlci13aWR0aCAhZGVmYXVsdDtcblxuJGN1c3RvbS1jb250cm9sLWxhYmVsLWNvbG9yOiAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG5cbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItZGlzYWJsZWQtYmc6ICAgICAgICAgICRpbnB1dC1kaXNhYmxlZC1iZyAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1sYWJlbC1kaXNhYmxlZC1jb2xvcjogICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcblxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWNvbG9yOiAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtYmc6ICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1kaXNhYmxlZC1iZzogIHJnYmEodGhlbWUtY29sb3IoXCJwcmltYXJ5XCIpLCAuNSkgIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtYm94LXNoYWRvdzogICBub25lICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWJvcmRlci1jb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWJnICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWZvY3VzLWJveC1zaGFkb3c6ICAgICAkaW5wdXQtZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItZm9jdXMtYm9yZGVyLWNvbG9yOiAgICRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG5cbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYWN0aXZlLWNvbG9yOiAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1hY3RpdmUtYmc6ICAgICAgICAgICAgbGlnaHRlbigkY29tcG9uZW50LWFjdGl2ZS1iZywgMzUlKSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYWN0aXZlLWJveC1zaGFkb3c6ICAgIG5vbmUgIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1ib3JkZXItY29sb3I6ICAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1iZyAhZGVmYXVsdDtcblxuJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItYm9yZGVyLXJhZGl1czogICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pY29uLWNoZWNrZWQ6ICAgICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc4JyBoZWlnaHQ9JzgnIHZpZXdCb3g9JzAgMCA4IDgnPjxwYXRoIGZpbGw9JyN7JGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWNvbG9yfScgZD0nTTYuNTY0Ljc1bC0zLjU5IDMuNjEyLTEuNTM4LTEuNTVMMCA0LjI2bDIuOTc0IDIuOTlMOCAyLjE5M3onLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG5cbiRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWluZGV0ZXJtaW5hdGUtYmc6ICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWluZGV0ZXJtaW5hdGUtY29sb3I6ICAgICAgICAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtY29sb3IgIWRlZmF1bHQ7XG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pY29uLWluZGV0ZXJtaW5hdGU6ICAgICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nNCcgaGVpZ2h0PSc0JyB2aWV3Qm94PScwIDAgNCA0Jz48cGF0aCBzdHJva2U9JyN7JGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1jb2xvcn0nIGQ9J00wIDJoNCcvPjwvc3ZnPlwiKSAhZGVmYXVsdDtcbiRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWluZGV0ZXJtaW5hdGUtYm94LXNoYWRvdzogICBub25lICFkZWZhdWx0O1xuJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1ib3JkZXItY29sb3I6ICRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWluZGV0ZXJtaW5hdGUtYmcgIWRlZmF1bHQ7XG5cbiRjdXN0b20tcmFkaW8taW5kaWNhdG9yLWJvcmRlci1yYWRpdXM6ICAgICAgICAgIDUwJSAhZGVmYXVsdDtcbiRjdXN0b20tcmFkaW8taW5kaWNhdG9yLWljb24tY2hlY2tlZDogICAgICAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEyJyBoZWlnaHQ9JzEyJyB2aWV3Qm94PSctNCAtNCA4IDgnPjxjaXJjbGUgcj0nMycgZmlsbD0nI3skY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtY29sb3J9Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuXG4kY3VzdG9tLXN3aXRjaC13aWR0aDogICAgICAgICAgICAgICAgICAgICAgICAgICAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemUgKiAxLjc1ICFkZWZhdWx0O1xuJGN1c3RvbS1zd2l0Y2gtaW5kaWNhdG9yLWJvcmRlci1yYWRpdXM6ICAgICAgICAgJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplIC8gMiAhZGVmYXVsdDtcbiRjdXN0b20tc3dpdGNoLWluZGljYXRvci1zaXplOiAgICAgICAgICAgICAgICAgIHN1YnRyYWN0KCRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZSwgJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1ib3JkZXItd2lkdGggKiA0KSAhZGVmYXVsdDtcblxuJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15OiAgICAgICAgICAgJGlucHV0LXBhZGRpbmcteSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LXBhZGRpbmcteDogICAgICAgICAgICRpbnB1dC1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1mb250LWZhbWlseTogICAgICAgICAkaW5wdXQtZm9udC1mYW1pbHkgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1mb250LXNpemU6ICAgICAgICAgICAkaW5wdXQtZm9udC1zaXplICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtaGVpZ2h0OiAgICAgICAgICAgICAgJGlucHV0LWhlaWdodCAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWluZGljYXRvci1wYWRkaW5nOiAgIDFyZW0gIWRlZmF1bHQ7IC8vIEV4dHJhIHBhZGRpbmcgdG8gYWNjb3VudCBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSBiYWNrZ3JvdW5kLWltYWdlIGJhc2VkIGluZGljYXRvclxuJGN1c3RvbS1zZWxlY3QtZm9udC13ZWlnaHQ6ICAgICAgICAgJGlucHV0LWZvbnQtd2VpZ2h0ICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtbGluZS1oZWlnaHQ6ICAgICAgICAgJGlucHV0LWxpbmUtaGVpZ2h0ICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtY29sb3I6ICAgICAgICAgICAgICAgJGlucHV0LWNvbG9yICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtZGlzYWJsZWQtY29sb3I6ICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtYmc6ICAgICAgICAgICAgICAgICAgJGlucHV0LWJnICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtZGlzYWJsZWQtYmc6ICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtYmctc2l6ZTogICAgICAgICAgICAgOHB4IDEwcHggIWRlZmF1bHQ7IC8vIEluIHBpeGVscyBiZWNhdXNlIGltYWdlIGRpbWVuc2lvbnNcbiRjdXN0b20tc2VsZWN0LWluZGljYXRvci1jb2xvcjogICAgICRncmF5LTgwMCAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWluZGljYXRvcjogICAgICAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzQnIGhlaWdodD0nNScgdmlld0JveD0nMCAwIDQgNSc+PHBhdGggZmlsbD0nI3skY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3ItY29sb3J9JyBkPSdNMiAwTDAgMmg0em0wIDVMMCAzaDR6Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtYmFja2dyb3VuZDogICAgICAgICAgZXNjYXBlLXN2ZygkY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3IpIG5vLXJlcGVhdCByaWdodCAkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXggY2VudGVyIC8gJGN1c3RvbS1zZWxlY3QtYmctc2l6ZSAhZGVmYXVsdDsgLy8gVXNlZCBzbyB3ZSBjYW4gaGF2ZSBtdWx0aXBsZSBiYWNrZ3JvdW5kIGVsZW1lbnRzIChlLmcuLCBhcnJvdyBhbmQgZmVlZGJhY2sgaWNvbilcblxuJGN1c3RvbS1zZWxlY3QtZmVlZGJhY2staWNvbi1wYWRkaW5nLXJpZ2h0OiBhZGQoMWVtICogLjc1LCAoMiAqICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteSAqIC43NSkgKyAkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXggKyAkY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZykgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1mZWVkYmFjay1pY29uLXBvc2l0aW9uOiAgICAgIGNlbnRlciByaWdodCAoJGN1c3RvbS1zZWxlY3QtcGFkZGluZy14ICsgJGN1c3RvbS1zZWxlY3QtaW5kaWNhdG9yLXBhZGRpbmcpICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtZmVlZGJhY2staWNvbi1zaXplOiAgICAgICAgICAkaW5wdXQtaGVpZ2h0LWlubmVyLWhhbGYgJGlucHV0LWhlaWdodC1pbm5lci1oYWxmICFkZWZhdWx0O1xuXG4kY3VzdG9tLXNlbGVjdC1ib3JkZXItd2lkdGg6ICAgICAgICAkaW5wdXQtYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtYm9yZGVyLWNvbG9yOiAgICAgICAgJGlucHV0LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWJvcmRlci1yYWRpdXM6ICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtYm94LXNoYWRvdzogICAgICAgICAgaW5zZXQgMCAxcHggMnB4IHJnYmEoJGJsYWNrLCAuMDc1KSAhZGVmYXVsdDtcblxuJGN1c3RvbS1zZWxlY3QtZm9jdXMtYm9yZGVyLWNvbG9yOiAgJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWZvY3VzLXdpZHRoOiAgICAgICAgICRpbnB1dC1mb2N1cy13aWR0aCAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWZvY3VzLWJveC1zaGFkb3c6ICAgIDAgMCAwICRjdXN0b20tc2VsZWN0LWZvY3VzLXdpZHRoICRpbnB1dC1idG4tZm9jdXMtY29sb3IgIWRlZmF1bHQ7XG5cbiRjdXN0b20tc2VsZWN0LXBhZGRpbmcteS1zbTogICAgICAgICRpbnB1dC1wYWRkaW5nLXktc20gIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXgtc206ICAgICAgICAkaW5wdXQtcGFkZGluZy14LXNtICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtZm9udC1zaXplLXNtOiAgICAgICAgJGlucHV0LWZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWhlaWdodC1zbTogICAgICAgICAgICRpbnB1dC1oZWlnaHQtc20gIWRlZmF1bHQ7XG5cbiRjdXN0b20tc2VsZWN0LXBhZGRpbmcteS1sZzogICAgICAgICRpbnB1dC1wYWRkaW5nLXktbGcgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXgtbGc6ICAgICAgICAkaW5wdXQtcGFkZGluZy14LWxnICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtZm9udC1zaXplLWxnOiAgICAgICAgJGlucHV0LWZvbnQtc2l6ZS1sZyAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWhlaWdodC1sZzogICAgICAgICAgICRpbnB1dC1oZWlnaHQtbGcgIWRlZmF1bHQ7XG5cbiRjdXN0b20tcmFuZ2UtdHJhY2std2lkdGg6ICAgICAgICAgIDEwMCUgIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRyYWNrLWhlaWdodDogICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRjdXN0b20tcmFuZ2UtdHJhY2stY3Vyc29yOiAgICAgICAgIHBvaW50ZXIgIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRyYWNrLWJnOiAgICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRyYWNrLWJvcmRlci1yYWRpdXM6ICAxcmVtICFkZWZhdWx0O1xuJGN1c3RvbS1yYW5nZS10cmFjay1ib3gtc2hhZG93OiAgICAgaW5zZXQgMCAuMjVyZW0gLjI1cmVtIHJnYmEoJGJsYWNrLCAuMSkgIWRlZmF1bHQ7XG5cbiRjdXN0b20tcmFuZ2UtdGh1bWItd2lkdGg6ICAgICAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRodW1iLWhlaWdodDogICAgICAgICAgICAgICAgICAkY3VzdG9tLXJhbmdlLXRodW1iLXdpZHRoICFkZWZhdWx0O1xuJGN1c3RvbS1yYW5nZS10aHVtYi1iZzogICAgICAgICAgICAgICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRodW1iLWJvcmRlcjogICAgICAgICAgICAgICAgICAwICFkZWZhdWx0O1xuJGN1c3RvbS1yYW5nZS10aHVtYi1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRjdXN0b20tcmFuZ2UtdGh1bWItYm94LXNoYWRvdzogICAgICAgICAgICAgIDAgLjFyZW0gLjI1cmVtIHJnYmEoJGJsYWNrLCAuMSkgIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRodW1iLWZvY3VzLWJveC1zaGFkb3c6ICAgICAgICAwIDAgMCAxcHggJGJvZHktYmcsICRpbnB1dC1mb2N1cy1ib3gtc2hhZG93ICFkZWZhdWx0O1xuJGN1c3RvbS1yYW5nZS10aHVtYi1mb2N1cy1ib3gtc2hhZG93LXdpZHRoOiAgJGlucHV0LWZvY3VzLXdpZHRoICFkZWZhdWx0OyAvLyBGb3IgZm9jdXMgYm94IHNoYWRvdyBpc3N1ZSBpbiBJRS9FZGdlXG4kY3VzdG9tLXJhbmdlLXRodW1iLWFjdGl2ZS1iZzogICAgICAgICAgICAgICBsaWdodGVuKCRjb21wb25lbnQtYWN0aXZlLWJnLCAzNSUpICFkZWZhdWx0O1xuJGN1c3RvbS1yYW5nZS10aHVtYi1kaXNhYmxlZC1iZzogICAgICAgICAgICAgJGdyYXktNTAwICFkZWZhdWx0O1xuXG4kY3VzdG9tLWZpbGUtaGVpZ2h0OiAgICAgICAgICAgICAgICAkaW5wdXQtaGVpZ2h0ICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWhlaWdodC1pbm5lcjogICAgICAgICAgJGlucHV0LWhlaWdodC1pbm5lciAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1mb2N1cy1ib3JkZXItY29sb3I6ICAgICRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtZm9jdXMtYm94LXNoYWRvdzogICAgICAkaW5wdXQtZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1kaXNhYmxlZC1iZzogICAgICAgICAgICRpbnB1dC1kaXNhYmxlZC1iZyAhZGVmYXVsdDtcblxuJGN1c3RvbS1maWxlLXBhZGRpbmcteTogICAgICAgICAgICAgJGlucHV0LXBhZGRpbmcteSAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1wYWRkaW5nLXg6ICAgICAgICAgICAgICRpbnB1dC1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtbGluZS1oZWlnaHQ6ICAgICAgICAgICAkaW5wdXQtbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtZm9udC1mYW1pbHk6ICAgICAgICAgICAkaW5wdXQtZm9udC1mYW1pbHkgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtZm9udC13ZWlnaHQ6ICAgICAgICAgICAkaW5wdXQtZm9udC13ZWlnaHQgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtY29sb3I6ICAgICAgICAgICAgICAgICAkaW5wdXQtY29sb3IgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtYmc6ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYmcgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtYm9yZGVyLXdpZHRoOiAgICAgICAgICAkaW5wdXQtYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWJvcmRlci1jb2xvcjogICAgICAgICAgJGlucHV0LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1ib3JkZXItcmFkaXVzOiAgICAgICAgICRpbnB1dC1ib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWJveC1zaGFkb3c6ICAgICAgICAgICAgJGlucHV0LWJveC1zaGFkb3cgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtYnV0dG9uLWNvbG9yOiAgICAgICAgICAkY3VzdG9tLWZpbGUtY29sb3IgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtYnV0dG9uLWJnOiAgICAgICAgICAgICAkaW5wdXQtZ3JvdXAtYWRkb24tYmcgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtdGV4dDogKFxuICBlbjogXCJCcm93c2VcIlxuKSAhZGVmYXVsdDtcblxuXG4vLyBGb3JtIHZhbGlkYXRpb25cblxuJGZvcm0tZmVlZGJhY2stbWFyZ2luLXRvcDogICAgICAgICAgJGZvcm0tdGV4dC1tYXJnaW4tdG9wICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stZm9udC1zaXplOiAgICAgICAgICAgJHNtYWxsLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLXZhbGlkLWNvbG9yOiAgICAgICAgIHRoZW1lLWNvbG9yKFwic3VjY2Vzc1wiKSAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLWludmFsaWQtY29sb3I6ICAgICAgIHRoZW1lLWNvbG9yKFwiZGFuZ2VyXCIpICFkZWZhdWx0O1xuXG4kZm9ybS1mZWVkYmFjay1pY29uLXZhbGlkLWNvbG9yOiAgICAkZm9ybS1mZWVkYmFjay12YWxpZC1jb2xvciAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLWljb24tdmFsaWQ6ICAgICAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzgnIGhlaWdodD0nOCcgdmlld0JveD0nMCAwIDggOCc+PHBhdGggZmlsbD0nI3skZm9ybS1mZWVkYmFjay1pY29uLXZhbGlkLWNvbG9yfScgZD0nTTIuMyA2LjczTC42IDQuNTNjLS40LTEuMDQuNDYtMS40IDEuMS0uOGwxLjEgMS40IDMuNC0zLjhjLjYtLjYzIDEuNi0uMjcgMS4yLjdsLTQgNC42Yy0uNDMuNS0uOC40LTEuMS4xeicvPjwvc3ZnPlwiKSAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLWljb24taW52YWxpZC1jb2xvcjogICRmb3JtLWZlZWRiYWNrLWludmFsaWQtY29sb3IgIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay1pY29uLWludmFsaWQ6ICAgICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMicgaGVpZ2h0PScxMicgZmlsbD0nbm9uZScgc3Ryb2tlPScjeyRmb3JtLWZlZWRiYWNrLWljb24taW52YWxpZC1jb2xvcn0nIHZpZXdCb3g9JzAgMCAxMiAxMic+PGNpcmNsZSBjeD0nNicgY3k9JzYnIHI9JzQuNScvPjxwYXRoIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIGQ9J001LjggMy42aC40TDYgNi41eicvPjxjaXJjbGUgY3g9JzYnIGN5PSc4LjInIHI9Jy42JyBmaWxsPScjeyRmb3JtLWZlZWRiYWNrLWljb24taW52YWxpZC1jb2xvcn0nIHN0cm9rZT0nbm9uZScvPjwvc3ZnPlwiKSAhZGVmYXVsdDtcblxuJGZvcm0tdmFsaWRhdGlvbi1zdGF0ZXM6ICgpICFkZWZhdWx0O1xuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3MvZG9sbGFyLXZhcmlhYmxlLWRlZmF1bHRcbiRmb3JtLXZhbGlkYXRpb24tc3RhdGVzOiBtYXAtbWVyZ2UoXG4gIChcbiAgICBcInZhbGlkXCI6IChcbiAgICAgIFwiY29sb3JcIjogJGZvcm0tZmVlZGJhY2stdmFsaWQtY29sb3IsXG4gICAgICBcImljb25cIjogJGZvcm0tZmVlZGJhY2staWNvbi12YWxpZFxuICAgICksXG4gICAgXCJpbnZhbGlkXCI6IChcbiAgICAgIFwiY29sb3JcIjogJGZvcm0tZmVlZGJhY2staW52YWxpZC1jb2xvcixcbiAgICAgIFwiaWNvblwiOiAkZm9ybS1mZWVkYmFjay1pY29uLWludmFsaWRcbiAgICApLFxuICApLFxuICAkZm9ybS12YWxpZGF0aW9uLXN0YXRlc1xuKTtcblxuLy8gWi1pbmRleCBtYXN0ZXIgbGlzdFxuLy9cbi8vIFdhcm5pbmc6IEF2b2lkIGN1c3RvbWl6aW5nIHRoZXNlIHZhbHVlcy4gVGhleSdyZSB1c2VkIGZvciBhIGJpcmQncyBleWUgdmlld1xuLy8gb2YgY29tcG9uZW50cyBkZXBlbmRlbnQgb24gdGhlIHotYXhpcyBhbmQgYXJlIGRlc2lnbmVkIHRvIGFsbCB3b3JrIHRvZ2V0aGVyLlxuXG4kemluZGV4LWRyb3Bkb3duOiAgICAgICAgICAgICAgICAgICAxMDAwICFkZWZhdWx0O1xuJHppbmRleC1zdGlja3k6ICAgICAgICAgICAgICAgICAgICAgMTAyMCAhZGVmYXVsdDtcbiR6aW5kZXgtZml4ZWQ6ICAgICAgICAgICAgICAgICAgICAgIDEwMzAgIWRlZmF1bHQ7XG4kemluZGV4LW1vZGFsLWJhY2tkcm9wOiAgICAgICAgICAgICAxMDQwICFkZWZhdWx0O1xuJHppbmRleC1tb2RhbDogICAgICAgICAgICAgICAgICAgICAgMTA1MCAhZGVmYXVsdDtcbiR6aW5kZXgtcG9wb3ZlcjogICAgICAgICAgICAgICAgICAgIDEwNjAgIWRlZmF1bHQ7XG4kemluZGV4LXRvb2x0aXA6ICAgICAgICAgICAgICAgICAgICAxMDcwICFkZWZhdWx0O1xuXG5cbi8vIE5hdnNcblxuJG5hdi1saW5rLXBhZGRpbmcteTogICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kbmF2LWxpbmstcGFkZGluZy14OiAgICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJG5hdi1saW5rLWRpc2FibGVkLWNvbG9yOiAgICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kbmF2LXRhYnMtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJG5hdi10YWJzLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6ICAkZ3JheS0yMDAgJGdyYXktMjAwICRuYXYtdGFicy1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtbGluay1hY3RpdmUtY29sb3I6ICAgICAgICAkZ3JheS03MDAgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtbGluay1hY3RpdmUtYmc6ICAgICAgICAgICAkYm9keS1iZyAhZGVmYXVsdDtcbiRuYXYtdGFicy1saW5rLWFjdGl2ZS1ib3JkZXItY29sb3I6ICRncmF5LTMwMCAkZ3JheS0zMDAgJG5hdi10YWJzLWxpbmstYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kbmF2LXBpbGxzLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRuYXYtcGlsbHMtbGluay1hY3RpdmUtY29sb3I6ICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJG5hdi1waWxscy1saW5rLWFjdGl2ZS1iZzogICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG5cbiRuYXYtZGl2aWRlci1jb2xvcjogICAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRuYXYtZGl2aWRlci1tYXJnaW4teTogICAgICAgICAgICAgICRzcGFjZXIgLyAyICFkZWZhdWx0O1xuXG5cbi8vIE5hdmJhclxuXG4kbmF2YmFyLXBhZGRpbmcteTogICAgICAgICAgICAgICAgICAkc3BhY2VyIC8gMiAhZGVmYXVsdDtcbiRuYXZiYXItcGFkZGluZy14OiAgICAgICAgICAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XG5cbiRuYXZiYXItbmF2LWxpbmstcGFkZGluZy14OiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuXG4kbmF2YmFyLWJyYW5kLWZvbnQtc2l6ZTogICAgICAgICAgICAkZm9udC1zaXplLWxnICFkZWZhdWx0O1xuLy8gQ29tcHV0ZSB0aGUgbmF2YmFyLWJyYW5kIHBhZGRpbmcteSBzbyB0aGUgbmF2YmFyLWJyYW5kIHdpbGwgaGF2ZSB0aGUgc2FtZSBoZWlnaHQgYXMgbmF2YmFyLXRleHQgYW5kIG5hdi1saW5rXG4kbmF2LWxpbmstaGVpZ2h0OiAgICAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAkbGluZS1oZWlnaHQtYmFzZSArICRuYXYtbGluay1wYWRkaW5nLXkgKiAyICFkZWZhdWx0O1xuJG5hdmJhci1icmFuZC1oZWlnaHQ6ICAgICAgICAgICAgICAgJG5hdmJhci1icmFuZC1mb250LXNpemUgKiAkbGluZS1oZWlnaHQtYmFzZSAhZGVmYXVsdDtcbiRuYXZiYXItYnJhbmQtcGFkZGluZy15OiAgICAgICAgICAgICgkbmF2LWxpbmstaGVpZ2h0IC0gJG5hdmJhci1icmFuZC1oZWlnaHQpIC8gMiAhZGVmYXVsdDtcblxuJG5hdmJhci10b2dnbGVyLXBhZGRpbmcteTogICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJG5hdmJhci10b2dnbGVyLXBhZGRpbmcteDogICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJG5hdmJhci10b2dnbGVyLWZvbnQtc2l6ZTogICAgICAgICAgJGZvbnQtc2l6ZS1sZyAhZGVmYXVsdDtcbiRuYXZiYXItdG9nZ2xlci1ib3JkZXItcmFkaXVzOiAgICAgICRidG4tYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcblxuJG5hdmJhci1kYXJrLWNvbG9yOiAgICAgICAgICAgICAgICAgcmdiYSgkd2hpdGUsIC41KSAhZGVmYXVsdDtcbiRuYXZiYXItZGFyay1ob3Zlci1jb2xvcjogICAgICAgICAgIHJnYmEoJHdoaXRlLCAuNzUpICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLWFjdGl2ZS1jb2xvcjogICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLWRpc2FibGVkLWNvbG9yOiAgICAgICAgcmdiYSgkd2hpdGUsIC4yNSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstdG9nZ2xlci1pY29uLWJnOiAgICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSczMCcgaGVpZ2h0PSczMCcgdmlld0JveD0nMCAwIDMwIDMwJz48cGF0aCBzdHJva2U9JyN7JG5hdmJhci1kYXJrLWNvbG9yfScgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbWl0ZXJsaW1pdD0nMTAnIHN0cm9rZS13aWR0aD0nMicgZD0nTTQgN2gyMk00IDE1aDIyTTQgMjNoMjInLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstdG9nZ2xlci1ib3JkZXItY29sb3I6ICByZ2JhKCR3aGl0ZSwgLjEpICFkZWZhdWx0O1xuXG4kbmF2YmFyLWxpZ2h0LWNvbG9yOiAgICAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjUpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1ob3Zlci1jb2xvcjogICAgICAgICAgcmdiYSgkYmxhY2ssIC43KSAhZGVmYXVsdDtcbiRuYXZiYXItbGlnaHQtYWN0aXZlLWNvbG9yOiAgICAgICAgIHJnYmEoJGJsYWNrLCAuOSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWxpZ2h0LWRpc2FibGVkLWNvbG9yOiAgICAgICByZ2JhKCRibGFjaywgLjMpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC10b2dnbGVyLWljb24tYmc6ICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMzAnIGhlaWdodD0nMzAnIHZpZXdCb3g9JzAgMCAzMCAzMCc+PHBhdGggc3Ryb2tlPScjeyRuYXZiYXItbGlnaHQtY29sb3J9JyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgc3Ryb2tlLXdpZHRoPScyJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvPjwvc3ZnPlwiKSAhZGVmYXVsdDtcbiRuYXZiYXItbGlnaHQtdG9nZ2xlci1ib3JkZXItY29sb3I6IHJnYmEoJGJsYWNrLCAuMSkgIWRlZmF1bHQ7XG5cbiRuYXZiYXItbGlnaHQtYnJhbmQtY29sb3I6ICAgICAgICAgICAgICAgICRuYXZiYXItbGlnaHQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1icmFuZC1ob3Zlci1jb2xvcjogICAgICAgICAgJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstYnJhbmQtY29sb3I6ICAgICAgICAgICAgICAgICAkbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLWJyYW5kLWhvdmVyLWNvbG9yOiAgICAgICAgICAgJG5hdmJhci1kYXJrLWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcblxuXG4vLyBEcm9wZG93bnNcbi8vXG4vLyBEcm9wZG93biBtZW51IGNvbnRhaW5lciBhbmQgY29udGVudHMuXG5cbiRkcm9wZG93bi1taW4td2lkdGg6ICAgICAgICAgICAgICAgIDEwcmVtICFkZWZhdWx0O1xuJGRyb3Bkb3duLXBhZGRpbmcteTogICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24tc3BhY2VyOiAgICAgICAgICAgICAgICAgICAuMTI1cmVtICFkZWZhdWx0O1xuJGRyb3Bkb3duLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICFkZWZhdWx0O1xuJGRyb3Bkb3duLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgJGJvZHktY29sb3IgIWRlZmF1bHQ7XG4kZHJvcGRvd24tYmc6ICAgICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kZHJvcGRvd24tYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjE1KSAhZGVmYXVsdDtcbiRkcm9wZG93bi1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJGRyb3Bkb3duLWJvcmRlci13aWR0aDogICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRkcm9wZG93bi1pbm5lci1ib3JkZXItcmFkaXVzOiAgICAgIHN1YnRyYWN0KCRkcm9wZG93bi1ib3JkZXItcmFkaXVzLCAkZHJvcGRvd24tYm9yZGVyLXdpZHRoKSAhZGVmYXVsdDtcbiRkcm9wZG93bi1kaXZpZGVyLWJnOiAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRkcm9wZG93bi1kaXZpZGVyLW1hcmdpbi15OiAgICAgICAgICRuYXYtZGl2aWRlci1tYXJnaW4teSAhZGVmYXVsdDtcbiRkcm9wZG93bi1ib3gtc2hhZG93OiAgICAgICAgICAgICAgIDAgLjVyZW0gMXJlbSByZ2JhKCRibGFjaywgLjE3NSkgIWRlZmF1bHQ7XG5cbiRkcm9wZG93bi1saW5rLWNvbG9yOiAgICAgICAgICAgICAgICRncmF5LTkwMCAhZGVmYXVsdDtcbiRkcm9wZG93bi1saW5rLWhvdmVyLWNvbG9yOiAgICAgICAgIGRhcmtlbigkZ3JheS05MDAsIDUlKSAhZGVmYXVsdDtcbiRkcm9wZG93bi1saW5rLWhvdmVyLWJnOiAgICAgICAgICAgICRncmF5LTEwMCAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWxpbmstYWN0aXZlLWNvbG9yOiAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kZHJvcGRvd24tbGluay1hY3RpdmUtYmc6ICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWxpbmstZGlzYWJsZWQtY29sb3I6ICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kZHJvcGRvd24taXRlbS1wYWRkaW5nLXk6ICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24taXRlbS1wYWRkaW5nLXg6ICAgICAgICAgICAxLjVyZW0gIWRlZmF1bHQ7XG5cbiRkcm9wZG93bi1oZWFkZXItY29sb3I6ICAgICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcblxuXG4vLyBQYWdpbmF0aW9uXG5cbiRwYWdpbmF0aW9uLXBhZGRpbmcteTogICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy14OiAgICAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy15LXNtOiAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy14LXNtOiAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1wYWRkaW5nLXktbGc6ICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1wYWRkaW5nLXgtbGc6ICAgICAgICAgICAxLjVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1saW5lLWhlaWdodDogICAgICAgICAgICAxLjI1ICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi1jb2xvcjogICAgICAgICAgICAgICAgICAkbGluay1jb2xvciAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJnOiAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJvcmRlci13aWR0aDogICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1ib3JkZXItY29sb3I6ICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWZvY3VzLWJveC1zaGFkb3c6ICAgICAgICRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWZvY3VzLW91dGxpbmU6ICAgICAgICAgIDAgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWhvdmVyLWNvbG9yOiAgICAgICAgICAgICRsaW5rLWhvdmVyLWNvbG9yICFkZWZhdWx0O1xuJHBhZ2luYXRpb24taG92ZXItYmc6ICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJHBhZ2luYXRpb24taG92ZXItYm9yZGVyLWNvbG9yOiAgICAgJGdyYXktMzAwICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi1hY3RpdmUtY29sb3I6ICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWFjdGl2ZS1iZzogICAgICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tYWN0aXZlLWJvcmRlci1jb2xvcjogICAgJHBhZ2luYXRpb24tYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1jb2xvcjogICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1iZzogICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG5cblxuLy8gSnVtYm90cm9uXG5cbiRqdW1ib3Ryb24tcGFkZGluZzogICAgICAgICAgICAgICAgIDJyZW0gIWRlZmF1bHQ7XG4kanVtYm90cm9uLWNvbG9yOiAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGp1bWJvdHJvbi1iZzogICAgICAgICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuXG5cbi8vIENhcmRzXG5cbiRjYXJkLXNwYWNlci15OiAgICAgICAgICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRjYXJkLXNwYWNlci14OiAgICAgICAgICAgICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XG4kY2FyZC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGNhcmQtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kY2FyZC1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjEyNSkgIWRlZmF1bHQ7XG4kY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzOiAgICAgICAgICBzdWJ0cmFjdCgkY2FyZC1ib3JkZXItcmFkaXVzLCAkY2FyZC1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJGNhcmQtY2FwLWJnOiAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgkYmxhY2ssIC4wMykgIWRlZmF1bHQ7XG4kY2FyZC1jYXAtY29sb3I6ICAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGNhcmQtaGVpZ2h0OiAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRjYXJkLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kY2FyZC1iZzogICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG5cbiRjYXJkLWltZy1vdmVybGF5LXBhZGRpbmc6ICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XG5cbiRjYXJkLWdyb3VwLW1hcmdpbjogICAgICAgICAgICAgICAgICRncmlkLWd1dHRlci13aWR0aCAvIDIgIWRlZmF1bHQ7XG4kY2FyZC1kZWNrLW1hcmdpbjogICAgICAgICAgICAgICAgICAkY2FyZC1ncm91cC1tYXJnaW4gIWRlZmF1bHQ7XG5cbiRjYXJkLWNvbHVtbnMtY291bnQ6ICAgICAgICAgICAgICAgIDMgIWRlZmF1bHQ7XG4kY2FyZC1jb2x1bW5zLWdhcDogICAgICAgICAgICAgICAgICAxLjI1cmVtICFkZWZhdWx0O1xuJGNhcmQtY29sdW1ucy1tYXJnaW46ICAgICAgICAgICAgICAgJGNhcmQtc3BhY2VyLXkgIWRlZmF1bHQ7XG5cblxuLy8gVG9vbHRpcHNcblxuJHRvb2x0aXAtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcbiR0b29sdGlwLW1heC13aWR0aDogICAgICAgICAgICAgICAgIDIwMHB4ICFkZWZhdWx0O1xuJHRvb2x0aXAtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJHRvb2x0aXAtYmc6ICAgICAgICAgICAgICAgICAgICAgICAgJGJsYWNrICFkZWZhdWx0O1xuJHRvb2x0aXAtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kdG9vbHRpcC1vcGFjaXR5OiAgICAgICAgICAgICAgICAgICAuOSAhZGVmYXVsdDtcbiR0b29sdGlwLXBhZGRpbmcteTogICAgICAgICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiR0b29sdGlwLXBhZGRpbmcteDogICAgICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJHRvb2x0aXAtbWFyZ2luOiAgICAgICAgICAgICAgICAgICAgMCAhZGVmYXVsdDtcblxuJHRvb2x0aXAtYXJyb3ctd2lkdGg6ICAgICAgICAgICAgICAgLjhyZW0gIWRlZmF1bHQ7XG4kdG9vbHRpcC1hcnJvdy1oZWlnaHQ6ICAgICAgICAgICAgICAuNHJlbSAhZGVmYXVsdDtcbiR0b29sdGlwLWFycm93LWNvbG9yOiAgICAgICAgICAgICAgICR0b29sdGlwLWJnICFkZWZhdWx0O1xuXG4vLyBGb3JtIHRvb2x0aXBzIG11c3QgY29tZSBhZnRlciByZWd1bGFyIHRvb2x0aXBzXG4kZm9ybS1mZWVkYmFjay10b29sdGlwLXBhZGRpbmcteTogICAgICR0b29sdGlwLXBhZGRpbmcteSAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtcGFkZGluZy14OiAgICAgJHRvb2x0aXAtcGFkZGluZy14ICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1mb250LXNpemU6ICAgICAkdG9vbHRpcC1mb250LXNpemUgIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay10b29sdGlwLWxpbmUtaGVpZ2h0OiAgICRsaW5lLWhlaWdodC1iYXNlICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1vcGFjaXR5OiAgICAgICAkdG9vbHRpcC1vcGFjaXR5ICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1ib3JkZXItcmFkaXVzOiAkdG9vbHRpcC1ib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuXG5cbi8vIFBvcG92ZXJzXG5cbiRwb3BvdmVyLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICRmb250LXNpemUtc20gIWRlZmF1bHQ7XG4kcG9wb3Zlci1iZzogICAgICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kcG9wb3Zlci1tYXgtd2lkdGg6ICAgICAgICAgICAgICAgICAyNzZweCAhZGVmYXVsdDtcbiRwb3BvdmVyLWJvcmRlci13aWR0aDogICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjIpICFkZWZhdWx0O1xuJHBvcG92ZXItYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMtbGcgIWRlZmF1bHQ7XG4kcG9wb3Zlci1pbm5lci1ib3JkZXItcmFkaXVzOiAgICAgICBzdWJ0cmFjdCgkcG9wb3Zlci1ib3JkZXItcmFkaXVzLCAkcG9wb3Zlci1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJHBvcG92ZXItYm94LXNoYWRvdzogICAgICAgICAgICAgICAgMCAuMjVyZW0gLjVyZW0gcmdiYSgkYmxhY2ssIC4yKSAhZGVmYXVsdDtcblxuJHBvcG92ZXItaGVhZGVyLWJnOiAgICAgICAgICAgICAgICAgZGFya2VuKCRwb3BvdmVyLWJnLCAzJSkgIWRlZmF1bHQ7XG4kcG9wb3Zlci1oZWFkZXItY29sb3I6ICAgICAgICAgICAgICAkaGVhZGluZ3MtY29sb3IgIWRlZmF1bHQ7XG4kcG9wb3Zlci1oZWFkZXItcGFkZGluZy15OiAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRwb3BvdmVyLWhlYWRlci1wYWRkaW5nLXg6ICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcblxuJHBvcG92ZXItYm9keS1jb2xvcjogICAgICAgICAgICAgICAgJGJvZHktY29sb3IgIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib2R5LXBhZGRpbmcteTogICAgICAgICAgICAkcG9wb3Zlci1oZWFkZXItcGFkZGluZy15ICFkZWZhdWx0O1xuJHBvcG92ZXItYm9keS1wYWRkaW5nLXg6ICAgICAgICAgICAgJHBvcG92ZXItaGVhZGVyLXBhZGRpbmcteCAhZGVmYXVsdDtcblxuJHBvcG92ZXItYXJyb3ctd2lkdGg6ICAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRwb3BvdmVyLWFycm93LWhlaWdodDogICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJHBvcG92ZXItYXJyb3ctY29sb3I6ICAgICAgICAgICAgICAgJHBvcG92ZXItYmcgIWRlZmF1bHQ7XG5cbiRwb3BvdmVyLWFycm93LW91dGVyLWNvbG9yOiAgICAgICAgIGZhZGUtaW4oJHBvcG92ZXItYm9yZGVyLWNvbG9yLCAuMDUpICFkZWZhdWx0O1xuXG5cbi8vIFRvYXN0c1xuXG4kdG9hc3QtbWF4LXdpZHRoOiAgICAgICAgICAgICAgICAgICAzNTBweCAhZGVmYXVsdDtcbiR0b2FzdC1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiR0b2FzdC1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiR0b2FzdC1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgIC44NzVyZW0gIWRlZmF1bHQ7XG4kdG9hc3QtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJHRvYXN0LWJhY2tncm91bmQtY29sb3I6ICAgICAgICAgICAgcmdiYSgkd2hpdGUsIC44NSkgIWRlZmF1bHQ7XG4kdG9hc3QtYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgICAxcHggIWRlZmF1bHQ7XG4kdG9hc3QtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICByZ2JhKDAsIDAsIDAsIC4xKSAhZGVmYXVsdDtcbiR0b2FzdC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiR0b2FzdC1ib3gtc2hhZG93OiAgICAgICAgICAgICAgICAgIDAgLjI1cmVtIC43NXJlbSByZ2JhKCRibGFjaywgLjEpICFkZWZhdWx0O1xuXG4kdG9hc3QtaGVhZGVyLWNvbG9yOiAgICAgICAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kdG9hc3QtaGVhZGVyLWJhY2tncm91bmQtY29sb3I6ICAgICByZ2JhKCR3aGl0ZSwgLjg1KSAhZGVmYXVsdDtcbiR0b2FzdC1oZWFkZXItYm9yZGVyLWNvbG9yOiAgICAgICAgIHJnYmEoMCwgMCwgMCwgLjA1KSAhZGVmYXVsdDtcblxuXG4vLyBCYWRnZXNcblxuJGJhZGdlLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICAgNzUlICFkZWZhdWx0O1xuJGJhZGdlLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICAgICAgJGZvbnQtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG4kYmFkZ2UtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICAuMjVlbSAhZGVmYXVsdDtcbiRiYWRnZS1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgIC40ZW0gIWRlZmF1bHQ7XG4kYmFkZ2UtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcblxuJGJhZGdlLXRyYW5zaXRpb246ICAgICAgICAgICAgICAgICAgJGJ0bi10cmFuc2l0aW9uICFkZWZhdWx0O1xuJGJhZGdlLWZvY3VzLXdpZHRoOiAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb2N1cy13aWR0aCAhZGVmYXVsdDtcblxuJGJhZGdlLXBpbGwtcGFkZGluZy14OiAgICAgICAgICAgICAgLjZlbSAhZGVmYXVsdDtcbi8vIFVzZSBhIGhpZ2hlciB0aGFuIG5vcm1hbCB2YWx1ZSB0byBlbnN1cmUgY29tcGxldGVseSByb3VuZGVkIGVkZ2VzIHdoZW5cbi8vIGN1c3RvbWl6aW5nIHBhZGRpbmcgb3IgZm9udC1zaXplIG9uIGxhYmVscy5cbiRiYWRnZS1waWxsLWJvcmRlci1yYWRpdXM6ICAgICAgICAgIDEwcmVtICFkZWZhdWx0O1xuXG5cbi8vIE1vZGFsc1xuXG4vLyBQYWRkaW5nIGFwcGxpZWQgdG8gdGhlIG1vZGFsIGJvZHlcbiRtb2RhbC1pbm5lci1wYWRkaW5nOiAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG5cbi8vIE1hcmdpbiBiZXR3ZWVuIGVsZW1lbnRzIGluIGZvb3RlciwgbXVzdCBiZSBsb3dlciB0aGFuIG9yIGVxdWFsIHRvIDIgKiAkbW9kYWwtaW5uZXItcGFkZGluZ1xuJG1vZGFsLWZvb3Rlci1tYXJnaW4tYmV0d2VlbjogICAgICAgLjVyZW0gIWRlZmF1bHQ7XG5cbiRtb2RhbC1kaWFsb2ctbWFyZ2luOiAgICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJG1vZGFsLWRpYWxvZy1tYXJnaW4teS1zbS11cDogICAgICAgMS43NXJlbSAhZGVmYXVsdDtcblxuJG1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0OiAgICAgICAgICAgJGxpbmUtaGVpZ2h0LWJhc2UgIWRlZmF1bHQ7XG5cbiRtb2RhbC1jb250ZW50LWNvbG9yOiAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kbW9kYWwtY29udGVudC1iZzogICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kbW9kYWwtY29udGVudC1ib3JkZXItY29sb3I6ICAgICAgICByZ2JhKCRibGFjaywgLjIpICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXdpZHRoOiAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJvcmRlci1yYWRpdXM6ICAgICAgICRib3JkZXItcmFkaXVzLWxnICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtaW5uZXItYm9yZGVyLXJhZGl1czogc3VidHJhY3QoJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXJhZGl1cywgJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXdpZHRoKSAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJveC1zaGFkb3cteHM6ICAgICAgIDAgLjI1cmVtIC41cmVtIHJnYmEoJGJsYWNrLCAuNSkgIWRlZmF1bHQ7XG4kbW9kYWwtY29udGVudC1ib3gtc2hhZG93LXNtLXVwOiAgICAwIC41cmVtIDFyZW0gcmdiYSgkYmxhY2ssIC41KSAhZGVmYXVsdDtcblxuJG1vZGFsLWJhY2tkcm9wLWJnOiAgICAgICAgICAgICAgICAgJGJsYWNrICFkZWZhdWx0O1xuJG1vZGFsLWJhY2tkcm9wLW9wYWNpdHk6ICAgICAgICAgICAgLjUgIWRlZmF1bHQ7XG4kbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcjogICAgICAgICAkYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJG1vZGFsLWZvb3Rlci1ib3JkZXItY29sb3I6ICAgICAgICAgJG1vZGFsLWhlYWRlci1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG4kbW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aDogICAgICAgICAkbW9kYWwtY29udGVudC1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kbW9kYWwtZm9vdGVyLWJvcmRlci13aWR0aDogICAgICAgICAkbW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRtb2RhbC1oZWFkZXItcGFkZGluZy15OiAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kbW9kYWwtaGVhZGVyLXBhZGRpbmcteDogICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJG1vZGFsLWhlYWRlci1wYWRkaW5nOiAgICAgICAgICAgICAgJG1vZGFsLWhlYWRlci1wYWRkaW5nLXkgJG1vZGFsLWhlYWRlci1wYWRkaW5nLXggIWRlZmF1bHQ7IC8vIEtlZXAgdGhpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuJG1vZGFsLXhsOiAgICAgICAgICAgICAgICAgICAgICAgICAgMTE0MHB4ICFkZWZhdWx0O1xuJG1vZGFsLWxnOiAgICAgICAgICAgICAgICAgICAgICAgICAgODAwcHggIWRlZmF1bHQ7XG4kbW9kYWwtbWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICA1MDBweCAhZGVmYXVsdDtcbiRtb2RhbC1zbTogICAgICAgICAgICAgICAgICAgICAgICAgIDMwMHB4ICFkZWZhdWx0O1xuXG4kbW9kYWwtZmFkZS10cmFuc2Zvcm06ICAgICAgICAgICAgICB0cmFuc2xhdGUoMCwgLTUwcHgpICFkZWZhdWx0O1xuJG1vZGFsLXNob3ctdHJhbnNmb3JtOiAgICAgICAgICAgICAgbm9uZSAhZGVmYXVsdDtcbiRtb2RhbC10cmFuc2l0aW9uOiAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybSAuM3MgZWFzZS1vdXQgIWRlZmF1bHQ7XG4kbW9kYWwtc2NhbGUtdHJhbnNmb3JtOiAgICAgICAgICAgICBzY2FsZSgxLjAyKSAhZGVmYXVsdDtcblxuXG4vLyBBbGVydHNcbi8vXG4vLyBEZWZpbmUgYWxlcnQgY29sb3JzLCBib3JkZXIgcmFkaXVzLCBhbmQgcGFkZGluZy5cblxuJGFsZXJ0LXBhZGRpbmcteTogICAgICAgICAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJGFsZXJ0LXBhZGRpbmcteDogICAgICAgICAgICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcbiRhbGVydC1tYXJnaW4tYm90dG9tOiAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kYWxlcnQtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRhbGVydC1saW5rLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xuJGFsZXJ0LWJvcmRlci13aWR0aDogICAgICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcblxuJGFsZXJ0LWJnLWxldmVsOiAgICAgICAgICAgICAgICAgICAgLTEwICFkZWZhdWx0O1xuJGFsZXJ0LWJvcmRlci1sZXZlbDogICAgICAgICAgICAgICAgLTkgIWRlZmF1bHQ7XG4kYWxlcnQtY29sb3ItbGV2ZWw6ICAgICAgICAgICAgICAgICA2ICFkZWZhdWx0O1xuXG5cbi8vIFByb2dyZXNzIGJhcnNcblxuJHByb2dyZXNzLWhlaWdodDogICAgICAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRwcm9ncmVzcy1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIC43NSAhZGVmYXVsdDtcbiRwcm9ncmVzcy1iZzogICAgICAgICAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRwcm9ncmVzcy1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJHByb2dyZXNzLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgaW5zZXQgMCAuMXJlbSAuMXJlbSByZ2JhKCRibGFjaywgLjEpICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci1jb2xvcjogICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci1iZzogICAgICAgICAgICAgICAgICAgdGhlbWUtY29sb3IoXCJwcmltYXJ5XCIpICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci1hbmltYXRpb24tdGltaW5nOiAgICAgMXMgbGluZWFyIGluZmluaXRlICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci10cmFuc2l0aW9uOiAgICAgICAgICAgd2lkdGggLjZzIGVhc2UgIWRlZmF1bHQ7XG5cblxuLy8gTGlzdCBncm91cFxuXG4kbGlzdC1ncm91cC1jb2xvcjogICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYmc6ICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgcmdiYSgkYmxhY2ssIC4xMjUpICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoOiAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuXG4kbGlzdC1ncm91cC1pdGVtLXBhZGRpbmcteTogICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1pdGVtLXBhZGRpbmcteDogICAgICAgICAxLjI1cmVtICFkZWZhdWx0O1xuXG4kbGlzdC1ncm91cC1ob3Zlci1iZzogICAgICAgICAgICAgICAkZ3JheS0xMDAgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1hY3RpdmUtY29sb3I6ICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWFjdGl2ZS1iZzogICAgICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYWN0aXZlLWJvcmRlci1jb2xvcjogICAgJGxpc3QtZ3JvdXAtYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kbGlzdC1ncm91cC1kaXNhYmxlZC1jb2xvcjogICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1kaXNhYmxlZC1iZzogICAgICAgICAgICAkbGlzdC1ncm91cC1iZyAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtYWN0aW9uLWNvbG9yOiAgICAgICAgICAgJGdyYXktNzAwICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWNvbG9yOiAgICAgJGxpc3QtZ3JvdXAtYWN0aW9uLWNvbG9yICFkZWZhdWx0O1xuXG4kbGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWNvbG9yOiAgICAkYm9keS1jb2xvciAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtYmc6ICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcblxuXG4vLyBJbWFnZSB0aHVtYm5haWxzXG5cbiR0aHVtYm5haWwtcGFkZGluZzogICAgICAgICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiR0aHVtYm5haWwtYmc6ICAgICAgICAgICAgICAgICAgICAgICRib2R5LWJnICFkZWZhdWx0O1xuJHRodW1ibmFpbC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiR0aHVtYm5haWwtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICRncmF5LTMwMCAhZGVmYXVsdDtcbiR0aHVtYm5haWwtYm9yZGVyLXJhZGl1czogICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJHRodW1ibmFpbC1ib3gtc2hhZG93OiAgICAgICAgICAgICAgMCAxcHggMnB4IHJnYmEoJGJsYWNrLCAuMDc1KSAhZGVmYXVsdDtcblxuXG4vLyBGaWd1cmVzXG5cbiRmaWd1cmUtY2FwdGlvbi1mb250LXNpemU6ICAgICAgICAgIDkwJSAhZGVmYXVsdDtcbiRmaWd1cmUtY2FwdGlvbi1jb2xvcjogICAgICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcblxuXG4vLyBCcmVhZGNydW1ic1xuXG4kYnJlYWRjcnVtYi1mb250LXNpemU6ICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuXG4kYnJlYWRjcnVtYi1wYWRkaW5nLXk6ICAgICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItaXRlbS1wYWRkaW5nOiAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG5cbiRicmVhZGNydW1iLW1hcmdpbi1ib3R0b206ICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG5cbiRicmVhZGNydW1iLWJnOiAgICAgICAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRicmVhZGNydW1iLWRpdmlkZXItY29sb3I6ICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiRicmVhZGNydW1iLWFjdGl2ZS1jb2xvcjogICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiRicmVhZGNydW1iLWRpdmlkZXI6ICAgICAgICAgICAgICAgIHF1b3RlKFwiL1wiKSAhZGVmYXVsdDtcblxuJGJyZWFkY3J1bWItYm9yZGVyLXJhZGl1czogICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG5cblxuLy8gQ2Fyb3VzZWxcblxuJGNhcm91c2VsLWNvbnRyb2wtY29sb3I6ICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jb250cm9sLXdpZHRoOiAgICAgICAgICAgICAxNSUgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC1vcGFjaXR5OiAgICAgICAgICAgLjUgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC1ob3Zlci1vcGFjaXR5OiAgICAgLjkgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC10cmFuc2l0aW9uOiAgICAgICAgb3BhY2l0eSAuMTVzIGVhc2UgIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC1pbmRpY2F0b3Itd2lkdGg6ICAgICAgICAgICAzMHB4ICFkZWZhdWx0O1xuJGNhcm91c2VsLWluZGljYXRvci1oZWlnaHQ6ICAgICAgICAgIDNweCAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3ItaGl0LWFyZWEtaGVpZ2h0OiAxMHB4ICFkZWZhdWx0O1xuJGNhcm91c2VsLWluZGljYXRvci1zcGFjZXI6ICAgICAgICAgIDNweCAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3ItYWN0aXZlLWJnOiAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtaW5kaWNhdG9yLXRyYW5zaXRpb246ICAgICAgb3BhY2l0eSAuNnMgZWFzZSAhZGVmYXVsdDtcblxuJGNhcm91c2VsLWNhcHRpb24td2lkdGg6ICAgICAgICAgICAgIDcwJSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jYXB0aW9uLWNvbG9yOiAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC1jb250cm9sLWljb24td2lkdGg6ICAgICAgICAyMHB4ICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24tYmc6ICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPScjeyRjYXJvdXNlbC1jb250cm9sLWNvbG9yfScgd2lkdGg9JzgnIGhlaWdodD0nOCcgdmlld0JveD0nMCAwIDggOCc+PHBhdGggZD0nTTUuMjUgMGwtNCA0IDQgNCAxLjUtMS41TDQuMjUgNGwyLjUtMi41TDUuMjUgMHonLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24tYmc6ICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPScjeyRjYXJvdXNlbC1jb250cm9sLWNvbG9yfScgd2lkdGg9JzgnIGhlaWdodD0nOCcgdmlld0JveD0nMCAwIDggOCc+PHBhdGggZD0nTTIuNzUgMGwtMS41IDEuNUwzLjc1IDRsLTIuNSAyLjVMMi43NSA4bDQtNC00LTR6Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtdHJhbnNpdGlvbi1kdXJhdGlvbjogICAgICAgLjZzICFkZWZhdWx0O1xuJGNhcm91c2VsLXRyYW5zaXRpb246ICAgICAgICAgICAgICAgIHRyYW5zZm9ybSAkY2Fyb3VzZWwtdHJhbnNpdGlvbi1kdXJhdGlvbiBlYXNlLWluLW91dCAhZGVmYXVsdDsgLy8gRGVmaW5lIHRyYW5zZm9ybSB0cmFuc2l0aW9uIGZpcnN0IGlmIHVzaW5nIG11bHRpcGxlIHRyYW5zaXRpb25zIChlLmcuLCBgdHJhbnNmb3JtIDJzIGVhc2UsIG9wYWNpdHkgLjVzIGVhc2Utb3V0YClcblxuXG4vLyBTcGlubmVyc1xuXG4kc3Bpbm5lci13aWR0aDogICAgICAgICAycmVtICFkZWZhdWx0O1xuJHNwaW5uZXItaGVpZ2h0OiAgICAgICAgJHNwaW5uZXItd2lkdGggIWRlZmF1bHQ7XG4kc3Bpbm5lci1ib3JkZXItd2lkdGg6ICAuMjVlbSAhZGVmYXVsdDtcblxuJHNwaW5uZXItd2lkdGgtc206ICAgICAgICAxcmVtICFkZWZhdWx0O1xuJHNwaW5uZXItaGVpZ2h0LXNtOiAgICAgICAkc3Bpbm5lci13aWR0aC1zbSAhZGVmYXVsdDtcbiRzcGlubmVyLWJvcmRlci13aWR0aC1zbTogLjJlbSAhZGVmYXVsdDtcblxuXG4vLyBDbG9zZVxuXG4kY2xvc2UtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjUgIWRlZmF1bHQ7XG4kY2xvc2UtZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICAgICAkZm9udC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcbiRjbG9zZS1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICRibGFjayAhZGVmYXVsdDtcbiRjbG9zZS10ZXh0LXNoYWRvdzogICAgICAgICAgICAgICAgIDAgMXB4IDAgJHdoaXRlICFkZWZhdWx0O1xuXG5cbi8vIENvZGVcblxuJGNvZGUtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgICAgODcuNSUgIWRlZmF1bHQ7XG4kY29kZS1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAkcGluayAhZGVmYXVsdDtcblxuJGtiZC1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAgICAgLjJyZW0gIWRlZmF1bHQ7XG4ka2JkLXBhZGRpbmcteDogICAgICAgICAgICAgICAgICAgICAuNHJlbSAhZGVmYXVsdDtcbiRrYmQtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgICAgICRjb2RlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRrYmQtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRrYmQtYmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRncmF5LTkwMCAhZGVmYXVsdDtcblxuJHByZS1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgJGdyYXktOTAwICFkZWZhdWx0O1xuJHByZS1zY3JvbGxhYmxlLW1heC1oZWlnaHQ6ICAgICAgICAgMzQwcHggIWRlZmF1bHQ7XG5cblxuLy8gVXRpbGl0aWVzXG5cbiRkaXNwbGF5czogbm9uZSwgaW5saW5lLCBpbmxpbmUtYmxvY2ssIGJsb2NrLCB0YWJsZSwgdGFibGUtcm93LCB0YWJsZS1jZWxsLCBmbGV4LCBpbmxpbmUtZmxleCAhZGVmYXVsdDtcbiRvdmVyZmxvd3M6IGF1dG8sIGhpZGRlbiAhZGVmYXVsdDtcbiRwb3NpdGlvbnM6IHN0YXRpYywgcmVsYXRpdmUsIGFic29sdXRlLCBmaXhlZCwgc3RpY2t5ICFkZWZhdWx0O1xuXG5cbi8vIFByaW50aW5nXG5cbiRwcmludC1wYWdlLXNpemU6ICAgICAgICAgICAgICAgICAgIGEzICFkZWZhdWx0O1xuJHByaW50LWJvZHktbWluLXdpZHRoOiAgICAgICAgICAgICAgbWFwLWdldCgkZ3JpZC1icmVha3BvaW50cywgXCJsZ1wiKSAhZGVmYXVsdDtcbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIHByb3BlcnR5LWJsYWNrbGlzdCwgc2Nzcy9kb2xsYXItdmFyaWFibGUtZGVmYXVsdFxuXG4vLyBTQ1NTIFJGUyBtaXhpblxuLy9cbi8vIEF1dG9tYXRlZCBmb250LXJlc2l6aW5nXG4vL1xuLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL3Jmc1xuXG4vLyBDb25maWd1cmF0aW9uXG5cbi8vIEJhc2UgZm9udCBzaXplXG4kcmZzLWJhc2UtZm9udC1zaXplOiAxLjI1cmVtICFkZWZhdWx0O1xuJHJmcy1mb250LXNpemUtdW5pdDogcmVtICFkZWZhdWx0O1xuXG4vLyBCcmVha3BvaW50IGF0IHdoZXJlIGZvbnQtc2l6ZSBzdGFydHMgZGVjcmVhc2luZyBpZiBzY3JlZW4gd2lkdGggaXMgc21hbGxlclxuJHJmcy1icmVha3BvaW50OiAxMjAwcHggIWRlZmF1bHQ7XG4kcmZzLWJyZWFrcG9pbnQtdW5pdDogcHggIWRlZmF1bHQ7XG5cbi8vIFJlc2l6ZSBmb250LXNpemUgYmFzZWQgb24gc2NyZWVuIGhlaWdodCBhbmQgd2lkdGhcbiRyZnMtdHdvLWRpbWVuc2lvbmFsOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gRmFjdG9yIG9mIGRlY3JlYXNlXG4kcmZzLWZhY3RvcjogMTAgIWRlZmF1bHQ7XG5cbkBpZiB0eXBlLW9mKCRyZnMtZmFjdG9yKSAhPSBcIm51bWJlclwiIG9yICRyZnMtZmFjdG9yIDw9IDEge1xuICBAZXJyb3IgXCJgI3skcmZzLWZhY3Rvcn1gIGlzIG5vdCBhIHZhbGlkICAkcmZzLWZhY3RvciwgaXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMS5cIjtcbn1cblxuLy8gR2VuZXJhdGUgZW5hYmxlIG9yIGRpc2FibGUgY2xhc3Nlcy4gUG9zc2liaWxpdGllczogZmFsc2UsIFwiZW5hYmxlXCIgb3IgXCJkaXNhYmxlXCJcbiRyZnMtY2xhc3M6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyAxIHJlbSA9ICRyZnMtcmVtLXZhbHVlIHB4XG4kcmZzLXJlbS12YWx1ZTogMTYgIWRlZmF1bHQ7XG5cbi8vIFNhZmFyaSBpZnJhbWUgcmVzaXplIGJ1ZzogaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvcmZzL2lzc3Vlcy8xNFxuJHJmcy1zYWZhcmktaWZyYW1lLXJlc2l6ZS1idWctZml4OiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gRGlzYWJsZSBSRlMgYnkgc2V0dGluZyAkZW5hYmxlLXJlc3BvbnNpdmUtZm9udC1zaXplcyB0byBmYWxzZVxuJGVuYWJsZS1yZXNwb25zaXZlLWZvbnQtc2l6ZXM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIENhY2hlICRyZnMtYmFzZS1mb250LXNpemUgdW5pdFxuJHJmcy1iYXNlLWZvbnQtc2l6ZS11bml0OiB1bml0KCRyZnMtYmFzZS1mb250LXNpemUpO1xuXG4vLyBSZW1vdmUgcHgtdW5pdCBmcm9tICRyZnMtYmFzZS1mb250LXNpemUgZm9yIGNhbGN1bGF0aW9uc1xuQGlmICRyZnMtYmFzZS1mb250LXNpemUtdW5pdCA9PSBcInB4XCIge1xuICAkcmZzLWJhc2UtZm9udC1zaXplOiAkcmZzLWJhc2UtZm9udC1zaXplIC8gKCRyZnMtYmFzZS1mb250LXNpemUgKiAwICsgMSk7XG59XG5AZWxzZSBpZiAkcmZzLWJhc2UtZm9udC1zaXplLXVuaXQgPT0gXCJyZW1cIiB7XG4gICRyZnMtYmFzZS1mb250LXNpemU6ICRyZnMtYmFzZS1mb250LXNpemUgLyAoJHJmcy1iYXNlLWZvbnQtc2l6ZSAqIDAgKyAxIC8gJHJmcy1yZW0tdmFsdWUpO1xufVxuXG4vLyBDYWNoZSAkcmZzLWJyZWFrcG9pbnQgdW5pdCB0byBwcmV2ZW50IG11bHRpcGxlIGNhbGxzXG4kcmZzLWJyZWFrcG9pbnQtdW5pdC1jYWNoZTogdW5pdCgkcmZzLWJyZWFrcG9pbnQpO1xuXG4vLyBSZW1vdmUgdW5pdCBmcm9tICRyZnMtYnJlYWtwb2ludCBmb3IgY2FsY3VsYXRpb25zXG5AaWYgJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGUgPT0gXCJweFwiIHtcbiAgJHJmcy1icmVha3BvaW50OiAkcmZzLWJyZWFrcG9pbnQgLyAoJHJmcy1icmVha3BvaW50ICogMCArIDEpO1xufVxuQGVsc2UgaWYgJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGUgPT0gXCJyZW1cIiBvciAkcmZzLWJyZWFrcG9pbnQtdW5pdC1jYWNoZSA9PSBcImVtXCIge1xuICAkcmZzLWJyZWFrcG9pbnQ6ICRyZnMtYnJlYWtwb2ludCAvICgkcmZzLWJyZWFrcG9pbnQgKiAwICsgMSAvICRyZnMtcmVtLXZhbHVlKTtcbn1cblxuLy8gUmVzcG9uc2l2ZSBmb250LXNpemUgbWl4aW5cbkBtaXhpbiByZnMoJGZzLCAkaW1wb3J0YW50OiBmYWxzZSkge1xuICAvLyBDYWNoZSAkZnMgdW5pdFxuICAkZnMtdW5pdDogaWYodHlwZS1vZigkZnMpID09IFwibnVtYmVyXCIsIHVuaXQoJGZzKSwgZmFsc2UpO1xuXG4gIC8vIEFkZCAhaW1wb3J0YW50IHN1ZmZpeCBpZiBuZWVkZWRcbiAgJHJmcy1zdWZmaXg6IGlmKCRpbXBvcnRhbnQsIFwiICFpbXBvcnRhbnRcIiwgXCJcIik7XG5cbiAgLy8gSWYgJGZzIGlzbid0IGEgbnVtYmVyIChsaWtlIGluaGVyaXQpIG9yICRmcyBoYXMgYSB1bml0IChub3QgcHggb3IgcmVtLCBsaWtlIDEuNWVtKSBvciAkIGlzIDAsIGp1c3QgcHJpbnQgdGhlIHZhbHVlXG4gIEBpZiBub3QgJGZzLXVuaXQgb3IgJGZzLXVuaXQgIT0gXCJcIiBhbmQgJGZzLXVuaXQgIT0gXCJweFwiIGFuZCAkZnMtdW5pdCAhPSBcInJlbVwiIG9yICRmcyA9PSAwIHtcbiAgICBmb250LXNpemU6ICN7JGZzfSN7JHJmcy1zdWZmaXh9O1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBWYXJpYWJsZXMgZm9yIHN0b3Jpbmcgc3RhdGljIGFuZCBmbHVpZCByZXNjYWxpbmdcbiAgICAkcmZzLXN0YXRpYzogbnVsbDtcbiAgICAkcmZzLWZsdWlkOiBudWxsO1xuXG4gICAgLy8gUmVtb3ZlIHB4LXVuaXQgZnJvbSAkZnMgZm9yIGNhbGN1bGF0aW9uc1xuICAgIEBpZiAkZnMtdW5pdCA9PSBcInB4XCIge1xuICAgICAgJGZzOiAkZnMgLyAoJGZzICogMCArIDEpO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZnMtdW5pdCA9PSBcInJlbVwiIHtcbiAgICAgICRmczogJGZzIC8gKCRmcyAqIDAgKyAxIC8gJHJmcy1yZW0tdmFsdWUpO1xuICAgIH1cblxuICAgIC8vIFNldCBkZWZhdWx0IGZvbnQtc2l6ZVxuICAgIEBpZiAkcmZzLWZvbnQtc2l6ZS11bml0ID09IHJlbSB7XG4gICAgICAkcmZzLXN0YXRpYzogI3skZnMgLyAkcmZzLXJlbS12YWx1ZX1yZW0jeyRyZnMtc3VmZml4fTtcbiAgICB9XG4gICAgQGVsc2UgaWYgJHJmcy1mb250LXNpemUtdW5pdCA9PSBweCB7XG4gICAgICAkcmZzLXN0YXRpYzogI3skZnN9cHgjeyRyZnMtc3VmZml4fTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGVycm9yIFwiYCN7JHJmcy1mb250LXNpemUtdW5pdH1gIGlzIG5vdCBhIHZhbGlkIHVuaXQgZm9yICRyZnMtZm9udC1zaXplLXVuaXQuIFVzZSBgcHhgIG9yIGByZW1gLlwiO1xuICAgIH1cblxuICAgIC8vIE9ubHkgYWRkIG1lZGlhIHF1ZXJ5IGlmIGZvbnQtc2l6ZSBpcyBiaWdnZXIgYXMgdGhlIG1pbmltdW0gZm9udC1zaXplXG4gICAgLy8gSWYgJHJmcy1mYWN0b3IgPT0gMSwgbm8gcmVzY2FsaW5nIHdpbGwgdGFrZSBwbGFjZVxuICAgIEBpZiAkZnMgPiAkcmZzLWJhc2UtZm9udC1zaXplIGFuZCAkZW5hYmxlLXJlc3BvbnNpdmUtZm9udC1zaXplcyB7XG4gICAgICAkbWluLXdpZHRoOiBudWxsO1xuICAgICAgJHZhcmlhYmxlLXVuaXQ6IG51bGw7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSBtaW5pbXVtIGZvbnQtc2l6ZSBmb3IgZ2l2ZW4gZm9udC1zaXplXG4gICAgICAkZnMtbWluOiAkcmZzLWJhc2UtZm9udC1zaXplICsgKCRmcyAtICRyZnMtYmFzZS1mb250LXNpemUpIC8gJHJmcy1mYWN0b3I7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSBkaWZmZXJlbmNlIGJldHdlZW4gZ2l2ZW4gZm9udC1zaXplIGFuZCBtaW5pbXVtIGZvbnQtc2l6ZSBmb3IgZ2l2ZW4gZm9udC1zaXplXG4gICAgICAkZnMtZGlmZjogJGZzIC0gJGZzLW1pbjtcblxuICAgICAgLy8gQmFzZSBmb250LXNpemUgZm9ybWF0dGluZ1xuICAgICAgLy8gTm8gbmVlZCB0byBjaGVjayBpZiB0aGUgdW5pdCBpcyB2YWxpZCwgYmVjYXVzZSB3ZSBkaWQgdGhhdCBiZWZvcmVcbiAgICAgICRtaW4td2lkdGg6IGlmKCRyZnMtZm9udC1zaXplLXVuaXQgPT0gcmVtLCAjeyRmcy1taW4gLyAkcmZzLXJlbS12YWx1ZX1yZW0sICN7JGZzLW1pbn1weCk7XG5cbiAgICAgIC8vIElmIHR3by1kaW1lbnNpb25hbCwgdXNlIHNtYWxsZXN0IG9mIHNjcmVlbiB3aWR0aCBhbmQgaGVpZ2h0XG4gICAgICAkdmFyaWFibGUtdW5pdDogaWYoJHJmcy10d28tZGltZW5zaW9uYWwsIHZtaW4sIHZ3KTtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSB2YXJpYWJsZSB3aWR0aCBiZXR3ZWVuIDAgYW5kICRyZnMtYnJlYWtwb2ludFxuICAgICAgJHZhcmlhYmxlLXdpZHRoOiAjeyRmcy1kaWZmICogMTAwIC8gJHJmcy1icmVha3BvaW50fSN7JHZhcmlhYmxlLXVuaXR9O1xuXG4gICAgICAvLyBTZXQgdGhlIGNhbGN1bGF0ZWQgZm9udC1zaXplLlxuICAgICAgJHJmcy1mbHVpZDogY2FsYygjeyRtaW4td2lkdGh9ICsgI3skdmFyaWFibGUtd2lkdGh9KSAjeyRyZnMtc3VmZml4fTtcbiAgICB9XG5cbiAgICAvLyBSZW5kZXJpbmdcbiAgICBAaWYgJHJmcy1mbHVpZCA9PSBudWxsIHtcbiAgICAgIC8vIE9ubHkgcmVuZGVyIHN0YXRpYyBmb250LXNpemUgaWYgbm8gZmx1aWQgZm9udC1zaXplIGlzIGF2YWlsYWJsZVxuICAgICAgZm9udC1zaXplOiAkcmZzLXN0YXRpYztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJG1xLXZhbHVlOiBudWxsO1xuXG4gICAgICAvLyBSRlMgYnJlYWtwb2ludCBmb3JtYXR0aW5nXG4gICAgICBAaWYgJHJmcy1icmVha3BvaW50LXVuaXQgPT0gZW0gb3IgJHJmcy1icmVha3BvaW50LXVuaXQgPT0gcmVtIHtcbiAgICAgICAgJG1xLXZhbHVlOiAjeyRyZnMtYnJlYWtwb2ludCAvICRyZnMtcmVtLXZhbHVlfSN7JHJmcy1icmVha3BvaW50LXVuaXR9O1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHJmcy1icmVha3BvaW50LXVuaXQgPT0gcHgge1xuICAgICAgICAkbXEtdmFsdWU6ICN7JHJmcy1icmVha3BvaW50fXB4O1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAZXJyb3IgXCJgI3skcmZzLWJyZWFrcG9pbnQtdW5pdH1gIGlzIG5vdCBhIHZhbGlkIHVuaXQgZm9yICRyZnMtYnJlYWtwb2ludC11bml0LiBVc2UgYHB4YCwgYGVtYCBvciBgcmVtYC5cIjtcbiAgICAgIH1cblxuICAgICAgQGlmICRyZnMtY2xhc3MgPT0gXCJkaXNhYmxlXCIge1xuICAgICAgICAvLyBBZGRpbmcgYW4gZXh0cmEgY2xhc3MgaW5jcmVhc2VzIHNwZWNpZmljaXR5LFxuICAgICAgICAvLyB3aGljaCBwcmV2ZW50cyB0aGUgbWVkaWEgcXVlcnkgdG8gb3ZlcnJpZGUgdGhlIGZvbnQgc2l6ZVxuICAgICAgICAmLFxuICAgICAgICAuZGlzYWJsZS1yZXNwb25zaXZlLWZvbnQtc2l6ZSAmLFxuICAgICAgICAmLmRpc2FibGUtcmVzcG9uc2l2ZS1mb250LXNpemUge1xuICAgICAgICAgIGZvbnQtc2l6ZTogJHJmcy1zdGF0aWM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgZm9udC1zaXplOiAkcmZzLXN0YXRpYztcbiAgICAgIH1cblxuICAgICAgQGlmICRyZnMtdHdvLWRpbWVuc2lvbmFsIHtcbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICN7JG1xLXZhbHVlfSksIChtYXgtaGVpZ2h0OiAjeyRtcS12YWx1ZX0pIHtcbiAgICAgICAgICBAaWYgJHJmcy1jbGFzcyA9PSBcImVuYWJsZVwiIHtcbiAgICAgICAgICAgIC5lbmFibGUtcmVzcG9uc2l2ZS1mb250LXNpemUgJixcbiAgICAgICAgICAgICYuZW5hYmxlLXJlc3BvbnNpdmUtZm9udC1zaXplIHtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAkcmZzLWZsdWlkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRyZnMtZmx1aWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmICRyZnMtc2FmYXJpLWlmcmFtZS1yZXNpemUtYnVnLWZpeCB7XG4gICAgICAgICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbGVuZ3RoLXplcm8tbm8tdW5pdFxuICAgICAgICAgICAgbWluLXdpZHRoOiAwdnc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAjeyRtcS12YWx1ZX0pIHtcbiAgICAgICAgICBAaWYgJHJmcy1jbGFzcyA9PSBcImVuYWJsZVwiIHtcbiAgICAgICAgICAgIC5lbmFibGUtcmVzcG9uc2l2ZS1mb250LXNpemUgJixcbiAgICAgICAgICAgICYuZW5hYmxlLXJlc3BvbnNpdmUtZm9udC1zaXplIHtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAkcmZzLWZsdWlkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRyZnMtZmx1aWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmICRyZnMtc2FmYXJpLWlmcmFtZS1yZXNpemUtYnVnLWZpeCB7XG4gICAgICAgICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbGVuZ3RoLXplcm8tbm8tdW5pdFxuICAgICAgICAgICAgbWluLXdpZHRoOiAwdnc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFRoZSBmb250LXNpemUgJiByZXNwb25zaXZlLWZvbnQtc2l6ZSBtaXhpbiB1c2VzIFJGUyB0byByZXNjYWxlIGZvbnQgc2l6ZXNcbkBtaXhpbiBmb250LXNpemUoJGZzLCAkaW1wb3J0YW50OiBmYWxzZSkge1xuICBAaW5jbHVkZSByZnMoJGZzLCAkaW1wb3J0YW50KTtcbn1cblxuQG1peGluIHJlc3BvbnNpdmUtZm9udC1zaXplKCRmcywgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgQGluY2x1ZGUgcmZzKCRmcywgJGltcG9ydGFudCk7XG59XG4iLCIvLyBIb3ZlciBtaXhpbiBhbmQgYCRlbmFibGUtaG92ZXItbWVkaWEtcXVlcnlgIGFyZSBkZXByZWNhdGVkLlxuLy9cbi8vIE9yaWdpbmFsbHkgYWRkZWQgZHVyaW5nIG91ciBhbHBoYXMgYW5kIG1haW50YWluZWQgZHVyaW5nIGJldGFzLCB0aGlzIG1peGluIHdhc1xuLy8gZGVzaWduZWQgdG8gcHJldmVudCBgOmhvdmVyYCBzdGlja2luZXNzIG9uIGlPUy1hbiBpc3N1ZSB3aGVyZSBob3ZlciBzdHlsZXNcbi8vIHdvdWxkIHBlcnNpc3QgYWZ0ZXIgaW5pdGlhbCB0b3VjaC5cbi8vXG4vLyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgd2UndmUga2VwdCB0aGVzZSBtaXhpbnMgYW5kIHVwZGF0ZWQgdGhlbSB0b1xuLy8gYWx3YXlzIHJldHVybiB0aGVpciByZWd1bGFyIHBzZXVkby1jbGFzc2VzIGluc3RlYWQgb2YgYSBzaGltbWVkIG1lZGlhIHF1ZXJ5LlxuLy9cbi8vIElzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI1MTk1XG5cbkBtaXhpbiBob3ZlcigpIHtcbiAgJjpob3ZlciB7IEBjb250ZW50OyB9XG59XG5cbkBtaXhpbiBob3Zlci1mb2N1cygpIHtcbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIHBsYWluLWhvdmVyLWZvY3VzKCkge1xuICAmLFxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gaG92ZXItZm9jdXMtYWN0aXZlKCkge1xuICAmOmhvdmVyLFxuICAmOmZvY3VzLFxuICAmOmFjdGl2ZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudCwgc2VsZWN0b3ItbGlzdC1jb21tYS1uZXdsaW5lLWFmdGVyXG5cbi8vXG4vLyBIZWFkaW5nc1xuLy9cblxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNixcbi5oMSwgLmgyLCAuaDMsIC5oNCwgLmg1LCAuaDYge1xuICBtYXJnaW4tYm90dG9tOiAkaGVhZGluZ3MtbWFyZ2luLWJvdHRvbTtcbiAgZm9udC1mYW1pbHk6ICRoZWFkaW5ncy1mb250LWZhbWlseTtcbiAgZm9udC13ZWlnaHQ6ICRoZWFkaW5ncy1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRoZWFkaW5ncy1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRoZWFkaW5ncy1jb2xvcjtcbn1cblxuaDEsIC5oMSB7IEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDEtZm9udC1zaXplKTsgfVxuaDIsIC5oMiB7IEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDItZm9udC1zaXplKTsgfVxuaDMsIC5oMyB7IEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDMtZm9udC1zaXplKTsgfVxuaDQsIC5oNCB7IEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDQtZm9udC1zaXplKTsgfVxuaDUsIC5oNSB7IEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDUtZm9udC1zaXplKTsgfVxuaDYsIC5oNiB7IEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDYtZm9udC1zaXplKTsgfVxuXG4ubGVhZCB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkbGVhZC1mb250LXNpemUpO1xuICBmb250LXdlaWdodDogJGxlYWQtZm9udC13ZWlnaHQ7XG59XG5cbi8vIFR5cGUgZGlzcGxheSBjbGFzc2VzXG4uZGlzcGxheS0xIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRkaXNwbGF5MS1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRkaXNwbGF5MS13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkZGlzcGxheS1saW5lLWhlaWdodDtcbn1cbi5kaXNwbGF5LTIge1xuICBAaW5jbHVkZSBmb250LXNpemUoJGRpc3BsYXkyLXNpemUpO1xuICBmb250LXdlaWdodDogJGRpc3BsYXkyLXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRkaXNwbGF5LWxpbmUtaGVpZ2h0O1xufVxuLmRpc3BsYXktMyB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZGlzcGxheTMtc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiAkZGlzcGxheTMtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGRpc3BsYXktbGluZS1oZWlnaHQ7XG59XG4uZGlzcGxheS00IHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRkaXNwbGF5NC1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRkaXNwbGF5NC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkZGlzcGxheS1saW5lLWhlaWdodDtcbn1cblxuXG4vL1xuLy8gSG9yaXpvbnRhbCBydWxlc1xuLy9cblxuaHIge1xuICBtYXJnaW4tdG9wOiAkaHItbWFyZ2luLXk7XG4gIG1hcmdpbi1ib3R0b206ICRoci1tYXJnaW4teTtcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItdG9wOiAkaHItYm9yZGVyLXdpZHRoIHNvbGlkICRoci1ib3JkZXItY29sb3I7XG59XG5cblxuLy9cbi8vIEVtcGhhc2lzXG4vL1xuXG5zbWFsbCxcbi5zbWFsbCB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkc21hbGwtZm9udC1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG59XG5cbm1hcmssXG4ubWFyayB7XG4gIHBhZGRpbmc6ICRtYXJrLXBhZGRpbmc7XG4gIGJhY2tncm91bmQtY29sb3I6ICRtYXJrLWJnO1xufVxuXG5cbi8vXG4vLyBMaXN0c1xuLy9cblxuLmxpc3QtdW5zdHlsZWQge1xuICBAaW5jbHVkZSBsaXN0LXVuc3R5bGVkKCk7XG59XG5cbi8vIElubGluZSB0dXJucyBsaXN0IGl0ZW1zIGludG8gaW5saW5lLWJsb2NrXG4ubGlzdC1pbmxpbmUge1xuICBAaW5jbHVkZSBsaXN0LXVuc3R5bGVkKCk7XG59XG4ubGlzdC1pbmxpbmUtaXRlbSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIG1hcmdpbi1yaWdodDogJGxpc3QtaW5saW5lLXBhZGRpbmc7XG4gIH1cbn1cblxuXG4vL1xuLy8gTWlzY1xuLy9cblxuLy8gQnVpbGRzIG9uIGBhYmJyYFxuLmluaXRpYWxpc20ge1xuICBAaW5jbHVkZSBmb250LXNpemUoOTAlKTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLy8gQmxvY2txdW90ZXNcbi5ibG9ja3F1b3RlIHtcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNlcjtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRibG9ja3F1b3RlLWZvbnQtc2l6ZSk7XG59XG5cbi5ibG9ja3F1b3RlLWZvb3RlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGJsb2NrcXVvdGUtc21hbGwtZm9udC1zaXplKTtcbiAgY29sb3I6ICRibG9ja3F1b3RlLXNtYWxsLWNvbG9yO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXDIwMTRcXDAwQTBcIjsgLy8gZW0gZGFzaCwgbmJzcFxuICB9XG59XG4iLCIvLyBMaXN0c1xuXG4vLyBVbnN0eWxlZCBrZWVwcyBsaXN0IGl0ZW1zIGJsb2NrIGxldmVsLCBqdXN0IHJlbW92ZXMgZGVmYXVsdCBicm93c2VyIHBhZGRpbmcgYW5kIGxpc3Qtc3R5bGVcbkBtaXhpbiBsaXN0LXVuc3R5bGVkKCkge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG4iLCIvLyBSZXNwb25zaXZlIGltYWdlcyAoZW5zdXJlIGltYWdlcyBkb24ndCBzY2FsZSBiZXlvbmQgdGhlaXIgcGFyZW50cylcbi8vXG4vLyBUaGlzIGlzIHB1cnBvc2VmdWxseSBvcHQtaW4gdmlhIGFuIGV4cGxpY2l0IGNsYXNzIHJhdGhlciB0aGFuIGJlaW5nIHRoZSBkZWZhdWx0IGZvciBhbGwgYDxpbWc+YHMuXG4vLyBXZSBwcmV2aW91c2x5IHRyaWVkIHRoZSBcImltYWdlcyBhcmUgcmVzcG9uc2l2ZSBieSBkZWZhdWx0XCIgYXBwcm9hY2ggaW4gQm9vdHN0cmFwIHYyLFxuLy8gYW5kIGFiYW5kb25lZCBpdCBpbiBCb290c3RyYXAgdjMgYmVjYXVzZSBpdCBicmVha3MgbG90cyBvZiB0aGlyZC1wYXJ0eSB3aWRnZXRzIChpbmNsdWRpbmcgR29vZ2xlIE1hcHMpXG4vLyB3aGljaCB3ZXJlbid0IGV4cGVjdGluZyB0aGUgaW1hZ2VzIHdpdGhpbiB0aGVtc2VsdmVzIHRvIGJlIGludm9sdW50YXJpbHkgcmVzaXplZC5cbi8vIFNlZSBhbHNvIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTgxNzhcbi5pbWctZmx1aWQge1xuICBAaW5jbHVkZSBpbWctZmx1aWQoKTtcbn1cblxuXG4vLyBJbWFnZSB0aHVtYm5haWxzXG4uaW1nLXRodW1ibmFpbCB7XG4gIHBhZGRpbmc6ICR0aHVtYm5haWwtcGFkZGluZztcbiAgYmFja2dyb3VuZC1jb2xvcjogJHRodW1ibmFpbC1iZztcbiAgYm9yZGVyOiAkdGh1bWJuYWlsLWJvcmRlci13aWR0aCBzb2xpZCAkdGh1bWJuYWlsLWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkdGh1bWJuYWlsLWJvcmRlci1yYWRpdXMpO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KCR0aHVtYm5haWwtYm94LXNoYWRvdyk7XG5cbiAgLy8gS2VlcCB0aGVtIGF0IG1vc3QgMTAwJSB3aWRlXG4gIEBpbmNsdWRlIGltZy1mbHVpZCgpO1xufVxuXG4vL1xuLy8gRmlndXJlc1xuLy9cblxuLmZpZ3VyZSB7XG4gIC8vIEVuc3VyZXMgdGhlIGNhcHRpb24ncyB0ZXh0IGFsaWducyB3aXRoIHRoZSBpbWFnZS5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZmlndXJlLWltZyB7XG4gIG1hcmdpbi1ib3R0b206ICRzcGFjZXIgLyAyO1xuICBsaW5lLWhlaWdodDogMTtcbn1cblxuLmZpZ3VyZS1jYXB0aW9uIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRmaWd1cmUtY2FwdGlvbi1mb250LXNpemUpO1xuICBjb2xvcjogJGZpZ3VyZS1jYXB0aW9uLWNvbG9yO1xufVxuIiwiLy8gSW1hZ2UgTWl4aW5zXG4vLyAtIFJlc3BvbnNpdmUgaW1hZ2Vcbi8vIC0gUmV0aW5hIGltYWdlXG5cblxuLy8gUmVzcG9uc2l2ZSBpbWFnZVxuLy9cbi8vIEtlZXAgaW1hZ2VzIGZyb20gc2NhbGluZyBiZXlvbmQgdGhlIHdpZHRoIG9mIHRoZWlyIHBhcmVudHMuXG5cbkBtaXhpbiBpbWctZmx1aWQoKSB7XG4gIC8vIFBhcnQgMTogU2V0IGEgbWF4aW11bSByZWxhdGl2ZSB0byB0aGUgcGFyZW50XG4gIG1heC13aWR0aDogMTAwJTtcbiAgLy8gUGFydCAyOiBPdmVycmlkZSB0aGUgaGVpZ2h0IHRvIGF1dG8sIG90aGVyd2lzZSBpbWFnZXMgd2lsbCBiZSBzdHJldGNoZWRcbiAgLy8gd2hlbiBzZXR0aW5nIGEgd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGUgb24gdGhlIGltZyBlbGVtZW50LlxuICBoZWlnaHQ6IGF1dG87XG59XG5cblxuLy8gUmV0aW5hIGltYWdlXG4vL1xuLy8gU2hvcnQgcmV0aW5hIG1peGluIGZvciBzZXR0aW5nIGJhY2tncm91bmQtaW1hZ2UgYW5kIC1zaXplLlxuXG5AbWl4aW4gaW1nLXJldGluYSgkZmlsZS0xeCwgJGZpbGUtMngsICR3aWR0aC0xeCwgJGhlaWdodC0xeCkge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJGZpbGUtMXgpO1xuXG4gIC8vIEF1dG9wcmVmaXhlciB0YWtlcyBjYXJlIG9mIGFkZGluZyAtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW8gYW5kIC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW8sXG4gIC8vIGJ1dCBkb2Vzbid0IGNvbnZlcnQgZHBweD0+ZHBpLlxuICAvLyBUaGVyZSdzIG5vIHN1Y2ggdGhpbmcgYXMgdW5wcmVmaXhlZCBtaW4tZGV2aWNlLXBpeGVsLXJhdGlvIHNpbmNlIGl0J3Mgbm9uc3RhbmRhcmQuXG4gIC8vIENvbXBhdGliaWxpdHkgaW5mbzogaHR0cHM6Ly9jYW5pdXNlLmNvbS8jZmVhdD1jc3MtbWVkaWEtcmVzb2x1dGlvblxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSwgLy8gSUU5LTExIGRvbid0IHN1cHBvcnQgZHBweFxuICAgIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246IDJkcHB4KSB7IC8vIFN0YW5kYXJkaXplZFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgkZmlsZS0yeCk7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkd2lkdGgtMXggJGhlaWdodC0xeDtcbiAgfVxuICBAaW5jbHVkZSBkZXByZWNhdGUoXCJgaW1nLXJldGluYSgpYFwiLCBcInY0LjMuMFwiLCBcInY1XCIpO1xufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgcHJvcGVydHktYmxhY2tsaXN0XG4vLyBTaW5nbGUgc2lkZSBib3JkZXItcmFkaXVzXG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzLCAkZmFsbGJhY2stYm9yZGVyLXJhZGl1czogZmFsc2UpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbiAgfVxuICBAZWxzZSBpZiAkZmFsbGJhY2stYm9yZGVyLXJhZGl1cyAhPSBmYWxzZSB7XG4gICAgYm9yZGVyLXJhZGl1czogJGZhbGxiYWNrLWJvcmRlci1yYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci10b3AtcmFkaXVzKCRyYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGl1cztcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLXJpZ2h0LXJhZGl1cygkcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkcmFkaXVzO1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaXVzO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLXJhZGl1cygkcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaXVzO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1sZWZ0LXJhZGl1cygkcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRyYWRpdXM7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogJHJhZGl1cztcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cygkcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzKCRyYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzKCRyYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMoJHJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaXVzO1xuICB9XG59XG4iLCIvLyBJbmxpbmUgY29kZVxuY29kZSB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkY29kZS1mb250LXNpemUpO1xuICBjb2xvcjogJGNvZGUtY29sb3I7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcblxuICAvLyBTdHJlYW1saW5lIHRoZSBzdHlsZSB3aGVuIGluc2lkZSBhbmNob3JzIHRvIGF2b2lkIGJyb2tlbiB1bmRlcmxpbmUgYW5kIG1vcmVcbiAgYSA+ICYge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICB9XG59XG5cbi8vIFVzZXIgaW5wdXQgdHlwaWNhbGx5IGVudGVyZWQgdmlhIGtleWJvYXJkXG5rYmQge1xuICBwYWRkaW5nOiAka2JkLXBhZGRpbmcteSAka2JkLXBhZGRpbmcteDtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRrYmQtZm9udC1zaXplKTtcbiAgY29sb3I6ICRrYmQtY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRrYmQtYmc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMtc20pO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KCRrYmQtYm94LXNoYWRvdyk7XG5cbiAga2JkIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxMDAlKTtcbiAgICBmb250LXdlaWdodDogJG5lc3RlZC1rYmQtZm9udC13ZWlnaHQ7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgfVxufVxuXG4vLyBCbG9ja3Mgb2YgY29kZVxucHJlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkY29kZS1mb250LXNpemUpO1xuICBjb2xvcjogJHByZS1jb2xvcjtcblxuICAvLyBBY2NvdW50IGZvciBzb21lIGNvZGUgb3V0cHV0cyB0aGF0IHBsYWNlIGNvZGUgdGFncyBpbiBwcmUgdGFnc1xuICBjb2RlIHtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoaW5oZXJpdCk7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgd29yZC1icmVhazogbm9ybWFsO1xuICB9XG59XG5cbi8vIEVuYWJsZSBzY3JvbGxhYmxlIGJsb2NrcyBvZiBjb2RlXG4ucHJlLXNjcm9sbGFibGUge1xuICBtYXgtaGVpZ2h0OiAkcHJlLXNjcm9sbGFibGUtbWF4LWhlaWdodDtcbiAgb3ZlcmZsb3cteTogc2Nyb2xsO1xufVxuIiwiLy8gQ29udGFpbmVyIHdpZHRoc1xuLy9cbi8vIFNldCB0aGUgY29udGFpbmVyIHdpZHRoLCBhbmQgb3ZlcnJpZGUgaXQgZm9yIGZpeGVkIG5hdmJhcnMgaW4gbWVkaWEgcXVlcmllcy5cblxuQGlmICRlbmFibGUtZ3JpZC1jbGFzc2VzIHtcbiAgLy8gU2luZ2xlIGNvbnRhaW5lciBjbGFzcyB3aXRoIGJyZWFrcG9pbnQgbWF4LXdpZHRoc1xuICAuY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBtYWtlLWNvbnRhaW5lcigpO1xuICAgIEBpbmNsdWRlIG1ha2UtY29udGFpbmVyLW1heC13aWR0aHMoKTtcbiAgfVxuXG4gIC8vIDEwMCUgd2lkZSBjb250YWluZXIgYXQgYWxsIGJyZWFrcG9pbnRzXG4gIC5jb250YWluZXItZmx1aWQge1xuICAgIEBpbmNsdWRlIG1ha2UtY29udGFpbmVyKCk7XG4gIH1cblxuICAvLyBSZXNwb25zaXZlIGNvbnRhaW5lcnMgdGhhdCBhcmUgMTAwJSB3aWRlIHVudGlsIGEgYnJlYWtwb2ludFxuICBAZWFjaCAkYnJlYWtwb2ludCwgJGNvbnRhaW5lci1tYXgtd2lkdGggaW4gJGNvbnRhaW5lci1tYXgtd2lkdGhzIHtcbiAgICAuY29udGFpbmVyLSN7JGJyZWFrcG9pbnR9IHtcbiAgICAgIEBleHRlbmQgLmNvbnRhaW5lci1mbHVpZDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cykge1xuICAgICAgJXJlc3BvbnNpdmUtY29udGFpbmVyLSN7JGJyZWFrcG9pbnR9IHtcbiAgICAgICAgbWF4LXdpZHRoOiAkY29udGFpbmVyLW1heC13aWR0aDtcbiAgICAgIH1cblxuICAgICAgQGVhY2ggJG5hbWUsICR3aWR0aCBpbiAkZ3JpZC1icmVha3BvaW50cyB7XG4gICAgICAgIEBpZiAoJGNvbnRhaW5lci1tYXgtd2lkdGggPiAkd2lkdGggb3IgJGJyZWFrcG9pbnQgPT0gJG5hbWUpIHtcbiAgICAgICAgICAuY29udGFpbmVyI3ticmVha3BvaW50LWluZml4KCRuYW1lLCAkZ3JpZC1icmVha3BvaW50cyl9IHtcbiAgICAgICAgICAgIEBleHRlbmQgJXJlc3BvbnNpdmUtY29udGFpbmVyLSN7JGJyZWFrcG9pbnR9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi8vIFJvd1xuLy9cbi8vIFJvd3MgY29udGFpbiB5b3VyIGNvbHVtbnMuXG5cbkBpZiAkZW5hYmxlLWdyaWQtY2xhc3NlcyB7XG4gIC5yb3cge1xuICAgIEBpbmNsdWRlIG1ha2Utcm93KCk7XG4gIH1cblxuICAvLyBSZW1vdmUgdGhlIG5lZ2F0aXZlIG1hcmdpbiBmcm9tIGRlZmF1bHQgLnJvdywgdGhlbiB0aGUgaG9yaXpvbnRhbCBwYWRkaW5nXG4gIC8vIGZyb20gYWxsIGltbWVkaWF0ZSBjaGlsZHJlbiBjb2x1bW5zICh0byBwcmV2ZW50IHJ1bmF3YXkgc3R5bGUgaW5oZXJpdGFuY2UpLlxuICAubm8tZ3V0dGVycyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuXG4gICAgPiAuY29sLFxuICAgID4gW2NsYXNzKj1cImNvbC1cIl0ge1xuICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICB9XG4gIH1cbn1cblxuLy8gQ29sdW1uc1xuLy9cbi8vIENvbW1vbiBzdHlsZXMgZm9yIHNtYWxsIGFuZCBsYXJnZSBncmlkIGNvbHVtbnNcblxuQGlmICRlbmFibGUtZ3JpZC1jbGFzc2VzIHtcbiAgQGluY2x1ZGUgbWFrZS1ncmlkLWNvbHVtbnMoKTtcbn1cbiIsIi8vLyBHcmlkIHN5c3RlbVxuLy9cbi8vIEdlbmVyYXRlIHNlbWFudGljIGdyaWQgY29sdW1ucyB3aXRoIHRoZXNlIG1peGlucy5cblxuQG1peGluIG1ha2UtY29udGFpbmVyKCRndXR0ZXI6ICRncmlkLWd1dHRlci13aWR0aCkge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1yaWdodDogJGd1dHRlciAvIDI7XG4gIHBhZGRpbmctbGVmdDogJGd1dHRlciAvIDI7XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG59XG5cblxuLy8gRm9yIGVhY2ggYnJlYWtwb2ludCwgZGVmaW5lIHRoZSBtYXhpbXVtIHdpZHRoIG9mIHRoZSBjb250YWluZXIgaW4gYSBtZWRpYSBxdWVyeVxuQG1peGluIG1ha2UtY29udGFpbmVyLW1heC13aWR0aHMoJG1heC13aWR0aHM6ICRjb250YWluZXItbWF4LXdpZHRocywgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICBAZWFjaCAkYnJlYWtwb2ludCwgJGNvbnRhaW5lci1tYXgtd2lkdGggaW4gJG1heC13aWR0aHMge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQsICRicmVha3BvaW50cykge1xuICAgICAgbWF4LXdpZHRoOiAkY29udGFpbmVyLW1heC13aWR0aDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1ha2Utcm93KCRndXR0ZXI6ICRncmlkLWd1dHRlci13aWR0aCkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG1hcmdpbi1yaWdodDogLSRndXR0ZXIgLyAyO1xuICBtYXJnaW4tbGVmdDogLSRndXR0ZXIgLyAyO1xufVxuXG5AbWl4aW4gbWFrZS1jb2wtcmVhZHkoJGd1dHRlcjogJGdyaWQtZ3V0dGVyLXdpZHRoKSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLy8gUHJldmVudCBjb2x1bW5zIGZyb20gYmVjb21pbmcgdG9vIG5hcnJvdyB3aGVuIGF0IHNtYWxsZXIgZ3JpZCB0aWVycyBieVxuICAvLyBhbHdheXMgc2V0dGluZyBgd2lkdGg6IDEwMCU7YC4gVGhpcyB3b3JrcyBiZWNhdXNlIHdlIHVzZSBgZmxleGAgdmFsdWVzXG4gIC8vIGxhdGVyIG9uIHRvIG92ZXJyaWRlIHRoaXMgaW5pdGlhbCB3aWR0aC5cbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmctcmlnaHQ6ICRndXR0ZXIgLyAyO1xuICBwYWRkaW5nLWxlZnQ6ICRndXR0ZXIgLyAyO1xufVxuXG5AbWl4aW4gbWFrZS1jb2woJHNpemUsICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW5zKSB7XG4gIGZsZXg6IDAgMCBwZXJjZW50YWdlKCRzaXplIC8gJGNvbHVtbnMpO1xuICAvLyBBZGQgYSBgbWF4LXdpZHRoYCB0byBlbnN1cmUgY29udGVudCB3aXRoaW4gZWFjaCBjb2x1bW4gZG9lcyBub3QgYmxvdyBvdXRcbiAgLy8gdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4uIEFwcGxpZXMgdG8gSUUxMCsgYW5kIEZpcmVmb3guIENocm9tZSBhbmQgU2FmYXJpXG4gIC8vIGRvIG5vdCBhcHBlYXIgdG8gcmVxdWlyZSB0aGlzLlxuICBtYXgtd2lkdGg6IHBlcmNlbnRhZ2UoJHNpemUgLyAkY29sdW1ucyk7XG59XG5cbkBtaXhpbiBtYWtlLWNvbC1hdXRvKCkge1xuICBmbGV4OiAwIDAgYXV0bztcbiAgd2lkdGg6IGF1dG87XG4gIG1heC13aWR0aDogMTAwJTsgLy8gUmVzZXQgZWFybGllciBncmlkIHRpZXJzXG59XG5cbkBtaXhpbiBtYWtlLWNvbC1vZmZzZXQoJHNpemUsICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW5zKSB7XG4gICRudW06ICRzaXplIC8gJGNvbHVtbnM7XG4gIG1hcmdpbi1sZWZ0OiBpZigkbnVtID09IDAsIDAsIHBlcmNlbnRhZ2UoJG51bSkpO1xufVxuXG4vLyBSb3cgY29sdW1uc1xuLy9cbi8vIFNwZWNpZnkgb24gYSBwYXJlbnQgZWxlbWVudChlLmcuLCAucm93KSB0byBmb3JjZSBpbW1lZGlhdGUgY2hpbGRyZW4gaW50byBOTlxuLy8gbnVtYmVyb2YgY29sdW1ucy4gU3VwcG9ydHMgd3JhcHBpbmcgdG8gbmV3IGxpbmVzLCBidXQgZG9lcyBub3QgZG8gYSBNYXNvbnJ5XG4vLyBzdHlsZSBncmlkLlxuQG1peGluIHJvdy1jb2xzKCRjb3VudCkge1xuICAmID4gKiB7XG4gICAgZmxleDogMCAwIDEwMCUgLyAkY291bnQ7XG4gICAgbWF4LXdpZHRoOiAxMDAlIC8gJGNvdW50O1xuICB9XG59XG4iLCIvLyBCcmVha3BvaW50IHZpZXdwb3J0IHNpemVzIGFuZCBtZWRpYSBxdWVyaWVzLlxuLy9cbi8vIEJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIGFzIGEgbWFwIG9mIChuYW1lOiBtaW5pbXVtIHdpZHRoKSwgb3JkZXIgZnJvbSBzbWFsbCB0byBsYXJnZTpcbi8vXG4vLyAgICAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpXG4vL1xuLy8gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIGFzIHRoZSBgJGJyZWFrcG9pbnRzYCBhcmd1bWVudCBieSBkZWZhdWx0LlxuXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICRicmVha3BvaW50LW5hbWVzOiAoeHMgc20gbWQgbGcgeGwpKVxuLy8gICAgbWRcbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRuICE9IG51bGwgYW5kICRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuLy8gTWluaW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgc21hbGxlc3QgKGZpcnN0KSBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWluKHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgNTc2cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XG59XG5cbi8vIE1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIGxhcmdlc3QgKGxhc3QpIGJyZWFrcG9pbnQuXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyBjYWxjdWxhdGVkIGFzIHRoZSBtaW5pbXVtIG9mIHRoZSBuZXh0IG9uZSBsZXNzIDAuMDJweFxuLy8gdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb25zIG9mIGBtaW4tYCBhbmQgYG1heC1gIHByZWZpeGVzIGFuZCB2aWV3cG9ydHMgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy5cbi8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvbWVkaWFxdWVyaWVzLTQvI21xLW1pbi1tYXhcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cbi8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjYxXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICA3NjcuOThweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEByZXR1cm4gaWYoJG5leHQsIGJyZWFrcG9pbnQtbWluKCRuZXh0LCAkYnJlYWtwb2ludHMpIC0gLjAyLCBudWxsKTtcbn1cblxuLy8gUmV0dXJucyBhIGJsYW5rIHN0cmluZyBpZiBzbWFsbGVzdCBicmVha3BvaW50LCBvdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSB3aXRoIGEgZGFzaCBpbiBmcm9udC5cbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIlwiICAoUmV0dXJucyBhIGJsYW5rIHN0cmluZylcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIi1zbVwiXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICBAcmV0dXJuIGlmKGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpID09IG51bGwsIFwiXCIsIFwiLSN7JG5hbWV9XCIpO1xufVxuXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIHdpZGVyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSBvZiBhdCBtb3N0IHRoZSBtYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgbGFyZ2VzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWF4IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSB0aGF0IHNwYW5zIG11bHRpcGxlIGJyZWFrcG9pbnQgd2lkdGhzLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1iZXR3ZWVuKCRsb3dlciwgJHVwcGVyLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRsb3dlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJHVwcGVyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBNZWRpYSBiZXR3ZWVuIHRoZSBicmVha3BvaW50J3MgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMuXG4vLyBObyBtaW5pbXVtIGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCwgYW5kIG5vIG1heGltdW0gZm9yIHRoZSBsYXJnZXN0IG9uZS5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBvbmx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50LCBub3Qgdmlld3BvcnRzIGFueSB3aWRlciBvciBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LW9ubHkoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZyYW1ld29yayBncmlkIGdlbmVyYXRpb25cbi8vXG4vLyBVc2VkIG9ubHkgYnkgQm9vdHN0cmFwIHRvIGdlbmVyYXRlIHRoZSBjb3JyZWN0IG51bWJlciBvZiBncmlkIGNsYXNzZXMgZ2l2ZW5cbi8vIGFueSB2YWx1ZSBvZiBgJGdyaWQtY29sdW1uc2AuXG5cbkBtaXhpbiBtYWtlLWdyaWQtY29sdW1ucygkY29sdW1uczogJGdyaWQtY29sdW1ucywgJGd1dHRlcjogJGdyaWQtZ3V0dGVyLXdpZHRoLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIC8vIENvbW1vbiBwcm9wZXJ0aWVzIGZvciBhbGwgYnJlYWtwb2ludHNcbiAgJWdyaWQtY29sdW1uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZy1yaWdodDogJGd1dHRlciAvIDI7XG4gICAgcGFkZGluZy1sZWZ0OiAkZ3V0dGVyIC8gMjtcbiAgfVxuXG4gIEBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRicmVha3BvaW50cykge1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcblxuICAgIC8vIEFsbG93IGNvbHVtbnMgdG8gc3RyZXRjaCBmdWxsIHdpZHRoIGJlbG93IHRoZWlyIGJyZWFrcG9pbnRzXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkY29sdW1ucyB7XG4gICAgICAuY29sI3skaW5maXh9LSN7JGl9IHtcbiAgICAgICAgQGV4dGVuZCAlZ3JpZC1jb2x1bW47XG4gICAgICB9XG4gICAgfVxuICAgIC5jb2wjeyRpbmZpeH0sXG4gICAgLmNvbCN7JGluZml4fS1hdXRvIHtcbiAgICAgIEBleHRlbmQgJWdyaWQtY29sdW1uO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQsICRicmVha3BvaW50cykge1xuICAgICAgLy8gUHJvdmlkZSBiYXNpYyBgLmNvbC17YnB9YCBjbGFzc2VzIGZvciBlcXVhbC13aWR0aCBmbGV4Ym94IGNvbHVtbnNcbiAgICAgIC5jb2wjeyRpbmZpeH0ge1xuICAgICAgICBmbGV4LWJhc2lzOiAwO1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1yb3ctY29sdW1ucyB7XG4gICAgICAgIC5yb3ctY29scyN7JGluZml4fS0jeyRpfSB7XG4gICAgICAgICAgQGluY2x1ZGUgcm93LWNvbHMoJGkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jb2wjeyRpbmZpeH0tYXV0byB7XG4gICAgICAgIEBpbmNsdWRlIG1ha2UtY29sLWF1dG8oKTtcbiAgICAgIH1cblxuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkY29sdW1ucyB7XG4gICAgICAgIC5jb2wjeyRpbmZpeH0tI3skaX0ge1xuICAgICAgICAgIEBpbmNsdWRlIG1ha2UtY29sKCRpLCAkY29sdW1ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLm9yZGVyI3skaW5maXh9LWZpcnN0IHsgb3JkZXI6IC0xOyB9XG5cbiAgICAgIC5vcmRlciN7JGluZml4fS1sYXN0IHsgb3JkZXI6ICRjb2x1bW5zICsgMTsgfVxuXG4gICAgICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRjb2x1bW5zIHtcbiAgICAgICAgLm9yZGVyI3skaW5maXh9LSN7JGl9IHsgb3JkZXI6ICRpOyB9XG4gICAgICB9XG5cbiAgICAgIC8vIGAkY29sdW1ucyAtIDFgIGJlY2F1c2Ugb2Zmc2V0dGluZyBieSB0aGUgd2lkdGggb2YgYW4gZW50aXJlIHJvdyBpc24ndCBwb3NzaWJsZVxuICAgICAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAoJGNvbHVtbnMgLSAxKSB7XG4gICAgICAgIEBpZiBub3QgKCRpbmZpeCA9PSBcIlwiIGFuZCAkaSA9PSAwKSB7IC8vIEF2b2lkIGVtaXR0aW5nIHVzZWxlc3MgLm9mZnNldC0wXG4gICAgICAgICAgLm9mZnNldCN7JGluZml4fS0jeyRpfSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtYWtlLWNvbC1vZmZzZXQoJGksICRjb2x1bW5zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBCYXNpYyBCb290c3RyYXAgdGFibGVcbi8vXG5cbi50YWJsZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAkc3BhY2VyO1xuICBjb2xvcjogJHRhYmxlLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmc7IC8vIFJlc2V0IGZvciBuZXN0aW5nIHdpdGhpbiBwYXJlbnRzIHdpdGggYGJhY2tncm91bmQtY29sb3JgLlxuXG4gIHRoLFxuICB0ZCB7XG4gICAgcGFkZGluZzogJHRhYmxlLWNlbGwtcGFkZGluZztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgIGJvcmRlci10b3A6ICR0YWJsZS1ib3JkZXItd2lkdGggc29saWQgJHRhYmxlLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIHRoZWFkIHRoIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIGJvcmRlci1ib3R0b206ICgyICogJHRhYmxlLWJvcmRlci13aWR0aCkgc29saWQgJHRhYmxlLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIHRib2R5ICsgdGJvZHkge1xuICAgIGJvcmRlci10b3A6ICgyICogJHRhYmxlLWJvcmRlci13aWR0aCkgc29saWQgJHRhYmxlLWJvcmRlci1jb2xvcjtcbiAgfVxufVxuXG5cbi8vXG4vLyBDb25kZW5zZWQgdGFibGUgdy8gaGFsZiBwYWRkaW5nXG4vL1xuXG4udGFibGUtc20ge1xuICB0aCxcbiAgdGQge1xuICAgIHBhZGRpbmc6ICR0YWJsZS1jZWxsLXBhZGRpbmctc207XG4gIH1cbn1cblxuXG4vLyBCb3JkZXIgdmVyc2lvbnNcbi8vXG4vLyBBZGQgb3IgcmVtb3ZlIGJvcmRlcnMgYWxsIGFyb3VuZCB0aGUgdGFibGUgYW5kIGJldHdlZW4gYWxsIHRoZSBjb2x1bW5zLlxuXG4udGFibGUtYm9yZGVyZWQge1xuICBib3JkZXI6ICR0YWJsZS1ib3JkZXItd2lkdGggc29saWQgJHRhYmxlLWJvcmRlci1jb2xvcjtcblxuICB0aCxcbiAgdGQge1xuICAgIGJvcmRlcjogJHRhYmxlLWJvcmRlci13aWR0aCBzb2xpZCAkdGFibGUtYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgdGhlYWQge1xuICAgIHRoLFxuICAgIHRkIHtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDIgKiAkdGFibGUtYm9yZGVyLXdpZHRoO1xuICAgIH1cbiAgfVxufVxuXG4udGFibGUtYm9yZGVybGVzcyB7XG4gIHRoLFxuICB0ZCxcbiAgdGhlYWQgdGgsXG4gIHRib2R5ICsgdGJvZHkge1xuICAgIGJvcmRlcjogMDtcbiAgfVxufVxuXG4vLyBaZWJyYS1zdHJpcGluZ1xuLy9cbi8vIERlZmF1bHQgemVicmEtc3RyaXBlIHN0eWxlcyAoYWx0ZXJuYXRpbmcgZ3JheSBhbmQgdHJhbnNwYXJlbnQgYmFja2dyb3VuZHMpXG5cbi50YWJsZS1zdHJpcGVkIHtcbiAgdGJvZHkgdHI6bnRoLW9mLXR5cGUoI3skdGFibGUtc3RyaXBlZC1vcmRlcn0pIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYWNjZW50LWJnO1xuICB9XG59XG5cblxuLy8gSG92ZXIgZWZmZWN0XG4vL1xuLy8gUGxhY2VkIGhlcmUgc2luY2UgaXQgaGFzIHRvIGNvbWUgYWZ0ZXIgdGhlIHBvdGVudGlhbCB6ZWJyYSBzdHJpcGluZ1xuXG4udGFibGUtaG92ZXIge1xuICB0Ym9keSB0ciB7XG4gICAgQGluY2x1ZGUgaG92ZXIoKSB7XG4gICAgICBjb2xvcjogJHRhYmxlLWhvdmVyLWNvbG9yO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWhvdmVyLWJnO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFRhYmxlIGJhY2tncm91bmRzXG4vL1xuLy8gRXhhY3Qgc2VsZWN0b3JzIGJlbG93IHJlcXVpcmVkIHRvIG92ZXJyaWRlIGAudGFibGUtc3RyaXBlZGAgYW5kIHByZXZlbnRcbi8vIGluaGVyaXRhbmNlIHRvIG5lc3RlZCB0YWJsZXMuXG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICBAaW5jbHVkZSB0YWJsZS1yb3ctdmFyaWFudCgkY29sb3IsIHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvciwgJHRhYmxlLWJnLWxldmVsKSwgdGhlbWUtY29sb3ItbGV2ZWwoJGNvbG9yLCAkdGFibGUtYm9yZGVyLWxldmVsKSk7XG59XG5cbkBpbmNsdWRlIHRhYmxlLXJvdy12YXJpYW50KGFjdGl2ZSwgJHRhYmxlLWFjdGl2ZS1iZyk7XG5cblxuLy8gRGFyayBzdHlsZXNcbi8vXG4vLyBTYW1lIHRhYmxlIG1hcmt1cCwgYnV0IGludmVydGVkIGNvbG9yIHNjaGVtZTogZGFyayBiYWNrZ3JvdW5kIGFuZCBsaWdodCB0ZXh0LlxuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZHVwbGljYXRlLXNlbGVjdG9yc1xuLnRhYmxlIHtcbiAgLnRoZWFkLWRhcmsge1xuICAgIHRoIHtcbiAgICAgIGNvbG9yOiAkdGFibGUtZGFyay1jb2xvcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1kYXJrLWJnO1xuICAgICAgYm9yZGVyLWNvbG9yOiAkdGFibGUtZGFyay1ib3JkZXItY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLnRoZWFkLWxpZ2h0IHtcbiAgICB0aCB7XG4gICAgICBjb2xvcjogJHRhYmxlLWhlYWQtY29sb3I7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtaGVhZC1iZztcbiAgICAgIGJvcmRlci1jb2xvcjogJHRhYmxlLWJvcmRlci1jb2xvcjtcbiAgICB9XG4gIH1cbn1cblxuLnRhYmxlLWRhcmsge1xuICBjb2xvcjogJHRhYmxlLWRhcmstY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1kYXJrLWJnO1xuXG4gIHRoLFxuICB0ZCxcbiAgdGhlYWQgdGgge1xuICAgIGJvcmRlci1jb2xvcjogJHRhYmxlLWRhcmstYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgJi50YWJsZS1ib3JkZXJlZCB7XG4gICAgYm9yZGVyOiAwO1xuICB9XG5cbiAgJi50YWJsZS1zdHJpcGVkIHtcbiAgICB0Ym9keSB0cjpudGgtb2YtdHlwZSgjeyR0YWJsZS1zdHJpcGVkLW9yZGVyfSkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWRhcmstYWNjZW50LWJnO1xuICAgIH1cbiAgfVxuXG4gICYudGFibGUtaG92ZXIge1xuICAgIHRib2R5IHRyIHtcbiAgICAgIEBpbmNsdWRlIGhvdmVyKCkge1xuICAgICAgICBjb2xvcjogJHRhYmxlLWRhcmstaG92ZXItY29sb3I7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1kYXJrLWhvdmVyLWJnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi8vIFJlc3BvbnNpdmUgdGFibGVzXG4vL1xuLy8gR2VuZXJhdGUgc2VyaWVzIG9mIGAudGFibGUtcmVzcG9uc2l2ZS0qYCBjbGFzc2VzIGZvciBjb25maWd1cmluZyB0aGUgc2NyZWVuXG4vLyBzaXplIG9mIHdoZXJlIHlvdXIgdGFibGUgd2lsbCBvdmVyZmxvdy5cblxuLnRhYmxlLXJlc3BvbnNpdmUge1xuICBAZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICAgICRuZXh0OiBicmVha3BvaW50LW5leHQoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJG5leHQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgICYjeyRpbmZpeH0ge1xuICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCRicmVha3BvaW50KSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXG4gICAgICAgIC8vIFByZXZlbnQgZG91YmxlIGJvcmRlciBvbiBob3Jpem9udGFsIHNjcm9sbCBkdWUgdG8gdXNlIG9mIGBkaXNwbGF5OiBibG9jaztgXG4gICAgICAgID4gLnRhYmxlLWJvcmRlcmVkIHtcbiAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIFRhYmxlc1xuXG5AbWl4aW4gdGFibGUtcm93LXZhcmlhbnQoJHN0YXRlLCAkYmFja2dyb3VuZCwgJGJvcmRlcjogbnVsbCkge1xuICAvLyBFeGFjdCBzZWxlY3RvcnMgYmVsb3cgcmVxdWlyZWQgdG8gb3ZlcnJpZGUgYC50YWJsZS1zdHJpcGVkYCBhbmQgcHJldmVudFxuICAvLyBpbmhlcml0YW5jZSB0byBuZXN0ZWQgdGFibGVzLlxuICAudGFibGUtI3skc3RhdGV9IHtcbiAgICAmLFxuICAgID4gdGgsXG4gICAgPiB0ZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICBAaWYgJGJvcmRlciAhPSBudWxsIHtcbiAgICAgIHRoLFxuICAgICAgdGQsXG4gICAgICB0aGVhZCB0aCxcbiAgICAgIHRib2R5ICsgdGJvZHkge1xuICAgICAgICBib3JkZXItY29sb3I6ICRib3JkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSG92ZXIgc3RhdGVzIGZvciBgLnRhYmxlLWhvdmVyYFxuICAvLyBOb3RlOiB0aGlzIGlzIG5vdCBhdmFpbGFibGUgZm9yIGNlbGxzIG9yIHJvd3Mgd2l0aGluIGB0aGVhZGAgb3IgYHRmb290YC5cbiAgLnRhYmxlLWhvdmVyIHtcbiAgICAkaG92ZXItYmFja2dyb3VuZDogZGFya2VuKCRiYWNrZ3JvdW5kLCA1JSk7XG5cbiAgICAudGFibGUtI3skc3RhdGV9IHtcbiAgICAgIEBpbmNsdWRlIGhvdmVyKCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaG92ZXItYmFja2dyb3VuZDtcblxuICAgICAgICA+IHRkLFxuICAgICAgICA+IHRoIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaG92ZXItYmFja2dyb3VuZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gQm9vdHN0cmFwIGZ1bmN0aW9uc1xuLy9cbi8vIFV0aWxpdHkgbWl4aW5zIGFuZCBmdW5jdGlvbnMgZm9yIGV2YWx1YXRpbmcgc291cmNlIGNvZGUgYWNyb3NzIG91ciB2YXJpYWJsZXMsIG1hcHMsIGFuZCBtaXhpbnMuXG5cbi8vIEFzY2VuZGluZ1xuLy8gVXNlZCB0byBldmFsdWF0ZSBTYXNzIG1hcHMgbGlrZSBvdXIgZ3JpZCBicmVha3BvaW50cy5cbkBtaXhpbiBfYXNzZXJ0LWFzY2VuZGluZygkbWFwLCAkbWFwLW5hbWUpIHtcbiAgJHByZXYta2V5OiBudWxsO1xuICAkcHJldi1udW06IG51bGw7XG4gIEBlYWNoICRrZXksICRudW0gaW4gJG1hcCB7XG4gICAgQGlmICRwcmV2LW51bSA9PSBudWxsIG9yIHVuaXQoJG51bSkgPT0gXCIlXCIgb3IgdW5pdCgkcHJldi1udW0pID09IFwiJVwiIHtcbiAgICAgIC8vIERvIG5vdGhpbmdcbiAgICB9IEBlbHNlIGlmIG5vdCBjb21wYXJhYmxlKCRwcmV2LW51bSwgJG51bSkge1xuICAgICAgQHdhcm4gXCJQb3RlbnRpYWxseSBpbnZhbGlkIHZhbHVlIGZvciAjeyRtYXAtbmFtZX06IFRoaXMgbWFwIG11c3QgYmUgaW4gYXNjZW5kaW5nIG9yZGVyLCBidXQga2V5ICcjeyRrZXl9JyBoYXMgdmFsdWUgI3skbnVtfSB3aG9zZSB1bml0IG1ha2VzIGl0IGluY29tcGFyYWJsZSB0byAjeyRwcmV2LW51bX0sIHRoZSB2YWx1ZSBvZiB0aGUgcHJldmlvdXMga2V5ICcjeyRwcmV2LWtleX0nICFcIjtcbiAgICB9IEBlbHNlIGlmICRwcmV2LW51bSA+PSAkbnVtIHtcbiAgICAgIEB3YXJuIFwiSW52YWxpZCB2YWx1ZSBmb3IgI3skbWFwLW5hbWV9OiBUaGlzIG1hcCBtdXN0IGJlIGluIGFzY2VuZGluZyBvcmRlciwgYnV0IGtleSAnI3ska2V5fScgaGFzIHZhbHVlICN7JG51bX0gd2hpY2ggaXNuJ3QgZ3JlYXRlciB0aGFuICN7JHByZXYtbnVtfSwgdGhlIHZhbHVlIG9mIHRoZSBwcmV2aW91cyBrZXkgJyN7JHByZXYta2V5fScgIVwiO1xuICAgIH1cbiAgICAkcHJldi1rZXk6ICRrZXk7XG4gICAgJHByZXYtbnVtOiAkbnVtO1xuICB9XG59XG5cbi8vIFN0YXJ0cyBhdCB6ZXJvXG4vLyBVc2VkIHRvIGVuc3VyZSB0aGUgbWluLXdpZHRoIG9mIHRoZSBsb3dlc3QgYnJlYWtwb2ludCBzdGFydHMgYXQgMC5cbkBtaXhpbiBfYXNzZXJ0LXN0YXJ0cy1hdC16ZXJvKCRtYXAsICRtYXAtbmFtZTogXCIkZ3JpZC1icmVha3BvaW50c1wiKSB7XG4gICR2YWx1ZXM6IG1hcC12YWx1ZXMoJG1hcCk7XG4gICRmaXJzdC12YWx1ZTogbnRoKCR2YWx1ZXMsIDEpO1xuICBAaWYgJGZpcnN0LXZhbHVlICE9IDAge1xuICAgIEB3YXJuIFwiRmlyc3QgYnJlYWtwb2ludCBpbiAjeyRtYXAtbmFtZX0gbXVzdCBzdGFydCBhdCAwLCBidXQgc3RhcnRzIGF0ICN7JGZpcnN0LXZhbHVlfS5cIjtcbiAgfVxufVxuXG4vLyBSZXBsYWNlIGAkc2VhcmNoYCB3aXRoIGAkcmVwbGFjZWAgaW4gYCRzdHJpbmdgXG4vLyBVc2VkIG9uIG91ciBTVkcgaWNvbiBiYWNrZ3JvdW5kcyBmb3IgY3VzdG9tIGZvcm1zLlxuLy9cbi8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHJpbmcgLSBJbml0aWFsIHN0cmluZ1xuLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWFyY2ggLSBTdWJzdHJpbmcgdG8gcmVwbGFjZVxuLy8gQHBhcmFtIHtTdHJpbmd9ICRyZXBsYWNlICgnJykgLSBOZXcgdmFsdWVcbi8vIEByZXR1cm4ge1N0cmluZ30gLSBVcGRhdGVkIHN0cmluZ1xuQGZ1bmN0aW9uIHN0ci1yZXBsYWNlKCRzdHJpbmcsICRzZWFyY2gsICRyZXBsYWNlOiBcIlwiKSB7XG4gICRpbmRleDogc3RyLWluZGV4KCRzdHJpbmcsICRzZWFyY2gpO1xuXG4gIEBpZiAkaW5kZXgge1xuICAgIEByZXR1cm4gc3RyLXNsaWNlKCRzdHJpbmcsIDEsICRpbmRleCAtIDEpICsgJHJlcGxhY2UgKyBzdHItcmVwbGFjZShzdHItc2xpY2UoJHN0cmluZywgJGluZGV4ICsgc3RyLWxlbmd0aCgkc2VhcmNoKSksICRzZWFyY2gsICRyZXBsYWNlKTtcbiAgfVxuXG4gIEByZXR1cm4gJHN0cmluZztcbn1cblxuLy8gU2VlIGh0dHBzOi8vY29kZXBlbi5pby9rZXZpbndlYmVyL3Blbi9kWFdvUndcbkBmdW5jdGlvbiBlc2NhcGUtc3ZnKCRzdHJpbmcpIHtcbiAgQGlmIHN0ci1pbmRleCgkc3RyaW5nLCBcImRhdGE6aW1hZ2Uvc3ZnK3htbFwiKSB7XG4gICAgQGVhY2ggJGNoYXIsICRlbmNvZGVkIGluICRlc2NhcGVkLWNoYXJhY3RlcnMge1xuICAgICAgJHN0cmluZzogc3RyLXJlcGxhY2UoJHN0cmluZywgJGNoYXIsICRlbmNvZGVkKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdHJpbmc7XG59XG5cbi8vIENvbG9yIGNvbnRyYXN0XG5AZnVuY3Rpb24gY29sb3IteWlxKCRjb2xvciwgJGRhcms6ICR5aXEtdGV4dC1kYXJrLCAkbGlnaHQ6ICR5aXEtdGV4dC1saWdodCkge1xuICAkcjogcmVkKCRjb2xvcik7XG4gICRnOiBncmVlbigkY29sb3IpO1xuICAkYjogYmx1ZSgkY29sb3IpO1xuXG4gICR5aXE6ICgoJHIgKiAyOTkpICsgKCRnICogNTg3KSArICgkYiAqIDExNCkpIC8gMTAwMDtcblxuICBAaWYgKCR5aXEgPj0gJHlpcS1jb250cmFzdGVkLXRocmVzaG9sZCkge1xuICAgIEByZXR1cm4gJGRhcms7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJGxpZ2h0O1xuICB9XG59XG5cbi8vIFJldHJpZXZlIGNvbG9yIFNhc3MgbWFwc1xuQGZ1bmN0aW9uIGNvbG9yKCRrZXk6IFwiYmx1ZVwiKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkY29sb3JzLCAka2V5KTtcbn1cblxuQGZ1bmN0aW9uIHRoZW1lLWNvbG9yKCRrZXk6IFwicHJpbWFyeVwiKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkdGhlbWUtY29sb3JzLCAka2V5KTtcbn1cblxuQGZ1bmN0aW9uIGdyYXkoJGtleTogXCIxMDBcIikge1xuICBAcmV0dXJuIG1hcC1nZXQoJGdyYXlzLCAka2V5KTtcbn1cblxuLy8gUmVxdWVzdCBhIHRoZW1lIGNvbG9yIGxldmVsXG5AZnVuY3Rpb24gdGhlbWUtY29sb3ItbGV2ZWwoJGNvbG9yLW5hbWU6IFwicHJpbWFyeVwiLCAkbGV2ZWw6IDApIHtcbiAgJGNvbG9yOiB0aGVtZS1jb2xvcigkY29sb3ItbmFtZSk7XG4gICRjb2xvci1iYXNlOiBpZigkbGV2ZWwgPiAwLCAkYmxhY2ssICR3aGl0ZSk7XG4gICRsZXZlbDogYWJzKCRsZXZlbCk7XG5cbiAgQHJldHVybiBtaXgoJGNvbG9yLWJhc2UsICRjb2xvciwgJGxldmVsICogJHRoZW1lLWNvbG9yLWludGVydmFsKTtcbn1cblxuLy8gUmV0dXJuIHZhbGlkIGNhbGNcbkBmdW5jdGlvbiBhZGQoJHZhbHVlMSwgJHZhbHVlMiwgJHJldHVybi1jYWxjOiB0cnVlKSB7XG4gIEBpZiAkdmFsdWUxID09IG51bGwge1xuICAgIEByZXR1cm4gJHZhbHVlMjtcbiAgfVxuXG4gIEBpZiAkdmFsdWUyID09IG51bGwge1xuICAgIEByZXR1cm4gJHZhbHVlMTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZTEpID09IG51bWJlciBhbmQgdHlwZS1vZigkdmFsdWUyKSA9PSBudW1iZXIgYW5kIGNvbXBhcmFibGUoJHZhbHVlMSwgJHZhbHVlMikge1xuICAgIEByZXR1cm4gJHZhbHVlMSArICR2YWx1ZTI7XG4gIH1cblxuICBAcmV0dXJuIGlmKCRyZXR1cm4tY2FsYyA9PSB0cnVlLCBjYWxjKCN7JHZhbHVlMX0gKyAjeyR2YWx1ZTJ9KSwgJHZhbHVlMSArIHVucXVvdGUoXCIgKyBcIikgKyAkdmFsdWUyKTtcbn1cblxuQGZ1bmN0aW9uIHN1YnRyYWN0KCR2YWx1ZTEsICR2YWx1ZTIsICRyZXR1cm4tY2FsYzogdHJ1ZSkge1xuICBAaWYgJHZhbHVlMSA9PSBudWxsIGFuZCAkdmFsdWUyID09IG51bGwge1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIEBpZiAkdmFsdWUxID09IG51bGwge1xuICAgIEByZXR1cm4gLSR2YWx1ZTI7XG4gIH1cblxuICBAaWYgJHZhbHVlMiA9PSBudWxsIHtcbiAgICBAcmV0dXJuICR2YWx1ZTE7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkdmFsdWUxKSA9PSBudW1iZXIgYW5kIHR5cGUtb2YoJHZhbHVlMikgPT0gbnVtYmVyIGFuZCBjb21wYXJhYmxlKCR2YWx1ZTEsICR2YWx1ZTIpIHtcbiAgICBAcmV0dXJuICR2YWx1ZTEgLSAkdmFsdWUyO1xuICB9XG5cbiAgQHJldHVybiBpZigkcmV0dXJuLWNhbGMgPT0gdHJ1ZSwgY2FsYygjeyR2YWx1ZTF9IC0gI3skdmFsdWUyfSksICR2YWx1ZTEgKyB1bnF1b3RlKFwiIC0gXCIpICsgJHZhbHVlMik7XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblxuLy9cbi8vIFRleHR1YWwgZm9ybSBjb250cm9sc1xuLy9cblxuLmZvcm0tY29udHJvbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZy15ICRpbnB1dC1wYWRkaW5nLXg7XG4gIGZvbnQtZmFtaWx5OiAkaW5wdXQtZm9udC1mYW1pbHk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaW5wdXQtZm9udC1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRpbnB1dC1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRpbnB1dC1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJnO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6ICRpbnB1dC1ib3JkZXItd2lkdGggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcblxuICAvLyBOb3RlOiBUaGlzIGhhcyBubyBlZmZlY3Qgb24gPHNlbGVjdD5zIGluIHNvbWUgYnJvd3NlcnMsIGR1ZSB0byB0aGUgbGltaXRlZCBzdHlsYWJpbGl0eSBvZiBgPHNlbGVjdD5gcyBpbiBDU1MuXG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGlucHV0LWJvcmRlci1yYWRpdXMsIDApO1xuXG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJGlucHV0LWJveC1zaGFkb3cpO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKCRpbnB1dC10cmFuc2l0aW9uKTtcblxuICAvLyBVbnN0eWxlIHRoZSBjYXJldCBvbiBgPHNlbGVjdD5gcyBpbiBJRTEwKy5cbiAgJjo6LW1zLWV4cGFuZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICB9XG5cbiAgLy8gUmVtb3ZlIHNlbGVjdCBvdXRsaW5lIGZyb20gc2VsZWN0IGJveCBpbiBGRlxuICAmOi1tb3otZm9jdXNyaW5nIHtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdGV4dC1zaGFkb3c6IDAgMCAwICRpbnB1dC1jb2xvcjtcbiAgfVxuXG4gIC8vIEN1c3RvbWl6ZSB0aGUgYDpmb2N1c2Agc3RhdGUgdG8gaW1pdGF0ZSBuYXRpdmUgV2ViS2l0IHN0eWxlcy5cbiAgQGluY2x1ZGUgZm9ybS1jb250cm9sLWZvY3VzKCRpZ25vcmUtd2FybmluZzogdHJ1ZSk7XG5cbiAgLy8gUGxhY2Vob2xkZXJcbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiAkaW5wdXQtcGxhY2Vob2xkZXItY29sb3I7XG4gICAgLy8gT3ZlcnJpZGUgRmlyZWZveCdzIHVudXN1YWwgZGVmYXVsdCBvcGFjaXR5OyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL3B1bGwvMTE1MjYuXG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIC8vIERpc2FibGVkIGFuZCByZWFkLW9ubHkgaW5wdXRzXG4gIC8vXG4gIC8vIEhUTUw1IHNheXMgdGhhdCBjb250cm9scyB1bmRlciBhIGZpZWxkc2V0ID4gbGVnZW5kOmZpcnN0LWNoaWxkIHdvbid0IGJlXG4gIC8vIGRpc2FibGVkIGlmIHRoZSBmaWVsZHNldCBpcyBkaXNhYmxlZC4gRHVlIHRvIGltcGxlbWVudGF0aW9uIGRpZmZpY3VsdHksIHdlXG4gIC8vIGRvbid0IGhvbm9yIHRoYXQgZWRnZSBjYXNlOyB3ZSBzdHlsZSB0aGVtIGFzIGRpc2FibGVkIGFueXdheS5cbiAgJjpkaXNhYmxlZCxcbiAgJltyZWFkb25seV0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1kaXNhYmxlZC1iZztcbiAgICAvLyBpT1MgZml4IGZvciB1bnJlYWRhYmxlIGRpc2FibGVkIGNvbnRlbnQ7IHNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzExNjU1LlxuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuc2VsZWN0LmZvcm0tY29udHJvbCB7XG4gICY6Zm9jdXM6Oi1tcy12YWx1ZSB7XG4gICAgLy8gU3VwcHJlc3MgdGhlIG5lc3RlZCBkZWZhdWx0IHdoaXRlIHRleHQgb24gYmx1ZSBiYWNrZ3JvdW5kIGhpZ2hsaWdodCBnaXZlbiB0b1xuICAgIC8vIHRoZSBzZWxlY3RlZCBvcHRpb24gdGV4dCB3aGVuIHRoZSAoc3RpbGwgY2xvc2VkKSA8c2VsZWN0PiByZWNlaXZlcyBmb2N1c1xuICAgIC8vIGluIElFIGFuZCAodW5kZXIgY2VydGFpbiBjb25kaXRpb25zKSBFZGdlLCBhcyBpdCBsb29rcyBiYWQgYW5kIGNhbm5vdCBiZSBtYWRlIHRvXG4gICAgLy8gbWF0Y2ggdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIG5hdGl2ZSB3aWRnZXQuXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTkzOTguXG4gICAgY29sb3I6ICRpbnB1dC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmc7XG4gIH1cbn1cblxuLy8gTWFrZSBmaWxlIGlucHV0cyBiZXR0ZXIgbWF0Y2ggdGV4dCBpbnB1dHMgYnkgZm9yY2luZyB0aGVtIHRvIG5ldyBsaW5lcy5cbi5mb3JtLWNvbnRyb2wtZmlsZSxcbi5mb3JtLWNvbnRyb2wtcmFuZ2Uge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG59XG5cblxuLy9cbi8vIExhYmVsc1xuLy9cblxuLy8gRm9yIHVzZSB3aXRoIGhvcml6b250YWwgYW5kIGlubGluZSBmb3Jtcywgd2hlbiB5b3UgbmVlZCB0aGUgbGFiZWwgKG9yIGxlZ2VuZClcbi8vIHRleHQgdG8gYWxpZ24gd2l0aCB0aGUgZm9ybSBjb250cm9scy5cbi5jb2wtZm9ybS1sYWJlbCB7XG4gIHBhZGRpbmctdG9wOiBhZGQoJGlucHV0LXBhZGRpbmcteSwgJGlucHV0LWJvcmRlci13aWR0aCk7XG4gIHBhZGRpbmctYm90dG9tOiBhZGQoJGlucHV0LXBhZGRpbmcteSwgJGlucHV0LWJvcmRlci13aWR0aCk7XG4gIG1hcmdpbi1ib3R0b206IDA7IC8vIE92ZXJyaWRlIHRoZSBgPGxhYmVsPi88bGVnZW5kPmAgZGVmYXVsdFxuICBAaW5jbHVkZSBmb250LXNpemUoaW5oZXJpdCk7IC8vIE92ZXJyaWRlIHRoZSBgPGxlZ2VuZD5gIGRlZmF1bHRcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodDtcbn1cblxuLmNvbC1mb3JtLWxhYmVsLWxnIHtcbiAgcGFkZGluZy10b3A6IGFkZCgkaW5wdXQtcGFkZGluZy15LWxnLCAkaW5wdXQtYm9yZGVyLXdpZHRoKTtcbiAgcGFkZGluZy1ib3R0b206IGFkZCgkaW5wdXQtcGFkZGluZy15LWxnLCAkaW5wdXQtYm9yZGVyLXdpZHRoKTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUtbGcpO1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0LWxnO1xufVxuXG4uY29sLWZvcm0tbGFiZWwtc20ge1xuICBwYWRkaW5nLXRvcDogYWRkKCRpbnB1dC1wYWRkaW5nLXktc20sICRpbnB1dC1ib3JkZXItd2lkdGgpO1xuICBwYWRkaW5nLWJvdHRvbTogYWRkKCRpbnB1dC1wYWRkaW5nLXktc20sICRpbnB1dC1ib3JkZXItd2lkdGgpO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGlucHV0LWZvbnQtc2l6ZS1zbSk7XG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQtc207XG59XG5cblxuLy8gUmVhZG9ubHkgY29udHJvbHMgYXMgcGxhaW4gdGV4dFxuLy9cbi8vIEFwcGx5IGNsYXNzIHRvIGEgcmVhZG9ubHkgaW5wdXQgdG8gbWFrZSBpdCBhcHBlYXIgbGlrZSByZWd1bGFyIHBsYWluXG4vLyB0ZXh0ICh3aXRob3V0IGFueSBib3JkZXIsIGJhY2tncm91bmQgY29sb3IsIGZvY3VzIGluZGljYXRvcilcblxuLmZvcm0tY29udHJvbC1wbGFpbnRleHQge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXkgMDtcbiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gbWF0Y2ggaW5wdXRzIGlmIHRoaXMgY2xhc3MgY29tZXMgb24gaW5wdXRzIHdpdGggZGVmYXVsdCBtYXJnaW5zXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaW5wdXQtZm9udC1zaXplKTtcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRpbnB1dC1wbGFpbnRleHQtY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItd2lkdGg6ICRpbnB1dC1ib3JkZXItd2lkdGggMDtcblxuICAmLmZvcm0tY29udHJvbC1zbSxcbiAgJi5mb3JtLWNvbnRyb2wtbGcge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG59XG5cblxuLy8gRm9ybSBjb250cm9sIHNpemluZ1xuLy9cbi8vIEJ1aWxkIG9uIGAuZm9ybS1jb250cm9sYCB3aXRoIG1vZGlmaWVyIGNsYXNzZXMgdG8gZGVjcmVhc2Ugb3IgaW5jcmVhc2UgdGhlXG4vLyBoZWlnaHQgYW5kIGZvbnQtc2l6ZSBvZiBmb3JtIGNvbnRyb2xzLlxuLy9cbi8vIFJlcGVhdGVkIGluIGBfaW5wdXRfZ3JvdXAuc2Nzc2AgdG8gYXZvaWQgU2FzcyBleHRlbmQgaXNzdWVzLlxuXG4uZm9ybS1jb250cm9sLXNtIHtcbiAgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0LXNtO1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZy15LXNtICRpbnB1dC1wYWRkaW5nLXgtc207XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaW5wdXQtZm9udC1zaXplLXNtKTtcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodC1zbTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cy1zbSk7XG59XG5cbi5mb3JtLWNvbnRyb2wtbGcge1xuICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQtbGc7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXktbGcgJGlucHV0LXBhZGRpbmcteC1sZztcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUtbGcpO1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0LWxnO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRpbnB1dC1ib3JkZXItcmFkaXVzLWxnKTtcbn1cblxuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWR1cGxpY2F0ZS1zZWxlY3RvcnNcbnNlbGVjdC5mb3JtLWNvbnRyb2wge1xuICAmW3NpemVdLFxuICAmW211bHRpcGxlXSB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbnRleHRhcmVhLmZvcm0tY29udHJvbCB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLy8gRm9ybSBncm91cHNcbi8vXG4vLyBEZXNpZ25lZCB0byBoZWxwIHdpdGggdGhlIG9yZ2FuaXphdGlvbiBhbmQgc3BhY2luZyBvZiB2ZXJ0aWNhbCBmb3Jtcy4gRm9yXG4vLyBob3Jpem9udGFsIGZvcm1zLCB1c2UgdGhlIHByZWRlZmluZWQgZ3JpZCBjbGFzc2VzLlxuXG4uZm9ybS1ncm91cCB7XG4gIG1hcmdpbi1ib3R0b206ICRmb3JtLWdyb3VwLW1hcmdpbi1ib3R0b207XG59XG5cbi5mb3JtLXRleHQge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogJGZvcm0tdGV4dC1tYXJnaW4tdG9wO1xufVxuXG5cbi8vIEZvcm0gZ3JpZFxuLy9cbi8vIFNwZWNpYWwgcmVwbGFjZW1lbnQgZm9yIG91ciBncmlkIHN5c3RlbSdzIGAucm93YCBmb3IgdGlnaHRlciBmb3JtIGxheW91dHMuXG5cbi5mb3JtLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgbWFyZ2luLXJpZ2h0OiAtJGZvcm0tZ3JpZC1ndXR0ZXItd2lkdGggLyAyO1xuICBtYXJnaW4tbGVmdDogLSRmb3JtLWdyaWQtZ3V0dGVyLXdpZHRoIC8gMjtcblxuICA+IC5jb2wsXG4gID4gW2NsYXNzKj1cImNvbC1cIl0ge1xuICAgIHBhZGRpbmctcmlnaHQ6ICRmb3JtLWdyaWQtZ3V0dGVyLXdpZHRoIC8gMjtcbiAgICBwYWRkaW5nLWxlZnQ6ICRmb3JtLWdyaWQtZ3V0dGVyLXdpZHRoIC8gMjtcbiAgfVxufVxuXG5cbi8vIENoZWNrYm94ZXMgYW5kIHJhZGlvc1xuLy9cbi8vIEluZGVudCB0aGUgbGFiZWxzIHRvIHBvc2l0aW9uIHJhZGlvcy9jaGVja2JveGVzIGFzIGhhbmdpbmcgY29udHJvbHMuXG5cbi5mb3JtLWNoZWNrIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZy1sZWZ0OiAkZm9ybS1jaGVjay1pbnB1dC1ndXR0ZXI7XG59XG5cbi5mb3JtLWNoZWNrLWlucHV0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXJnaW4tdG9wOiAkZm9ybS1jaGVjay1pbnB1dC1tYXJnaW4teTtcbiAgbWFyZ2luLWxlZnQ6IC0kZm9ybS1jaGVjay1pbnB1dC1ndXR0ZXI7XG5cbiAgLy8gVXNlIFtkaXNhYmxlZF0gYW5kIDpkaXNhYmxlZCBmb3Igd29ya2Fyb3VuZCBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI4MjQ3XG4gICZbZGlzYWJsZWRdIH4gLmZvcm0tY2hlY2stbGFiZWwsXG4gICY6ZGlzYWJsZWQgfiAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICB9XG59XG5cbi5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gT3ZlcnJpZGUgZGVmYXVsdCBgPGxhYmVsPmAgYm90dG9tIG1hcmdpblxufVxuXG4uZm9ybS1jaGVjay1pbmxpbmUge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZy1sZWZ0OiAwOyAvLyBPdmVycmlkZSBiYXNlIC5mb3JtLWNoZWNrXG4gIG1hcmdpbi1yaWdodDogJGZvcm0tY2hlY2staW5saW5lLW1hcmdpbi14O1xuXG4gIC8vIFVuZG8gLmZvcm0tY2hlY2staW5wdXQgZGVmYXVsdHMgYW5kIGFkZCBzb21lIGBtYXJnaW4tcmlnaHRgLlxuICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1yaWdodDogJGZvcm0tY2hlY2staW5saW5lLWlucHV0LW1hcmdpbi14O1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG59XG5cblxuLy8gRm9ybSB2YWxpZGF0aW9uXG4vL1xuLy8gUHJvdmlkZSBmZWVkYmFjayB0byB1c2VycyB3aGVuIGZvcm0gZmllbGQgdmFsdWVzIGFyZSB2YWxpZCBvciBpbnZhbGlkLiBXb3Jrc1xuLy8gcHJpbWFyaWx5IGZvciBjbGllbnQtc2lkZSB2YWxpZGF0aW9uIHZpYSBzY29wZWQgYDppbnZhbGlkYCBhbmQgYDp2YWxpZGBcbi8vIHBzZXVkby1jbGFzc2VzIGJ1dCBhbHNvIGluY2x1ZGVzIGAuaXMtaW52YWxpZGAgYW5kIGAuaXMtdmFsaWRgIGNsYXNzZXMgZm9yXG4vLyBzZXJ2ZXIgc2lkZSB2YWxpZGF0aW9uLlxuXG5AZWFjaCAkc3RhdGUsICRkYXRhIGluICRmb3JtLXZhbGlkYXRpb24tc3RhdGVzIHtcbiAgQGluY2x1ZGUgZm9ybS12YWxpZGF0aW9uLXN0YXRlKCRzdGF0ZSwgbWFwLWdldCgkZGF0YSwgY29sb3IpLCBtYXAtZ2V0KCRkYXRhLCBpY29uKSk7XG59XG5cbi8vIElubGluZSBmb3Jtc1xuLy9cbi8vIE1ha2UgZm9ybXMgYXBwZWFyIGlubGluZSgtYmxvY2spIGJ5IGFkZGluZyB0aGUgYC5mb3JtLWlubGluZWAgY2xhc3MuIElubGluZVxuLy8gZm9ybXMgYmVnaW4gc3RhY2tlZCBvbiBleHRyYSBzbWFsbCAobW9iaWxlKSBkZXZpY2VzIGFuZCB0aGVuIGdvIGlubGluZSB3aGVuXG4vLyB2aWV3cG9ydHMgcmVhY2ggPDc2OHB4LlxuLy9cbi8vIFJlcXVpcmVzIHdyYXBwaW5nIGlucHV0cyBhbmQgbGFiZWxzIHdpdGggYC5mb3JtLWdyb3VwYCBmb3IgcHJvcGVyIGRpc3BsYXkgb2Zcbi8vIGRlZmF1bHQgSFRNTCBmb3JtIGNvbnRyb2xzIGFuZCBvdXIgY3VzdG9tIGZvcm0gY29udHJvbHMgKGUuZy4sIGlucHV0IGdyb3VwcykuXG5cbi5mb3JtLWlubGluZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IC8vIFByZXZlbnQgc2hvcnRlciBlbGVtZW50cyBmcm9tIGdyb3dpbmcgdG8gc2FtZSBoZWlnaHQgYXMgb3RoZXJzIChlLmcuLCBzbWFsbCBidXR0b25zIGdyb3dpbmcgdG8gbm9ybWFsIHNpemVkIGJ1dHRvbiBoZWlnaHQpXG5cbiAgLy8gQmVjYXVzZSB3ZSB1c2UgZmxleCwgdGhlIGluaXRpYWwgc2l6aW5nIG9mIGNoZWNrYm94ZXMgaXMgY29sbGFwc2VkIGFuZFxuICAvLyBkb2Vzbid0IG9jY3VweSB0aGUgZnVsbC13aWR0aCAod2hpY2ggaXMgd2hhdCB3ZSB3YW50IGZvciB4cyBncmlkIHRpZXIpLFxuICAvLyBzbyB3ZSBmb3JjZSB0aGF0IGhlcmUuXG4gIC5mb3JtLWNoZWNrIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC8vIEtpY2sgaW4gdGhlIGlubGluZVxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKHNtKSB7XG4gICAgbGFiZWwge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgLy8gSW5saW5lLWJsb2NrIGFsbCB0aGUgdGhpbmdzIGZvciBcImlubGluZVwiXG4gICAgLmZvcm0tZ3JvdXAge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC8vIEFsbG93IGZvbGtzIHRvICpub3QqIHVzZSBgLmZvcm0tZ3JvdXBgXG4gICAgLmZvcm0tY29udHJvbCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB3aWR0aDogYXV0bzsgLy8gUHJldmVudCBsYWJlbHMgZnJvbSBzdGFja2luZyBhYm92ZSBpbnB1dHMgaW4gYC5mb3JtLWdyb3VwYFxuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICAvLyBNYWtlIHN0YXRpYyBjb250cm9scyBiZWhhdmUgbGlrZSByZWd1bGFyIG9uZXNcbiAgICAuZm9ybS1jb250cm9sLXBsYWludGV4dCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuXG4gICAgLmlucHV0LWdyb3VwLFxuICAgIC5jdXN0b20tc2VsZWN0IHtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSBkZWZhdWx0IG1hcmdpbiBvbiByYWRpb3MvY2hlY2tib3hlcyB0aGF0IHdlcmUgdXNlZCBmb3Igc3RhY2tpbmcsIGFuZFxuICAgIC8vIHRoZW4gdW5kbyB0aGUgZmxvYXRpbmcgb2YgcmFkaW9zIGFuZCBjaGVja2JveGVzIHRvIG1hdGNoLlxuICAgIC5mb3JtLWNoZWNrIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICB9XG4gICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkZm9ybS1jaGVjay1pbnB1dC1tYXJnaW4teDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cblxuICAgIC5jdXN0b20tY29udHJvbCB7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuICAgIC5jdXN0b20tY29udHJvbC1sYWJlbCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgcHJvcGVydHktYmxhY2tsaXN0XG5AbWl4aW4gdHJhbnNpdGlvbigkdHJhbnNpdGlvbi4uLikge1xuICBAaWYgJGVuYWJsZS10cmFuc2l0aW9ucyB7XG4gICAgQGlmIGxlbmd0aCgkdHJhbnNpdGlvbikgPT0gMCB7XG4gICAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbi1iYXNlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XG4gICAgfVxuICB9XG5cbiAgQGlmICRlbmFibGUtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1tZWRpYS1xdWVyeSB7XG4gICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3JtIGNvbnRyb2wgZm9jdXMgc3RhdGVcbi8vXG4vLyBHZW5lcmF0ZSBhIGN1c3RvbWl6ZWQgZm9jdXMgc3RhdGUgYW5kIGZvciBhbnkgaW5wdXQgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbG9yLFxuLy8gd2hpY2ggZGVmYXVsdHMgdG8gdGhlIGAkaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yYCB2YXJpYWJsZS5cbi8vXG4vLyBXZSBoaWdobHkgZW5jb3VyYWdlIHlvdSB0byBub3QgY3VzdG9taXplIHRoZSBkZWZhdWx0IHZhbHVlLCBidXQgaW5zdGVhZCB1c2Vcbi8vIHRoaXMgdG8gdHdlYWsgY29sb3JzIG9uIGFuIGFzLW5lZWRlZCBiYXNpcy4gVGhpcyBhZXN0aGV0aWMgY2hhbmdlIGlzIGJhc2VkIG9uXG4vLyBXZWJLaXQncyBkZWZhdWx0IHN0eWxlcywgYnV0IGFwcGxpY2FibGUgdG8gYSB3aWRlciByYW5nZSBvZiBicm93c2Vycy4gSXRzXG4vLyB1c2FiaWxpdHkgYW5kIGFjY2Vzc2liaWxpdHkgc2hvdWxkIGJlIHRha2VuIGludG8gYWNjb3VudCB3aXRoIGFueSBjaGFuZ2UuXG4vL1xuLy8gRXhhbXBsZSB1c2FnZTogY2hhbmdlIHRoZSBkZWZhdWx0IGJsdWUgYm9yZGVyIGFuZCBzaGFkb3cgdG8gd2hpdGUgZm9yIGJldHRlclxuLy8gY29udHJhc3QgYWdhaW5zdCBhIGRhcmsgZ3JheSBiYWNrZ3JvdW5kLlxuQG1peGluIGZvcm0tY29udHJvbC1mb2N1cygkaWdub3JlLXdhcm5pbmc6IGZhbHNlKSB7XG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiAkaW5wdXQtZm9jdXMtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWZvY3VzLWJnO1xuICAgIGJvcmRlci1jb2xvcjogJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvcjtcbiAgICBvdXRsaW5lOiAwO1xuICAgIC8vIEF2b2lkIHVzaW5nIG1peGluIHNvIHdlIGNhbiBwYXNzIGN1c3RvbSBmb2N1cyBzaGFkb3cgcHJvcGVybHlcbiAgICBAaWYgJGVuYWJsZS1zaGFkb3dzIHtcbiAgICAgIGJveC1zaGFkb3c6ICRpbnB1dC1ib3gtc2hhZG93LCAkaW5wdXQtZm9jdXMtYm94LXNoYWRvdztcbiAgICB9IEBlbHNlIHtcbiAgICAgIGJveC1zaGFkb3c6ICRpbnB1dC1mb2N1cy1ib3gtc2hhZG93O1xuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBkZXByZWNhdGUoXCJUaGUgYGZvcm0tY29udHJvbC1mb2N1cygpYCBtaXhpblwiLCBcInY0LjQuMFwiLCBcInY1XCIsICRpZ25vcmUtd2FybmluZyk7XG59XG5cbi8vIFRoaXMgbWl4aW4gdXNlcyBhbiBgaWYoKWAgdGVjaG5pcXVlIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBEYXJ0IFNhc3Ncbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy9zYXNzL2lzc3Vlcy8xODczI2lzc3VlY29tbWVudC0xNTIyOTM3MjUgZm9yIG1vcmUgZGV0YWlsc1xuQG1peGluIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZS1zZWxlY3Rvcigkc3RhdGUpIHtcbiAgQGlmICgkc3RhdGUgPT0gXCJ2YWxpZFwiIG9yICRzdGF0ZSA9PSBcImludmFsaWRcIikge1xuICAgIC53YXMtdmFsaWRhdGVkICN7aWYoJiwgXCImXCIsIFwiXCIpfTojeyRzdGF0ZX0sXG4gICAgI3tpZigmLCBcIiZcIiwgXCJcIil9LmlzLSN7JHN0YXRlfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICN7aWYoJiwgXCImXCIsIFwiXCIpfS5pcy0jeyRzdGF0ZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3JtLXZhbGlkYXRpb24tc3RhdGUoJHN0YXRlLCAkY29sb3IsICRpY29uKSB7XG4gIC4jeyRzdGF0ZX0tZmVlZGJhY2sge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLXRvcDogJGZvcm0tZmVlZGJhY2stbWFyZ2luLXRvcDtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoJGZvcm0tZmVlZGJhY2stZm9udC1zaXplKTtcbiAgICBjb2xvcjogJGNvbG9yO1xuICB9XG5cbiAgLiN7JHN0YXRlfS10b29sdGlwIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxMDAlO1xuICAgIHotaW5kZXg6IDU7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7IC8vIENvbnRhaW4gdG8gcGFyZW50IHdoZW4gcG9zc2libGVcbiAgICBwYWRkaW5nOiAkZm9ybS1mZWVkYmFjay10b29sdGlwLXBhZGRpbmcteSAkZm9ybS1mZWVkYmFjay10b29sdGlwLXBhZGRpbmcteDtcbiAgICBtYXJnaW4tdG9wOiAuMXJlbTtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiAkZm9ybS1mZWVkYmFjay10b29sdGlwLWxpbmUtaGVpZ2h0O1xuICAgIGNvbG9yOiBjb2xvci15aXEoJGNvbG9yKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1vcGFjaXR5KTtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtYm9yZGVyLXJhZGl1cyk7XG4gIH1cblxuICBAaW5jbHVkZSBmb3JtLXZhbGlkYXRpb24tc3RhdGUtc2VsZWN0b3IoJHN0YXRlKSB7XG4gICAgfiAuI3skc3RhdGV9LWZlZWRiYWNrLFxuICAgIH4gLiN7JHN0YXRlfS10b29sdGlwIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gIC5mb3JtLWNvbnRyb2wge1xuICAgIEBpbmNsdWRlIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZS1zZWxlY3Rvcigkc3RhdGUpIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuXG4gICAgICBAaWYgJGVuYWJsZS12YWxpZGF0aW9uLWljb25zIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogJGlucHV0LWhlaWdodC1pbm5lcjtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogZXNjYXBlLXN2ZygkaWNvbik7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0ICRpbnB1dC1oZWlnaHQtaW5uZXItcXVhcnRlciBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogJGlucHV0LWhlaWdodC1pbm5lci1oYWxmICRpbnB1dC1oZWlnaHQtaW5uZXItaGFsZjtcbiAgICAgIH1cblxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAkaW5wdXQtZm9jdXMtd2lkdGggcmdiYSgkY29sb3IsIC4yNSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuICB0ZXh0YXJlYS5mb3JtLWNvbnRyb2wge1xuICAgIEBpbmNsdWRlIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZS1zZWxlY3Rvcigkc3RhdGUpIHtcbiAgICAgIEBpZiAkZW5hYmxlLXZhbGlkYXRpb24taWNvbnMge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkaW5wdXQtaGVpZ2h0LWlubmVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgJGlucHV0LWhlaWdodC1pbm5lci1xdWFydGVyIHJpZ2h0ICRpbnB1dC1oZWlnaHQtaW5uZXItcXVhcnRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuY3VzdG9tLXNlbGVjdCB7XG4gICAgQGluY2x1ZGUgZm9ybS12YWxpZGF0aW9uLXN0YXRlLXNlbGVjdG9yKCRzdGF0ZSkge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG5cbiAgICAgIEBpZiAkZW5hYmxlLXZhbGlkYXRpb24taWNvbnMge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkY3VzdG9tLXNlbGVjdC1mZWVkYmFjay1pY29uLXBhZGRpbmctcmlnaHQ7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjdXN0b20tc2VsZWN0LWJhY2tncm91bmQsIGVzY2FwZS1zdmcoJGljb24pICRjdXN0b20tc2VsZWN0LWJnIG5vLXJlcGVhdCAkY3VzdG9tLXNlbGVjdC1mZWVkYmFjay1pY29uLXBvc2l0aW9uIC8gJGN1c3RvbS1zZWxlY3QtZmVlZGJhY2staWNvbi1zaXplO1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwICRpbnB1dC1mb2N1cy13aWR0aCByZ2JhKCRjb2xvciwgLjI1KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgQGluY2x1ZGUgZm9ybS12YWxpZGF0aW9uLXN0YXRlLXNlbGVjdG9yKCRzdGF0ZSkge1xuICAgICAgfiAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgIGNvbG9yOiAkY29sb3I7XG4gICAgICB9XG5cbiAgICAgIH4gLiN7JHN0YXRlfS1mZWVkYmFjayxcbiAgICAgIH4gLiN7JHN0YXRlfS10b29sdGlwIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmN1c3RvbS1jb250cm9sLWlucHV0IHtcbiAgICBAaW5jbHVkZSBmb3JtLXZhbGlkYXRpb24tc3RhdGUtc2VsZWN0b3IoJHN0YXRlKSB7XG4gICAgICB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7XG4gICAgICAgIGNvbG9yOiAkY29sb3I7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmOmNoZWNrZWQge1xuICAgICAgICB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6IGxpZ2h0ZW4oJGNvbG9yLCAxMCUpO1xuICAgICAgICAgIEBpbmNsdWRlIGdyYWRpZW50LWJnKGxpZ2h0ZW4oJGNvbG9yLCAxMCUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgJGlucHV0LWZvY3VzLXdpZHRoIHJnYmEoJGNvbG9yLCAuMjUpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpub3QoOmNoZWNrZWQpIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gY3VzdG9tIGZpbGVcbiAgLmN1c3RvbS1maWxlLWlucHV0IHtcbiAgICBAaW5jbHVkZSBmb3JtLXZhbGlkYXRpb24tc3RhdGUtc2VsZWN0b3IoJHN0YXRlKSB7XG4gICAgICB+IC5jdXN0b20tZmlsZS1sYWJlbCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgfiAuY3VzdG9tLWZpbGUtbGFiZWwge1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwICRpbnB1dC1mb2N1cy13aWR0aCByZ2JhKCRjb2xvciwgLjI1KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gR3JhZGllbnRzXG5cbkBtaXhpbiBncmFkaWVudC1iZygkY29sb3IpIHtcbiAgQGlmICRlbmFibGUtZ3JhZGllbnRzIHtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3IgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgbWl4KCRib2R5LWJnLCAkY29sb3IsIDE1JSksICRjb2xvcikgcmVwZWF0LXg7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgfVxufVxuXG4vLyBIb3Jpem9udGFsIGdyYWRpZW50LCBmcm9tIGxlZnQgdG8gcmlnaHRcbi8vXG4vLyBDcmVhdGVzIHR3byBjb2xvciBzdG9wcywgc3RhcnQgYW5kIGVuZCwgYnkgc3BlY2lmeWluZyBhIGNvbG9yIGFuZCBwb3NpdGlvbiBmb3IgZWFjaCBjb2xvciBzdG9wLlxuQG1peGluIGdyYWRpZW50LXgoJHN0YXJ0LWNvbG9yOiAkZ3JheS03MDAsICRlbmQtY29sb3I6ICRncmF5LTgwMCwgJHN0YXJ0LXBlcmNlbnQ6IDAlLCAkZW5kLXBlcmNlbnQ6IDEwMCUpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkc3RhcnQtY29sb3IgJHN0YXJ0LXBlcmNlbnQsICRlbmQtY29sb3IgJGVuZC1wZXJjZW50KTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xufVxuXG4vLyBWZXJ0aWNhbCBncmFkaWVudCwgZnJvbSB0b3AgdG8gYm90dG9tXG4vL1xuLy8gQ3JlYXRlcyB0d28gY29sb3Igc3RvcHMsIHN0YXJ0IGFuZCBlbmQsIGJ5IHNwZWNpZnlpbmcgYSBjb2xvciBhbmQgcG9zaXRpb24gZm9yIGVhY2ggY29sb3Igc3RvcC5cbkBtaXhpbiBncmFkaWVudC15KCRzdGFydC1jb2xvcjogJGdyYXktNzAwLCAkZW5kLWNvbG9yOiAkZ3JheS04MDAsICRzdGFydC1wZXJjZW50OiAwJSwgJGVuZC1wZXJjZW50OiAxMDAlKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICRzdGFydC1jb2xvciAkc3RhcnQtcGVyY2VudCwgJGVuZC1jb2xvciAkZW5kLXBlcmNlbnQpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG59XG5cbkBtaXhpbiBncmFkaWVudC1kaXJlY3Rpb25hbCgkc3RhcnQtY29sb3I6ICRncmF5LTcwMCwgJGVuZC1jb2xvcjogJGdyYXktODAwLCAkZGVnOiA0NWRlZykge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoJGRlZywgJHN0YXJ0LWNvbG9yLCAkZW5kLWNvbG9yKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xufVxuQG1peGluIGdyYWRpZW50LXgtdGhyZWUtY29sb3JzKCRzdGFydC1jb2xvcjogJGJsdWUsICRtaWQtY29sb3I6ICRwdXJwbGUsICRjb2xvci1zdG9wOiA1MCUsICRlbmQtY29sb3I6ICRyZWQpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkc3RhcnQtY29sb3IsICRtaWQtY29sb3IgJGNvbG9yLXN0b3AsICRlbmQtY29sb3IpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xufVxuQG1peGluIGdyYWRpZW50LXktdGhyZWUtY29sb3JzKCRzdGFydC1jb2xvcjogJGJsdWUsICRtaWQtY29sb3I6ICRwdXJwbGUsICRjb2xvci1zdG9wOiA1MCUsICRlbmQtY29sb3I6ICRyZWQpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCRzdGFydC1jb2xvciwgJG1pZC1jb2xvciAkY29sb3Itc3RvcCwgJGVuZC1jb2xvcik7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5AbWl4aW4gZ3JhZGllbnQtcmFkaWFsKCRpbm5lci1jb2xvcjogJGdyYXktNzAwLCAkb3V0ZXItY29sb3I6ICRncmF5LTgwMCkge1xuICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCAkaW5uZXItY29sb3IsICRvdXRlci1jb2xvcik7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5AbWl4aW4gZ3JhZGllbnQtc3RyaXBlZCgkY29sb3I6IHJnYmEoJHdoaXRlLCAuMTUpLCAkYW5nbGU6IDQ1ZGVnKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgkYW5nbGUsICRjb2xvciAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCAkY29sb3IgNTAlLCAkY29sb3IgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtcbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXG4vL1xuLy8gQmFzZSBzdHlsZXNcbi8vXG5cbi5idG4ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtZmFtaWx5OiAkYnRuLWZvbnQtZmFtaWx5O1xuICBmb250LXdlaWdodDogJGJ0bi1mb250LXdlaWdodDtcbiAgY29sb3I6ICRib2R5LWNvbG9yO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdoaXRlLXNwYWNlOiAkYnRuLXdoaXRlLXNwYWNlO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBjdXJzb3I6IGlmKCRlbmFibGUtcG9pbnRlci1jdXJzb3ItZm9yLWJ1dHRvbnMsIHBvaW50ZXIsIG51bGwpO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogJGJ0bi1ib3JkZXItd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG4gIEBpbmNsdWRlIGJ1dHRvbi1zaXplKCRidG4tcGFkZGluZy15LCAkYnRuLXBhZGRpbmcteCwgJGJ0bi1mb250LXNpemUsICRidG4tbGluZS1oZWlnaHQsICRidG4tYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJGJ0bi10cmFuc2l0aW9uKTtcblxuICBAaW5jbHVkZSBob3ZlcigpIHtcbiAgICBjb2xvcjogJGJvZHktY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgJjpmb2N1cyxcbiAgJi5mb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbiAgICBib3gtc2hhZG93OiAkYnRuLWZvY3VzLWJveC1zaGFkb3c7XG4gIH1cblxuICAvLyBEaXNhYmxlZCBjb21lcyBmaXJzdCBzbyBhY3RpdmUgY2FuIHByb3Blcmx5IHJlc3R5bGVcbiAgJi5kaXNhYmxlZCxcbiAgJjpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogJGJ0bi1kaXNhYmxlZC1vcGFjaXR5O1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3cobm9uZSk7XG4gIH1cblxuICAmOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSxcbiAgJjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUge1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGJ0bi1hY3RpdmUtYm94LXNoYWRvdyk7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGJ0bi1mb2N1cy1ib3gtc2hhZG93LCAkYnRuLWFjdGl2ZS1ib3gtc2hhZG93KTtcbiAgICB9XG4gIH1cbn1cblxuLy8gRnV0dXJlLXByb29mIGRpc2FibGluZyBvZiBjbGlja3Mgb24gYDxhPmAgZWxlbWVudHNcbmEuYnRuLmRpc2FibGVkLFxuZmllbGRzZXQ6ZGlzYWJsZWQgYS5idG4ge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuXG4vL1xuLy8gQWx0ZXJuYXRlIGJ1dHRvbnNcbi8vXG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAuYnRuLSN7JGNvbG9yfSB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLXZhcmlhbnQoJHZhbHVlLCAkdmFsdWUpO1xuICB9XG59XG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAuYnRuLW91dGxpbmUtI3skY29sb3J9IHtcbiAgICBAaW5jbHVkZSBidXR0b24tb3V0bGluZS12YXJpYW50KCR2YWx1ZSk7XG4gIH1cbn1cblxuXG4vL1xuLy8gTGluayBidXR0b25zXG4vL1xuXG4vLyBNYWtlIGEgYnV0dG9uIGxvb2sgYW5kIGJlaGF2ZSBsaWtlIGEgbGlua1xuLmJ0bi1saW5rIHtcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG4gIGNvbG9yOiAkbGluay1jb2xvcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiAkbGluay1kZWNvcmF0aW9uO1xuXG4gIEBpbmNsdWRlIGhvdmVyKCkge1xuICAgIGNvbG9yOiAkbGluay1ob3Zlci1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246ICRsaW5rLWhvdmVyLWRlY29yYXRpb247XG4gIH1cblxuICAmOmZvY3VzLFxuICAmLmZvY3VzIHtcbiAgICB0ZXh0LWRlY29yYXRpb246ICRsaW5rLWhvdmVyLWRlY29yYXRpb247XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxuXG4gICY6ZGlzYWJsZWQsXG4gICYuZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkYnRuLWxpbmstZGlzYWJsZWQtY29sb3I7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cblxuICAvLyBObyBuZWVkIGZvciBhbiBhY3RpdmUgc3RhdGUgaGVyZVxufVxuXG5cbi8vXG4vLyBCdXR0b24gU2l6ZXNcbi8vXG5cbi5idG4tbGcge1xuICBAaW5jbHVkZSBidXR0b24tc2l6ZSgkYnRuLXBhZGRpbmcteS1sZywgJGJ0bi1wYWRkaW5nLXgtbGcsICRidG4tZm9udC1zaXplLWxnLCAkYnRuLWxpbmUtaGVpZ2h0LWxnLCAkYnRuLWJvcmRlci1yYWRpdXMtbGcpO1xufVxuXG4uYnRuLXNtIHtcbiAgQGluY2x1ZGUgYnV0dG9uLXNpemUoJGJ0bi1wYWRkaW5nLXktc20sICRidG4tcGFkZGluZy14LXNtLCAkYnRuLWZvbnQtc2l6ZS1zbSwgJGJ0bi1saW5lLWhlaWdodC1zbSwgJGJ0bi1ib3JkZXItcmFkaXVzLXNtKTtcbn1cblxuXG4vL1xuLy8gQmxvY2sgYnV0dG9uXG4vL1xuXG4uYnRuLWJsb2NrIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIC8vIFZlcnRpY2FsbHkgc3BhY2Ugb3V0IG11bHRpcGxlIGJsb2NrIGJ1dHRvbnNcbiAgKyAuYnRuLWJsb2NrIHtcbiAgICBtYXJnaW4tdG9wOiAkYnRuLWJsb2NrLXNwYWNpbmcteTtcbiAgfVxufVxuXG4vLyBTcGVjaWZpY2l0eSBvdmVycmlkZXNcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0sXG5pbnB1dFt0eXBlPVwicmVzZXRcIl0sXG5pbnB1dFt0eXBlPVwiYnV0dG9uXCJdIHtcbiAgJi5idG4tYmxvY2sge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG4iLCIvLyBCdXR0b24gdmFyaWFudHNcbi8vXG4vLyBFYXNpbHkgcHVtcCBvdXQgZGVmYXVsdCBzdHlsZXMsIGFzIHdlbGwgYXMgOmhvdmVyLCA6Zm9jdXMsIDphY3RpdmUsXG4vLyBhbmQgZGlzYWJsZWQgb3B0aW9ucyBmb3IgYWxsIGJ1dHRvbnNcblxuQG1peGluIGJ1dHRvbi12YXJpYW50KCRiYWNrZ3JvdW5kLCAkYm9yZGVyLCAkaG92ZXItYmFja2dyb3VuZDogZGFya2VuKCRiYWNrZ3JvdW5kLCA3LjUlKSwgJGhvdmVyLWJvcmRlcjogZGFya2VuKCRib3JkZXIsIDEwJSksICRhY3RpdmUtYmFja2dyb3VuZDogZGFya2VuKCRiYWNrZ3JvdW5kLCAxMCUpLCAkYWN0aXZlLWJvcmRlcjogZGFya2VuKCRib3JkZXIsIDEyLjUlKSkge1xuICBjb2xvcjogY29sb3IteWlxKCRiYWNrZ3JvdW5kKTtcbiAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGJhY2tncm91bmQpO1xuICBib3JkZXItY29sb3I6ICRib3JkZXI7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJGJ0bi1ib3gtc2hhZG93KTtcblxuICBAaW5jbHVkZSBob3ZlcigpIHtcbiAgICBjb2xvcjogY29sb3IteWlxKCRob3Zlci1iYWNrZ3JvdW5kKTtcbiAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkaG92ZXItYmFja2dyb3VuZCk7XG4gICAgYm9yZGVyLWNvbG9yOiAkaG92ZXItYm9yZGVyO1xuICB9XG5cbiAgJjpmb2N1cyxcbiAgJi5mb2N1cyB7XG4gICAgY29sb3I6IGNvbG9yLXlpcSgkaG92ZXItYmFja2dyb3VuZCk7XG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGhvdmVyLWJhY2tncm91bmQpO1xuICAgIGJvcmRlci1jb2xvcjogJGhvdmVyLWJvcmRlcjtcbiAgICAvLyBBdm9pZCB1c2luZyBtaXhpbiBzbyB3ZSBjYW4gcGFzcyBjdXN0b20gZm9jdXMgc2hhZG93IHByb3Blcmx5XG4gICAgQGlmICRlbmFibGUtc2hhZG93cyB7XG4gICAgICBib3gtc2hhZG93OiAkYnRuLWJveC1zaGFkb3csIDAgMCAwICRidG4tZm9jdXMtd2lkdGggcmdiYShtaXgoY29sb3IteWlxKCRiYWNrZ3JvdW5kKSwgJGJvcmRlciwgMTUlKSwgLjUpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgYm94LXNoYWRvdzogMCAwIDAgJGJ0bi1mb2N1cy13aWR0aCByZ2JhKG1peChjb2xvci15aXEoJGJhY2tncm91bmQpLCAkYm9yZGVyLCAxNSUpLCAuNSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRGlzYWJsZWQgY29tZXMgZmlyc3Qgc28gYWN0aXZlIGNhbiBwcm9wZXJseSByZXN0eWxlXG4gICYuZGlzYWJsZWQsXG4gICY6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiBjb2xvci15aXEoJGJhY2tncm91bmQpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIGJvcmRlci1jb2xvcjogJGJvcmRlcjtcbiAgICAvLyBSZW1vdmUgQ1NTIGdyYWRpZW50cyBpZiB0aGV5J3JlIGVuYWJsZWRcbiAgICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAmOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSxcbiAgJjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsXG4gIC5zaG93ID4gJi5kcm9wZG93bi10b2dnbGUge1xuICAgIGNvbG9yOiBjb2xvci15aXEoJGFjdGl2ZS1iYWNrZ3JvdW5kKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWN0aXZlLWJhY2tncm91bmQ7XG4gICAgQGlmICRlbmFibGUtZ3JhZGllbnRzIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7IC8vIFJlbW92ZSB0aGUgZ3JhZGllbnQgZm9yIHRoZSBwcmVzc2VkL2FjdGl2ZSBzdGF0ZVxuICAgIH1cbiAgICBib3JkZXItY29sb3I6ICRhY3RpdmUtYm9yZGVyO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAvLyBBdm9pZCB1c2luZyBtaXhpbiBzbyB3ZSBjYW4gcGFzcyBjdXN0b20gZm9jdXMgc2hhZG93IHByb3Blcmx5XG4gICAgICBAaWYgJGVuYWJsZS1zaGFkb3dzIGFuZCAkYnRuLWFjdGl2ZS1ib3gtc2hhZG93ICE9IG5vbmUge1xuICAgICAgICBib3gtc2hhZG93OiAkYnRuLWFjdGl2ZS1ib3gtc2hhZG93LCAwIDAgMCAkYnRuLWZvY3VzLXdpZHRoIHJnYmEobWl4KGNvbG9yLXlpcSgkYmFja2dyb3VuZCksICRib3JkZXIsIDE1JSksIC41KTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAkYnRuLWZvY3VzLXdpZHRoIHJnYmEobWl4KGNvbG9yLXlpcSgkYmFja2dyb3VuZCksICRib3JkZXIsIDE1JSksIC41KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGJ1dHRvbi1vdXRsaW5lLXZhcmlhbnQoJGNvbG9yLCAkY29sb3ItaG92ZXI6IGNvbG9yLXlpcSgkY29sb3IpLCAkYWN0aXZlLWJhY2tncm91bmQ6ICRjb2xvciwgJGFjdGl2ZS1ib3JkZXI6ICRjb2xvcikge1xuICBjb2xvcjogJGNvbG9yO1xuICBib3JkZXItY29sb3I6ICRjb2xvcjtcblxuICBAaW5jbHVkZSBob3ZlcigpIHtcbiAgICBjb2xvcjogJGNvbG9yLWhvdmVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY3RpdmUtYmFja2dyb3VuZDtcbiAgICBib3JkZXItY29sb3I6ICRhY3RpdmUtYm9yZGVyO1xuICB9XG5cbiAgJjpmb2N1cyxcbiAgJi5mb2N1cyB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgJGJ0bi1mb2N1cy13aWR0aCByZ2JhKCRjb2xvciwgLjUpO1xuICB9XG5cbiAgJi5kaXNhYmxlZCxcbiAgJjpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuXG4gICY6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLFxuICAmOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbiAgLnNob3cgPiAmLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgY29sb3I6IGNvbG9yLXlpcSgkYWN0aXZlLWJhY2tncm91bmQpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY3RpdmUtYmFja2dyb3VuZDtcbiAgICBib3JkZXItY29sb3I6ICRhY3RpdmUtYm9yZGVyO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAvLyBBdm9pZCB1c2luZyBtaXhpbiBzbyB3ZSBjYW4gcGFzcyBjdXN0b20gZm9jdXMgc2hhZG93IHByb3Blcmx5XG4gICAgICBAaWYgJGVuYWJsZS1zaGFkb3dzIGFuZCAkYnRuLWFjdGl2ZS1ib3gtc2hhZG93ICE9IG5vbmUge1xuICAgICAgICBib3gtc2hhZG93OiAkYnRuLWFjdGl2ZS1ib3gtc2hhZG93LCAwIDAgMCAkYnRuLWZvY3VzLXdpZHRoIHJnYmEoJGNvbG9yLCAuNSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgJGJ0bi1mb2N1cy13aWR0aCByZ2JhKCRjb2xvciwgLjUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBCdXR0b24gc2l6ZXNcbkBtaXhpbiBidXR0b24tc2l6ZSgkcGFkZGluZy15LCAkcGFkZGluZy14LCAkZm9udC1zaXplLCAkbGluZS1oZWlnaHQsICRib3JkZXItcmFkaXVzKSB7XG4gIHBhZGRpbmc6ICRwYWRkaW5nLXkgJHBhZGRpbmcteDtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRmb250LXNpemUpO1xuICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAvLyBNYW51YWxseSBkZWNsYXJlIHRvIHByb3ZpZGUgYW4gb3ZlcnJpZGUgdG8gdGhlIGJyb3dzZXIgZGVmYXVsdFxuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRib3JkZXItcmFkaXVzLCAwKTtcbn1cbiIsIi5mYWRlIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkdHJhbnNpdGlvbi1mYWRlKTtcblxuICAmOm5vdCguc2hvdykge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cblxuLmNvbGxhcHNlIHtcbiAgJjpub3QoLnNob3cpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5jb2xsYXBzaW5nIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJHRyYW5zaXRpb24tY29sbGFwc2UpO1xufVxuIiwiLy8gVGhlIGRyb3Bkb3duIHdyYXBwZXIgKGA8ZGl2PmApXG4uZHJvcHVwLFxuLmRyb3ByaWdodCxcbi5kcm9wZG93bixcbi5kcm9wbGVmdCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgLy8gR2VuZXJhdGUgdGhlIGNhcmV0IGF1dG9tYXRpY2FsbHlcbiAgQGluY2x1ZGUgY2FyZXQoKTtcbn1cblxuLy8gVGhlIGRyb3Bkb3duIG1lbnVcbi5kcm9wZG93bi1tZW51IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR6aW5kZXgtZHJvcGRvd247XG4gIGRpc3BsYXk6IG5vbmU7IC8vIG5vbmUgYnkgZGVmYXVsdCwgYnV0IGJsb2NrIG9uIFwib3BlblwiIG9mIHRoZSBtZW51XG4gIGZsb2F0OiBsZWZ0O1xuICBtaW4td2lkdGg6ICRkcm9wZG93bi1taW4td2lkdGg7XG4gIHBhZGRpbmc6ICRkcm9wZG93bi1wYWRkaW5nLXkgMDtcbiAgbWFyZ2luOiAkZHJvcGRvd24tc3BhY2VyIDAgMDsgLy8gb3ZlcnJpZGUgZGVmYXVsdCB1bFxuICBAaW5jbHVkZSBmb250LXNpemUoJGRyb3Bkb3duLWZvbnQtc2l6ZSk7XG4gIGNvbG9yOiAkZHJvcGRvd24tY29sb3I7XG4gIHRleHQtYWxpZ246IGxlZnQ7IC8vIEVuc3VyZXMgcHJvcGVyIGFsaWdubWVudCBpZiBwYXJlbnQgaGFzIGl0IGNoYW5nZWQgKGUuZy4sIG1vZGFsIGZvb3RlcilcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGRyb3Bkb3duLWJnO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6ICRkcm9wZG93bi1ib3JkZXItd2lkdGggc29saWQgJGRyb3Bkb3duLWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkZHJvcGRvd24tYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJGRyb3Bkb3duLWJveC1zaGFkb3cpO1xufVxuXG5AZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XG5cbiAgICAuZHJvcGRvd24tbWVudSN7JGluZml4fS1sZWZ0IHtcbiAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgbGVmdDogMDtcbiAgICB9XG5cbiAgICAuZHJvcGRvd24tbWVudSN7JGluZml4fS1yaWdodCB7XG4gICAgICByaWdodDogMDtcbiAgICAgIGxlZnQ6IGF1dG87XG4gICAgfVxuICB9XG59XG5cbi8vIEFsbG93IGZvciBkcm9wZG93bnMgdG8gZ28gYm90dG9tIHVwIChha2EsIGRyb3B1cC1tZW51KVxuLy8gSnVzdCBhZGQgLmRyb3B1cCBhZnRlciB0aGUgc3RhbmRhcmQgLmRyb3Bkb3duIGNsYXNzIGFuZCB5b3UncmUgc2V0LlxuLmRyb3B1cCB7XG4gIC5kcm9wZG93bi1tZW51IHtcbiAgICB0b3A6IGF1dG87XG4gICAgYm90dG9tOiAxMDAlO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogJGRyb3Bkb3duLXNwYWNlcjtcbiAgfVxuXG4gIC5kcm9wZG93bi10b2dnbGUge1xuICAgIEBpbmNsdWRlIGNhcmV0KHVwKTtcbiAgfVxufVxuXG4uZHJvcHJpZ2h0IHtcbiAgLmRyb3Bkb3duLW1lbnUge1xuICAgIHRvcDogMDtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiAxMDAlO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWxlZnQ6ICRkcm9wZG93bi1zcGFjZXI7XG4gIH1cblxuICAuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBAaW5jbHVkZSBjYXJldChyaWdodCk7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgdmVydGljYWwtYWxpZ246IDA7XG4gICAgfVxuICB9XG59XG5cbi5kcm9wbGVmdCB7XG4gIC5kcm9wZG93bi1tZW51IHtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDEwMCU7XG4gICAgbGVmdDogYXV0bztcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1yaWdodDogJGRyb3Bkb3duLXNwYWNlcjtcbiAgfVxuXG4gIC5kcm9wZG93bi10b2dnbGUge1xuICAgIEBpbmNsdWRlIGNhcmV0KGxlZnQpO1xuICAgICY6OmJlZm9yZSB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogMDtcbiAgICB9XG4gIH1cbn1cblxuLy8gV2hlbiBlbmFibGVkIFBvcHBlci5qcywgcmVzZXQgYmFzaWMgZHJvcGRvd24gcG9zaXRpb25cbi8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1kdXBsaWNhdGUtc2VsZWN0b3JzXG4uZHJvcGRvd24tbWVudSB7XG4gICZbeC1wbGFjZW1lbnRePVwidG9wXCJdLFxuICAmW3gtcGxhY2VtZW50Xj1cInJpZ2h0XCJdLFxuICAmW3gtcGxhY2VtZW50Xj1cImJvdHRvbVwiXSxcbiAgJlt4LXBsYWNlbWVudF49XCJsZWZ0XCJdIHtcbiAgICByaWdodDogYXV0bztcbiAgICBib3R0b206IGF1dG87XG4gIH1cbn1cblxuLy8gRGl2aWRlcnMgKGJhc2ljYWxseSBhbiBgPGhyPmApIHdpdGhpbiB0aGUgZHJvcGRvd25cbi5kcm9wZG93bi1kaXZpZGVyIHtcbiAgQGluY2x1ZGUgbmF2LWRpdmlkZXIoJGRyb3Bkb3duLWRpdmlkZXItYmcsICRkcm9wZG93bi1kaXZpZGVyLW1hcmdpbi15LCB0cnVlKTtcbn1cblxuLy8gTGlua3MsIGJ1dHRvbnMsIGFuZCBtb3JlIHdpdGhpbiB0aGUgZHJvcGRvd24gbWVudVxuLy9cbi8vIGA8YnV0dG9uPmAtc3BlY2lmaWMgc3R5bGVzIGFyZSBkZW5vdGVkIHdpdGggYC8vIEZvciA8YnV0dG9uPnNgXG4uZHJvcGRvd24taXRlbSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTsgLy8gRm9yIGA8YnV0dG9uPmBzXG4gIHBhZGRpbmc6ICRkcm9wZG93bi1pdGVtLXBhZGRpbmcteSAkZHJvcGRvd24taXRlbS1wYWRkaW5nLXg7XG4gIGNsZWFyOiBib3RoO1xuICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcbiAgY29sb3I6ICRkcm9wZG93bi1saW5rLWNvbG9yO1xuICB0ZXh0LWFsaWduOiBpbmhlcml0OyAvLyBGb3IgYDxidXR0b24+YHNcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgLy8gcHJldmVudCBsaW5rcyBmcm9tIHJhbmRvbWx5IGJyZWFraW5nIG9udG8gbmV3IGxpbmVzXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAvLyBGb3IgYDxidXR0b24+YHNcbiAgYm9yZGVyOiAwOyAvLyBGb3IgYDxidXR0b24+YHNcblxuICAvLyBQcmV2ZW50IGRyb3Bkb3duIG92ZXJmbG93IGlmIHRoZXJlJ3Mgbm8gcGFkZGluZ1xuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL3B1bGwvMjc3MDNcbiAgQGlmICRkcm9wZG93bi1wYWRkaW5nLXkgPT0gMCB7XG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygkZHJvcGRvd24taW5uZXItYm9yZGVyLXJhZGl1cyk7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmFkaXVzKCRkcm9wZG93bi1pbm5lci1ib3JkZXItcmFkaXVzKTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICBjb2xvcjogJGRyb3Bkb3duLWxpbmstaG92ZXItY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIEBpbmNsdWRlIGdyYWRpZW50LWJnKCRkcm9wZG93bi1saW5rLWhvdmVyLWJnKTtcbiAgfVxuXG4gICYuYWN0aXZlLFxuICAmOmFjdGl2ZSB7XG4gICAgY29sb3I6ICRkcm9wZG93bi1saW5rLWFjdGl2ZS1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGRyb3Bkb3duLWxpbmstYWN0aXZlLWJnKTtcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICY6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAvLyBSZW1vdmUgQ1NTIGdyYWRpZW50cyBpZiB0aGV5J3JlIGVuYWJsZWRcbiAgICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLmRyb3Bkb3duLW1lbnUuc2hvdyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vLyBEcm9wZG93biBzZWN0aW9uIGhlYWRlcnNcbi5kcm9wZG93bi1oZWFkZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogJGRyb3Bkb3duLXBhZGRpbmcteSAkZHJvcGRvd24taXRlbS1wYWRkaW5nLXg7XG4gIG1hcmdpbi1ib3R0b206IDA7IC8vIGZvciB1c2Ugd2l0aCBoZWFkaW5nIGVsZW1lbnRzXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udC1zaXplLXNtKTtcbiAgY29sb3I6ICRkcm9wZG93bi1oZWFkZXItY29sb3I7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IC8vIGFzIHdpdGggPiBsaSA+IGFcbn1cblxuLy8gRHJvcGRvd24gdGV4dFxuLmRyb3Bkb3duLWl0ZW0tdGV4dCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAkZHJvcGRvd24taXRlbS1wYWRkaW5nLXkgJGRyb3Bkb3duLWl0ZW0tcGFkZGluZy14O1xuICBjb2xvcjogJGRyb3Bkb3duLWxpbmstY29sb3I7XG59XG4iLCJAbWl4aW4gY2FyZXQtZG93bigpIHtcbiAgYm9yZGVyLXRvcDogJGNhcmV0LXdpZHRoIHNvbGlkO1xuICBib3JkZXItcmlnaHQ6ICRjYXJldC13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWJvdHRvbTogMDtcbiAgYm9yZGVyLWxlZnQ6ICRjYXJldC13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbn1cblxuQG1peGluIGNhcmV0LXVwKCkge1xuICBib3JkZXItdG9wOiAwO1xuICBib3JkZXItcmlnaHQ6ICRjYXJldC13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWJvdHRvbTogJGNhcmV0LXdpZHRoIHNvbGlkO1xuICBib3JkZXItbGVmdDogJGNhcmV0LXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG5AbWl4aW4gY2FyZXQtcmlnaHQoKSB7XG4gIGJvcmRlci10b3A6ICRjYXJldC13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJpZ2h0OiAwO1xuICBib3JkZXItYm90dG9tOiAkY2FyZXQtd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1sZWZ0OiAkY2FyZXQtd2lkdGggc29saWQ7XG59XG5cbkBtaXhpbiBjYXJldC1sZWZ0KCkge1xuICBib3JkZXItdG9wOiAkY2FyZXQtd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodDogJGNhcmV0LXdpZHRoIHNvbGlkO1xuICBib3JkZXItYm90dG9tOiAkY2FyZXQtd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbkBtaXhpbiBjYXJldCgkZGlyZWN0aW9uOiBkb3duKSB7XG4gIEBpZiAkZW5hYmxlLWNhcmV0IHtcbiAgICAmOjphZnRlciB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tbGVmdDogJGNhcmV0LXNwYWNpbmc7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogJGNhcmV0LXZlcnRpY2FsLWFsaWduO1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIEBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgICBAaW5jbHVkZSBjYXJldC1kb3duKCk7XG4gICAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgICBAaW5jbHVkZSBjYXJldC11cCgpO1xuICAgICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgICAgQGluY2x1ZGUgY2FyZXQtcmlnaHQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRjYXJldC1zcGFjaW5nO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogJGNhcmV0LXZlcnRpY2FsLWFsaWduO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBAaW5jbHVkZSBjYXJldC1sZWZ0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjplbXB0eTo6YWZ0ZXIge1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBIb3Jpem9udGFsIGRpdmlkZXJzXG4vL1xuLy8gRGl2aWRlcnMgKGJhc2ljYWxseSBhbiBocikgd2l0aGluIGRyb3Bkb3ducyBhbmQgbmF2IGxpc3RzXG5cbkBtaXhpbiBuYXYtZGl2aWRlcigkY29sb3I6ICRuYXYtZGl2aWRlci1jb2xvciwgJG1hcmdpbi15OiAkbmF2LWRpdmlkZXItbWFyZ2luLXksICRpZ25vcmUtd2FybmluZzogZmFsc2UpIHtcbiAgaGVpZ2h0OiAwO1xuICBtYXJnaW46ICRtYXJnaW4teSAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgJGNvbG9yO1xuICBAaW5jbHVkZSBkZXByZWNhdGUoXCJUaGUgYG5hdi1kaXZpZGVyKClgIG1peGluXCIsIFwidjQuNC4wXCIsIFwidjVcIiwgJGlnbm9yZS13YXJuaW5nKTtcbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXG4vLyBNYWtlIHRoZSBkaXYgYmVoYXZlIGxpa2UgYSBidXR0b25cbi5idG4tZ3JvdXAsXG4uYnRuLWdyb3VwLXZlcnRpY2FsIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgLy8gbWF0Y2ggLmJ0biBhbGlnbm1lbnQgZ2l2ZW4gZm9udC1zaXplIGhhY2sgYWJvdmVcblxuICA+IC5idG4ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmbGV4OiAxIDEgYXV0bztcblxuICAgIC8vIEJyaW5nIHRoZSBob3ZlciwgZm9jdXNlZCwgYW5kIFwiYWN0aXZlXCIgYnV0dG9ucyB0byB0aGUgZnJvbnQgdG8gb3ZlcmxheVxuICAgIC8vIHRoZSBib3JkZXJzIHByb3Blcmx5XG4gICAgQGluY2x1ZGUgaG92ZXIoKSB7XG4gICAgICB6LWluZGV4OiAxO1xuICAgIH1cbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlLFxuICAgICYuYWN0aXZlIHtcbiAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuICB9XG59XG5cbi8vIE9wdGlvbmFsOiBHcm91cCBtdWx0aXBsZSBidXR0b24gZ3JvdXBzIHRvZ2V0aGVyIGZvciBhIHRvb2xiYXJcbi5idG4tdG9vbGJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gIC5pbnB1dC1ncm91cCB7XG4gICAgd2lkdGg6IGF1dG87XG4gIH1cbn1cblxuLmJ0bi1ncm91cCB7XG4gIC8vIFByZXZlbnQgZG91YmxlIGJvcmRlcnMgd2hlbiBidXR0b25zIGFyZSBuZXh0IHRvIGVhY2ggb3RoZXJcbiAgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLFxuICA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgIG1hcmdpbi1sZWZ0OiAtJGJ0bi1ib3JkZXItd2lkdGg7XG4gIH1cblxuICAvLyBSZXNldCByb3VuZGVkIGNvcm5lcnNcbiAgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLFxuICA+IC5idG4tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4ge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yaWdodC1yYWRpdXMoMCk7XG4gIH1cblxuICA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksXG4gID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4ge1xuICAgIEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygwKTtcbiAgfVxufVxuXG4vLyBTaXppbmdcbi8vXG4vLyBSZW1peCB0aGUgZGVmYXVsdCBidXR0b24gc2l6aW5nIGNsYXNzZXMgaW50byBuZXcgb25lcyBmb3IgZWFzaWVyIG1hbmlwdWxhdGlvbi5cblxuLmJ0bi1ncm91cC1zbSA+IC5idG4geyBAZXh0ZW5kIC5idG4tc207IH1cbi5idG4tZ3JvdXAtbGcgPiAuYnRuIHsgQGV4dGVuZCAuYnRuLWxnOyB9XG5cblxuLy9cbi8vIFNwbGl0IGJ1dHRvbiBkcm9wZG93bnNcbi8vXG5cbi5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAkYnRuLXBhZGRpbmcteCAqIC43NTtcbiAgcGFkZGluZy1sZWZ0OiAkYnRuLXBhZGRpbmcteCAqIC43NTtcblxuICAmOjphZnRlcixcbiAgLmRyb3B1cCAmOjphZnRlcixcbiAgLmRyb3ByaWdodCAmOjphZnRlciB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cblxuICAuZHJvcGxlZnQgJjo6YmVmb3JlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuLmJ0bi1zbSArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAkYnRuLXBhZGRpbmcteC1zbSAqIC43NTtcbiAgcGFkZGluZy1sZWZ0OiAkYnRuLXBhZGRpbmcteC1zbSAqIC43NTtcbn1cblxuLmJ0bi1sZyArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAkYnRuLXBhZGRpbmcteC1sZyAqIC43NTtcbiAgcGFkZGluZy1sZWZ0OiAkYnRuLXBhZGRpbmcteC1sZyAqIC43NTtcbn1cblxuXG4vLyBUaGUgY2xpY2thYmxlIGJ1dHRvbiBmb3IgdG9nZ2xpbmcgdGhlIG1lbnVcbi8vIFNldCB0aGUgc2FtZSBpbnNldCBzaGFkb3cgYXMgdGhlIDphY3RpdmUgc3RhdGVcbi5idG4tZ3JvdXAuc2hvdyAuZHJvcGRvd24tdG9nZ2xlIHtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdygkYnRuLWFjdGl2ZS1ib3gtc2hhZG93KTtcblxuICAvLyBTaG93IG5vIHNoYWRvdyBmb3IgYC5idG4tbGlua2Agc2luY2UgaXQgaGFzIG5vIG90aGVyIGJ1dHRvbiBzdHlsZXMuXG4gICYuYnRuLWxpbmsge1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3cobm9uZSk7XG4gIH1cbn1cblxuXG4vL1xuLy8gVmVydGljYWwgYnV0dG9uIGdyb3Vwc1xuLy9cblxuLmJ0bi1ncm91cC12ZXJ0aWNhbCB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICA+IC5idG4sXG4gID4gLmJ0bi1ncm91cCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksXG4gID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgbWFyZ2luLXRvcDogLSRidG4tYm9yZGVyLXdpZHRoO1xuICB9XG5cbiAgLy8gUmVzZXQgcm91bmRlZCBjb3JuZXJzXG4gID4gLmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSxcbiAgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHtcbiAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cygwKTtcbiAgfVxuXG4gID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSxcbiAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXMoMCk7XG4gIH1cbn1cblxuXG4vLyBDaGVja2JveCBhbmQgcmFkaW8gb3B0aW9uc1xuLy9cbi8vIEluIG9yZGVyIHRvIHN1cHBvcnQgdGhlIGJyb3dzZXIncyBmb3JtIHZhbGlkYXRpb24gZmVlZGJhY2ssIHBvd2VyZWQgYnkgdGhlXG4vLyBgcmVxdWlyZWRgIGF0dHJpYnV0ZSwgd2UgaGF2ZSB0byBcImhpZGVcIiB0aGUgaW5wdXRzIHZpYSBgY2xpcGAuIFdlIGNhbm5vdCB1c2Vcbi8vIGBkaXNwbGF5OiBub25lO2Agb3IgYHZpc2liaWxpdHk6IGhpZGRlbjtgIGFzIHRoYXQgYWxzbyBoaWRlcyB0aGUgcG9wb3Zlci5cbi8vIFNpbXBseSB2aXN1YWxseSBoaWRpbmcgdGhlIGlucHV0cyB2aWEgYG9wYWNpdHlgIHdvdWxkIGxlYXZlIHRoZW0gY2xpY2thYmxlIGluXG4vLyBjZXJ0YWluIGNhc2VzIHdoaWNoIGlzIHByZXZlbnRlZCBieSB1c2luZyBgY2xpcGAgYW5kIGBwb2ludGVyLWV2ZW50c2AuXG4vLyBUaGlzIHdheSwgd2UgZW5zdXJlIGEgRE9NIGVsZW1lbnQgaXMgdmlzaWJsZSB0byBwb3NpdGlvbiB0aGUgcG9wb3ZlciBmcm9tLlxuLy9cbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8xMjc5NCBhbmRcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzE0NTU5IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG4uYnRuLWdyb3VwLXRvZ2dsZSB7XG4gID4gLmJ0bixcbiAgPiAuYnRuLWdyb3VwID4gLmJ0biB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDsgLy8gT3ZlcnJpZGUgZGVmYXVsdCBgPGxhYmVsPmAgdmFsdWVcblxuICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbiAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cbi8vXG4vLyBCYXNlIHN0eWxlc1xuLy9cblxuLmlucHV0LWdyb3VwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7IC8vIEZvciBmb3JtIHZhbGlkYXRpb24gZmVlZGJhY2tcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIHdpZHRoOiAxMDAlO1xuXG4gID4gLmZvcm0tY29udHJvbCxcbiAgPiAuZm9ybS1jb250cm9sLXBsYWludGV4dCxcbiAgPiAuY3VzdG9tLXNlbGVjdCxcbiAgPiAuY3VzdG9tLWZpbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgLy8gRm9yIGZvY3VzIHN0YXRlJ3Mgei1pbmRleFxuICAgIGZsZXg6IDEgMSAwJTtcbiAgICBtaW4td2lkdGg6IDA7IC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM2MjQ3MTQwL3doeS1kb250LWZsZXgtaXRlbXMtc2hyaW5rLXBhc3QtY29udGVudC1zaXplXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICsgLmZvcm0tY29udHJvbCxcbiAgICArIC5jdXN0b20tc2VsZWN0LFxuICAgICsgLmN1c3RvbS1maWxlIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtJGlucHV0LWJvcmRlci13aWR0aDtcbiAgICB9XG4gIH1cblxuICAvLyBCcmluZyB0aGUgXCJhY3RpdmVcIiBmb3JtIGNvbnRyb2wgdG8gdGhlIHRvcCBvZiBzdXJyb3VuZGluZyBlbGVtZW50c1xuICA+IC5mb3JtLWNvbnRyb2w6Zm9jdXMsXG4gID4gLmN1c3RvbS1zZWxlY3Q6Zm9jdXMsXG4gID4gLmN1c3RvbS1maWxlIC5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7XG4gICAgei1pbmRleDogMztcbiAgfVxuXG4gIC8vIEJyaW5nIHRoZSBjdXN0b20gZmlsZSBpbnB1dCBhYm92ZSB0aGUgbGFiZWxcbiAgPiAuY3VzdG9tLWZpbGUgLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIHtcbiAgICB6LWluZGV4OiA0O1xuICB9XG5cbiAgPiAuZm9ybS1jb250cm9sLFxuICA+IC5jdXN0b20tc2VsZWN0IHtcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkgeyBAaW5jbHVkZSBib3JkZXItcmlnaHQtcmFkaXVzKDApOyB9XG4gICAgJjpub3QoOmZpcnN0LWNoaWxkKSB7IEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygwKTsgfVxuICB9XG5cbiAgLy8gQ3VzdG9tIGZpbGUgaW5wdXRzIGhhdmUgbW9yZSBjb21wbGV4IG1hcmt1cCwgdGh1cyByZXF1aXJpbmcgZGlmZmVyZW50XG4gIC8vIGJvcmRlci1yYWRpdXMgb3ZlcnJpZGVzLlxuICA+IC5jdXN0b20tZmlsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgJjpub3QoOmxhc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbCxcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkgLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7IEBpbmNsdWRlIGJvcmRlci1yaWdodC1yYWRpdXMoMCk7IH1cbiAgICAmOm5vdCg6Zmlyc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbCB7IEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygwKTsgfVxuICB9XG59XG5cblxuLy8gUHJlcGVuZCBhbmQgYXBwZW5kXG4vL1xuLy8gV2hpbGUgaXQgcmVxdWlyZXMgb25lIGV4dHJhIGxheWVyIG9mIEhUTUwgZm9yIGVhY2gsIGRlZGljYXRlZCBwcmVwZW5kIGFuZFxuLy8gYXBwZW5kIGVsZW1lbnRzIGFsbG93IHVzIHRvIDEpIGJlIGxlc3MgY2xldmVyLCAyKSBzaW1wbGlmeSBvdXIgc2VsZWN0b3JzLCBhbmRcbi8vIDMpIHN1cHBvcnQgSFRNTDUgZm9ybSB2YWxpZGF0aW9uLlxuXG4uaW5wdXQtZ3JvdXAtcHJlcGVuZCxcbi5pbnB1dC1ncm91cC1hcHBlbmQge1xuICBkaXNwbGF5OiBmbGV4O1xuXG4gIC8vIEVuc3VyZSBidXR0b25zIGFyZSBhbHdheXMgYWJvdmUgaW5wdXRzIGZvciBtb3JlIHZpc3VhbGx5IHBsZWFzaW5nIGJvcmRlcnMuXG4gIC8vIFRoaXMgaXNuJ3QgbmVlZGVkIGZvciBgLmlucHV0LWdyb3VwLXRleHRgIHNpbmNlIGl0IHNoYXJlcyB0aGUgc2FtZSBib3JkZXItY29sb3JcbiAgLy8gYXMgb3VyIGlucHV0cy5cbiAgLmJ0biB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDI7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIHotaW5kZXg6IDM7XG4gICAgfVxuICB9XG5cbiAgLmJ0biArIC5idG4sXG4gIC5idG4gKyAuaW5wdXQtZ3JvdXAtdGV4dCxcbiAgLmlucHV0LWdyb3VwLXRleHQgKyAuaW5wdXQtZ3JvdXAtdGV4dCxcbiAgLmlucHV0LWdyb3VwLXRleHQgKyAuYnRuIHtcbiAgICBtYXJnaW4tbGVmdDogLSRpbnB1dC1ib3JkZXItd2lkdGg7XG4gIH1cbn1cblxuLmlucHV0LWdyb3VwLXByZXBlbmQgeyBtYXJnaW4tcmlnaHQ6IC0kaW5wdXQtYm9yZGVyLXdpZHRoOyB9XG4uaW5wdXQtZ3JvdXAtYXBwZW5kIHsgbWFyZ2luLWxlZnQ6IC0kaW5wdXQtYm9yZGVyLXdpZHRoOyB9XG5cblxuLy8gVGV4dHVhbCBhZGRvbnNcbi8vXG4vLyBTZXJ2ZXMgYXMgYSBjYXRjaC1hbGwgZWxlbWVudCBmb3IgYW55IHRleHQgb3IgcmFkaW8vY2hlY2tib3ggaW5wdXQgeW91IHdpc2hcbi8vIHRvIHByZXBlbmQgb3IgYXBwZW5kIHRvIGFuIGlucHV0LlxuXG4uaW5wdXQtZ3JvdXAtdGV4dCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXkgJGlucHV0LXBhZGRpbmcteDtcbiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gQWxsb3cgdXNlIG9mIDxsYWJlbD4gZWxlbWVudHMgYnkgb3ZlcnJpZGluZyBvdXIgZGVmYXVsdCBtYXJnaW4tYm90dG9tXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaW5wdXQtZm9udC1zaXplKTsgLy8gTWF0Y2ggaW5wdXRzXG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGlucHV0LWdyb3VwLWFkZG9uLWNvbG9yO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1ncm91cC1hZGRvbi1iZztcbiAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLXdpZHRoIHNvbGlkICRpbnB1dC1ncm91cC1hZGRvbi1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGlucHV0LWJvcmRlci1yYWRpdXMpO1xuXG4gIC8vIE51a2UgZGVmYXVsdCBtYXJnaW5zIGZyb20gY2hlY2tib3hlcyBhbmQgcmFkaW9zIHRvIHZlcnRpY2FsbHkgY2VudGVyIHdpdGhpbi5cbiAgaW5wdXRbdHlwZT1cInJhZGlvXCJdLFxuICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbn1cblxuXG4vLyBTaXppbmdcbi8vXG4vLyBSZW1peCB0aGUgZGVmYXVsdCBmb3JtIGNvbnRyb2wgc2l6aW5nIGNsYXNzZXMgaW50byBuZXcgb25lcyBmb3IgZWFzaWVyXG4vLyBtYW5pcHVsYXRpb24uXG5cbi5pbnB1dC1ncm91cC1sZyA+IC5mb3JtLWNvbnRyb2w6bm90KHRleHRhcmVhKSxcbi5pbnB1dC1ncm91cC1sZyA+IC5jdXN0b20tc2VsZWN0IHtcbiAgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0LWxnO1xufVxuXG4uaW5wdXQtZ3JvdXAtbGcgPiAuZm9ybS1jb250cm9sLFxuLmlucHV0LWdyb3VwLWxnID4gLmN1c3RvbS1zZWxlY3QsXG4uaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuYnRuLFxuLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4ge1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZy15LWxnICRpbnB1dC1wYWRkaW5nLXgtbGc7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaW5wdXQtZm9udC1zaXplLWxnKTtcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodC1sZztcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cy1sZyk7XG59XG5cbi5pbnB1dC1ncm91cC1zbSA+IC5mb3JtLWNvbnRyb2w6bm90KHRleHRhcmVhKSxcbi5pbnB1dC1ncm91cC1zbSA+IC5jdXN0b20tc2VsZWN0IHtcbiAgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0LXNtO1xufVxuXG4uaW5wdXQtZ3JvdXAtc20gPiAuZm9ybS1jb250cm9sLFxuLmlucHV0LWdyb3VwLXNtID4gLmN1c3RvbS1zZWxlY3QsXG4uaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuYnRuLFxuLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4ge1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZy15LXNtICRpbnB1dC1wYWRkaW5nLXgtc207XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaW5wdXQtZm9udC1zaXplLXNtKTtcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodC1zbTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cy1zbSk7XG59XG5cbi5pbnB1dC1ncm91cC1sZyA+IC5jdXN0b20tc2VsZWN0LFxuLmlucHV0LWdyb3VwLXNtID4gLmN1c3RvbS1zZWxlY3Qge1xuICBwYWRkaW5nLXJpZ2h0OiAkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXggKyAkY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZztcbn1cblxuXG4vLyBQcmVwZW5kIGFuZCBhcHBlbmQgcm91bmRlZCBjb3JuZXJzXG4vL1xuLy8gVGhlc2UgcnVsZXNldHMgbXVzdCBjb21lIGFmdGVyIHRoZSBzaXppbmcgb25lcyB0byBwcm9wZXJseSBvdmVycmlkZSBzbSBhbmQgbGdcbi8vIGJvcmRlci1yYWRpdXMgdmFsdWVzIHdoZW4gZXh0ZW5kaW5nLiBUaGV5J3JlIG1vcmUgc3BlY2lmaWMgdGhhbiB3ZSdkIGxpa2Vcbi8vIHdpdGggdGhlIGAuaW5wdXQtZ3JvdXAgPmAgcGFydCwgYnV0IHdpdGhvdXQgaXQsIHdlIGNhbm5vdCBvdmVycmlkZSB0aGUgc2l6aW5nLlxuXG5cbi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0bixcbi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuLFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmlucHV0LWdyb3VwLXRleHQsXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOmxhc3QtY2hpbGQgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpsYXN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpsYXN0LWNoaWxkKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1yaWdodC1yYWRpdXMoMCk7XG59XG5cbi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuLFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuLFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCkgPiAuaW5wdXQtZ3JvdXAtdGV4dCxcbi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kOmZpcnN0LWNoaWxkID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSxcbi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kOmZpcnN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpmaXJzdC1jaGlsZCkge1xuICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoMCk7XG59XG4iLCIvLyBFbWJlZGRlZCBpY29ucyBmcm9tIE9wZW4gSWNvbmljLlxuLy8gUmVsZWFzZWQgdW5kZXIgTUlUIGFuZCBjb3B5cmlnaHQgMjAxNCBXYXlidXJ5LlxuLy8gaHR0cHM6Ly91c2VpY29uaWMuY29tL29wZW5cblxuXG4vLyBDaGVja2JveGVzIGFuZCByYWRpb3Ncbi8vXG4vLyBCYXNlIGNsYXNzIHRha2VzIGNhcmUgb2YgYWxsIHRoZSBrZXkgYmVoYXZpb3JhbCBhc3BlY3RzLlxuXG4uY3VzdG9tLWNvbnRyb2wge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtaW4taGVpZ2h0OiAkZm9udC1zaXplLWJhc2UgKiAkbGluZS1oZWlnaHQtYmFzZTtcbiAgcGFkZGluZy1sZWZ0OiAkY3VzdG9tLWNvbnRyb2wtZ3V0dGVyICsgJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplO1xufVxuXG4uY3VzdG9tLWNvbnRyb2wtaW5saW5lIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIG1hcmdpbi1yaWdodDogJGN1c3RvbS1jb250cm9sLXNwYWNlci14O1xufVxuXG4uY3VzdG9tLWNvbnRyb2wtaW5wdXQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IC0xOyAvLyBQdXQgdGhlIGlucHV0IGJlaGluZCB0aGUgbGFiZWwgc28gaXQgZG9lc24ndCBvdmVybGF5IHRleHRcbiAgd2lkdGg6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZTtcbiAgaGVpZ2h0OiAoJGZvbnQtc2l6ZS1iYXNlICogJGxpbmUtaGVpZ2h0LWJhc2UgKyAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemUpIC8gMjtcbiAgb3BhY2l0eTogMDtcblxuICAmOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gICAgY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1jb2xvcjtcbiAgICBib3JkZXItY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1ib3JkZXItY29sb3I7XG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWJnKTtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1ib3gtc2hhZG93KTtcbiAgfVxuXG4gICY6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gICAgLy8gdGhlIG1peGluIGlzIG5vdCB1c2VkIGhlcmUgdG8gbWFrZSBzdXJlIHRoZXJlIGlzIGZlZWRiYWNrXG4gICAgQGlmICRlbmFibGUtc2hhZG93cyB7XG4gICAgICBib3gtc2hhZG93OiAkaW5wdXQtYm94LXNoYWRvdywgJGlucHV0LWZvY3VzLWJveC1zaGFkb3c7XG4gICAgfSBAZWxzZSB7XG4gICAgICBib3gtc2hhZG93OiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWZvY3VzLWJveC1zaGFkb3c7XG4gICAgfVxuICB9XG5cbiAgJjpmb2N1czpub3QoOmNoZWNrZWQpIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICAgIGJvcmRlci1jb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1mb2N1cy1ib3JkZXItY29sb3I7XG4gIH1cblxuICAmOm5vdCg6ZGlzYWJsZWQpOmFjdGl2ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgICBjb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1hY3RpdmUtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1hY3RpdmUtYmc7XG4gICAgYm9yZGVyLWNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1ib3JkZXItY29sb3I7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1ib3gtc2hhZG93KTtcbiAgfVxuXG4gIC8vIFVzZSBbZGlzYWJsZWRdIGFuZCA6ZGlzYWJsZWQgdG8gd29yayBhcm91bmQgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yODI0N1xuICAmW2Rpc2FibGVkXSxcbiAgJjpkaXNhYmxlZCB7XG4gICAgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwge1xuICAgICAgY29sb3I6ICRjdXN0b20tY29udHJvbC1sYWJlbC1kaXNhYmxlZC1jb2xvcjtcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1kaXNhYmxlZC1iZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gQ3VzdG9tIGNvbnRyb2wgaW5kaWNhdG9yc1xuLy9cbi8vIEJ1aWxkIHRoZSBjdXN0b20gY29udHJvbHMgb3V0IG9mIHBzZXVkby1lbGVtZW50cy5cblxuLmN1c3RvbS1jb250cm9sLWxhYmVsIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBjb2xvcjogJGN1c3RvbS1jb250cm9sLWxhYmVsLWNvbG9yO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICBjdXJzb3I6ICRjdXN0b20tY29udHJvbC1jdXJzb3I7XG5cbiAgLy8gQmFja2dyb3VuZC1jb2xvciBhbmQgKHdoZW4gZW5hYmxlZCkgZ3JhZGllbnRcbiAgJjo6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAoJGZvbnQtc2l6ZS1iYXNlICogJGxpbmUtaGVpZ2h0LWJhc2UgLSAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemUpIC8gMjtcbiAgICBsZWZ0OiAtKCRjdXN0b20tY29udHJvbC1ndXR0ZXIgKyAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemUpO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemU7XG4gICAgaGVpZ2h0OiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemU7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnO1xuICAgIGJvcmRlcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1ib3JkZXItY29sb3Igc29saWQgJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1ib3JkZXItd2lkdGg7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJveC1zaGFkb3cpO1xuICB9XG5cbiAgLy8gRm9yZWdyb3VuZCAoaWNvbilcbiAgJjo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6ICgkZm9udC1zaXplLWJhc2UgKiAkbGluZS1oZWlnaHQtYmFzZSAtICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZSkgLyAyO1xuICAgIGxlZnQ6IC0oJGN1c3RvbS1jb250cm9sLWd1dHRlciArICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZSk7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZTtcbiAgICBoZWlnaHQ6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZTtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJhY2tncm91bmQ6IG5vLXJlcGVhdCA1MCUgLyAjeyRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmctc2l6ZX07XG4gIH1cbn1cblxuXG4vLyBDaGVja2JveGVzXG4vL1xuLy8gVHdlYWsganVzdCBhIGZldyB0aGluZ3MgZm9yIGNoZWNrYm94ZXMuXG5cbi5jdXN0b20tY2hlY2tib3gge1xuICAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1ib3JkZXItcmFkaXVzKTtcbiAgfVxuXG4gIC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWljb24tY2hlY2tlZCk7XG4gICAgfVxuICB9XG5cbiAgLmN1c3RvbS1jb250cm9sLWlucHV0OmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBib3JkZXItY29sb3I6ICRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWluZGV0ZXJtaW5hdGUtYm9yZGVyLWNvbG9yO1xuICAgICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1iZyk7XG4gICAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWluZGV0ZXJtaW5hdGUtYm94LXNoYWRvdyk7XG4gICAgfVxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGVzY2FwZS1zdmcoJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaWNvbi1pbmRldGVybWluYXRlKTtcbiAgICB9XG4gIH1cblxuICAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQge1xuICAgICY6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1kaXNhYmxlZC1iZztcbiAgICB9XG4gICAgJjppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWRpc2FibGVkLWJnO1xuICAgIH1cbiAgfVxufVxuXG4vLyBSYWRpb3Ncbi8vXG4vLyBUd2VhayBqdXN0IGEgZmV3IHRoaW5ncyBmb3IgcmFkaW9zLlxuXG4uY3VzdG9tLXJhZGlvIHtcbiAgLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICAgIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9wZXJ0eS1ibGFja2xpc3RcbiAgICBib3JkZXItcmFkaXVzOiAkY3VzdG9tLXJhZGlvLWluZGljYXRvci1ib3JkZXItcmFkaXVzO1xuICB9XG5cbiAgLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwge1xuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGVzY2FwZS1zdmcoJGN1c3RvbS1yYWRpby1pbmRpY2F0b3ItaWNvbi1jaGVja2VkKTtcbiAgICB9XG4gIH1cblxuICAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQge1xuICAgICY6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1kaXNhYmxlZC1iZztcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBzd2l0Y2hlc1xuLy9cbi8vIFR3ZWFrIGEgZmV3IHRoaW5ncyBmb3Igc3dpdGNoZXNcblxuLmN1c3RvbS1zd2l0Y2gge1xuICBwYWRkaW5nLWxlZnQ6ICRjdXN0b20tc3dpdGNoLXdpZHRoICsgJGN1c3RvbS1jb250cm9sLWd1dHRlcjtcblxuICAuY3VzdG9tLWNvbnRyb2wtbGFiZWwge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBsZWZ0OiAtKCRjdXN0b20tc3dpdGNoLXdpZHRoICsgJGN1c3RvbS1jb250cm9sLWd1dHRlcik7XG4gICAgICB3aWR0aDogJGN1c3RvbS1zd2l0Y2gtd2lkdGg7XG4gICAgICBwb2ludGVyLWV2ZW50czogYWxsO1xuICAgICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LWJsYWNrbGlzdFxuICAgICAgYm9yZGVyLXJhZGl1czogJGN1c3RvbS1zd2l0Y2gtaW5kaWNhdG9yLWJvcmRlci1yYWRpdXM7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgdG9wOiBhZGQoKCRmb250LXNpemUtYmFzZSAqICRsaW5lLWhlaWdodC1iYXNlIC0gJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplKSAvIDIsICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm9yZGVyLXdpZHRoICogMik7XG4gICAgICBsZWZ0OiBhZGQoLSgkY3VzdG9tLXN3aXRjaC13aWR0aCArICRjdXN0b20tY29udHJvbC1ndXR0ZXIpLCAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJvcmRlci13aWR0aCAqIDIpO1xuICAgICAgd2lkdGg6ICRjdXN0b20tc3dpdGNoLWluZGljYXRvci1zaXplO1xuICAgICAgaGVpZ2h0OiAkY3VzdG9tLXN3aXRjaC1pbmRpY2F0b3Itc2l6ZTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm9yZGVyLWNvbG9yO1xuICAgICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LWJsYWNrbGlzdFxuICAgICAgYm9yZGVyLXJhZGl1czogJGN1c3RvbS1zd2l0Y2gtaW5kaWNhdG9yLWJvcmRlci1yYWRpdXM7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKHRyYW5zZm9ybSAuMTVzIGVhc2UtaW4tb3V0LCAkY3VzdG9tLWZvcm1zLXRyYW5zaXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCRjdXN0b20tc3dpdGNoLXdpZHRoIC0gJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplKTtcbiAgICB9XG4gIH1cblxuICAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQge1xuICAgICY6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1kaXNhYmxlZC1iZztcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTZWxlY3Rcbi8vXG4vLyBSZXBsYWNlcyB0aGUgYnJvd3NlciBkZWZhdWx0IHNlbGVjdCB3aXRoIGEgY3VzdG9tIG9uZSwgbW9zdGx5IHB1bGxlZCBmcm9tXG4vLyBodHRwczovL3ByaW1lci5naXRodWIuaW8vLlxuLy9cblxuLmN1c3RvbS1zZWxlY3Qge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6ICRjdXN0b20tc2VsZWN0LWhlaWdodDtcbiAgcGFkZGluZzogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15ICgkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXggKyAkY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZykgJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15ICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteDtcbiAgZm9udC1mYW1pbHk6ICRjdXN0b20tc2VsZWN0LWZvbnQtZmFtaWx5O1xuICBAaW5jbHVkZSBmb250LXNpemUoJGN1c3RvbS1zZWxlY3QtZm9udC1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRjdXN0b20tc2VsZWN0LWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGN1c3RvbS1zZWxlY3QtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkY3VzdG9tLXNlbGVjdC1jb2xvcjtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgYmFja2dyb3VuZDogJGN1c3RvbS1zZWxlY3QtYmcgJGN1c3RvbS1zZWxlY3QtYmFja2dyb3VuZDtcbiAgYm9yZGVyOiAkY3VzdG9tLXNlbGVjdC1ib3JkZXItd2lkdGggc29saWQgJGN1c3RvbS1zZWxlY3QtYm9yZGVyLWNvbG9yO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRjdXN0b20tc2VsZWN0LWJvcmRlci1yYWRpdXMsIDApO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tc2VsZWN0LWJveC1zaGFkb3cpO1xuICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICY6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogJGN1c3RvbS1zZWxlY3QtZm9jdXMtYm9yZGVyLWNvbG9yO1xuICAgIG91dGxpbmU6IDA7XG4gICAgQGlmICRlbmFibGUtc2hhZG93cyB7XG4gICAgICBib3gtc2hhZG93OiAkY3VzdG9tLXNlbGVjdC1ib3gtc2hhZG93LCAkY3VzdG9tLXNlbGVjdC1mb2N1cy1ib3gtc2hhZG93O1xuICAgIH0gQGVsc2Uge1xuICAgICAgYm94LXNoYWRvdzogJGN1c3RvbS1zZWxlY3QtZm9jdXMtYm94LXNoYWRvdztcbiAgICB9XG5cbiAgICAmOjotbXMtdmFsdWUge1xuICAgICAgLy8gRm9yIHZpc3VhbCBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIHBsYXRmb3Jtcy9icm93c2VycyxcbiAgICAgIC8vIHN1cHByZXNzIHRoZSBkZWZhdWx0IHdoaXRlIHRleHQgb24gYmx1ZSBiYWNrZ3JvdW5kIGhpZ2hsaWdodCBnaXZlbiB0b1xuICAgICAgLy8gdGhlIHNlbGVjdGVkIG9wdGlvbiB0ZXh0IHdoZW4gdGhlIChzdGlsbCBjbG9zZWQpIDxzZWxlY3Q+IHJlY2VpdmVzIGZvY3VzXG4gICAgICAvLyBpbiBJRSBhbmQgKHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucykgRWRnZS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzE5Mzk4LlxuICAgICAgY29sb3I6ICRpbnB1dC1jb2xvcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iZztcbiAgICB9XG4gIH1cblxuICAmW211bHRpcGxlXSxcbiAgJltzaXplXTpub3QoW3NpemU9XCIxXCJdKSB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICRjdXN0b20tc2VsZWN0LWRpc2FibGVkLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tc2VsZWN0LWRpc2FibGVkLWJnO1xuICB9XG5cbiAgLy8gSGlkZXMgdGhlIGRlZmF1bHQgY2FyZXQgaW4gSUUxMVxuICAmOjotbXMtZXhwYW5kIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLy8gUmVtb3ZlIG91dGxpbmUgZnJvbSBzZWxlY3QgYm94IGluIEZGXG4gICY6LW1vei1mb2N1c3Jpbmcge1xuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0ZXh0LXNoYWRvdzogMCAwIDAgJGN1c3RvbS1zZWxlY3QtY29sb3I7XG4gIH1cbn1cblxuLmN1c3RvbS1zZWxlY3Qtc20ge1xuICBoZWlnaHQ6ICRjdXN0b20tc2VsZWN0LWhlaWdodC1zbTtcbiAgcGFkZGluZy10b3A6ICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteS1zbTtcbiAgcGFkZGluZy1ib3R0b206ICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteS1zbTtcbiAgcGFkZGluZy1sZWZ0OiAkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXgtc207XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkY3VzdG9tLXNlbGVjdC1mb250LXNpemUtc20pO1xufVxuXG4uY3VzdG9tLXNlbGVjdC1sZyB7XG4gIGhlaWdodDogJGN1c3RvbS1zZWxlY3QtaGVpZ2h0LWxnO1xuICBwYWRkaW5nLXRvcDogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15LWxnO1xuICBwYWRkaW5nLWJvdHRvbTogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15LWxnO1xuICBwYWRkaW5nLWxlZnQ6ICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteC1sZztcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRjdXN0b20tc2VsZWN0LWZvbnQtc2l6ZS1sZyk7XG59XG5cblxuLy8gRmlsZVxuLy9cbi8vIEN1c3RvbSBmaWxlIGlucHV0LlxuXG4uY3VzdG9tLWZpbGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJGN1c3RvbS1maWxlLWhlaWdodDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmN1c3RvbS1maWxlLWlucHV0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAyO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAkY3VzdG9tLWZpbGUtaGVpZ2h0O1xuICBtYXJnaW46IDA7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJjpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7XG4gICAgYm9yZGVyLWNvbG9yOiAkY3VzdG9tLWZpbGUtZm9jdXMtYm9yZGVyLWNvbG9yO1xuICAgIGJveC1zaGFkb3c6ICRjdXN0b20tZmlsZS1mb2N1cy1ib3gtc2hhZG93O1xuICB9XG5cbiAgLy8gVXNlIFtkaXNhYmxlZF0gYW5kIDpkaXNhYmxlZCB0byB3b3JrIGFyb3VuZCBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI4MjQ3XG4gICZbZGlzYWJsZWRdIH4gLmN1c3RvbS1maWxlLWxhYmVsLFxuICAmOmRpc2FibGVkIH4gLmN1c3RvbS1maWxlLWxhYmVsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLWZpbGUtZGlzYWJsZWQtYmc7XG4gIH1cblxuICBAZWFjaCAkbGFuZywgJHZhbHVlIGluICRjdXN0b20tZmlsZS10ZXh0IHtcbiAgICAmOmxhbmcoI3skbGFuZ30pIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7XG4gICAgICBjb250ZW50OiAkdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgfiAuY3VzdG9tLWZpbGUtbGFiZWxbZGF0YS1icm93c2VdOjphZnRlciB7XG4gICAgY29udGVudDogYXR0cihkYXRhLWJyb3dzZSk7XG4gIH1cbn1cblxuLmN1c3RvbS1maWxlLWxhYmVsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAxO1xuICBoZWlnaHQ6ICRjdXN0b20tZmlsZS1oZWlnaHQ7XG4gIHBhZGRpbmc6ICRjdXN0b20tZmlsZS1wYWRkaW5nLXkgJGN1c3RvbS1maWxlLXBhZGRpbmcteDtcbiAgZm9udC1mYW1pbHk6ICRjdXN0b20tZmlsZS1mb250LWZhbWlseTtcbiAgZm9udC13ZWlnaHQ6ICRjdXN0b20tZmlsZS1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRjdXN0b20tZmlsZS1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRjdXN0b20tZmlsZS1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1maWxlLWJnO1xuICBib3JkZXI6ICRjdXN0b20tZmlsZS1ib3JkZXItd2lkdGggc29saWQgJGN1c3RvbS1maWxlLWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY3VzdG9tLWZpbGUtYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJGN1c3RvbS1maWxlLWJveC1zaGFkb3cpO1xuXG4gICY6OmFmdGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICB6LWluZGV4OiAzO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogJGN1c3RvbS1maWxlLWhlaWdodC1pbm5lcjtcbiAgICBwYWRkaW5nOiAkY3VzdG9tLWZpbGUtcGFkZGluZy15ICRjdXN0b20tZmlsZS1wYWRkaW5nLXg7XG4gICAgbGluZS1oZWlnaHQ6ICRjdXN0b20tZmlsZS1saW5lLWhlaWdodDtcbiAgICBjb2xvcjogJGN1c3RvbS1maWxlLWJ1dHRvbi1jb2xvcjtcbiAgICBjb250ZW50OiBcIkJyb3dzZVwiO1xuICAgIEBpbmNsdWRlIGdyYWRpZW50LWJnKCRjdXN0b20tZmlsZS1idXR0b24tYmcpO1xuICAgIGJvcmRlci1sZWZ0OiBpbmhlcml0O1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCAkY3VzdG9tLWZpbGUtYm9yZGVyLXJhZGl1cyAkY3VzdG9tLWZpbGUtYm9yZGVyLXJhZGl1cyAwKTtcbiAgfVxufVxuXG4vLyBSYW5nZVxuLy9cbi8vIFN0eWxlIHJhbmdlIGlucHV0cyB0aGUgc2FtZSBhY3Jvc3MgYnJvd3NlcnMuIFZlbmRvci1zcGVjaWZpYyBydWxlcyBmb3IgcHNldWRvXG4vLyBlbGVtZW50cyBjYW5ub3QgYmUgbWl4ZWQuIEFzIHN1Y2gsIHRoZXJlIGFyZSBubyBzaGFyZWQgc3R5bGVzIGZvciBmb2N1cyBvclxuLy8gYWN0aXZlIHN0YXRlcyBvbiBwcmVmaXhlZCBzZWxlY3RvcnMuXG5cbi5jdXN0b20tcmFuZ2Uge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhZGQoJGN1c3RvbS1yYW5nZS10aHVtYi1oZWlnaHQsICRjdXN0b20tcmFuZ2UtdGh1bWItZm9jdXMtYm94LXNoYWRvdy13aWR0aCAqIDIpO1xuICBwYWRkaW5nOiAwOyAvLyBOZWVkIHRvIHJlc2V0IHBhZGRpbmdcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcblxuICAgIC8vIFBzZXVkby1lbGVtZW50cyBtdXN0IGJlIHNwbGl0IGFjcm9zcyBtdWx0aXBsZSBydWxlc2V0cyB0byBoYXZlIGFuIGVmZmVjdC5cbiAgICAvLyBObyBib3gtc2hhZG93KCkgbWl4aW4gZm9yIGZvY3VzIGFjY2Vzc2liaWxpdHkuXG4gICAgJjo6LXdlYmtpdC1zbGlkZXItdGh1bWIgeyBib3gtc2hhZG93OiAkY3VzdG9tLXJhbmdlLXRodW1iLWZvY3VzLWJveC1zaGFkb3c7IH1cbiAgICAmOjotbW96LXJhbmdlLXRodW1iICAgICB7IGJveC1zaGFkb3c6ICRjdXN0b20tcmFuZ2UtdGh1bWItZm9jdXMtYm94LXNoYWRvdzsgfVxuICAgICY6Oi1tcy10aHVtYiAgICAgICAgICAgIHsgYm94LXNoYWRvdzogJGN1c3RvbS1yYW5nZS10aHVtYi1mb2N1cy1ib3gtc2hhZG93OyB9XG4gIH1cblxuICAmOjotbW96LWZvY3VzLW91dGVyIHtcbiAgICBib3JkZXI6IDA7XG4gIH1cblxuICAmOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgd2lkdGg6ICRjdXN0b20tcmFuZ2UtdGh1bWItd2lkdGg7XG4gICAgaGVpZ2h0OiAkY3VzdG9tLXJhbmdlLXRodW1iLWhlaWdodDtcbiAgICBtYXJnaW4tdG9wOiAoJGN1c3RvbS1yYW5nZS10cmFjay1oZWlnaHQgLSAkY3VzdG9tLXJhbmdlLXRodW1iLWhlaWdodCkgLyAyOyAvLyBXZWJraXQgc3BlY2lmaWNcbiAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkY3VzdG9tLXJhbmdlLXRodW1iLWJnKTtcbiAgICBib3JkZXI6ICRjdXN0b20tcmFuZ2UtdGh1bWItYm9yZGVyO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGN1c3RvbS1yYW5nZS10aHVtYi1ib3JkZXItcmFkaXVzKTtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tcmFuZ2UtdGh1bWItYm94LXNoYWRvdyk7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbigkY3VzdG9tLWZvcm1zLXRyYW5zaXRpb24pO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkY3VzdG9tLXJhbmdlLXRodW1iLWFjdGl2ZS1iZyk7XG4gICAgfVxuICB9XG5cbiAgJjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xuICAgIHdpZHRoOiAkY3VzdG9tLXJhbmdlLXRyYWNrLXdpZHRoO1xuICAgIGhlaWdodDogJGN1c3RvbS1yYW5nZS10cmFjay1oZWlnaHQ7XG4gICAgY29sb3I6IHRyYW5zcGFyZW50OyAvLyBXaHk/XG4gICAgY3Vyc29yOiAkY3VzdG9tLXJhbmdlLXRyYWNrLWN1cnNvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLXJhbmdlLXRyYWNrLWJnO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY3VzdG9tLXJhbmdlLXRyYWNrLWJvcmRlci1yYWRpdXMpO1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGN1c3RvbS1yYW5nZS10cmFjay1ib3gtc2hhZG93KTtcbiAgfVxuXG4gICY6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgIHdpZHRoOiAkY3VzdG9tLXJhbmdlLXRodW1iLXdpZHRoO1xuICAgIGhlaWdodDogJGN1c3RvbS1yYW5nZS10aHVtYi1oZWlnaHQ7XG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGN1c3RvbS1yYW5nZS10aHVtYi1iZyk7XG4gICAgYm9yZGVyOiAkY3VzdG9tLXJhbmdlLXRodW1iLWJvcmRlcjtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRjdXN0b20tcmFuZ2UtdGh1bWItYm9yZGVyLXJhZGl1cyk7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkY3VzdG9tLXJhbmdlLXRodW1iLWJveC1zaGFkb3cpO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oJGN1c3RvbS1mb3Jtcy10cmFuc2l0aW9uKTtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICAgJjphY3RpdmUge1xuICAgICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGN1c3RvbS1yYW5nZS10aHVtYi1hY3RpdmUtYmcpO1xuICAgIH1cbiAgfVxuXG4gICY6Oi1tb3otcmFuZ2UtdHJhY2sge1xuICAgIHdpZHRoOiAkY3VzdG9tLXJhbmdlLXRyYWNrLXdpZHRoO1xuICAgIGhlaWdodDogJGN1c3RvbS1yYW5nZS10cmFjay1oZWlnaHQ7XG4gICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGN1cnNvcjogJGN1c3RvbS1yYW5nZS10cmFjay1jdXJzb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1yYW5nZS10cmFjay1iZztcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyAvLyBGaXJlZm94IHNwZWNpZmljP1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGN1c3RvbS1yYW5nZS10cmFjay1ib3JkZXItcmFkaXVzKTtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tcmFuZ2UtdHJhY2stYm94LXNoYWRvdyk7XG4gIH1cblxuICAmOjotbXMtdGh1bWIge1xuICAgIHdpZHRoOiAkY3VzdG9tLXJhbmdlLXRodW1iLXdpZHRoO1xuICAgIGhlaWdodDogJGN1c3RvbS1yYW5nZS10aHVtYi1oZWlnaHQ7XG4gICAgbWFyZ2luLXRvcDogMDsgLy8gRWRnZSBzcGVjaWZpY1xuICAgIG1hcmdpbi1yaWdodDogJGN1c3RvbS1yYW5nZS10aHVtYi1mb2N1cy1ib3gtc2hhZG93LXdpZHRoOyAvLyBXb3JrYXJvdW5kIHRoYXQgb3ZlcmZsb3dlZCBib3gtc2hhZG93IGlzIGhpZGRlbi5cbiAgICBtYXJnaW4tbGVmdDogJGN1c3RvbS1yYW5nZS10aHVtYi1mb2N1cy1ib3gtc2hhZG93LXdpZHRoOyAgLy8gV29ya2Fyb3VuZCB0aGF0IG92ZXJmbG93ZWQgYm94LXNoYWRvdyBpcyBoaWRkZW4uXG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGN1c3RvbS1yYW5nZS10aHVtYi1iZyk7XG4gICAgYm9yZGVyOiAkY3VzdG9tLXJhbmdlLXRodW1iLWJvcmRlcjtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRjdXN0b20tcmFuZ2UtdGh1bWItYm9yZGVyLXJhZGl1cyk7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkY3VzdG9tLXJhbmdlLXRodW1iLWJveC1zaGFkb3cpO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oJGN1c3RvbS1mb3Jtcy10cmFuc2l0aW9uKTtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICAgJjphY3RpdmUge1xuICAgICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGN1c3RvbS1yYW5nZS10aHVtYi1hY3RpdmUtYmcpO1xuICAgIH1cbiAgfVxuXG4gICY6Oi1tcy10cmFjayB7XG4gICAgd2lkdGg6ICRjdXN0b20tcmFuZ2UtdHJhY2std2lkdGg7XG4gICAgaGVpZ2h0OiAkY3VzdG9tLXJhbmdlLXRyYWNrLWhlaWdodDtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgY3Vyc29yOiAkY3VzdG9tLXJhbmdlLXRyYWNrLWN1cnNvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci13aWR0aDogJGN1c3RvbS1yYW5nZS10aHVtYi1oZWlnaHQgLyAyO1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGN1c3RvbS1yYW5nZS10cmFjay1ib3gtc2hhZG93KTtcbiAgfVxuXG4gICY6Oi1tcy1maWxsLWxvd2VyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLXJhbmdlLXRyYWNrLWJnO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGN1c3RvbS1yYW5nZS10cmFjay1ib3JkZXItcmFkaXVzKTtcbiAgfVxuXG4gICY6Oi1tcy1maWxsLXVwcGVyIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7IC8vIGFyYml0cmFyeT9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLXJhbmdlLXRyYWNrLWJnO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGN1c3RvbS1yYW5nZS10cmFjay1ib3JkZXItcmFkaXVzKTtcbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgICY6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tcmFuZ2UtdGh1bWItZGlzYWJsZWQtYmc7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgIH1cblxuICAgICY6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1yYW5nZS10aHVtYi1kaXNhYmxlZC1iZztcbiAgICB9XG5cbiAgICAmOjotbW96LXJhbmdlLXRyYWNrIHtcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB9XG5cbiAgICAmOjotbXMtdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1yYW5nZS10aHVtYi1kaXNhYmxlZC1iZztcbiAgICB9XG4gIH1cbn1cblxuLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsXG4uY3VzdG9tLWZpbGUtbGFiZWwsXG4uY3VzdG9tLXNlbGVjdCB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJGN1c3RvbS1mb3Jtcy10cmFuc2l0aW9uKTtcbn1cbiIsIi8vIEJhc2UgY2xhc3Ncbi8vXG4vLyBLaWNrc3RhcnQgYW55IG5hdmlnYXRpb24gY29tcG9uZW50IHdpdGggYSBzZXQgb2Ygc3R5bGUgcmVzZXRzLiBXb3JrcyB3aXRoXG4vLyBgPG5hdj5gcywgYDx1bD5gcyBvciBgPG9sPmBzLlxuXG4ubmF2IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi5uYXYtbGluayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAkbmF2LWxpbmstcGFkZGluZy15ICRuYXYtbGluay1wYWRkaW5nLXg7XG5cbiAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgLy8gRGlzYWJsZWQgc3RhdGUgbGlnaHRlbnMgdGV4dFxuICAmLmRpc2FibGVkIHtcbiAgICBjb2xvcjogJG5hdi1saW5rLWRpc2FibGVkLWNvbG9yO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgfVxufVxuXG4vL1xuLy8gVGFic1xuLy9cblxuLm5hdi10YWJzIHtcbiAgYm9yZGVyLWJvdHRvbTogJG5hdi10YWJzLWJvcmRlci13aWR0aCBzb2xpZCAkbmF2LXRhYnMtYm9yZGVyLWNvbG9yO1xuXG4gIC5uYXYtaXRlbSB7XG4gICAgbWFyZ2luLWJvdHRvbTogLSRuYXYtdGFicy1ib3JkZXItd2lkdGg7XG4gIH1cblxuICAubmF2LWxpbmsge1xuICAgIGJvcmRlcjogJG5hdi10YWJzLWJvcmRlci13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygkbmF2LXRhYnMtYm9yZGVyLXJhZGl1cyk7XG5cbiAgICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJG5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yO1xuICAgIH1cblxuICAgICYuZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICRuYXYtbGluay1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICAubmF2LWxpbmsuYWN0aXZlLFxuICAubmF2LWl0ZW0uc2hvdyAubmF2LWxpbmsge1xuICAgIGNvbG9yOiAkbmF2LXRhYnMtbGluay1hY3RpdmUtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5hdi10YWJzLWxpbmstYWN0aXZlLWJnO1xuICAgIGJvcmRlci1jb2xvcjogJG5hdi10YWJzLWxpbmstYWN0aXZlLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIC5kcm9wZG93bi1tZW51IHtcbiAgICAvLyBNYWtlIGRyb3Bkb3duIGJvcmRlciBvdmVybGFwIHRhYiBib3JkZXJcbiAgICBtYXJnaW4tdG9wOiAtJG5hdi10YWJzLWJvcmRlci13aWR0aDtcbiAgICAvLyBSZW1vdmUgdGhlIHRvcCByb3VuZGVkIGNvcm5lcnMgaGVyZSBzaW5jZSB0aGVyZSBpcyBhIGhhcmQgZWRnZSBhYm92ZSB0aGUgbWVudVxuICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKDApO1xuICB9XG59XG5cblxuLy9cbi8vIFBpbGxzXG4vL1xuXG4ubmF2LXBpbGxzIHtcbiAgLm5hdi1saW5rIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRuYXYtcGlsbHMtYm9yZGVyLXJhZGl1cyk7XG4gIH1cblxuICAubmF2LWxpbmsuYWN0aXZlLFxuICAuc2hvdyA+IC5uYXYtbGluayB7XG4gICAgY29sb3I6ICRuYXYtcGlsbHMtbGluay1hY3RpdmUtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5hdi1waWxscy1saW5rLWFjdGl2ZS1iZztcbiAgfVxufVxuXG5cbi8vXG4vLyBKdXN0aWZpZWQgdmFyaWFudHNcbi8vXG5cbi5uYXYtZmlsbCB7XG4gIC5uYXYtaXRlbSB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG59XG5cbi5uYXYtanVzdGlmaWVkIHtcbiAgLm5hdi1pdGVtIHtcbiAgICBmbGV4LWJhc2lzOiAwO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbn1cblxuXG4vLyBUYWJiYWJsZSB0YWJzXG4vL1xuLy8gSGlkZSB0YWJiYWJsZSBwYW5lcyB0byBzdGFydCwgc2hvdyB0aGVtIHdoZW4gYC5hY3RpdmVgXG5cbi50YWItY29udGVudCB7XG4gID4gLnRhYi1wYW5lIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gID4gLmFjdGl2ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cbiIsIi8vIENvbnRlbnRzXG4vL1xuLy8gTmF2YmFyXG4vLyBOYXZiYXIgYnJhbmRcbi8vIE5hdmJhciBuYXZcbi8vIE5hdmJhciB0ZXh0XG4vLyBOYXZiYXIgZGl2aWRlclxuLy8gUmVzcG9uc2l2ZSBuYXZiYXJcbi8vIE5hdmJhciBwb3NpdGlvblxuLy8gTmF2YmFyIHRoZW1lc1xuXG5cbi8vIE5hdmJhclxuLy9cbi8vIFByb3ZpZGUgYSBzdGF0aWMgbmF2YmFyIGZyb20gd2hpY2ggd2UgZXhwYW5kIHRvIGNyZWF0ZSBmdWxsLXdpZHRoLCBmaXhlZCwgYW5kXG4vLyBvdGhlciBuYXZiYXIgdmFyaWF0aW9ucy5cblxuLm5hdmJhciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwOyAvLyBhbGxvdyB1cyB0byBkbyB0aGUgbGluZSBicmVhayBmb3IgY29sbGFwc2luZyBjb250ZW50XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgLy8gc3BhY2Ugb3V0IGJyYW5kIGZyb20gbG9nb1xuICBwYWRkaW5nOiAkbmF2YmFyLXBhZGRpbmcteSAkbmF2YmFyLXBhZGRpbmcteDtcblxuICAvLyBCZWNhdXNlIGZsZXggcHJvcGVydGllcyBhcmVuJ3QgaW5oZXJpdGVkLCB3ZSBuZWVkIHRvIHJlZGVjbGFyZSB0aGVzZSBmaXJzdFxuICAvLyBmZXcgcHJvcGVydGllcyBzbyB0aGF0IGNvbnRlbnQgbmVzdGVkIHdpdGhpbiBiZWhhdmUgcHJvcGVybHkuXG4gICVjb250YWluZXItZmxleC1wcm9wZXJ0aWVzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgfVxuXG4gIC5jb250YWluZXIsXG4gIC5jb250YWluZXItZmx1aWQge1xuICAgIEBleHRlbmQgJWNvbnRhaW5lci1mbGV4LXByb3BlcnRpZXM7XG4gIH1cblxuICBAZWFjaCAkYnJlYWtwb2ludCwgJGNvbnRhaW5lci1tYXgtd2lkdGggaW4gJGNvbnRhaW5lci1tYXgtd2lkdGhzIHtcbiAgICA+IC5jb250YWluZXIje2JyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRjb250YWluZXItbWF4LXdpZHRocyl9IHtcbiAgICAgIEBleHRlbmQgJWNvbnRhaW5lci1mbGV4LXByb3BlcnRpZXM7XG4gICAgfVxuICB9XG59XG5cblxuLy8gTmF2YmFyIGJyYW5kXG4vL1xuLy8gVXNlZCBmb3IgYnJhbmQsIHByb2plY3QsIG9yIHNpdGUgbmFtZXMuXG5cbi5uYXZiYXItYnJhbmQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmctdG9wOiAkbmF2YmFyLWJyYW5kLXBhZGRpbmcteTtcbiAgcGFkZGluZy1ib3R0b206ICRuYXZiYXItYnJhbmQtcGFkZGluZy15O1xuICBtYXJnaW4tcmlnaHQ6ICRuYXZiYXItcGFkZGluZy14O1xuICBAaW5jbHVkZSBmb250LXNpemUoJG5hdmJhci1icmFuZC1mb250LXNpemUpO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cbn1cblxuXG4vLyBOYXZiYXIgbmF2XG4vL1xuLy8gQ3VzdG9tIG5hdmJhciBuYXZpZ2F0aW9uIChkb2Vzbid0IHJlcXVpcmUgYC5uYXZgLCBidXQgZG9lcyBtYWtlIHVzZSBvZiBgLm5hdi1saW5rYCkuXG5cbi5uYXZiYXItbmF2IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgLy8gY2Fubm90IHVzZSBgaW5oZXJpdGAgdG8gZ2V0IHRoZSBgLm5hdmJhcmBzIHZhbHVlXG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAubmF2LWxpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG5cbiAgLmRyb3Bkb3duLW1lbnUge1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgZmxvYXQ6IG5vbmU7XG4gIH1cbn1cblxuXG4vLyBOYXZiYXIgdGV4dFxuLy9cbi8vXG5cbi5uYXZiYXItdGV4dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZy10b3A6ICRuYXYtbGluay1wYWRkaW5nLXk7XG4gIHBhZGRpbmctYm90dG9tOiAkbmF2LWxpbmstcGFkZGluZy15O1xufVxuXG5cbi8vIFJlc3BvbnNpdmUgbmF2YmFyXG4vL1xuLy8gQ3VzdG9tIHN0eWxlcyBmb3IgcmVzcG9uc2l2ZSBjb2xsYXBzaW5nIGFuZCB0b2dnbGluZyBvZiBuYXZiYXIgY29udGVudHMuXG4vLyBQb3dlcmVkIGJ5IHRoZSBjb2xsYXBzZSBCb290c3RyYXAgSmF2YVNjcmlwdCBwbHVnaW4uXG5cbi8vIFdoZW4gY29sbGFwc2VkLCBwcmV2ZW50IHRoZSB0b2dnbGVhYmxlIG5hdmJhciBjb250ZW50cyBmcm9tIGFwcGVhcmluZyBpblxuLy8gdGhlIGRlZmF1bHQgZmxleGJveCByb3cgb3JpZW50YXRpb24uIFJlcXVpcmVzIHRoZSB1c2Ugb2YgYGZsZXgtd3JhcDogd3JhcGBcbi8vIG9uIHRoZSBgLm5hdmJhcmAgcGFyZW50LlxuLm5hdmJhci1jb2xsYXBzZSB7XG4gIGZsZXgtYmFzaXM6IDEwMCU7XG4gIGZsZXgtZ3JvdzogMTtcbiAgLy8gRm9yIGFsd2F5cyBleHBhbmRlZCBvciBleHRyYSBmdWxsIG5hdmJhcnMsIGVuc3VyZSBjb250ZW50IGFsaWducyBpdHNlbGZcbiAgLy8gcHJvcGVybHkgdmVydGljYWxseS4gQ2FuIGJlIGVhc2lseSBvdmVycmlkZGVuIHdpdGggZmxleCB1dGlsaXRpZXMuXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi8vIEJ1dHRvbiBmb3IgdG9nZ2xpbmcgdGhlIG5hdmJhciB3aGVuIGluIGl0cyBjb2xsYXBzZWQgc3RhdGVcbi5uYXZiYXItdG9nZ2xlciB7XG4gIHBhZGRpbmc6ICRuYXZiYXItdG9nZ2xlci1wYWRkaW5nLXkgJG5hdmJhci10b2dnbGVyLXBhZGRpbmcteDtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRuYXZiYXItdG9nZ2xlci1mb250LXNpemUpO1xuICBsaW5lLWhlaWdodDogMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8vIHJlbW92ZSBkZWZhdWx0IGJ1dHRvbiBzdHlsZVxuICBib3JkZXI6ICRib3JkZXItd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7IC8vIHJlbW92ZSBkZWZhdWx0IGJ1dHRvbiBzdHlsZVxuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRuYXZiYXItdG9nZ2xlci1ib3JkZXItcmFkaXVzKTtcblxuICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cbn1cblxuLy8gS2VlcCBhcyBhIHNlcGFyYXRlIGVsZW1lbnQgc28gZm9sa3MgY2FuIGVhc2lseSBvdmVycmlkZSBpdCB3aXRoIGFub3RoZXIgaWNvblxuLy8gb3IgaW1hZ2UgZmlsZSBhcyBuZWVkZWQuXG4ubmF2YmFyLXRvZ2dsZXItaWNvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEuNWVtO1xuICBoZWlnaHQ6IDEuNWVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBjb250ZW50OiBcIlwiO1xuICBiYWNrZ3JvdW5kOiBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XG59XG5cbi8vIEdlbmVyYXRlIHNlcmllcyBvZiBgLm5hdmJhci1leHBhbmQtKmAgcmVzcG9uc2l2ZSBjbGFzc2VzIGZvciBjb25maWd1cmluZ1xuLy8gd2hlcmUgeW91ciBuYXZiYXIgY29sbGFwc2VzLlxuLm5hdmJhci1leHBhbmQge1xuICBAZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICAgICRuZXh0OiBicmVha3BvaW50LW5leHQoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJG5leHQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgICYjeyRpbmZpeH0ge1xuICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCRicmVha3BvaW50KSB7XG4gICAgICAgICVjb250YWluZXItbmF2YmFyLWV4cGFuZC0jeyRicmVha3BvaW50fSB7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICA+IC5jb250YWluZXIsXG4gICAgICAgID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICAgICAgQGV4dGVuZCAlY29udGFpbmVyLW5hdmJhci1leHBhbmQtI3skYnJlYWtwb2ludH07XG4gICAgICAgIH1cblxuICAgICAgICBAZWFjaCAkc2l6ZSwgJGNvbnRhaW5lci1tYXgtd2lkdGggaW4gJGNvbnRhaW5lci1tYXgtd2lkdGhzIHtcbiAgICAgICAgICA+IC5jb250YWluZXIje2JyZWFrcG9pbnQtaW5maXgoJHNpemUsICRjb250YWluZXItbWF4LXdpZHRocyl9IHtcbiAgICAgICAgICAgIEBleHRlbmQgJWNvbnRhaW5lci1uYXZiYXItZXhwYW5kLSN7JGJyZWFrcG9pbnR9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRuZXh0KSB7XG4gICAgICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICAgICAgIC5uYXZiYXItbmF2IHtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuXG4gICAgICAgICAgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5uYXYtbGluayB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkbmF2YmFyLW5hdi1saW5rLXBhZGRpbmcteDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJG5hdmJhci1uYXYtbGluay1wYWRkaW5nLXg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9yIG5lc3RpbmcgY29udGFpbmVycywgaGF2ZSB0byByZWRlY2xhcmUgZm9yIGFsaWdubWVudCBwdXJwb3Nlc1xuICAgICAgICAlY29udGFpbmVyLW5lc3RpbmctI3skYnJlYWtwb2ludH0ge1xuICAgICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgICB9XG5cbiAgICAgICAgPiAuY29udGFpbmVyLFxuICAgICAgICA+IC5jb250YWluZXItZmx1aWQge1xuICAgICAgICAgIEBleHRlbmQgJWNvbnRhaW5lci1uZXN0aW5nLSN7JGJyZWFrcG9pbnR9O1xuICAgICAgICB9XG5cbiAgICAgICAgQGVhY2ggJHNpemUsICRjb250YWluZXItbWF4LXdpZHRoIGluICRjb250YWluZXItbWF4LXdpZHRocyB7XG4gICAgICAgICAgPiAuY29udGFpbmVyI3ticmVha3BvaW50LWluZml4KCRzaXplLCAkY29udGFpbmVyLW1heC13aWR0aHMpfSB7XG4gICAgICAgICAgICBAZXh0ZW5kICVjb250YWluZXItbmVzdGluZy0jeyRicmVha3BvaW50fTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubmF2YmFyLWNvbGxhcHNlIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbiAgICAgICAgICAvLyBDaGFuZ2VzIGZsZXgtYmFzZXMgdG8gYXV0byBiZWNhdXNlIG9mIGFuIElFMTAgYnVnXG4gICAgICAgICAgZmxleC1iYXNpczogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIC5uYXZiYXItdG9nZ2xlciB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi8vIE5hdmJhciB0aGVtZXNcbi8vXG4vLyBTdHlsZXMgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIG5hdmJhcnMgd2l0aCBsaWdodCBvciBkYXJrIGJhY2tncm91bmQuXG5cbi8vIERhcmsgbGlua3MgYWdhaW5zdCBhIGxpZ2h0IGJhY2tncm91bmRcbi5uYXZiYXItbGlnaHQge1xuICAubmF2YmFyLWJyYW5kIHtcbiAgICBjb2xvcjogJG5hdmJhci1saWdodC1icmFuZC1jb2xvcjtcblxuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgICAgY29sb3I6ICRuYXZiYXItbGlnaHQtYnJhbmQtaG92ZXItY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm5hdmJhci1uYXYge1xuICAgIC5uYXYtbGluayB7XG4gICAgICBjb2xvcjogJG5hdmJhci1saWdodC1jb2xvcjtcblxuICAgICAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgICAgIGNvbG9yOiAkbmF2YmFyLWxpZ2h0LWhvdmVyLWNvbG9yO1xuICAgICAgfVxuXG4gICAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgY29sb3I6ICRuYXZiYXItbGlnaHQtZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnNob3cgPiAubmF2LWxpbmssXG4gICAgLmFjdGl2ZSA+IC5uYXYtbGluayxcbiAgICAubmF2LWxpbmsuc2hvdyxcbiAgICAubmF2LWxpbmsuYWN0aXZlIHtcbiAgICAgIGNvbG9yOiAkbmF2YmFyLWxpZ2h0LWFjdGl2ZS1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubmF2YmFyLXRvZ2dsZXIge1xuICAgIGNvbG9yOiAkbmF2YmFyLWxpZ2h0LWNvbG9yO1xuICAgIGJvcmRlci1jb2xvcjogJG5hdmJhci1saWdodC10b2dnbGVyLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIC5uYXZiYXItdG9nZ2xlci1pY29uIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRuYXZiYXItbGlnaHQtdG9nZ2xlci1pY29uLWJnKTtcbiAgfVxuXG4gIC5uYXZiYXItdGV4dCB7XG4gICAgY29sb3I6ICRuYXZiYXItbGlnaHQtY29sb3I7XG4gICAgYSB7XG4gICAgICBjb2xvcjogJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3I7XG5cbiAgICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgICAgICBjb2xvcjogJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFdoaXRlIGxpbmtzIGFnYWluc3QgYSBkYXJrIGJhY2tncm91bmRcbi5uYXZiYXItZGFyayB7XG4gIC5uYXZiYXItYnJhbmQge1xuICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstYnJhbmQtY29sb3I7XG5cbiAgICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstYnJhbmQtaG92ZXItY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm5hdmJhci1uYXYge1xuICAgIC5uYXYtbGluayB7XG4gICAgICBjb2xvcjogJG5hdmJhci1kYXJrLWNvbG9yO1xuXG4gICAgICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICAgICAgY29sb3I6ICRuYXZiYXItZGFyay1ob3Zlci1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgJi5kaXNhYmxlZCB7XG4gICAgICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnNob3cgPiAubmF2LWxpbmssXG4gICAgLmFjdGl2ZSA+IC5uYXYtbGluayxcbiAgICAubmF2LWxpbmsuc2hvdyxcbiAgICAubmF2LWxpbmsuYWN0aXZlIHtcbiAgICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5uYXZiYXItdG9nZ2xlciB7XG4gICAgY29sb3I6ICRuYXZiYXItZGFyay1jb2xvcjtcbiAgICBib3JkZXItY29sb3I6ICRuYXZiYXItZGFyay10b2dnbGVyLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIC5uYXZiYXItdG9nZ2xlci1pY29uIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRuYXZiYXItZGFyay10b2dnbGVyLWljb24tYmcpO1xuICB9XG5cbiAgLm5hdmJhci10ZXh0IHtcbiAgICBjb2xvcjogJG5hdmJhci1kYXJrLWNvbG9yO1xuICAgIGEge1xuICAgICAgY29sb3I6ICRuYXZiYXItZGFyay1hY3RpdmUtY29sb3I7XG5cbiAgICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgICAgICBjb2xvcjogJG5hdmJhci1kYXJrLWFjdGl2ZS1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBCYXNlIHN0eWxlc1xuLy9cblxuLmNhcmQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG1pbi13aWR0aDogMDsgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzIyNzQwI2lzc3VlY29tbWVudC0zMDU4NjgxMDZcbiAgaGVpZ2h0OiAkY2FyZC1oZWlnaHQ7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNhcmQtYmc7XG4gIGJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiAkY2FyZC1ib3JkZXItd2lkdGggc29saWQgJGNhcmQtYm9yZGVyLWNvbG9yO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRjYXJkLWJvcmRlci1yYWRpdXMpO1xuXG4gID4gaHIge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuXG4gID4gLmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQge1xuICAgIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQge1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXMoJGNhcmQtYm9yZGVyLXJhZGl1cyk7XG4gICAgfVxuICB9XG5cbiAgPiAubGlzdC1ncm91cDpsYXN0LWNoaWxkIHtcbiAgICAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQge1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXMoJGNhcmQtYm9yZGVyLXJhZGl1cyk7XG4gICAgfVxuICB9XG59XG5cbi5jYXJkLWJvZHkge1xuICAvLyBFbmFibGUgYGZsZXgtZ3JvdzogMWAgZm9yIGRlY2tzIGFuZCBncm91cHMgc28gdGhhdCBjYXJkIGJsb2NrcyB0YWtlIHVwXG4gIC8vIGFzIG11Y2ggc3BhY2UgYXMgcG9zc2libGUsIGVuc3VyaW5nIGZvb3RlcnMgYXJlIGFsaWduZWQgdG8gdGhlIGJvdHRvbS5cbiAgZmxleDogMSAxIGF1dG87XG4gIC8vIFdvcmthcm91bmQgZm9yIHRoZSBpbWFnZSBzaXplIGJ1ZyBpbiBJRVxuICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzI4ODU1XG4gIG1pbi1oZWlnaHQ6IDFweDtcbiAgcGFkZGluZzogJGNhcmQtc3BhY2VyLXg7XG4gIGNvbG9yOiAkY2FyZC1jb2xvcjtcbn1cblxuLmNhcmQtdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiAkY2FyZC1zcGFjZXIteTtcbn1cblxuLmNhcmQtc3VidGl0bGUge1xuICBtYXJnaW4tdG9wOiAtJGNhcmQtc3BhY2VyLXkgLyAyO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY2FyZC10ZXh0Omxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY2FyZC1saW5rIHtcbiAgQGluY2x1ZGUgaG92ZXIoKSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgKyAuY2FyZC1saW5rIHtcbiAgICBtYXJnaW4tbGVmdDogJGNhcmQtc3BhY2VyLXg7XG4gIH1cbn1cblxuLy9cbi8vIE9wdGlvbmFsIHRleHR1YWwgY2Fwc1xuLy9cblxuLmNhcmQtaGVhZGVyIHtcbiAgcGFkZGluZzogJGNhcmQtc3BhY2VyLXkgJGNhcmQtc3BhY2VyLXg7XG4gIG1hcmdpbi1ib3R0b206IDA7IC8vIFJlbW92ZXMgdGhlIGRlZmF1bHQgbWFyZ2luLWJvdHRvbSBvZiA8aE4+XG4gIGNvbG9yOiAkY2FyZC1jYXAtY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjYXJkLWNhcC1iZztcbiAgYm9yZGVyLWJvdHRvbTogJGNhcmQtYm9yZGVyLXdpZHRoIHNvbGlkICRjYXJkLWJvcmRlci1jb2xvcjtcblxuICAmOmZpcnN0LWNoaWxkIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRjYXJkLWlubmVyLWJvcmRlci1yYWRpdXMgJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyAwIDApO1xuICB9XG5cbiAgKyAubGlzdC1ncm91cCB7XG4gICAgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7XG4gICAgICBib3JkZXItdG9wOiAwO1xuICAgIH1cbiAgfVxufVxuXG4uY2FyZC1mb290ZXIge1xuICBwYWRkaW5nOiAkY2FyZC1zcGFjZXIteSAkY2FyZC1zcGFjZXIteDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNhcmQtY2FwLWJnO1xuICBib3JkZXItdG9wOiAkY2FyZC1ib3JkZXItd2lkdGggc29saWQgJGNhcmQtYm9yZGVyLWNvbG9yO1xuXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygwIDAgJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyAkY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzKTtcbiAgfVxufVxuXG5cbi8vXG4vLyBIZWFkZXIgbmF2c1xuLy9cblxuLmNhcmQtaGVhZGVyLXRhYnMge1xuICBtYXJnaW4tcmlnaHQ6IC0kY2FyZC1zcGFjZXIteCAvIDI7XG4gIG1hcmdpbi1ib3R0b206IC0kY2FyZC1zcGFjZXIteTtcbiAgbWFyZ2luLWxlZnQ6IC0kY2FyZC1zcGFjZXIteCAvIDI7XG4gIGJvcmRlci1ib3R0b206IDA7XG59XG5cbi5jYXJkLWhlYWRlci1waWxscyB7XG4gIG1hcmdpbi1yaWdodDogLSRjYXJkLXNwYWNlci14IC8gMjtcbiAgbWFyZ2luLWxlZnQ6IC0kY2FyZC1zcGFjZXIteCAvIDI7XG59XG5cbi8vIENhcmQgaW1hZ2Vcbi5jYXJkLWltZy1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHBhZGRpbmc6ICRjYXJkLWltZy1vdmVybGF5LXBhZGRpbmc7XG59XG5cbi5jYXJkLWltZyxcbi5jYXJkLWltZy10b3AsXG4uY2FyZC1pbWctYm90dG9tIHtcbiAgZmxleC1zaHJpbms6IDA7IC8vIEZvciBJRTogaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yOTM5NlxuICB3aWR0aDogMTAwJTsgLy8gUmVxdWlyZWQgYmVjYXVzZSB3ZSB1c2UgZmxleGJveCBhbmQgdGhpcyBpbmhlcmVudGx5IGFwcGxpZXMgYWxpZ24tc2VsZjogc3RyZXRjaFxufVxuXG4uY2FyZC1pbWcsXG4uY2FyZC1pbWctdG9wIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXMoJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyk7XG59XG5cbi5jYXJkLWltZyxcbi5jYXJkLWltZy1ib3R0b20ge1xuICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cygkY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzKTtcbn1cblxuXG4vLyBDYXJkIGRlY2tcblxuLmNhcmQtZGVjayB7XG4gIC5jYXJkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkY2FyZC1kZWNrLW1hcmdpbjtcbiAgfVxuXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gICAgbWFyZ2luLXJpZ2h0OiAtJGNhcmQtZGVjay1tYXJnaW47XG4gICAgbWFyZ2luLWxlZnQ6IC0kY2FyZC1kZWNrLW1hcmdpbjtcblxuICAgIC5jYXJkIHtcbiAgICAgIC8vIEZsZXhidWdzICM0OiBodHRwczovL2dpdGh1Yi5jb20vcGhpbGlwd2FsdG9uL2ZsZXhidWdzI2ZsZXhidWctNFxuICAgICAgZmxleDogMSAwIDAlO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkY2FyZC1kZWNrLW1hcmdpbjtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7IC8vIE92ZXJyaWRlIHRoZSBkZWZhdWx0XG4gICAgICBtYXJnaW4tbGVmdDogJGNhcmQtZGVjay1tYXJnaW47XG4gICAgfVxuICB9XG59XG5cblxuLy9cbi8vIENhcmQgZ3JvdXBzXG4vL1xuXG4uY2FyZC1ncm91cCB7XG4gIC8vIFRoZSBjaGlsZCBzZWxlY3RvciBhbGxvd3MgbmVzdGVkIGAuY2FyZGAgd2l0aGluIGAuY2FyZC1ncm91cGBcbiAgLy8gdG8gZGlzcGxheSBwcm9wZXJseS5cbiAgPiAuY2FyZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGNhcmQtZ3JvdXAtbWFyZ2luO1xuICB9XG5cbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChzbSkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgICAvLyBUaGUgY2hpbGQgc2VsZWN0b3IgYWxsb3dzIG5lc3RlZCBgLmNhcmRgIHdpdGhpbiBgLmNhcmQtZ3JvdXBgXG4gICAgLy8gdG8gZGlzcGxheSBwcm9wZXJseS5cbiAgICA+IC5jYXJkIHtcbiAgICAgIC8vIEZsZXhidWdzICM0OiBodHRwczovL2dpdGh1Yi5jb20vcGhpbGlwd2FsdG9uL2ZsZXhidWdzI2ZsZXhidWctNFxuICAgICAgZmxleDogMSAwIDAlO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgKyAuY2FyZCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICBib3JkZXItbGVmdDogMDtcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIHJvdW5kZWQgY29ybmVyc1xuICAgICAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJpZ2h0LXJhZGl1cygwKTtcblxuICAgICAgICAgIC5jYXJkLWltZy10b3AsXG4gICAgICAgICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgICAgIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9wZXJ0eS1ibGFja2xpc3RcbiAgICAgICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuY2FyZC1pbWctYm90dG9tLFxuICAgICAgICAgIC5jYXJkLWZvb3RlciB7XG4gICAgICAgICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktYmxhY2tsaXN0XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoMCk7XG5cbiAgICAgICAgICAuY2FyZC1pbWctdG9wLFxuICAgICAgICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICAgICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktYmxhY2tsaXN0XG4gICAgICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuY2FyZC1pbWctYm90dG9tLFxuICAgICAgICAgIC5jYXJkLWZvb3RlciB7XG4gICAgICAgICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktYmxhY2tsaXN0XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi8vXG4vLyBDb2x1bW5zXG4vL1xuXG4uY2FyZC1jb2x1bW5zIHtcbiAgLmNhcmQge1xuICAgIG1hcmdpbi1ib3R0b206ICRjYXJkLWNvbHVtbnMtbWFyZ2luO1xuICB9XG5cbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChzbSkge1xuICAgIGNvbHVtbi1jb3VudDogJGNhcmQtY29sdW1ucy1jb3VudDtcbiAgICBjb2x1bW4tZ2FwOiAkY2FyZC1jb2x1bW5zLWdhcDtcbiAgICBvcnBoYW5zOiAxO1xuICAgIHdpZG93czogMTtcblxuICAgIC5jYXJkIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgLy8gRG9uJ3QgbGV0IHRoZW0gdmVydGljYWxseSBzcGFuIG11bHRpcGxlIGNvbHVtbnNcbiAgICAgIHdpZHRoOiAxMDAlOyAvLyBEb24ndCBsZXQgdGhlaXIgd2lkdGggY2hhbmdlXG4gICAgfVxuICB9XG59XG5cblxuLy9cbi8vIEFjY29yZGlvblxuLy9cblxuLmFjY29yZGlvbiB7XG4gID4gLmNhcmQge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmOm5vdCg6bGFzdC1vZi10eXBlKSB7XG4gICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXMoMCk7XG4gICAgfVxuXG4gICAgJjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKDApO1xuICAgIH1cblxuICAgID4gLmNhcmQtaGVhZGVyIHtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAtJGNhcmQtYm9yZGVyLXdpZHRoO1xuICAgIH1cbiAgfVxufVxuIiwiLmJyZWFkY3J1bWIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIHBhZGRpbmc6ICRicmVhZGNydW1iLXBhZGRpbmcteSAkYnJlYWRjcnVtYi1wYWRkaW5nLXg7XG4gIG1hcmdpbi1ib3R0b206ICRicmVhZGNydW1iLW1hcmdpbi1ib3R0b207XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkYnJlYWRjcnVtYi1mb250LXNpemUpO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnJlYWRjcnVtYi1iZztcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkYnJlYWRjcnVtYi1ib3JkZXItcmFkaXVzKTtcbn1cblxuLmJyZWFkY3J1bWItaXRlbSB7XG4gIC8vIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiBicmVhZGNydW1icyAoYnkgZGVmYXVsdCwgYSBmb3J3YXJkLXNsYXNoOiBcIi9cIilcbiAgKyAuYnJlYWRjcnVtYi1pdGVtIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRicmVhZGNydW1iLWl0ZW0tcGFkZGluZztcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8vIFN1cHByZXNzIHVuZGVybGluaW5nIG9mIHRoZSBzZXBhcmF0b3IgaW4gbW9kZXJuIGJyb3dzZXJzXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkYnJlYWRjcnVtYi1pdGVtLXBhZGRpbmc7XG4gICAgICBjb2xvcjogJGJyZWFkY3J1bWItZGl2aWRlci1jb2xvcjtcbiAgICAgIGNvbnRlbnQ6IGVzY2FwZS1zdmcoJGJyZWFkY3J1bWItZGl2aWRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gSUU5LTExIGhhY2sgdG8gcHJvcGVybHkgaGFuZGxlIGh5cGVybGluayB1bmRlcmxpbmVzIGZvciBicmVhZGNydW1icyBidWlsdFxuICAvLyB3aXRob3V0IGA8dWw+YHMuIFRoZSBgOjpiZWZvcmVgIHBzZXVkby1lbGVtZW50IGdlbmVyYXRlcyBhbiBlbGVtZW50XG4gIC8vICp3aXRoaW4qIHRoZSAuYnJlYWRjcnVtYi1pdGVtIGFuZCB0aGVyZWJ5IGluaGVyaXRzIHRoZSBgdGV4dC1kZWNvcmF0aW9uYC5cbiAgLy9cbiAgLy8gVG8gdHJpY2sgSUUgaW50byBzdXBwcmVzc2luZyB0aGUgdW5kZXJsaW5lLCB3ZSBnaXZlIHRoZSBwc2V1ZG8tZWxlbWVudCBhblxuICAvLyB1bmRlcmxpbmUgYW5kIHRoZW4gaW1tZWRpYXRlbHkgcmVtb3ZlIGl0LlxuICArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIH1cbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWR1cGxpY2F0ZS1zZWxlY3RvcnNcbiAgKyAuYnJlYWRjcnVtYi1pdGVtOmhvdmVyOjpiZWZvcmUge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuXG4gICYuYWN0aXZlIHtcbiAgICBjb2xvcjogJGJyZWFkY3J1bWItYWN0aXZlLWNvbG9yO1xuICB9XG59XG4iLCIucGFnaW5hdGlvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIEBpbmNsdWRlIGxpc3QtdW5zdHlsZWQoKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygpO1xufVxuXG4ucGFnZS1saW5rIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogJHBhZ2luYXRpb24tcGFkZGluZy15ICRwYWdpbmF0aW9uLXBhZGRpbmcteDtcbiAgbWFyZ2luLWxlZnQ6IC0kcGFnaW5hdGlvbi1ib3JkZXItd2lkdGg7XG4gIGxpbmUtaGVpZ2h0OiAkcGFnaW5hdGlvbi1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRwYWdpbmF0aW9uLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGFnaW5hdGlvbi1iZztcbiAgYm9yZGVyOiAkcGFnaW5hdGlvbi1ib3JkZXItd2lkdGggc29saWQgJHBhZ2luYXRpb24tYm9yZGVyLWNvbG9yO1xuXG4gICY6aG92ZXIge1xuICAgIHotaW5kZXg6IDI7XG4gICAgY29sb3I6ICRwYWdpbmF0aW9uLWhvdmVyLWNvbG9yO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGFnaW5hdGlvbi1ob3Zlci1iZztcbiAgICBib3JkZXItY29sb3I6ICRwYWdpbmF0aW9uLWhvdmVyLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIHotaW5kZXg6IDM7XG4gICAgb3V0bGluZTogJHBhZ2luYXRpb24tZm9jdXMtb3V0bGluZTtcbiAgICBib3gtc2hhZG93OiAkcGFnaW5hdGlvbi1mb2N1cy1ib3gtc2hhZG93O1xuICB9XG59XG5cbi5wYWdlLWl0ZW0ge1xuICAmOmZpcnN0LWNoaWxkIHtcbiAgICAucGFnZS1saW5rIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLWxlZnQtcmFkaXVzKCRib3JkZXItcmFkaXVzKTtcbiAgICB9XG4gIH1cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICAucGFnZS1saW5rIHtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci1yaWdodC1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xuICAgIH1cbiAgfVxuXG4gICYuYWN0aXZlIC5wYWdlLWxpbmsge1xuICAgIHotaW5kZXg6IDM7XG4gICAgY29sb3I6ICRwYWdpbmF0aW9uLWFjdGl2ZS1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGFnaW5hdGlvbi1hY3RpdmUtYmc7XG4gICAgYm9yZGVyLWNvbG9yOiAkcGFnaW5hdGlvbi1hY3RpdmUtYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgJi5kaXNhYmxlZCAucGFnZS1saW5rIHtcbiAgICBjb2xvcjogJHBhZ2luYXRpb24tZGlzYWJsZWQtY29sb3I7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgLy8gT3BpbmlvbmF0ZWQ6IHJlbW92ZSB0aGUgXCJoYW5kXCIgY3Vyc29yIHNldCBwcmV2aW91c2x5IGZvciAucGFnZS1saW5rXG4gICAgY3Vyc29yOiBhdXRvO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRwYWdpbmF0aW9uLWRpc2FibGVkLWJnO1xuICAgIGJvcmRlci1jb2xvcjogJHBhZ2luYXRpb24tZGlzYWJsZWQtYm9yZGVyLWNvbG9yO1xuICB9XG59XG5cblxuLy9cbi8vIFNpemluZ1xuLy9cblxuLnBhZ2luYXRpb24tbGcge1xuICBAaW5jbHVkZSBwYWdpbmF0aW9uLXNpemUoJHBhZ2luYXRpb24tcGFkZGluZy15LWxnLCAkcGFnaW5hdGlvbi1wYWRkaW5nLXgtbGcsICRmb250LXNpemUtbGcsICRsaW5lLWhlaWdodC1sZywgJGJvcmRlci1yYWRpdXMtbGcpO1xufVxuXG4ucGFnaW5hdGlvbi1zbSB7XG4gIEBpbmNsdWRlIHBhZ2luYXRpb24tc2l6ZSgkcGFnaW5hdGlvbi1wYWRkaW5nLXktc20sICRwYWdpbmF0aW9uLXBhZGRpbmcteC1zbSwgJGZvbnQtc2l6ZS1zbSwgJGxpbmUtaGVpZ2h0LXNtLCAkYm9yZGVyLXJhZGl1cy1zbSk7XG59XG4iLCIvLyBQYWdpbmF0aW9uXG5cbkBtaXhpbiBwYWdpbmF0aW9uLXNpemUoJHBhZGRpbmcteSwgJHBhZGRpbmcteCwgJGZvbnQtc2l6ZSwgJGxpbmUtaGVpZ2h0LCAkYm9yZGVyLXJhZGl1cykge1xuICAucGFnZS1saW5rIHtcbiAgICBwYWRkaW5nOiAkcGFkZGluZy15ICRwYWRkaW5nLXg7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKCRmb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gIH1cblxuICAucGFnZS1pdGVtIHtcbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIC5wYWdlLWxpbmsge1xuICAgICAgICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xuICAgICAgfVxuICAgIH1cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgLnBhZ2UtbGluayB7XG4gICAgICAgIEBpbmNsdWRlIGJvcmRlci1yaWdodC1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gQmFzZSBjbGFzc1xuLy9cbi8vIFJlcXVpcmVzIG9uZSBvZiB0aGUgY29udGV4dHVhbCwgY29sb3IgbW9kaWZpZXIgY2xhc3NlcyBmb3IgYGNvbG9yYCBhbmRcbi8vIGBiYWNrZ3JvdW5kLWNvbG9yYC5cblxuLmJhZGdlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAkYmFkZ2UtcGFkZGluZy15ICRiYWRnZS1wYWRkaW5nLXg7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkYmFkZ2UtZm9udC1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRiYWRnZS1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRiYWRnZS1ib3JkZXItcmFkaXVzKTtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkYmFkZ2UtdHJhbnNpdGlvbik7XG5cbiAgQGF0LXJvb3QgYSN7Jn0ge1xuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtcHR5IGJhZGdlcyBjb2xsYXBzZSBhdXRvbWF0aWNhbGx5XG4gICY6ZW1wdHkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLy8gUXVpY2sgZml4IGZvciBiYWRnZXMgaW4gYnV0dG9uc1xuLmJ0biAuYmFkZ2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogLTFweDtcbn1cblxuLy8gUGlsbCBiYWRnZXNcbi8vXG4vLyBNYWtlIHRoZW0gZXh0cmEgcm91bmRlZCB3aXRoIGEgbW9kaWZpZXIgdG8gcmVwbGFjZSB2MydzIGJhZGdlcy5cblxuLmJhZGdlLXBpbGwge1xuICBwYWRkaW5nLXJpZ2h0OiAkYmFkZ2UtcGlsbC1wYWRkaW5nLXg7XG4gIHBhZGRpbmctbGVmdDogJGJhZGdlLXBpbGwtcGFkZGluZy14O1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRiYWRnZS1waWxsLWJvcmRlci1yYWRpdXMpO1xufVxuXG4vLyBDb2xvcnNcbi8vXG4vLyBDb250ZXh0dWFsIHZhcmlhdGlvbnMgKGxpbmtlZCBiYWRnZXMgZ2V0IGRhcmtlciBvbiA6aG92ZXIpLlxuXG5AZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgLmJhZGdlLSN7JGNvbG9yfSB7XG4gICAgQGluY2x1ZGUgYmFkZ2UtdmFyaWFudCgkdmFsdWUpO1xuICB9XG59XG4iLCJAbWl4aW4gYmFkZ2UtdmFyaWFudCgkYmcpIHtcbiAgY29sb3I6IGNvbG9yLXlpcSgkYmcpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmc7XG5cbiAgQGF0LXJvb3QgYSN7Jn0ge1xuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgICAgY29sb3I6IGNvbG9yLXlpcSgkYmcpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRiZywgMTAlKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLFxuICAgICYuZm9jdXMge1xuICAgICAgb3V0bGluZTogMDtcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwICRiYWRnZS1mb2N1cy13aWR0aCByZ2JhKCRiZywgLjUpO1xuICAgIH1cbiAgfVxufVxuIiwiLmp1bWJvdHJvbiB7XG4gIHBhZGRpbmc6ICRqdW1ib3Ryb24tcGFkZGluZyAoJGp1bWJvdHJvbi1wYWRkaW5nIC8gMik7XG4gIG1hcmdpbi1ib3R0b206ICRqdW1ib3Ryb24tcGFkZGluZztcbiAgY29sb3I6ICRqdW1ib3Ryb24tY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRqdW1ib3Ryb24tYmc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMtbGcpO1xuXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgICBwYWRkaW5nOiAoJGp1bWJvdHJvbi1wYWRkaW5nICogMikgJGp1bWJvdHJvbi1wYWRkaW5nO1xuICB9XG59XG5cbi5qdW1ib3Ryb24tZmx1aWQge1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG59XG4iLCIvL1xuLy8gQmFzZSBzdHlsZXNcbi8vXG5cbi5hbGVydCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogJGFsZXJ0LXBhZGRpbmcteSAkYWxlcnQtcGFkZGluZy14O1xuICBtYXJnaW4tYm90dG9tOiAkYWxlcnQtbWFyZ2luLWJvdHRvbTtcbiAgYm9yZGVyOiAkYWxlcnQtYm9yZGVyLXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRhbGVydC1ib3JkZXItcmFkaXVzKTtcbn1cblxuLy8gSGVhZGluZ3MgZm9yIGxhcmdlciBhbGVydHNcbi5hbGVydC1oZWFkaW5nIHtcbiAgLy8gU3BlY2lmaWVkIHRvIHByZXZlbnQgY29uZmxpY3RzIG9mIGNoYW5naW5nICRoZWFkaW5ncy1jb2xvclxuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLy8gUHJvdmlkZSBjbGFzcyBmb3IgbGlua3MgdGhhdCBtYXRjaCBhbGVydHNcbi5hbGVydC1saW5rIHtcbiAgZm9udC13ZWlnaHQ6ICRhbGVydC1saW5rLWZvbnQtd2VpZ2h0O1xufVxuXG5cbi8vIERpc21pc3NpYmxlIGFsZXJ0c1xuLy9cbi8vIEV4cGFuZCB0aGUgcmlnaHQgcGFkZGluZyBhbmQgYWNjb3VudCBmb3IgdGhlIGNsb3NlIGJ1dHRvbidzIHBvc2l0aW9uaW5nLlxuXG4uYWxlcnQtZGlzbWlzc2libGUge1xuICBwYWRkaW5nLXJpZ2h0OiAkY2xvc2UtZm9udC1zaXplICsgJGFsZXJ0LXBhZGRpbmcteCAqIDI7XG5cbiAgLy8gQWRqdXN0IGNsb3NlIGxpbmsgcG9zaXRpb25cbiAgLmNsb3NlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHBhZGRpbmc6ICRhbGVydC1wYWRkaW5nLXkgJGFsZXJ0LXBhZGRpbmcteDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgfVxufVxuXG5cbi8vIEFsdGVybmF0ZSBzdHlsZXNcbi8vXG4vLyBHZW5lcmF0ZSBjb250ZXh0dWFsIG1vZGlmaWVyIGNsYXNzZXMgZm9yIGNvbG9yaXppbmcgdGhlIGFsZXJ0LlxuXG5AZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgLmFsZXJ0LSN7JGNvbG9yfSB7XG4gICAgQGluY2x1ZGUgYWxlcnQtdmFyaWFudCh0aGVtZS1jb2xvci1sZXZlbCgkY29sb3IsICRhbGVydC1iZy1sZXZlbCksIHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvciwgJGFsZXJ0LWJvcmRlci1sZXZlbCksIHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvciwgJGFsZXJ0LWNvbG9yLWxldmVsKSk7XG4gIH1cbn1cbiIsIkBtaXhpbiBhbGVydC12YXJpYW50KCRiYWNrZ3JvdW5kLCAkYm9yZGVyLCAkY29sb3IpIHtcbiAgY29sb3I6ICRjb2xvcjtcbiAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGJhY2tncm91bmQpO1xuICBib3JkZXItY29sb3I6ICRib3JkZXI7XG5cbiAgaHIge1xuICAgIGJvcmRlci10b3AtY29sb3I6IGRhcmtlbigkYm9yZGVyLCA1JSk7XG4gIH1cblxuICAuYWxlcnQtbGluayB7XG4gICAgY29sb3I6IGRhcmtlbigkY29sb3IsIDEwJSk7XG4gIH1cbn1cbiIsIi8vIERpc2FibGUgYW5pbWF0aW9uIGlmIHRyYW5zaXRpb25zIGFyZSBkaXNhYmxlZFxuQGlmICRlbmFibGUtdHJhbnNpdGlvbnMge1xuICBAa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHtcbiAgICBmcm9tIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogJHByb2dyZXNzLWhlaWdodCAwOyB9XG4gICAgdG8geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH1cbiAgfVxufVxuXG4ucHJvZ3Jlc3Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6ICRwcm9ncmVzcy1oZWlnaHQ7XG4gIG92ZXJmbG93OiBoaWRkZW47IC8vIGZvcmNlIHJvdW5kZWQgY29ybmVycyBieSBjcm9wcGluZyBpdFxuICBAaW5jbHVkZSBmb250LXNpemUoJHByb2dyZXNzLWZvbnQtc2l6ZSk7XG4gIGJhY2tncm91bmQtY29sb3I6ICRwcm9ncmVzcy1iZztcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkcHJvZ3Jlc3MtYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJHByb2dyZXNzLWJveC1zaGFkb3cpO1xufVxuXG4ucHJvZ3Jlc3MtYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNvbG9yOiAkcHJvZ3Jlc3MtYmFyLWNvbG9yO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJhY2tncm91bmQtY29sb3I6ICRwcm9ncmVzcy1iYXItYmc7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJHByb2dyZXNzLWJhci10cmFuc2l0aW9uKTtcbn1cblxuLnByb2dyZXNzLWJhci1zdHJpcGVkIHtcbiAgQGluY2x1ZGUgZ3JhZGllbnQtc3RyaXBlZCgpO1xuICBiYWNrZ3JvdW5kLXNpemU6ICRwcm9ncmVzcy1oZWlnaHQgJHByb2dyZXNzLWhlaWdodDtcbn1cblxuQGlmICRlbmFibGUtdHJhbnNpdGlvbnMge1xuICAucHJvZ3Jlc3MtYmFyLWFuaW1hdGVkIHtcbiAgICBhbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzICRwcm9ncmVzcy1iYXItYW5pbWF0aW9uLXRpbWluZztcblxuICAgIEBpZiAkZW5hYmxlLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tbWVkaWEtcXVlcnkge1xuICAgICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLm1lZGlhIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG5cbi5tZWRpYS1ib2R5IHtcbiAgZmxleDogMTtcbn1cbiIsIi8vIEJhc2UgY2xhc3Ncbi8vXG4vLyBFYXNpbHkgdXNhYmxlIG9uIDx1bD4sIDxvbD4sIG9yIDxkaXY+LlxuXG4ubGlzdC1ncm91cCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgLy8gTm8gbmVlZCB0byBzZXQgbGlzdC1zdHlsZTogbm9uZTsgc2luY2UgLmxpc3QtZ3JvdXAtaXRlbSBpcyBibG9jayBsZXZlbFxuICBwYWRkaW5nLWxlZnQ6IDA7IC8vIHJlc2V0IHBhZGRpbmcgYmVjYXVzZSB1bCBhbmQgb2xcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuXG4vLyBJbnRlcmFjdGl2ZSBsaXN0IGl0ZW1zXG4vL1xuLy8gVXNlIGFuY2hvciBvciBidXR0b24gZWxlbWVudHMgaW5zdGVhZCBvZiBgbGlgcyBvciBgZGl2YHMgdG8gY3JlYXRlIGludGVyYWN0aXZlXG4vLyBsaXN0IGl0ZW1zLiBJbmNsdWRlcyBhbiBleHRyYSBgLmFjdGl2ZWAgbW9kaWZpZXIgY2xhc3MgZm9yIHNlbGVjdGVkIGl0ZW1zLlxuXG4ubGlzdC1ncm91cC1pdGVtLWFjdGlvbiB7XG4gIHdpZHRoOiAxMDAlOyAvLyBGb3IgYDxidXR0b24+YHMgKGFuY2hvcnMgYmVjb21lIDEwMCUgYnkgZGVmYXVsdCB0aG91Z2gpXG4gIGNvbG9yOiAkbGlzdC1ncm91cC1hY3Rpb24tY29sb3I7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7IC8vIEZvciBgPGJ1dHRvbj5gcyAoYW5jaG9ycyBpbmhlcml0KVxuXG4gIC8vIEhvdmVyIHN0YXRlXG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgIHotaW5kZXg6IDE7IC8vIFBsYWNlIGhvdmVyL2ZvY3VzIGl0ZW1zIGFib3ZlIHRoZWlyIHNpYmxpbmdzIGZvciBwcm9wZXIgYm9yZGVyIHN0eWxpbmdcbiAgICBjb2xvcjogJGxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWNvbG9yO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlzdC1ncm91cC1ob3Zlci1iZztcbiAgfVxuXG4gICY6YWN0aXZlIHtcbiAgICBjb2xvcjogJGxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWJnO1xuICB9XG59XG5cblxuLy8gSW5kaXZpZHVhbCBsaXN0IGl0ZW1zXG4vL1xuLy8gVXNlIG9uIGBsaWBzIG9yIGBkaXZgcyB3aXRoaW4gdGhlIGAubGlzdC1ncm91cGAgcGFyZW50LlxuXG4ubGlzdC1ncm91cC1pdGVtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogJGxpc3QtZ3JvdXAtaXRlbS1wYWRkaW5nLXkgJGxpc3QtZ3JvdXAtaXRlbS1wYWRkaW5nLXg7XG4gIGNvbG9yOiAkbGlzdC1ncm91cC1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGxpc3QtZ3JvdXAtYmc7XG4gIGJvcmRlcjogJGxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoIHNvbGlkICRsaXN0LWdyb3VwLWJvcmRlci1jb2xvcjtcblxuICAmOmZpcnN0LWNoaWxkIHtcbiAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygkbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzKTtcbiAgfVxuXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXMoJGxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1cyk7XG4gIH1cblxuICAmLmRpc2FibGVkLFxuICAmOmRpc2FibGVkIHtcbiAgICBjb2xvcjogJGxpc3QtZ3JvdXAtZGlzYWJsZWQtY29sb3I7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGxpc3QtZ3JvdXAtZGlzYWJsZWQtYmc7XG4gIH1cblxuICAvLyBJbmNsdWRlIGJvdGggaGVyZSBmb3IgYDxhPmBzIGFuZCBgPGJ1dHRvbj5gc1xuICAmLmFjdGl2ZSB7XG4gICAgei1pbmRleDogMjsgLy8gUGxhY2UgYWN0aXZlIGl0ZW1zIGFib3ZlIHRoZWlyIHNpYmxpbmdzIGZvciBwcm9wZXIgYm9yZGVyIHN0eWxpbmdcbiAgICBjb2xvcjogJGxpc3QtZ3JvdXAtYWN0aXZlLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRsaXN0LWdyb3VwLWFjdGl2ZS1iZztcbiAgICBib3JkZXItY29sb3I6ICRsaXN0LWdyb3VwLWFjdGl2ZS1ib3JkZXItY29sb3I7XG4gIH1cblxuICAmICsgJiB7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDtcblxuICAgICYuYWN0aXZlIHtcbiAgICAgIG1hcmdpbi10b3A6IC0kbGlzdC1ncm91cC1ib3JkZXItd2lkdGg7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAkbGlzdC1ncm91cC1ib3JkZXItd2lkdGg7XG4gICAgfVxuICB9XG59XG5cblxuLy8gSG9yaXpvbnRhbFxuLy9cbi8vIENoYW5nZSB0aGUgbGF5b3V0IG9mIGxpc3QgZ3JvdXAgaXRlbXMgZnJvbSB2ZXJ0aWNhbCAoZGVmYXVsdCkgdG8gaG9yaXpvbnRhbC5cblxuQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkYnJlYWtwb2ludCkge1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuXG4gICAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbCN7JGluZml4fSB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuXG4gICAgICAubGlzdC1ncm91cC1pdGVtIHtcbiAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cygkbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzKTtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJpZ2h0LXJhZGl1cygwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMoJGxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1cyk7XG4gICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cygwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJiArIC5saXN0LWdyb3VwLWl0ZW0ge1xuICAgICAgICAgIGJvcmRlci10b3Atd2lkdGg6ICRsaXN0LWdyb3VwLWJvcmRlci13aWR0aDtcbiAgICAgICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcblxuICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtJGxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoO1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6ICRsaXN0LWdyb3VwLWJvcmRlci13aWR0aDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG4vLyBGbHVzaCBsaXN0IGl0ZW1zXG4vL1xuLy8gUmVtb3ZlIGJvcmRlcnMgYW5kIGJvcmRlci1yYWRpdXMgdG8ga2VlcCBsaXN0IGdyb3VwIGl0ZW1zIGVkZ2UtdG8tZWRnZS4gTW9zdFxuLy8gdXNlZnVsIHdpdGhpbiBvdGhlciBjb21wb25lbnRzIChlLmcuLCBjYXJkcykuXG5cbi5saXN0LWdyb3VwLWZsdXNoIHtcbiAgLmxpc3QtZ3JvdXAtaXRlbSB7XG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gICAgfVxuICB9XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBDb250ZXh0dWFsIHZhcmlhbnRzXG4vL1xuLy8gQWRkIG1vZGlmaWVyIGNsYXNzZXMgdG8gY2hhbmdlIHRleHQgYW5kIGJhY2tncm91bmQgY29sb3Igb24gaW5kaXZpZHVhbCBpdGVtcy5cbi8vIE9yZ2FuaXphdGlvbmFsbHksIHRoaXMgbXVzdCBjb21lIGFmdGVyIHRoZSBgOmhvdmVyYCBzdGF0ZXMuXG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICBAaW5jbHVkZSBsaXN0LWdyb3VwLWl0ZW0tdmFyaWFudCgkY29sb3IsIHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvciwgLTkpLCB0aGVtZS1jb2xvci1sZXZlbCgkY29sb3IsIDYpKTtcbn1cbiIsIi8vIExpc3QgR3JvdXBzXG5cbkBtaXhpbiBsaXN0LWdyb3VwLWl0ZW0tdmFyaWFudCgkc3RhdGUsICRiYWNrZ3JvdW5kLCAkY29sb3IpIHtcbiAgLmxpc3QtZ3JvdXAtaXRlbS0jeyRzdGF0ZX0ge1xuICAgIGNvbG9yOiAkY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG5cbiAgICAmLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24ge1xuICAgICAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3I7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkYmFja2dyb3VuZCwgNSUpO1xuICAgICAgfVxuXG4gICAgICAmLmFjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIuY2xvc2Uge1xuICBmbG9hdDogcmlnaHQ7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkY2xvc2UtZm9udC1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRjbG9zZS1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiAkY2xvc2UtY29sb3I7XG4gIHRleHQtc2hhZG93OiAkY2xvc2UtdGV4dC1zaGFkb3c7XG4gIG9wYWNpdHk6IC41O1xuXG4gIC8vIE92ZXJyaWRlIDxhPidzIGhvdmVyIHN0eWxlXG4gIEBpbmNsdWRlIGhvdmVyKCkge1xuICAgIGNvbG9yOiAkY2xvc2UtY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgJjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7XG4gICAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgICBvcGFjaXR5OiAuNzU7XG4gICAgfVxuICB9XG59XG5cbi8vIEFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgYnV0dG9uIHZlcnNpb25cbi8vIGlPUyByZXF1aXJlcyB0aGUgYnV0dG9uIGVsZW1lbnQgaW5zdGVhZCBvZiBhbiBhbmNob3IgdGFnLlxuLy8gSWYgeW91IHdhbnQgdGhlIGFuY2hvciB2ZXJzaW9uLCBpdCByZXF1aXJlcyBgaHJlZj1cIiNcImAuXG4vLyBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvRXZlbnRzL2NsaWNrI1NhZmFyaV9Nb2JpbGVcblxuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuYnV0dG9uLmNsb3NlIHtcbiAgcGFkZGluZzogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLy8gRnV0dXJlLXByb29mIGRpc2FibGluZyBvZiBjbGlja3Mgb24gYDxhPmAgZWxlbWVudHNcblxuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuYS5jbG9zZS5kaXNhYmxlZCB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuIiwiLnRvYXN0IHtcbiAgbWF4LXdpZHRoOiAkdG9hc3QtbWF4LXdpZHRoO1xuICBvdmVyZmxvdzogaGlkZGVuOyAvLyBjaGVhcCByb3VuZGVkIGNvcm5lcnMgb24gbmVzdGVkIGl0ZW1zXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkdG9hc3QtZm9udC1zaXplKTtcbiAgY29sb3I6ICR0b2FzdC1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHRvYXN0LWJhY2tncm91bmQtY29sb3I7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlcjogJHRvYXN0LWJvcmRlci13aWR0aCBzb2xpZCAkdG9hc3QtYm9yZGVyLWNvbG9yO1xuICBib3gtc2hhZG93OiAkdG9hc3QtYm94LXNoYWRvdztcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICBvcGFjaXR5OiAwO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCR0b2FzdC1ib3JkZXItcmFkaXVzKTtcblxuICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIG1hcmdpbi1ib3R0b206ICR0b2FzdC1wYWRkaW5nLXg7XG4gIH1cblxuICAmLnNob3dpbmcge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAmLnNob3cge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAmLmhpZGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLnRvYXN0LWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6ICR0b2FzdC1wYWRkaW5nLXkgJHRvYXN0LXBhZGRpbmcteDtcbiAgY29sb3I6ICR0b2FzdC1oZWFkZXItY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICR0b2FzdC1oZWFkZXItYmFja2dyb3VuZC1jb2xvcjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyLWJvdHRvbTogJHRvYXN0LWJvcmRlci13aWR0aCBzb2xpZCAkdG9hc3QtaGVhZGVyLWJvcmRlci1jb2xvcjtcbn1cblxuLnRvYXN0LWJvZHkge1xuICBwYWRkaW5nOiAkdG9hc3QtcGFkZGluZy14OyAvLyBhcHBseSB0byBib3RoIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsXG59XG4iLCIvLyAubW9kYWwtb3BlbiAgICAgIC0gYm9keSBjbGFzcyBmb3Iga2lsbGluZyB0aGUgc2Nyb2xsXG4vLyAubW9kYWwgICAgICAgICAgIC0gY29udGFpbmVyIHRvIHNjcm9sbCB3aXRoaW5cbi8vIC5tb2RhbC1kaWFsb2cgICAgLSBwb3NpdGlvbmluZyBzaGVsbCBmb3IgdGhlIGFjdHVhbCBtb2RhbFxuLy8gLm1vZGFsLWNvbnRlbnQgICAtIGFjdHVhbCBtb2RhbCB3LyBiZyBhbmQgY29ybmVycyBhbmQgc3R1ZmZcblxuXG4ubW9kYWwtb3BlbiB7XG4gIC8vIEtpbGwgdGhlIHNjcm9sbCBvbiB0aGUgYm9keVxuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC5tb2RhbCB7XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gIH1cbn1cblxuLy8gQ29udGFpbmVyIHRoYXQgdGhlIG1vZGFsIHNjcm9sbHMgd2l0aGluXG4ubW9kYWwge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHppbmRleC1tb2RhbDtcbiAgZGlzcGxheTogbm9uZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgLy8gUHJldmVudCBDaHJvbWUgb24gV2luZG93cyBmcm9tIGFkZGluZyBhIGZvY3VzIG91dGxpbmUuIEZvciBkZXRhaWxzLCBzZWVcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL3B1bGwvMTA5NTEuXG4gIG91dGxpbmU6IDA7XG4gIC8vIFdlIGRlbGliZXJhdGVseSBkb24ndCB1c2UgYC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtgIGR1ZSB0byBhXG4gIC8vIGduYXJseSBpT1MgU2FmYXJpIGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM0MlxuICAvLyBTZWUgYWxzbyBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzE3Njk1XG59XG5cbi8vIFNoZWxsIGRpdiB0byBwb3NpdGlvbiB0aGUgbW9kYWwgd2l0aCBib3R0b20gcGFkZGluZ1xuLm1vZGFsLWRpYWxvZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IGF1dG87XG4gIG1hcmdpbjogJG1vZGFsLWRpYWxvZy1tYXJnaW47XG4gIC8vIGFsbG93IGNsaWNrcyB0byBwYXNzIHRocm91Z2ggZm9yIGN1c3RvbSBjbGljayBoYW5kbGluZyB0byBjbG9zZSBtb2RhbFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAvLyBXaGVuIGZhZGluZyBpbiB0aGUgbW9kYWwsIGFuaW1hdGUgaXQgdG8gc2xpZGUgZG93blxuICAubW9kYWwuZmFkZSAmIHtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKCRtb2RhbC10cmFuc2l0aW9uKTtcbiAgICB0cmFuc2Zvcm06ICRtb2RhbC1mYWRlLXRyYW5zZm9ybTtcbiAgfVxuICAubW9kYWwuc2hvdyAmIHtcbiAgICB0cmFuc2Zvcm06ICRtb2RhbC1zaG93LXRyYW5zZm9ybTtcbiAgfVxuXG4gIC8vIFdoZW4gdHJ5aW5nIHRvIGNsb3NlLCBhbmltYXRlIGZvY3VzIHRvIHNjYWxlXG4gIC5tb2RhbC5tb2RhbC1zdGF0aWMgJiB7XG4gICAgdHJhbnNmb3JtOiAkbW9kYWwtc2NhbGUtdHJhbnNmb3JtO1xuICB9XG59XG5cbi5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSB7XG4gIGRpc3BsYXk6IGZsZXg7IC8vIElFMTAvMTFcbiAgbWF4LWhlaWdodDogc3VidHJhY3QoMTAwJSwgJG1vZGFsLWRpYWxvZy1tYXJnaW4gKiAyKTtcblxuICAubW9kYWwtY29udGVudCB7XG4gICAgbWF4LWhlaWdodDogc3VidHJhY3QoMTAwdmgsICRtb2RhbC1kaWFsb2ctbWFyZ2luICogMik7IC8vIElFMTAvMTFcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG5cbiAgLm1vZGFsLWhlYWRlcixcbiAgLm1vZGFsLWZvb3RlciB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gIH1cblxuICAubW9kYWwtYm9keSB7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgfVxufVxuXG4ubW9kYWwtZGlhbG9nLWNlbnRlcmVkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWluLWhlaWdodDogc3VidHJhY3QoMTAwJSwgJG1vZGFsLWRpYWxvZy1tYXJnaW4gKiAyKTtcblxuICAvLyBFbnN1cmUgYG1vZGFsLWRpYWxvZy1jZW50ZXJlZGAgZXh0ZW5kcyB0aGUgZnVsbCBoZWlnaHQgb2YgdGhlIHZpZXcgKElFMTAvMTEpXG4gICY6OmJlZm9yZSB7XG4gICAgZGlzcGxheTogYmxvY2s7IC8vIElFMTBcbiAgICBoZWlnaHQ6IHN1YnRyYWN0KDEwMHZoLCAkbW9kYWwtZGlhbG9nLW1hcmdpbiAqIDIpO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gIH1cblxuICAvLyBFbnN1cmUgYC5tb2RhbC1ib2R5YCBzaG93cyBzY3JvbGxiYXIgKElFMTAvMTEpXG4gICYubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgLm1vZGFsLWNvbnRlbnQge1xuICAgICAgbWF4LWhlaWdodDogbm9uZTtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQWN0dWFsIG1vZGFsXG4ubW9kYWwtY29udGVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IDEwMCU7IC8vIEVuc3VyZSBgLm1vZGFsLWNvbnRlbnRgIGV4dGVuZHMgdGhlIGZ1bGwgd2lkdGggb2YgdGhlIHBhcmVudCBgLm1vZGFsLWRpYWxvZ2BcbiAgLy8gY291bnRlcmFjdCB0aGUgcG9pbnRlci1ldmVudHM6IG5vbmU7IGluIHRoZSAubW9kYWwtZGlhbG9nXG4gIGNvbG9yOiAkbW9kYWwtY29udGVudC1jb2xvcjtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIGJhY2tncm91bmQtY29sb3I6ICRtb2RhbC1jb250ZW50LWJnO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6ICRtb2RhbC1jb250ZW50LWJvcmRlci13aWR0aCBzb2xpZCAkbW9kYWwtY29udGVudC1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJG1vZGFsLWNvbnRlbnQtYm94LXNoYWRvdy14cyk7XG4gIC8vIFJlbW92ZSBmb2N1cyBvdXRsaW5lIGZyb20gb3BlbmVkIG1vZGFsXG4gIG91dGxpbmU6IDA7XG59XG5cbi8vIE1vZGFsIGJhY2tncm91bmRcbi5tb2RhbC1iYWNrZHJvcCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAkemluZGV4LW1vZGFsLWJhY2tkcm9wO1xuICB3aWR0aDogMTAwdnc7XG4gIGhlaWdodDogMTAwdmg7XG4gIGJhY2tncm91bmQtY29sb3I6ICRtb2RhbC1iYWNrZHJvcC1iZztcblxuICAvLyBGYWRlIGZvciBiYWNrZHJvcFxuICAmLmZhZGUgeyBvcGFjaXR5OiAwOyB9XG4gICYuc2hvdyB7IG9wYWNpdHk6ICRtb2RhbC1iYWNrZHJvcC1vcGFjaXR5OyB9XG59XG5cbi8vIE1vZGFsIGhlYWRlclxuLy8gVG9wIHNlY3Rpb24gb2YgdGhlIG1vZGFsIHcvIHRpdGxlIGFuZCBkaXNtaXNzXG4ubW9kYWwtaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IC8vIHNvIHRoZSBjbG9zZSBidG4gYWx3YXlzIHN0YXlzIG9uIHRoZSB1cHBlciByaWdodCBjb3JuZXJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyAvLyBQdXQgbW9kYWwgaGVhZGVyIGVsZW1lbnRzICh0aXRsZSBhbmQgZGlzbWlzcykgb24gb3Bwb3NpdGUgZW5kc1xuICBwYWRkaW5nOiAkbW9kYWwtaGVhZGVyLXBhZGRpbmc7XG4gIGJvcmRlci1ib3R0b206ICRtb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRoIHNvbGlkICRtb2RhbC1oZWFkZXItYm9yZGVyLWNvbG9yO1xuICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygkbW9kYWwtY29udGVudC1pbm5lci1ib3JkZXItcmFkaXVzKTtcblxuICAuY2xvc2Uge1xuICAgIHBhZGRpbmc6ICRtb2RhbC1oZWFkZXItcGFkZGluZztcbiAgICAvLyBhdXRvIG9uIHRoZSBsZWZ0IGZvcmNlIGljb24gdG8gdGhlIHJpZ2h0IGV2ZW4gd2hlbiB0aGVyZSBpcyBubyAubW9kYWwtdGl0bGVcbiAgICBtYXJnaW46ICgtJG1vZGFsLWhlYWRlci1wYWRkaW5nLXkpICgtJG1vZGFsLWhlYWRlci1wYWRkaW5nLXgpICgtJG1vZGFsLWhlYWRlci1wYWRkaW5nLXkpIGF1dG87XG4gIH1cbn1cblxuLy8gVGl0bGUgdGV4dCB3aXRoaW4gaGVhZGVyXG4ubW9kYWwtdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBsaW5lLWhlaWdodDogJG1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0O1xufVxuXG4vLyBNb2RhbCBib2R5XG4vLyBXaGVyZSBhbGwgbW9kYWwgY29udGVudCByZXNpZGVzIChzaWJsaW5nIG9mIC5tb2RhbC1oZWFkZXIgYW5kIC5tb2RhbC1mb290ZXIpXG4ubW9kYWwtYm9keSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLy8gRW5hYmxlIGBmbGV4LWdyb3c6IDFgIHNvIHRoYXQgdGhlIGJvZHkgdGFrZSB1cCBhcyBtdWNoIHNwYWNlIGFzIHBvc3NpYmxlXG4gIC8vIHdoZW4gdGhlcmUgc2hvdWxkIGJlIGEgZml4ZWQgaGVpZ2h0IG9uIGAubW9kYWwtZGlhbG9nYC5cbiAgZmxleDogMSAxIGF1dG87XG4gIHBhZGRpbmc6ICRtb2RhbC1pbm5lci1wYWRkaW5nO1xufVxuXG4vLyBGb290ZXIgKGZvciBhY3Rpb25zKVxuLm1vZGFsLWZvb3RlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgLy8gdmVydGljYWxseSBjZW50ZXJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgLy8gUmlnaHQgYWxpZ24gYnV0dG9ucyB3aXRoIGZsZXggcHJvcGVydHkgYmVjYXVzZSB0ZXh0LWFsaWduIGRvZXNuJ3Qgd29yayBvbiBmbGV4IGl0ZW1zXG4gIHBhZGRpbmc6ICRtb2RhbC1pbm5lci1wYWRkaW5nIC0gJG1vZGFsLWZvb3Rlci1tYXJnaW4tYmV0d2VlbiAvIDI7XG4gIGJvcmRlci10b3A6ICRtb2RhbC1mb290ZXItYm9yZGVyLXdpZHRoIHNvbGlkICRtb2RhbC1mb290ZXItYm9yZGVyLWNvbG9yO1xuICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cygkbW9kYWwtY29udGVudC1pbm5lci1ib3JkZXItcmFkaXVzKTtcblxuICAvLyBQbGFjZSBtYXJnaW4gYmV0d2VlbiBmb290ZXIgZWxlbWVudHNcbiAgLy8gVGhpcyBzb2x1dGlvbiBpcyBmYXIgZnJvbSBpZGVhbCBiZWNhdXNlIG9mIHRoZSB1bml2ZXJzYWwgc2VsZWN0b3IgdXNhZ2UsXG4gIC8vIGJ1dCBpcyBuZWVkZWQgdG8gZml4IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMjQ4MDBcbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW1heC11bml2ZXJzYWxcbiAgPiAqIHtcbiAgICBtYXJnaW46ICRtb2RhbC1mb290ZXItbWFyZ2luLWJldHdlZW4gLyAyO1xuICB9XG59XG5cbi8vIE1lYXN1cmUgc2Nyb2xsYmFyIHdpZHRoIGZvciBwYWRkaW5nIGJvZHkgZHVyaW5nIG1vZGFsIHNob3cvaGlkZVxuLm1vZGFsLXNjcm9sbGJhci1tZWFzdXJlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC05OTk5cHg7XG4gIHdpZHRoOiA1MHB4O1xuICBoZWlnaHQ6IDUwcHg7XG4gIG92ZXJmbG93OiBzY3JvbGw7XG59XG5cbi8vIFNjYWxlIHVwIHRoZSBtb2RhbFxuQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChzbSkge1xuICAvLyBBdXRvbWF0aWNhbGx5IHNldCBtb2RhbCdzIHdpZHRoIGZvciBsYXJnZXIgdmlld3BvcnRzXG4gIC5tb2RhbC1kaWFsb2cge1xuICAgIG1heC13aWR0aDogJG1vZGFsLW1kO1xuICAgIG1hcmdpbjogJG1vZGFsLWRpYWxvZy1tYXJnaW4teS1zbS11cCBhdXRvO1xuICB9XG5cbiAgLm1vZGFsLWRpYWxvZy1zY3JvbGxhYmxlIHtcbiAgICBtYXgtaGVpZ2h0OiBzdWJ0cmFjdCgxMDAlLCAkbW9kYWwtZGlhbG9nLW1hcmdpbi15LXNtLXVwICogMik7XG5cbiAgICAubW9kYWwtY29udGVudCB7XG4gICAgICBtYXgtaGVpZ2h0OiBzdWJ0cmFjdCgxMDB2aCwgJG1vZGFsLWRpYWxvZy1tYXJnaW4teS1zbS11cCAqIDIpO1xuICAgIH1cbiAgfVxuXG4gIC5tb2RhbC1kaWFsb2ctY2VudGVyZWQge1xuICAgIG1pbi1oZWlnaHQ6IHN1YnRyYWN0KDEwMCUsICRtb2RhbC1kaWFsb2ctbWFyZ2luLXktc20tdXAgKiAyKTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBoZWlnaHQ6IHN1YnRyYWN0KDEwMHZoLCAkbW9kYWwtZGlhbG9nLW1hcmdpbi15LXNtLXVwICogMik7XG4gICAgfVxuICB9XG5cbiAgLm1vZGFsLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJG1vZGFsLWNvbnRlbnQtYm94LXNoYWRvdy1zbS11cCk7XG4gIH1cblxuICAubW9kYWwtc20geyBtYXgtd2lkdGg6ICRtb2RhbC1zbTsgfVxufVxuXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XG4gIC5tb2RhbC1sZyxcbiAgLm1vZGFsLXhsIHtcbiAgICBtYXgtd2lkdGg6ICRtb2RhbC1sZztcbiAgfVxufVxuXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKHhsKSB7XG4gIC5tb2RhbC14bCB7IG1heC13aWR0aDogJG1vZGFsLXhsOyB9XG59XG4iLCIvLyBCYXNlIGNsYXNzXG4udG9vbHRpcCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogJHppbmRleC10b29sdGlwO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAkdG9vbHRpcC1tYXJnaW47XG4gIC8vIE91ciBwYXJlbnQgZWxlbWVudCBjYW4gYmUgYXJiaXRyYXJ5IHNpbmNlIHRvb2x0aXBzIGFyZSBieSBkZWZhdWx0IGluc2VydGVkIGFzIGEgc2libGluZyBvZiB0aGVpciB0YXJnZXQgZWxlbWVudC5cbiAgLy8gU28gcmVzZXQgb3VyIGZvbnQgYW5kIHRleHQgcHJvcGVydGllcyB0byBhdm9pZCBpbmhlcml0aW5nIHdlaXJkIHZhbHVlcy5cbiAgQGluY2x1ZGUgcmVzZXQtdGV4dCgpO1xuICBAaW5jbHVkZSBmb250LXNpemUoJHRvb2x0aXAtZm9udC1zaXplKTtcbiAgLy8gQWxsb3cgYnJlYWtpbmcgdmVyeSBsb25nIHdvcmRzIHNvIHRoZXkgZG9uJ3Qgb3ZlcmZsb3cgdGhlIHRvb2x0aXAncyBib3VuZHNcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICBvcGFjaXR5OiAwO1xuXG4gICYuc2hvdyB7IG9wYWNpdHk6ICR0b29sdGlwLW9wYWNpdHk7IH1cblxuICAuYXJyb3cge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogJHRvb2x0aXAtYXJyb3ctd2lkdGg7XG4gICAgaGVpZ2h0OiAkdG9vbHRpcC1hcnJvdy1oZWlnaHQ7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIH1cbiAgfVxufVxuXG4uYnMtdG9vbHRpcC10b3Age1xuICBwYWRkaW5nOiAkdG9vbHRpcC1hcnJvdy1oZWlnaHQgMDtcblxuICAuYXJyb3cge1xuICAgIGJvdHRvbTogMDtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICB0b3A6IDA7XG4gICAgICBib3JkZXItd2lkdGg6ICR0b29sdGlwLWFycm93LWhlaWdodCAoJHRvb2x0aXAtYXJyb3ctd2lkdGggLyAyKSAwO1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHRvb2x0aXAtYXJyb3ctY29sb3I7XG4gICAgfVxuICB9XG59XG5cbi5icy10b29sdGlwLXJpZ2h0IHtcbiAgcGFkZGluZzogMCAkdG9vbHRpcC1hcnJvdy1oZWlnaHQ7XG5cbiAgLmFycm93IHtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAkdG9vbHRpcC1hcnJvdy1oZWlnaHQ7XG4gICAgaGVpZ2h0OiAkdG9vbHRpcC1hcnJvdy13aWR0aDtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICByaWdodDogMDtcbiAgICAgIGJvcmRlci13aWR0aDogKCR0b29sdGlwLWFycm93LXdpZHRoIC8gMikgJHRvb2x0aXAtYXJyb3ctaGVpZ2h0ICgkdG9vbHRpcC1hcnJvdy13aWR0aCAvIDIpIDA7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICR0b29sdGlwLWFycm93LWNvbG9yO1xuICAgIH1cbiAgfVxufVxuXG4uYnMtdG9vbHRpcC1ib3R0b20ge1xuICBwYWRkaW5nOiAkdG9vbHRpcC1hcnJvdy1oZWlnaHQgMDtcblxuICAuYXJyb3cge1xuICAgIHRvcDogMDtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBib3R0b206IDA7XG4gICAgICBib3JkZXItd2lkdGg6IDAgKCR0b29sdGlwLWFycm93LXdpZHRoIC8gMikgJHRvb2x0aXAtYXJyb3ctaGVpZ2h0O1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHRvb2x0aXAtYXJyb3ctY29sb3I7XG4gICAgfVxuICB9XG59XG5cbi5icy10b29sdGlwLWxlZnQge1xuICBwYWRkaW5nOiAwICR0b29sdGlwLWFycm93LWhlaWdodDtcblxuICAuYXJyb3cge1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAkdG9vbHRpcC1hcnJvdy1oZWlnaHQ7XG4gICAgaGVpZ2h0OiAkdG9vbHRpcC1hcnJvdy13aWR0aDtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgYm9yZGVyLXdpZHRoOiAoJHRvb2x0aXAtYXJyb3ctd2lkdGggLyAyKSAwICgkdG9vbHRpcC1hcnJvdy13aWR0aCAvIDIpICR0b29sdGlwLWFycm93LWhlaWdodDtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkdG9vbHRpcC1hcnJvdy1jb2xvcjtcbiAgICB9XG4gIH1cbn1cblxuLmJzLXRvb2x0aXAtYXV0byB7XG4gICZbeC1wbGFjZW1lbnRePVwidG9wXCJdIHtcbiAgICBAZXh0ZW5kIC5icy10b29sdGlwLXRvcDtcbiAgfVxuICAmW3gtcGxhY2VtZW50Xj1cInJpZ2h0XCJdIHtcbiAgICBAZXh0ZW5kIC5icy10b29sdGlwLXJpZ2h0O1xuICB9XG4gICZbeC1wbGFjZW1lbnRePVwiYm90dG9tXCJdIHtcbiAgICBAZXh0ZW5kIC5icy10b29sdGlwLWJvdHRvbTtcbiAgfVxuICAmW3gtcGxhY2VtZW50Xj1cImxlZnRcIl0ge1xuICAgIEBleHRlbmQgLmJzLXRvb2x0aXAtbGVmdDtcbiAgfVxufVxuXG4vLyBXcmFwcGVyIGZvciB0aGUgdG9vbHRpcCBjb250ZW50XG4udG9vbHRpcC1pbm5lciB7XG4gIG1heC13aWR0aDogJHRvb2x0aXAtbWF4LXdpZHRoO1xuICBwYWRkaW5nOiAkdG9vbHRpcC1wYWRkaW5nLXkgJHRvb2x0aXAtcGFkZGluZy14O1xuICBjb2xvcjogJHRvb2x0aXAtY29sb3I7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHRvb2x0aXAtYmc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJHRvb2x0aXAtYm9yZGVyLXJhZGl1cyk7XG59XG4iLCJAbWl4aW4gcmVzZXQtdGV4dCgpIHtcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1iYXNlO1xuICAvLyBXZSBkZWxpYmVyYXRlbHkgZG8gTk9UIHJlc2V0IGZvbnQtc2l6ZSBvciB3b3JkLXdyYXAuXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQtYmFzZTtcbiAgdGV4dC1hbGlnbjogbGVmdDsgLy8gRmFsbGJhY2sgZm9yIHdoZXJlIGBzdGFydGAgaXMgbm90IHN1cHBvcnRlZFxuICB0ZXh0LWFsaWduOiBzdGFydDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcbiAgd29yZC1zcGFjaW5nOiBub3JtYWw7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gIGxpbmUtYnJlYWs6IGF1dG87XG59XG4iLCIucG9wb3ZlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAkemluZGV4LXBvcG92ZXI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXgtd2lkdGg6ICRwb3BvdmVyLW1heC13aWR0aDtcbiAgLy8gT3VyIHBhcmVudCBlbGVtZW50IGNhbiBiZSBhcmJpdHJhcnkgc2luY2UgdG9vbHRpcHMgYXJlIGJ5IGRlZmF1bHQgaW5zZXJ0ZWQgYXMgYSBzaWJsaW5nIG9mIHRoZWlyIHRhcmdldCBlbGVtZW50LlxuICAvLyBTbyByZXNldCBvdXIgZm9udCBhbmQgdGV4dCBwcm9wZXJ0aWVzIHRvIGF2b2lkIGluaGVyaXRpbmcgd2VpcmQgdmFsdWVzLlxuICBAaW5jbHVkZSByZXNldC10ZXh0KCk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkcG9wb3Zlci1mb250LXNpemUpO1xuICAvLyBBbGxvdyBicmVha2luZyB2ZXJ5IGxvbmcgd29yZHMgc28gdGhleSBkb24ndCBvdmVyZmxvdyB0aGUgcG9wb3ZlcidzIGJvdW5kc1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICRwb3BvdmVyLWJnO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6ICRwb3BvdmVyLWJvcmRlci13aWR0aCBzb2xpZCAkcG9wb3Zlci1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJHBvcG92ZXItYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJHBvcG92ZXItYm94LXNoYWRvdyk7XG5cbiAgLmFycm93IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6ICRwb3BvdmVyLWFycm93LXdpZHRoO1xuICAgIGhlaWdodDogJHBvcG92ZXItYXJyb3ctaGVpZ2h0O1xuICAgIG1hcmdpbjogMCAkcG9wb3Zlci1ib3JkZXItcmFkaXVzO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIH1cbiAgfVxufVxuXG4uYnMtcG9wb3Zlci10b3Age1xuICBtYXJnaW4tYm90dG9tOiAkcG9wb3Zlci1hcnJvdy1oZWlnaHQ7XG5cbiAgPiAuYXJyb3cge1xuICAgIGJvdHRvbTogc3VidHJhY3QoLSRwb3BvdmVyLWFycm93LWhlaWdodCwgJHBvcG92ZXItYm9yZGVyLXdpZHRoKTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBib3R0b206IDA7XG4gICAgICBib3JkZXItd2lkdGg6ICRwb3BvdmVyLWFycm93LWhlaWdodCAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAwO1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHBvcG92ZXItYXJyb3ctb3V0ZXItY29sb3I7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgYm90dG9tOiAkcG9wb3Zlci1ib3JkZXItd2lkdGg7XG4gICAgICBib3JkZXItd2lkdGg6ICRwb3BvdmVyLWFycm93LWhlaWdodCAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAwO1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHBvcG92ZXItYXJyb3ctY29sb3I7XG4gICAgfVxuICB9XG59XG5cbi5icy1wb3BvdmVyLXJpZ2h0IHtcbiAgbWFyZ2luLWxlZnQ6ICRwb3BvdmVyLWFycm93LWhlaWdodDtcblxuICA+IC5hcnJvdyB7XG4gICAgbGVmdDogc3VidHJhY3QoLSRwb3BvdmVyLWFycm93LWhlaWdodCwgJHBvcG92ZXItYm9yZGVyLXdpZHRoKTtcbiAgICB3aWR0aDogJHBvcG92ZXItYXJyb3ctaGVpZ2h0O1xuICAgIGhlaWdodDogJHBvcG92ZXItYXJyb3ctd2lkdGg7XG4gICAgbWFyZ2luOiAkcG9wb3Zlci1ib3JkZXItcmFkaXVzIDA7IC8vIG1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lcyBub3QgdG91Y2ggdGhlIHBvcG92ZXIncyByb3VuZGVkIGNvcm5lcnNcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgYm9yZGVyLXdpZHRoOiAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAkcG9wb3Zlci1hcnJvdy1oZWlnaHQgKCRwb3BvdmVyLWFycm93LXdpZHRoIC8gMikgMDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJHBvcG92ZXItYXJyb3ctb3V0ZXItY29sb3I7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgbGVmdDogJHBvcG92ZXItYm9yZGVyLXdpZHRoO1xuICAgICAgYm9yZGVyLXdpZHRoOiAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAkcG9wb3Zlci1hcnJvdy1oZWlnaHQgKCRwb3BvdmVyLWFycm93LXdpZHRoIC8gMikgMDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJHBvcG92ZXItYXJyb3ctY29sb3I7XG4gICAgfVxuICB9XG59XG5cbi5icy1wb3BvdmVyLWJvdHRvbSB7XG4gIG1hcmdpbi10b3A6ICRwb3BvdmVyLWFycm93LWhlaWdodDtcblxuICA+IC5hcnJvdyB7XG4gICAgdG9wOiBzdWJ0cmFjdCgtJHBvcG92ZXItYXJyb3ctaGVpZ2h0LCAkcG9wb3Zlci1ib3JkZXItd2lkdGgpO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHRvcDogMDtcbiAgICAgIGJvcmRlci13aWR0aDogMCAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAkcG9wb3Zlci1hcnJvdy1oZWlnaHQgKCRwb3BvdmVyLWFycm93LXdpZHRoIC8gMik7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICB0b3A6ICRwb3BvdmVyLWJvcmRlci13aWR0aDtcbiAgICAgIGJvcmRlci13aWR0aDogMCAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAkcG9wb3Zlci1hcnJvdy1oZWlnaHQgKCRwb3BvdmVyLWFycm93LXdpZHRoIC8gMik7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkcG9wb3Zlci1hcnJvdy1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIHdpbGwgcmVtb3ZlIHRoZSBwb3BvdmVyLWhlYWRlcidzIGJvcmRlciBqdXN0IGJlbG93IHRoZSBhcnJvd1xuICAucG9wb3Zlci1oZWFkZXI6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6ICRwb3BvdmVyLWFycm93LXdpZHRoO1xuICAgIG1hcmdpbi1sZWZ0OiAtJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgYm9yZGVyLWJvdHRvbTogJHBvcG92ZXItYm9yZGVyLXdpZHRoIHNvbGlkICRwb3BvdmVyLWhlYWRlci1iZztcbiAgfVxufVxuXG4uYnMtcG9wb3Zlci1sZWZ0IHtcbiAgbWFyZ2luLXJpZ2h0OiAkcG9wb3Zlci1hcnJvdy1oZWlnaHQ7XG5cbiAgPiAuYXJyb3cge1xuICAgIHJpZ2h0OiBzdWJ0cmFjdCgtJHBvcG92ZXItYXJyb3ctaGVpZ2h0LCAkcG9wb3Zlci1ib3JkZXItd2lkdGgpO1xuICAgIHdpZHRoOiAkcG9wb3Zlci1hcnJvdy1oZWlnaHQ7XG4gICAgaGVpZ2h0OiAkcG9wb3Zlci1hcnJvdy13aWR0aDtcbiAgICBtYXJnaW46ICRwb3BvdmVyLWJvcmRlci1yYWRpdXMgMDsgLy8gbWFrZSBzdXJlIHRoZSBhcnJvdyBkb2VzIG5vdCB0b3VjaCB0aGUgcG9wb3ZlcidzIHJvdW5kZWQgY29ybmVyc1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgYm9yZGVyLXdpZHRoOiAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAwICgkcG9wb3Zlci1hcnJvdy13aWR0aCAvIDIpICRwb3BvdmVyLWFycm93LWhlaWdodDtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICByaWdodDogJHBvcG92ZXItYm9yZGVyLXdpZHRoO1xuICAgICAgYm9yZGVyLXdpZHRoOiAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAwICgkcG9wb3Zlci1hcnJvdy13aWR0aCAvIDIpICRwb3BvdmVyLWFycm93LWhlaWdodDtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkcG9wb3Zlci1hcnJvdy1jb2xvcjtcbiAgICB9XG4gIH1cbn1cblxuLmJzLXBvcG92ZXItYXV0byB7XG4gICZbeC1wbGFjZW1lbnRePVwidG9wXCJdIHtcbiAgICBAZXh0ZW5kIC5icy1wb3BvdmVyLXRvcDtcbiAgfVxuICAmW3gtcGxhY2VtZW50Xj1cInJpZ2h0XCJdIHtcbiAgICBAZXh0ZW5kIC5icy1wb3BvdmVyLXJpZ2h0O1xuICB9XG4gICZbeC1wbGFjZW1lbnRePVwiYm90dG9tXCJdIHtcbiAgICBAZXh0ZW5kIC5icy1wb3BvdmVyLWJvdHRvbTtcbiAgfVxuICAmW3gtcGxhY2VtZW50Xj1cImxlZnRcIl0ge1xuICAgIEBleHRlbmQgLmJzLXBvcG92ZXItbGVmdDtcbiAgfVxufVxuXG5cbi8vIE9mZnNldCB0aGUgcG9wb3ZlciB0byBhY2NvdW50IGZvciB0aGUgcG9wb3ZlciBhcnJvd1xuLnBvcG92ZXItaGVhZGVyIHtcbiAgcGFkZGluZzogJHBvcG92ZXItaGVhZGVyLXBhZGRpbmcteSAkcG9wb3Zlci1oZWFkZXItcGFkZGluZy14O1xuICBtYXJnaW4tYm90dG9tOiAwOyAvLyBSZXNldCB0aGUgZGVmYXVsdCBmcm9tIFJlYm9vdFxuICBAaW5jbHVkZSBmb250LXNpemUoJGZvbnQtc2l6ZS1iYXNlKTtcbiAgY29sb3I6ICRwb3BvdmVyLWhlYWRlci1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHBvcG92ZXItaGVhZGVyLWJnO1xuICBib3JkZXItYm90dG9tOiAkcG9wb3Zlci1ib3JkZXItd2lkdGggc29saWQgZGFya2VuKCRwb3BvdmVyLWhlYWRlci1iZywgNSUpO1xuICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygkcG9wb3Zlci1pbm5lci1ib3JkZXItcmFkaXVzKTtcblxuICAmOmVtcHR5IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5wb3BvdmVyLWJvZHkge1xuICBwYWRkaW5nOiAkcG9wb3Zlci1ib2R5LXBhZGRpbmcteSAkcG9wb3Zlci1ib2R5LXBhZGRpbmcteDtcbiAgY29sb3I6ICRwb3BvdmVyLWJvZHktY29sb3I7XG59XG4iLCIvLyBOb3RlcyBvbiB0aGUgY2xhc3Nlczpcbi8vXG4vLyAxLiAuY2Fyb3VzZWwucG9pbnRlci1ldmVudCBzaG91bGQgaWRlYWxseSBiZSBwYW4teSAodG8gYWxsb3cgZm9yIHVzZXJzIHRvIHNjcm9sbCB2ZXJ0aWNhbGx5KVxuLy8gICAgZXZlbiB3aGVuIHRoZWlyIHNjcm9sbCBhY3Rpb24gc3RhcnRlZCBvbiBhIGNhcm91c2VsLCBidXQgZm9yIGNvbXBhdGliaWxpdHkgKHdpdGggRmlyZWZveClcbi8vICAgIHdlJ3JlIHByZXZlbnRpbmcgYWxsIGFjdGlvbnMgaW5zdGVhZFxuLy8gMi4gVGhlIC5jYXJvdXNlbC1pdGVtLWxlZnQgYW5kIC5jYXJvdXNlbC1pdGVtLXJpZ2h0IGlzIHVzZWQgdG8gaW5kaWNhdGUgd2hlcmVcbi8vICAgIHRoZSBhY3RpdmUgc2xpZGUgaXMgaGVhZGluZy5cbi8vIDMuIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbSBpcyB0aGUgY3VycmVudCBzbGlkZS5cbi8vIDQuIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0IGFuZCAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcmlnaHQgaXMgdGhlIGN1cnJlbnRcbi8vICAgIHNsaWRlIGluIGl0cyBpbi10cmFuc2l0aW9uIHN0YXRlLiBPbmx5IG9uZSBvZiB0aGVzZSBvY2N1cnMgYXQgYSB0aW1lLlxuLy8gNS4gLmNhcm91c2VsLWl0ZW0tbmV4dC5jYXJvdXNlbC1pdGVtLWxlZnQgYW5kIC5jYXJvdXNlbC1pdGVtLXByZXYuY2Fyb3VzZWwtaXRlbS1yaWdodFxuLy8gICAgaXMgdGhlIHVwY29taW5nIHNsaWRlIGluIHRyYW5zaXRpb24uXG5cbi5jYXJvdXNlbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmNhcm91c2VsLnBvaW50ZXItZXZlbnQge1xuICB0b3VjaC1hY3Rpb246IHBhbi15O1xufVxuXG4uY2Fyb3VzZWwtaW5uZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBjbGVhcmZpeCgpO1xufVxuXG4uY2Fyb3VzZWwtaXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogbm9uZTtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJGNhcm91c2VsLXRyYW5zaXRpb24pO1xufVxuXG4uY2Fyb3VzZWwtaXRlbS5hY3RpdmUsXG4uY2Fyb3VzZWwtaXRlbS1uZXh0LFxuLmNhcm91c2VsLWl0ZW0tcHJldiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uY2Fyb3VzZWwtaXRlbS1uZXh0Om5vdCguY2Fyb3VzZWwtaXRlbS1sZWZ0KSxcbi5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cblxuLmNhcm91c2VsLWl0ZW0tcHJldjpub3QoLmNhcm91c2VsLWl0ZW0tcmlnaHQpLFxuLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xufVxuXG5cbi8vXG4vLyBBbHRlcm5hdGUgdHJhbnNpdGlvbnNcbi8vXG5cbi5jYXJvdXNlbC1mYWRlIHtcbiAgLmNhcm91c2VsLWl0ZW0ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cblxuICAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsXG4gIC5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LFxuICAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQge1xuICAgIHotaW5kZXg6IDE7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0LFxuICAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcmlnaHQge1xuICAgIHotaW5kZXg6IDA7XG4gICAgb3BhY2l0eTogMDtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkgMHMgJGNhcm91c2VsLXRyYW5zaXRpb24tZHVyYXRpb24pO1xuICB9XG59XG5cblxuLy9cbi8vIExlZnQvcmlnaHQgY29udHJvbHMgZm9yIG5hdlxuLy9cblxuLmNhcm91c2VsLWNvbnRyb2wtcHJldixcbi5jYXJvdXNlbC1jb250cm9sLW5leHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB6LWluZGV4OiAxO1xuICAvLyBVc2UgZmxleCBmb3IgYWxpZ25tZW50ICgxLTMpXG4gIGRpc3BsYXk6IGZsZXg7IC8vIDEuIGFsbG93IGZsZXggc3R5bGVzXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IC8vIDIuIHZlcnRpY2FsbHkgY2VudGVyIGNvbnRlbnRzXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyOyAvLyAzLiBob3Jpem9udGFsbHkgY2VudGVyIGNvbnRlbnRzXG4gIHdpZHRoOiAkY2Fyb3VzZWwtY29udHJvbC13aWR0aDtcbiAgY29sb3I6ICRjYXJvdXNlbC1jb250cm9sLWNvbG9yO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG9wYWNpdHk6ICRjYXJvdXNlbC1jb250cm9sLW9wYWNpdHk7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJGNhcm91c2VsLWNvbnRyb2wtdHJhbnNpdGlvbik7XG5cbiAgLy8gSG92ZXIvZm9jdXMgc3RhdGVcbiAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgY29sb3I6ICRjYXJvdXNlbC1jb250cm9sLWNvbG9yO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBvdXRsaW5lOiAwO1xuICAgIG9wYWNpdHk6ICRjYXJvdXNlbC1jb250cm9sLWhvdmVyLW9wYWNpdHk7XG4gIH1cbn1cbi5jYXJvdXNlbC1jb250cm9sLXByZXYge1xuICBsZWZ0OiAwO1xuICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSgkYmxhY2ssIC4yNSksIHJnYmEoJGJsYWNrLCAuMDAxKSk7XG4gIH1cbn1cbi5jYXJvdXNlbC1jb250cm9sLW5leHQge1xuICByaWdodDogMDtcbiAgQGlmICRlbmFibGUtZ3JhZGllbnRzIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMjcwZGVnLCByZ2JhKCRibGFjaywgLjI1KSwgcmdiYSgkYmxhY2ssIC4wMDEpKTtcbiAgfVxufVxuXG4vLyBJY29ucyBmb3Igd2l0aGluXG4uY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24sXG4uY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkY2Fyb3VzZWwtY29udHJvbC1pY29uLXdpZHRoO1xuICBoZWlnaHQ6ICRjYXJvdXNlbC1jb250cm9sLWljb24td2lkdGg7XG4gIGJhY2tncm91bmQ6IG5vLXJlcGVhdCA1MCUgLyAxMDAlIDEwMCU7XG59XG4uY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24ge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRjYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbi1iZyk7XG59XG4uY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24ge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRjYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbi1iZyk7XG59XG5cblxuLy8gT3B0aW9uYWwgaW5kaWNhdG9yIHBpcHNcbi8vXG4vLyBBZGQgYW4gb3JkZXJlZCBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBjbGFzcyBhbmQgYWRkIGEgbGlzdCBpdGVtIGZvciBlYWNoXG4vLyBzbGlkZSB5b3VyIGNhcm91c2VsIGhvbGRzLlxuXG4uY2Fyb3VzZWwtaW5kaWNhdG9ycyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nLWxlZnQ6IDA7IC8vIG92ZXJyaWRlIDxvbD4gZGVmYXVsdFxuICAvLyBVc2UgdGhlIC5jYXJvdXNlbC1jb250cm9sJ3Mgd2lkdGggYXMgbWFyZ2luIHNvIHdlIGRvbid0IG92ZXJsYXkgdGhvc2VcbiAgbWFyZ2luLXJpZ2h0OiAkY2Fyb3VzZWwtY29udHJvbC13aWR0aDtcbiAgbWFyZ2luLWxlZnQ6ICRjYXJvdXNlbC1jb250cm9sLXdpZHRoO1xuICBsaXN0LXN0eWxlOiBub25lO1xuXG4gIGxpIHtcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogJGNhcm91c2VsLWluZGljYXRvci13aWR0aDtcbiAgICBoZWlnaHQ6ICRjYXJvdXNlbC1pbmRpY2F0b3ItaGVpZ2h0O1xuICAgIG1hcmdpbi1yaWdodDogJGNhcm91c2VsLWluZGljYXRvci1zcGFjZXI7XG4gICAgbWFyZ2luLWxlZnQ6ICRjYXJvdXNlbC1pbmRpY2F0b3Itc3BhY2VyO1xuICAgIHRleHQtaW5kZW50OiAtOTk5cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjYXJvdXNlbC1pbmRpY2F0b3ItYWN0aXZlLWJnO1xuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gICAgLy8gVXNlIHRyYW5zcGFyZW50IGJvcmRlcnMgdG8gaW5jcmVhc2UgdGhlIGhpdCBhcmVhIGJ5IDEwcHggb24gdG9wIGFuZCBib3R0b20uXG4gICAgYm9yZGVyLXRvcDogJGNhcm91c2VsLWluZGljYXRvci1oaXQtYXJlYS1oZWlnaHQgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbTogJGNhcm91c2VsLWluZGljYXRvci1oaXQtYXJlYS1oZWlnaHQgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgb3BhY2l0eTogLjU7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbigkY2Fyb3VzZWwtaW5kaWNhdG9yLXRyYW5zaXRpb24pO1xuICB9XG5cbiAgLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG5cbi8vIE9wdGlvbmFsIGNhcHRpb25zXG4vL1xuLy9cblxuLmNhcm91c2VsLWNhcHRpb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAoMTAwJSAtICRjYXJvdXNlbC1jYXB0aW9uLXdpZHRoKSAvIDI7XG4gIGJvdHRvbTogMjBweDtcbiAgbGVmdDogKDEwMCUgLSAkY2Fyb3VzZWwtY2FwdGlvbi13aWR0aCkgLyAyO1xuICB6LWluZGV4OiAxMDtcbiAgcGFkZGluZy10b3A6IDIwcHg7XG4gIHBhZGRpbmctYm90dG9tOiAyMHB4O1xuICBjb2xvcjogJGNhcm91c2VsLWNhcHRpb24tY29sb3I7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbiIsIkBtaXhpbiBjbGVhcmZpeCgpIHtcbiAgJjo6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gIH1cbn1cbiIsIi8vXG4vLyBSb3RhdGluZyBib3JkZXJcbi8vXG5cbkBrZXlmcmFtZXMgc3Bpbm5lci1ib3JkZXIge1xuICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbn1cblxuLnNwaW5uZXItYm9yZGVyIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogJHNwaW5uZXItd2lkdGg7XG4gIGhlaWdodDogJHNwaW5uZXItaGVpZ2h0O1xuICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207XG4gIGJvcmRlcjogJHNwaW5uZXItYm9yZGVyLXdpZHRoIHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LWJsYWNrbGlzdFxuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGFuaW1hdGlvbjogc3Bpbm5lci1ib3JkZXIgLjc1cyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbi5zcGlubmVyLWJvcmRlci1zbSB7XG4gIHdpZHRoOiAkc3Bpbm5lci13aWR0aC1zbTtcbiAgaGVpZ2h0OiAkc3Bpbm5lci1oZWlnaHQtc207XG4gIGJvcmRlci13aWR0aDogJHNwaW5uZXItYm9yZGVyLXdpZHRoLXNtO1xufVxuXG4vL1xuLy8gR3Jvd2luZyBjaXJjbGVcbi8vXG5cbkBrZXlmcmFtZXMgc3Bpbm5lci1ncm93IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbi5zcGlubmVyLWdyb3cge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkc3Bpbm5lci13aWR0aDtcbiAgaGVpZ2h0OiAkc3Bpbm5lci1oZWlnaHQ7XG4gIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktYmxhY2tsaXN0XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgb3BhY2l0eTogMDtcbiAgYW5pbWF0aW9uOiBzcGlubmVyLWdyb3cgLjc1cyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbi5zcGlubmVyLWdyb3ctc20ge1xuICB3aWR0aDogJHNwaW5uZXItd2lkdGgtc207XG4gIGhlaWdodDogJHNwaW5uZXItaGVpZ2h0LXNtO1xufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbi5hbGlnbi1iYXNlbGluZSAgICB7IHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9IC8vIEJyb3dzZXIgZGVmYXVsdFxuLmFsaWduLXRvcCAgICAgICAgIHsgdmVydGljYWwtYWxpZ246IHRvcCAhaW1wb3J0YW50OyB9XG4uYWxpZ24tbWlkZGxlICAgICAgeyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlICFpbXBvcnRhbnQ7IH1cbi5hbGlnbi1ib3R0b20gICAgICB7IHZlcnRpY2FsLWFsaWduOiBib3R0b20gIWltcG9ydGFudDsgfVxuLmFsaWduLXRleHQtYm90dG9tIHsgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tICFpbXBvcnRhbnQ7IH1cbi5hbGlnbi10ZXh0LXRvcCAgICB7IHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcCAhaW1wb3J0YW50OyB9XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuLy8gQ29udGV4dHVhbCBiYWNrZ3JvdW5kc1xuXG5AbWl4aW4gYmctdmFyaWFudCgkcGFyZW50LCAkY29sb3IsICRpZ25vcmUtd2FybmluZzogZmFsc2UpIHtcbiAgI3skcGFyZW50fSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yICFpbXBvcnRhbnQ7XG4gIH1cbiAgYSN7JHBhcmVudH0sXG4gIGJ1dHRvbiN7JHBhcmVudH0ge1xuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRjb2xvciwgMTAlKSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBkZXByZWNhdGUoXCJUaGUgYGJnLXZhcmlhbnRgIG1peGluXCIsIFwidjQuNC4wXCIsIFwidjVcIiwgJGlnbm9yZS13YXJuaW5nKTtcbn1cblxuQG1peGluIGJnLWdyYWRpZW50LXZhcmlhbnQoJHBhcmVudCwgJGNvbG9yKSB7XG4gICN7JHBhcmVudH0ge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvciBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCBtaXgoJGJvZHktYmcsICRjb2xvciwgMTUlKSwgJGNvbG9yKSByZXBlYXQteCAhaW1wb3J0YW50O1xuICB9XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gIEBpbmNsdWRlIGJnLXZhcmlhbnQoXCIuYmctI3skY29sb3J9XCIsICR2YWx1ZSwgdHJ1ZSk7XG59XG5cbkBpZiAkZW5hYmxlLWdyYWRpZW50cyB7XG4gIEBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAgIEBpbmNsdWRlIGJnLWdyYWRpZW50LXZhcmlhbnQoXCIuYmctZ3JhZGllbnQtI3skY29sb3J9XCIsICR2YWx1ZSk7XG4gIH1cbn1cblxuLmJnLXdoaXRlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5iZy10cmFuc3BhcmVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBwcm9wZXJ0eS1ibGFja2xpc3QsIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG4vL1xuLy8gQm9yZGVyXG4vL1xuXG4uYm9yZGVyICAgICAgICAgeyBib3JkZXI6ICRib3JkZXItd2lkdGggc29saWQgJGJvcmRlci1jb2xvciAhaW1wb3J0YW50OyB9XG4uYm9yZGVyLXRvcCAgICAgeyBib3JkZXItdG9wOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRib3JkZXItY29sb3IgIWltcG9ydGFudDsgfVxuLmJvcmRlci1yaWdodCAgIHsgYm9yZGVyLXJpZ2h0OiAkYm9yZGVyLXdpZHRoIHNvbGlkICRib3JkZXItY29sb3IgIWltcG9ydGFudDsgfVxuLmJvcmRlci1ib3R0b20gIHsgYm9yZGVyLWJvdHRvbTogJGJvcmRlci13aWR0aCBzb2xpZCAkYm9yZGVyLWNvbG9yICFpbXBvcnRhbnQ7IH1cbi5ib3JkZXItbGVmdCAgICB7IGJvcmRlci1sZWZ0OiAkYm9yZGVyLXdpZHRoIHNvbGlkICRib3JkZXItY29sb3IgIWltcG9ydGFudDsgfVxuXG4uYm9yZGVyLTAgICAgICAgIHsgYm9yZGVyOiAwICFpbXBvcnRhbnQ7IH1cbi5ib3JkZXItdG9wLTAgICAgeyBib3JkZXItdG9wOiAwICFpbXBvcnRhbnQ7IH1cbi5ib3JkZXItcmlnaHQtMCAgeyBib3JkZXItcmlnaHQ6IDAgIWltcG9ydGFudDsgfVxuLmJvcmRlci1ib3R0b20tMCB7IGJvcmRlci1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuLmJvcmRlci1sZWZ0LTAgICB7IGJvcmRlci1sZWZ0OiAwICFpbXBvcnRhbnQ7IH1cblxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gIC5ib3JkZXItI3skY29sb3J9IHtcbiAgICBib3JkZXItY29sb3I6ICR2YWx1ZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5ib3JkZXItd2hpdGUge1xuICBib3JkZXItY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4vL1xuLy8gQm9yZGVyLXJhZGl1c1xuLy9cblxuLnJvdW5kZWQtc20ge1xuICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbSAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLXRvcCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC1yaWdodCB7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJGJvcmRlci1yYWRpdXMgIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQtYm90dG9tIHtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLWxlZnQge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC1sZyB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLWNpcmNsZSB7XG4gIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC1waWxsIHtcbiAgYm9yZGVyLXJhZGl1czogJHJvdW5kZWQtcGlsbCAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC0wIHtcbiAgYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbi8vXG4vLyBVdGlsaXRpZXMgZm9yIGNvbW1vbiBgZGlzcGxheWAgdmFsdWVzXG4vL1xuXG5AZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XG5cbiAgICBAZWFjaCAkdmFsdWUgaW4gJGRpc3BsYXlzIHtcbiAgICAgIC5kI3skaW5maXh9LSN7JHZhbHVlfSB7IGRpc3BsYXk6ICR2YWx1ZSAhaW1wb3J0YW50OyB9XG4gICAgfVxuICB9XG59XG5cblxuLy9cbi8vIFV0aWxpdGllcyBmb3IgdG9nZ2xpbmcgYGRpc3BsYXlgIGluIHByaW50XG4vL1xuXG5AbWVkaWEgcHJpbnQge1xuICBAZWFjaCAkdmFsdWUgaW4gJGRpc3BsYXlzIHtcbiAgICAuZC1wcmludC0jeyR2YWx1ZX0geyBkaXNwbGF5OiAkdmFsdWUgIWltcG9ydGFudDsgfVxuICB9XG59XG4iLCIvLyBDcmVkaXQ6IE5pY29sYXMgR2FsbGFnaGVyIGFuZCBTVUlUIENTUy5cblxuLmVtYmVkLXJlc3BvbnNpdmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAmOjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gIH1cblxuICAuZW1iZWQtcmVzcG9uc2l2ZS1pdGVtLFxuICBpZnJhbWUsXG4gIGVtYmVkLFxuICBvYmplY3QsXG4gIHZpZGVvIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBib3JkZXI6IDA7XG4gIH1cbn1cblxuQGVhY2ggJGVtYmVkLXJlc3BvbnNpdmUtYXNwZWN0LXJhdGlvIGluICRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpb3Mge1xuICAkZW1iZWQtcmVzcG9uc2l2ZS1hc3BlY3QtcmF0aW8teDogbnRoKCRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpbywgMSk7XG4gICRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpby15OiBudGgoJGVtYmVkLXJlc3BvbnNpdmUtYXNwZWN0LXJhdGlvLCAyKTtcblxuICAuZW1iZWQtcmVzcG9uc2l2ZS0jeyRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpby14fWJ5I3skZW1iZWQtcmVzcG9uc2l2ZS1hc3BlY3QtcmF0aW8teX0ge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBwYWRkaW5nLXRvcDogcGVyY2VudGFnZSgkZW1iZWQtcmVzcG9uc2l2ZS1hc3BlY3QtcmF0aW8teSAvICRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpby14KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG4vLyBGbGV4IHZhcmlhdGlvblxuLy9cbi8vIEN1c3RvbSBzdHlsZXMgZm9yIGFkZGl0aW9uYWwgZmxleCBhbGlnbm1lbnQgb3B0aW9ucy5cblxuQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkYnJlYWtwb2ludCkge1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuXG4gICAgLmZsZXgjeyRpbmZpeH0tcm93ICAgICAgICAgICAgeyBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxleCN7JGluZml4fS1jb2x1bW4gICAgICAgICB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsgfVxuICAgIC5mbGV4I3skaW5maXh9LXJvdy1yZXZlcnNlICAgIHsgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxleCN7JGluZml4fS1jb2x1bW4tcmV2ZXJzZSB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OyB9XG5cbiAgICAuZmxleCN7JGluZml4fS13cmFwICAgICAgICAgeyBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsgfVxuICAgIC5mbGV4I3skaW5maXh9LW5vd3JhcCAgICAgICB7IGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxleCN7JGluZml4fS13cmFwLXJldmVyc2UgeyBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OyB9XG4gICAgLmZsZXgjeyRpbmZpeH0tZmlsbCAgICAgICAgIHsgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsgfVxuICAgIC5mbGV4I3skaW5maXh9LWdyb3ctMCAgICAgICB7IGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OyB9XG4gICAgLmZsZXgjeyRpbmZpeH0tZ3Jvdy0xICAgICAgIHsgZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxleCN7JGluZml4fS1zaHJpbmstMCAgICAgeyBmbGV4LXNocmluazogMCAhaW1wb3J0YW50OyB9XG4gICAgLmZsZXgjeyRpbmZpeH0tc2hyaW5rLTEgICAgIHsgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsgfVxuXG4gICAgLmp1c3RpZnktY29udGVudCN7JGluZml4fS1zdGFydCAgIHsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgICAuanVzdGlmeS1jb250ZW50I3skaW5maXh9LWVuZCAgICAgeyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgICAuanVzdGlmeS1jb250ZW50I3skaW5maXh9LWNlbnRlciAgeyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gICAgLmp1c3RpZnktY29udGVudCN7JGluZml4fS1iZXR3ZWVuIHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cbiAgICAuanVzdGlmeS1jb250ZW50I3skaW5maXh9LWFyb3VuZCAgeyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9XG5cbiAgICAuYWxpZ24taXRlbXMjeyRpbmZpeH0tc3RhcnQgICAgeyBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLWl0ZW1zI3skaW5maXh9LWVuZCAgICAgIHsgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24taXRlbXMjeyRpbmZpeH0tY2VudGVyICAgeyBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24taXRlbXMjeyRpbmZpeH0tYmFzZWxpbmUgeyBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1pdGVtcyN7JGluZml4fS1zdHJldGNoICB7IGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7IH1cblxuICAgIC5hbGlnbi1jb250ZW50I3skaW5maXh9LXN0YXJ0ICAgeyBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24tY29udGVudCN7JGluZml4fS1lbmQgICAgIHsgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1jb250ZW50I3skaW5maXh9LWNlbnRlciAgeyBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1jb250ZW50I3skaW5maXh9LWJldHdlZW4geyBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24tY29udGVudCN7JGluZml4fS1hcm91bmQgIHsgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24tY29udGVudCN7JGluZml4fS1zdHJldGNoIHsgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG5cbiAgICAuYWxpZ24tc2VsZiN7JGluZml4fS1hdXRvICAgICB7IGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1zZWxmI3skaW5maXh9LXN0YXJ0ICAgIHsgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLXNlbGYjeyRpbmZpeH0tZW5kICAgICAgeyBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLXNlbGYjeyRpbmZpeH0tY2VudGVyICAgeyBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1zZWxmI3skaW5maXh9LWJhc2VsaW5lIHsgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1zZWxmI3skaW5maXh9LXN0cmV0Y2ggIHsgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG4gIH1cbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG5AZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XG5cbiAgICAuZmxvYXQjeyRpbmZpeH0tbGVmdCAgeyBmbG9hdDogbGVmdCAhaW1wb3J0YW50OyB9XG4gICAgLmZsb2F0I3skaW5maXh9LXJpZ2h0IHsgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxvYXQjeyRpbmZpeH0tbm9uZSAgeyBmbG9hdDogbm9uZSAhaW1wb3J0YW50OyB9XG4gIH1cbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG5AZWFjaCAkdmFsdWUgaW4gJG92ZXJmbG93cyB7XG4gIC5vdmVyZmxvdy0jeyR2YWx1ZX0geyBvdmVyZmxvdzogJHZhbHVlICFpbXBvcnRhbnQ7IH1cbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG4vLyBDb21tb24gdmFsdWVzXG5AZWFjaCAkcG9zaXRpb24gaW4gJHBvc2l0aW9ucyB7XG4gIC5wb3NpdGlvbi0jeyRwb3NpdGlvbn0geyBwb3NpdGlvbjogJHBvc2l0aW9uICFpbXBvcnRhbnQ7IH1cbn1cblxuLy8gU2hvcnRoYW5kXG5cbi5maXhlZC10b3Age1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR6aW5kZXgtZml4ZWQ7XG59XG5cbi5maXhlZC1ib3R0b20ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR6aW5kZXgtZml4ZWQ7XG59XG5cbi5zdGlja3ktdG9wIHtcbiAgQHN1cHBvcnRzIChwb3NpdGlvbjogc3RpY2t5KSB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IDA7XG4gICAgei1pbmRleDogJHppbmRleC1zdGlja3k7XG4gIH1cbn1cbiIsIi8vXG4vLyBTY3JlZW5yZWFkZXJzXG4vL1xuXG4uc3Itb25seSB7XG4gIEBpbmNsdWRlIHNyLW9ubHkoKTtcbn1cblxuLnNyLW9ubHktZm9jdXNhYmxlIHtcbiAgQGluY2x1ZGUgc3Itb25seS1mb2N1c2FibGUoKTtcbn1cbiIsIi8vIE9ubHkgZGlzcGxheSBjb250ZW50IHRvIHNjcmVlbiByZWFkZXJzXG4vL1xuLy8gU2VlOiBodHRwczovL2ExMXlwcm9qZWN0LmNvbS9wb3N0cy9ob3ctdG8taGlkZS1jb250ZW50L1xuLy8gU2VlOiBodHRwczovL2h1Z29naXJhdWRlbC5jb20vMjAxNi8xMC8xMy9jc3MtaGlkZS1hbmQtc2Vlay9cblxuQG1peGluIHNyLW9ubHkoKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogLTFweDsgLy8gRml4IGZvciBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI1Njg2XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJvcmRlcjogMDtcbn1cblxuLy8gVXNlIGluIGNvbmp1bmN0aW9uIHdpdGggLnNyLW9ubHkgdG8gb25seSBkaXNwbGF5IGNvbnRlbnQgd2hlbiBpdCdzIGZvY3VzZWQuXG4vL1xuLy8gVXNlZnVsIGZvciBcIlNraXAgdG8gbWFpbiBjb250ZW50XCIgbGlua3M7IHNlZSBodHRwczovL3d3dy53My5vcmcvVFIvMjAxMy9OT1RFLVdDQUcyMC1URUNIUy0yMDEzMDkwNS9HMVxuLy9cbi8vIENyZWRpdDogSFRNTDUgQm9pbGVycGxhdGVcblxuQG1peGluIHNyLW9ubHktZm9jdXNhYmxlKCkge1xuICAmOmFjdGl2ZSxcbiAgJjpmb2N1cyB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgY2xpcDogYXV0bztcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICB9XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuLnNoYWRvdy1zbSB7IGJveC1zaGFkb3c6ICRib3gtc2hhZG93LXNtICFpbXBvcnRhbnQ7IH1cbi5zaGFkb3cgeyBib3gtc2hhZG93OiAkYm94LXNoYWRvdyAhaW1wb3J0YW50OyB9XG4uc2hhZG93LWxnIHsgYm94LXNoYWRvdzogJGJveC1zaGFkb3ctbGcgIWltcG9ydGFudDsgfVxuLnNoYWRvdy1ub25lIHsgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OyB9XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuLy8gV2lkdGggYW5kIGhlaWdodFxuXG5AZWFjaCAkcHJvcCwgJGFiYnJldiBpbiAod2lkdGg6IHcsIGhlaWdodDogaCkge1xuICBAZWFjaCAkc2l6ZSwgJGxlbmd0aCBpbiAkc2l6ZXMge1xuICAgIC4jeyRhYmJyZXZ9LSN7JHNpemV9IHsgI3skcHJvcH06ICRsZW5ndGggIWltcG9ydGFudDsgfVxuICB9XG59XG5cbi5tdy0xMDAgeyBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuLm1oLTEwMCB7IG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgfVxuXG4vLyBWaWV3cG9ydCBhZGRpdGlvbmFsIGhlbHBlcnNcblxuLm1pbi12dy0xMDAgeyBtaW4td2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7IH1cbi5taW4tdmgtMTAwIHsgbWluLWhlaWdodDogMTAwdmggIWltcG9ydGFudDsgfVxuXG4udnctMTAwIHsgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7IH1cbi52aC0xMDAgeyBoZWlnaHQ6IDEwMHZoICFpbXBvcnRhbnQ7IH1cbiIsIi8vXG4vLyBTdHJldGNoZWQgbGlua1xuLy9cblxuLnN0cmV0Y2hlZC1saW5rIHtcbiAgJjo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgei1pbmRleDogMTtcbiAgICAvLyBKdXN0IGluIGNhc2UgYHBvaW50ZXItZXZlbnRzOiBub25lYCBpcyBzZXQgb24gYSBwYXJlbnRcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIC8vIElFMTAgYnVnZml4LCBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTY5NDc5NjcvaWUxMC1ob3Zlci1wc2V1ZG8tY2xhc3MtZG9lc250LXdvcmstd2l0aG91dC1iYWNrZ3JvdW5kLWNvbG9yXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcbiAgfVxufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbi8vIE1hcmdpbiBhbmQgUGFkZGluZ1xuXG5AZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XG5cbiAgICBAZWFjaCAkcHJvcCwgJGFiYnJldiBpbiAobWFyZ2luOiBtLCBwYWRkaW5nOiBwKSB7XG4gICAgICBAZWFjaCAkc2l6ZSwgJGxlbmd0aCBpbiAkc3BhY2VycyB7XG4gICAgICAgIC4jeyRhYmJyZXZ9I3skaW5maXh9LSN7JHNpemV9IHsgI3skcHJvcH06ICRsZW5ndGggIWltcG9ydGFudDsgfVxuICAgICAgICAuI3skYWJicmV2fXQjeyRpbmZpeH0tI3skc2l6ZX0sXG4gICAgICAgIC4jeyRhYmJyZXZ9eSN7JGluZml4fS0jeyRzaXplfSB7XG4gICAgICAgICAgI3skcHJvcH0tdG9wOiAkbGVuZ3RoICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLiN7JGFiYnJldn1yI3skaW5maXh9LSN7JHNpemV9LFxuICAgICAgICAuI3skYWJicmV2fXgjeyRpbmZpeH0tI3skc2l6ZX0ge1xuICAgICAgICAgICN7JHByb3B9LXJpZ2h0OiAkbGVuZ3RoICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLiN7JGFiYnJldn1iI3skaW5maXh9LSN7JHNpemV9LFxuICAgICAgICAuI3skYWJicmV2fXkjeyRpbmZpeH0tI3skc2l6ZX0ge1xuICAgICAgICAgICN7JHByb3B9LWJvdHRvbTogJGxlbmd0aCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIC4jeyRhYmJyZXZ9bCN7JGluZml4fS0jeyRzaXplfSxcbiAgICAgICAgLiN7JGFiYnJldn14I3skaW5maXh9LSN7JHNpemV9IHtcbiAgICAgICAgICAjeyRwcm9wfS1sZWZ0OiAkbGVuZ3RoICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOZWdhdGl2ZSBtYXJnaW5zIChlLmcuLCB3aGVyZSBgLm1iLW4xYCBpcyBuZWdhdGl2ZSB2ZXJzaW9uIG9mIGAubWItMWApXG4gICAgQGVhY2ggJHNpemUsICRsZW5ndGggaW4gJHNwYWNlcnMge1xuICAgICAgQGlmICRzaXplICE9IDAge1xuICAgICAgICAubSN7JGluZml4fS1uI3skc2l6ZX0geyBtYXJnaW46IC0kbGVuZ3RoICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgLm10I3skaW5maXh9LW4jeyRzaXplfSxcbiAgICAgICAgLm15I3skaW5maXh9LW4jeyRzaXplfSB7XG4gICAgICAgICAgbWFyZ2luLXRvcDogLSRsZW5ndGggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgICAubXIjeyRpbmZpeH0tbiN7JHNpemV9LFxuICAgICAgICAubXgjeyRpbmZpeH0tbiN7JHNpemV9IHtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC0kbGVuZ3RoICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLm1iI3skaW5maXh9LW4jeyRzaXplfSxcbiAgICAgICAgLm15I3skaW5maXh9LW4jeyRzaXplfSB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogLSRsZW5ndGggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgICAubWwjeyRpbmZpeH0tbiN7JHNpemV9LFxuICAgICAgICAubXgjeyRpbmZpeH0tbiN7JHNpemV9IHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogLSRsZW5ndGggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNvbWUgc3BlY2lhbCBtYXJnaW4gdXRpbHNcbiAgICAubSN7JGluZml4fS1hdXRvIHsgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgICAubXQjeyRpbmZpeH0tYXV0byxcbiAgICAubXkjeyRpbmZpeH0tYXV0byB7XG4gICAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5tciN7JGluZml4fS1hdXRvLFxuICAgIC5teCN7JGluZml4fS1hdXRvIHtcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAubWIjeyRpbmZpeH0tYXV0byxcbiAgICAubXkjeyRpbmZpeH0tYXV0byB7XG4gICAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5tbCN7JGluZml4fS1hdXRvLFxuICAgIC5teCN7JGluZml4fS1hdXRvIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuLy9cbi8vIFRleHRcbi8vXG5cbi50ZXh0LW1vbm9zcGFjZSB7IGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlICFpbXBvcnRhbnQ7IH1cblxuLy8gQWxpZ25tZW50XG5cbi50ZXh0LWp1c3RpZnkgIHsgdGV4dC1hbGlnbjoganVzdGlmeSAhaW1wb3J0YW50OyB9XG4udGV4dC13cmFwICAgICB7IHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudDsgfVxuLnRleHQtbm93cmFwICAgeyB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7IH1cbi50ZXh0LXRydW5jYXRlIHsgQGluY2x1ZGUgdGV4dC10cnVuY2F0ZSgpOyB9XG5cbi8vIFJlc3BvbnNpdmUgYWxpZ25tZW50XG5cbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIC50ZXh0I3skaW5maXh9LWxlZnQgICB7IHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsgfVxuICAgIC50ZXh0I3skaW5maXh9LXJpZ2h0ICB7IHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cbiAgICAudGV4dCN7JGluZml4fS1jZW50ZXIgeyB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICB9XG59XG5cbi8vIFRyYW5zZm9ybWF0aW9uXG5cbi50ZXh0LWxvd2VyY2FzZSAgeyB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlICFpbXBvcnRhbnQ7IH1cbi50ZXh0LXVwcGVyY2FzZSAgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7IH1cbi50ZXh0LWNhcGl0YWxpemUgeyB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50OyB9XG5cbi8vIFdlaWdodCBhbmQgaXRhbGljc1xuXG4uZm9udC13ZWlnaHQtbGlnaHQgICB7IGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbGlnaHQgIWltcG9ydGFudDsgfVxuLmZvbnQtd2VpZ2h0LWxpZ2h0ZXIgeyBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWxpZ2h0ZXIgIWltcG9ydGFudDsgfVxuLmZvbnQtd2VpZ2h0LW5vcm1hbCAgeyBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbCAhaW1wb3J0YW50OyB9XG4uZm9udC13ZWlnaHQtYm9sZCAgICB7IGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZCAhaW1wb3J0YW50OyB9XG4uZm9udC13ZWlnaHQtYm9sZGVyICB7IGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZGVyICFpbXBvcnRhbnQ7IH1cbi5mb250LWl0YWxpYyAgICAgICAgIHsgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7IH1cblxuLy8gQ29udGV4dHVhbCBjb2xvcnNcblxuLnRleHQtd2hpdGUgeyBjb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7IH1cblxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gIEBpbmNsdWRlIHRleHQtZW1waGFzaXMtdmFyaWFudChcIi50ZXh0LSN7JGNvbG9yfVwiLCAkdmFsdWUsIHRydWUpO1xufVxuXG4udGV4dC1ib2R5IHsgY29sb3I6ICRib2R5LWNvbG9yICFpbXBvcnRhbnQ7IH1cbi50ZXh0LW11dGVkIHsgY29sb3I6ICR0ZXh0LW11dGVkICFpbXBvcnRhbnQ7IH1cblxuLnRleHQtYmxhY2stNTAgeyBjb2xvcjogcmdiYSgkYmxhY2ssIC41KSAhaW1wb3J0YW50OyB9XG4udGV4dC13aGl0ZS01MCB7IGNvbG9yOiByZ2JhKCR3aGl0ZSwgLjUpICFpbXBvcnRhbnQ7IH1cblxuLy8gTWlzY1xuXG4udGV4dC1oaWRlIHtcbiAgQGluY2x1ZGUgdGV4dC1oaWRlKCRpZ25vcmUtd2FybmluZzogdHJ1ZSk7XG59XG5cbi50ZXh0LWRlY29yYXRpb24tbm9uZSB7IHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OyB9XG5cbi50ZXh0LWJyZWFrIHtcbiAgd29yZC1icmVhazogYnJlYWstd29yZCAhaW1wb3J0YW50OyAvLyBJRSAmIDwgRWRnZSAxOFxuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnQ7XG59XG5cbi8vIFJlc2V0XG5cbi50ZXh0LXJlc2V0IHsgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDsgfVxuIiwiLy8gVGV4dCB0cnVuY2F0ZVxuLy8gUmVxdWlyZXMgaW5saW5lLWJsb2NrIG9yIGJsb2NrIGZvciBwcm9wZXIgc3R5bGluZ1xuXG5AbWl4aW4gdGV4dC10cnVuY2F0ZSgpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuLy8gVHlwb2dyYXBoeVxuXG5AbWl4aW4gdGV4dC1lbXBoYXNpcy12YXJpYW50KCRwYXJlbnQsICRjb2xvciwgJGlnbm9yZS13YXJuaW5nOiBmYWxzZSkge1xuICAjeyRwYXJlbnR9IHtcbiAgICBjb2xvcjogJGNvbG9yICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRlbXBoYXNpemVkLWxpbmstaG92ZXItZGFya2VuLXBlcmNlbnRhZ2UgIT0gMCB7XG4gICAgYSN7JHBhcmVudH0ge1xuICAgICAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgICAgIGNvbG9yOiBkYXJrZW4oJGNvbG9yLCAkZW1waGFzaXplZC1saW5rLWhvdmVyLWRhcmtlbi1wZXJjZW50YWdlKSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBkZXByZWNhdGUoXCJgdGV4dC1lbXBoYXNpcy12YXJpYW50KClgXCIsIFwidjQuNC4wXCIsIFwidjVcIiwgJGlnbm9yZS13YXJuaW5nKTtcbn1cbiIsIi8vIENTUyBpbWFnZSByZXBsYWNlbWVudFxuQG1peGluIHRleHQtaGlkZSgkaWdub3JlLXdhcm5pbmc6IGZhbHNlKSB7XG4gIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBmb250LWZhbWlseS1uby1taXNzaW5nLWdlbmVyaWMtZmFtaWx5LWtleXdvcmRcbiAgZm9udDogMC8wIGE7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDA7XG5cbiAgQGluY2x1ZGUgZGVwcmVjYXRlKFwiYHRleHQtaGlkZSgpYFwiLCBcInY0LjEuMFwiLCBcInY1XCIsICRpZ25vcmUtd2FybmluZyk7XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuLy9cbi8vIFZpc2liaWxpdHkgdXRpbGl0aWVzXG4vL1xuXG4udmlzaWJsZSB7XG4gIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmludmlzaWJsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50O1xufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50LCBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblxuLy8gU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vaDVicC9tYWluLmNzcy9ibG9iL21hc3Rlci9zcmMvX3ByaW50LmNzc1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUHJpbnQgc3R5bGVzLlxuLy8gSW5saW5lZCB0byBhdm9pZCB0aGUgYWRkaXRpb25hbCBIVFRQIHJlcXVlc3Q6XG4vLyBodHRwczovL3d3dy5waHBpZWQuY29tL2RlbGF5LWxvYWRpbmcteW91ci1wcmludC1jc3MvXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AaWYgJGVuYWJsZS1wcmludC1zdHlsZXMge1xuICBAbWVkaWEgcHJpbnQge1xuICAgICosXG4gICAgKjo6YmVmb3JlLFxuICAgICo6OmFmdGVyIHtcbiAgICAgIC8vIEJvb3RzdHJhcCBzcGVjaWZpYzsgY29tbWVudCBvdXQgYGNvbG9yYCBhbmQgYGJhY2tncm91bmRgXG4gICAgICAvL2NvbG9yOiAkYmxhY2sgIWltcG9ydGFudDsgLy8gQmxhY2sgcHJpbnRzIGZhc3RlclxuICAgICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIC8vYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgICY6bm90KC5idG4pIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQm9vdHN0cmFwIHNwZWNpZmljOyBjb21tZW50IHRoZSBmb2xsb3dpbmcgc2VsZWN0b3Igb3V0XG4gICAgLy9hW2hyZWZdOjphZnRlciB7XG4gICAgLy8gIGNvbnRlbnQ6IFwiIChcIiBhdHRyKGhyZWYpIFwiKVwiO1xuICAgIC8vfVxuXG4gICAgYWJiclt0aXRsZV06OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIChcIiBhdHRyKHRpdGxlKSBcIilcIjtcbiAgICB9XG5cbiAgICAvLyBCb290c3RyYXAgc3BlY2lmaWM7IGNvbW1lbnQgdGhlIGZvbGxvd2luZyBzZWxlY3RvciBvdXRcbiAgICAvL1xuICAgIC8vIERvbid0IHNob3cgbGlua3MgdGhhdCBhcmUgZnJhZ21lbnQgaWRlbnRpZmllcnMsXG4gICAgLy8gb3IgdXNlIHRoZSBgamF2YXNjcmlwdDpgIHBzZXVkbyBwcm90b2NvbFxuICAgIC8vXG5cbiAgICAvL2FbaHJlZl49XCIjXCJdOjphZnRlcixcbiAgICAvL2FbaHJlZl49XCJqYXZhc2NyaXB0OlwiXTo6YWZ0ZXIge1xuICAgIC8vIGNvbnRlbnQ6IFwiXCI7XG4gICAgLy99XG5cbiAgICBwcmUge1xuICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIHByZSxcbiAgICBibG9ja3F1b3RlIHtcbiAgICAgIGJvcmRlcjogJGJvcmRlci13aWR0aCBzb2xpZCAkZ3JheS01MDA7IC8vIEJvb3RzdHJhcCBjdXN0b20gY29kZTsgdXNpbmcgYCRib3JkZXItd2lkdGhgIGluc3RlYWQgb2YgMXB4XG4gICAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgfVxuXG4gICAgLy9cbiAgICAvLyBQcmludGluZyBUYWJsZXM6XG4gICAgLy8gaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTgwODE1MTUwOTM0L2h0dHA6Ly9jc3MtZGlzY3Vzcy5pbmN1dGlvLmNvbS93aWtpL1ByaW50aW5nX1RhYmxlc1xuICAgIC8vXG5cbiAgICB0aGVhZCB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7XG4gICAgfVxuXG4gICAgdHIsXG4gICAgaW1nIHtcbiAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICB9XG5cbiAgICBwLFxuICAgIGgyLFxuICAgIGgzIHtcbiAgICAgIG9ycGhhbnM6IDM7XG4gICAgICB3aWRvd3M6IDM7XG4gICAgfVxuXG4gICAgaDIsXG4gICAgaDMge1xuICAgICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7XG4gICAgfVxuXG4gICAgLy8gQm9vdHN0cmFwIHNwZWNpZmljIGNoYW5nZXMgc3RhcnRcblxuICAgIC8vIFNwZWNpZnkgYSBzaXplIGFuZCBtaW4td2lkdGggdG8gbWFrZSBwcmludGluZyBjbG9zZXIgYWNyb3NzIGJyb3dzZXJzLlxuICAgIC8vIFdlIGRvbid0IHNldCBtYXJnaW4gaGVyZSBiZWNhdXNlIGl0IGJyZWFrcyBgc2l6ZWAgaW4gQ2hyb21lLiBXZSBhbHNvXG4gICAgLy8gZG9uJ3QgdXNlIGAhaW1wb3J0YW50YCBvbiBgc2l6ZWAgYXMgaXQgYnJlYWtzIGluIENocm9tZS5cbiAgICBAcGFnZSB7XG4gICAgICBzaXplOiAkcHJpbnQtcGFnZS1zaXplO1xuICAgIH1cbiAgICBib2R5IHtcbiAgICAgIG1pbi13aWR0aDogJHByaW50LWJvZHktbWluLXdpZHRoICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5jb250YWluZXIge1xuICAgICAgbWluLXdpZHRoOiAkcHJpbnQtYm9keS1taW4td2lkdGggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAvLyBCb290c3RyYXAgY29tcG9uZW50c1xuICAgIC5uYXZiYXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgLmJhZGdlIHtcbiAgICAgIGJvcmRlcjogJGJvcmRlci13aWR0aCBzb2xpZCAkYmxhY2s7XG4gICAgfVxuXG4gICAgLnRhYmxlIHtcbiAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UgIWltcG9ydGFudDtcblxuICAgICAgdGQsXG4gICAgICB0aCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIC50YWJsZS1ib3JkZXJlZCB7XG4gICAgICB0aCxcbiAgICAgIHRkIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGdyYXktMzAwICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnRhYmxlLWRhcmsge1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG5cbiAgICAgIHRoLFxuICAgICAgdGQsXG4gICAgICB0aGVhZCB0aCxcbiAgICAgIHRib2R5ICsgdGJvZHkge1xuICAgICAgICBib3JkZXItY29sb3I6ICR0YWJsZS1ib3JkZXItY29sb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnRhYmxlIC50aGVhZC1kYXJrIHRoIHtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgYm9yZGVyLWNvbG9yOiAkdGFibGUtYm9yZGVyLWNvbG9yO1xuICAgIH1cblxuICAgIC8vIEJvb3RzdHJhcCBzcGVjaWZpYyBjaGFuZ2VzIGVuZFxuICB9XG59XG4iXX0= */", '', '']] - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/lib/loader.js?!./src/styles.scss": -/*!**********************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!./node_modules/postcss-loader/src??embedded!./node_modules/sass-loader/lib/loader.js??ref--15-3!./src/styles.scss ***! - \**********************************************************************************************************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = [[module.i, "/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/* You can add global styles to this file, and also import other style files */\nhtml, body {\n height: 100%;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxzdHlsZXMuc2NzcyIsInNyYy9zdHlsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQW1CQSw4RUFBQTtBQUVBO0VBQ0UsWUFBQTtBQ0RGIiwiZmlsZSI6InNyYy9zdHlsZXMuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuLyogWW91IGNhbiBhZGQgZ2xvYmFsIHN0eWxlcyB0byB0aGlzIGZpbGUsIGFuZCBhbHNvIGltcG9ydCBvdGhlciBzdHlsZSBmaWxlcyAqL1xyXG5cclxuaHRtbCwgYm9keSB7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG59XHJcbiIsIi8qIVxuICogREFBIEV4YW1wbGVcbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG4vKiBZb3UgY2FuIGFkZCBnbG9iYWwgc3R5bGVzIHRvIHRoaXMgZmlsZSwgYW5kIGFsc28gaW1wb3J0IG90aGVyIHN0eWxlIGZpbGVzICovXG5odG1sLCBib2R5IHtcbiAgaGVpZ2h0OiAxMDAlO1xufSJdfQ== */", '', '']] - -/***/ }), - -/***/ "./node_modules/bootstrap/dist/css/bootstrap.css": -/*!*******************************************************!*\ - !*** ./node_modules/bootstrap/dist/css/bootstrap.css ***! - \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var content = __webpack_require__(/*! !../../../@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!../../../postcss-loader/src??embedded!./bootstrap.css */ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/bootstrap/dist/css/bootstrap.css"); - -if (typeof content === 'string') { - content = [[module.i, content, '']]; -} - -var options = {} - -options.insert = "head"; -options.singleton = false; - -var update = __webpack_require__(/*! ../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options); - -if (content.locals) { - module.exports = content.locals; -} - - -/***/ }), - -/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": -/*!****************************************************************************!*\ - !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! - \****************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var stylesInDom = {}; - -var isOldIE = function isOldIE() { - var memo; - return function memorize() { - if (typeof memo === 'undefined') { - // Test for IE <= 9 as proposed by Browserhacks - // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 - // Tests for existence of standard globals is to allow style-loader - // to operate correctly into non-standard environments - // @see https://github.com/webpack-contrib/style-loader/issues/177 - memo = Boolean(window && document && document.all && !window.atob); - } - - return memo; - }; -}(); - -var getTarget = function getTarget() { - var memo = {}; - return function memorize(target) { - if (typeof memo[target] === 'undefined') { - var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself - - if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { - try { - // This will throw an exception if access to iframe is blocked - // due to cross-origin restrictions - styleTarget = styleTarget.contentDocument.head; - } catch (e) { - // istanbul ignore next - styleTarget = null; - } - } - - memo[target] = styleTarget; - } - - return memo[target]; - }; -}(); - -function listToStyles(list, options) { - var styles = []; - var newStyles = {}; - - for (var i = 0; i < list.length; i++) { - var item = list[i]; - var id = options.base ? item[0] + options.base : item[0]; - var css = item[1]; - var media = item[2]; - var sourceMap = item[3]; - var part = { - css: css, - media: media, - sourceMap: sourceMap - }; - - if (!newStyles[id]) { - styles.push(newStyles[id] = { - id: id, - parts: [part] - }); - } else { - newStyles[id].parts.push(part); - } - } - - return styles; -} - -function addStylesToDom(styles, options) { - for (var i = 0; i < styles.length; i++) { - var item = styles[i]; - var domStyle = stylesInDom[item.id]; - var j = 0; - - if (domStyle) { - domStyle.refs++; - - for (; j < domStyle.parts.length; j++) { - domStyle.parts[j](item.parts[j]); - } - - for (; j < item.parts.length; j++) { - domStyle.parts.push(addStyle(item.parts[j], options)); - } - } else { - var parts = []; - - for (; j < item.parts.length; j++) { - parts.push(addStyle(item.parts[j], options)); - } - - stylesInDom[item.id] = { - id: item.id, - refs: 1, - parts: parts - }; - } - } -} - -function insertStyleElement(options) { - var style = document.createElement('style'); - - if (typeof options.attributes.nonce === 'undefined') { - var nonce = true ? __webpack_require__.nc : undefined; - - if (nonce) { - options.attributes.nonce = nonce; - } - } - - Object.keys(options.attributes).forEach(function (key) { - style.setAttribute(key, options.attributes[key]); - }); - - if (typeof options.insert === 'function') { - options.insert(style); - } else { - var target = getTarget(options.insert || 'head'); - - if (!target) { - throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); - } - - target.appendChild(style); - } - - return style; -} - -function removeStyleElement(style) { - // istanbul ignore if - if (style.parentNode === null) { - return false; - } - - style.parentNode.removeChild(style); -} -/* istanbul ignore next */ - - -var replaceText = function replaceText() { - var textStore = []; - return function replace(index, replacement) { - textStore[index] = replacement; - return textStore.filter(Boolean).join('\n'); - }; -}(); - -function applyToSingletonTag(style, index, remove, obj) { - var css = remove ? '' : obj.css; // For old IE - - /* istanbul ignore if */ - - if (style.styleSheet) { - style.styleSheet.cssText = replaceText(index, css); - } else { - var cssNode = document.createTextNode(css); - var childNodes = style.childNodes; - - if (childNodes[index]) { - style.removeChild(childNodes[index]); - } - - if (childNodes.length) { - style.insertBefore(cssNode, childNodes[index]); - } else { - style.appendChild(cssNode); - } - } -} - -function applyToTag(style, options, obj) { - var css = obj.css; - var media = obj.media; - var sourceMap = obj.sourceMap; - - if (media) { - style.setAttribute('media', media); - } - - if (sourceMap && btoa) { - css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); - } // For old IE - - /* istanbul ignore if */ - - - if (style.styleSheet) { - style.styleSheet.cssText = css; - } else { - while (style.firstChild) { - style.removeChild(style.firstChild); - } - - style.appendChild(document.createTextNode(css)); - } -} - -var singleton = null; -var singletonCounter = 0; - -function addStyle(obj, options) { - var style; - var update; - var remove; - - if (options.singleton) { - var styleIndex = singletonCounter++; - style = singleton || (singleton = insertStyleElement(options)); - update = applyToSingletonTag.bind(null, style, styleIndex, false); - remove = applyToSingletonTag.bind(null, style, styleIndex, true); - } else { - style = insertStyleElement(options); - update = applyToTag.bind(null, style, options); - - remove = function remove() { - removeStyleElement(style); - }; - } - - update(obj); - return function updateStyle(newObj) { - if (newObj) { - if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) { - return; - } - - update(obj = newObj); - } else { - remove(); - } - }; -} - -module.exports = function (list, options) { - options = options || {}; - options.attributes = typeof options.attributes === 'object' ? options.attributes : {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of - - - could become: - - -
    - -
    - - Note the use of @polyfill in the comment above a ShadowDOM specific style - declaration. This is a directive to the styling shim to use the selector - in comments in lieu of the next selector when running under polyfill. -*/ -class ShadowCss { - constructor() { - this.strictStyling = true; - } - /* - * Shim some cssText with the given selector. Returns cssText that can - * be included in the document via WebComponents.ShadowCSS.addCssToDocument(css). - * - * When strictStyling is true: - * - selector is the attribute added to all elements inside the host, - * - hostSelector is the attribute added to the host itself. - */ - shimCssText(cssText, selector, hostSelector = '') { - const commentsWithHash = extractCommentsWithHash(cssText); - cssText = stripComments(cssText); - cssText = this._insertDirectives(cssText); - const scopedCssText = this._scopeCssText(cssText, selector, hostSelector); - return [scopedCssText, ...commentsWithHash].join('\n'); - } - _insertDirectives(cssText) { - cssText = this._insertPolyfillDirectivesInCssText(cssText); - return this._insertPolyfillRulesInCssText(cssText); - } - /* - * Process styles to convert native ShadowDOM rules that will trip - * up the css parser; we rely on decorating the stylesheet with inert rules. - * - * For example, we convert this rule: - * - * polyfill-next-selector { content: ':host menu-item'; } - * ::content menu-item { - * - * to this: - * - * scopeName menu-item { - * - **/ - _insertPolyfillDirectivesInCssText(cssText) { - // Difference with webcomponents.js: does not handle comments - return cssText.replace(_cssContentNextSelectorRe, function (...m) { return m[2] + '{'; }); - } - /* - * Process styles to add rules which will only apply under the polyfill - * - * For example, we convert this rule: - * - * polyfill-rule { - * content: ':host menu-item'; - * ... - * } - * - * to this: - * - * scopeName menu-item {...} - * - **/ - _insertPolyfillRulesInCssText(cssText) { - // Difference with webcomponents.js: does not handle comments - return cssText.replace(_cssContentRuleRe, (...m) => { - const rule = m[0].replace(m[1], '').replace(m[2], ''); - return m[4] + rule; - }); - } - /* Ensure styles are scoped. Pseudo-scoping takes a rule like: - * - * .foo {... } - * - * and converts this to - * - * scopeName .foo { ... } - */ - _scopeCssText(cssText, scopeSelector, hostSelector) { - const unscopedRules = this._extractUnscopedRulesFromCssText(cssText); - // replace :host and :host-context -shadowcsshost and -shadowcsshost respectively - cssText = this._insertPolyfillHostInCssText(cssText); - cssText = this._convertColonHost(cssText); - cssText = this._convertColonHostContext(cssText); - cssText = this._convertShadowDOMSelectors(cssText); - if (scopeSelector) { - cssText = this._scopeSelectors(cssText, scopeSelector, hostSelector); - } - cssText = cssText + '\n' + unscopedRules; - return cssText.trim(); - } - /* - * Process styles to add rules which will only apply under the polyfill - * and do not process via CSSOM. (CSSOM is destructive to rules on rare - * occasions, e.g. -webkit-calc on Safari.) - * For example, we convert this rule: - * - * @polyfill-unscoped-rule { - * content: 'menu-item'; - * ... } - * - * to this: - * - * menu-item {...} - * - **/ - _extractUnscopedRulesFromCssText(cssText) { - // Difference with webcomponents.js: does not handle comments - let r = ''; - let m; - _cssContentUnscopedRuleRe.lastIndex = 0; - while ((m = _cssContentUnscopedRuleRe.exec(cssText)) !== null) { - const rule = m[0].replace(m[2], '').replace(m[1], m[4]); - r += rule + '\n\n'; - } - return r; - } - /* - * convert a rule like :host(.foo) > .bar { } - * - * to - * - * .foo > .bar - */ - _convertColonHost(cssText) { - return this._convertColonRule(cssText, _cssColonHostRe, this._colonHostPartReplacer); - } - /* - * convert a rule like :host-context(.foo) > .bar { } - * - * to - * - * .foo > .bar, .foo scopeName > .bar { } - * - * and - * - * :host-context(.foo:host) .bar { ... } - * - * to - * - * .foo .bar { ... } - */ - _convertColonHostContext(cssText) { - return this._convertColonRule(cssText, _cssColonHostContextRe, this._colonHostContextPartReplacer); - } - _convertColonRule(cssText, regExp, partReplacer) { - // m[1] = :host(-context), m[2] = contents of (), m[3] rest of rule - return cssText.replace(regExp, function (...m) { - if (m[2]) { - const parts = m[2].split(','); - const r = []; - for (let i = 0; i < parts.length; i++) { - const p = parts[i].trim(); - if (!p) - break; - r.push(partReplacer(_polyfillHostNoCombinator, p, m[3])); - } - return r.join(','); - } - else { - return _polyfillHostNoCombinator + m[3]; - } - }); - } - _colonHostContextPartReplacer(host, part, suffix) { - if (part.indexOf(_polyfillHost) > -1) { - return this._colonHostPartReplacer(host, part, suffix); - } - else { - return host + part + suffix + ', ' + part + ' ' + host + suffix; - } - } - _colonHostPartReplacer(host, part, suffix) { - return host + part.replace(_polyfillHost, '') + suffix; - } - /* - * Convert combinators like ::shadow and pseudo-elements like ::content - * by replacing with space. - */ - _convertShadowDOMSelectors(cssText) { - return _shadowDOMSelectorsRe.reduce((result, pattern) => result.replace(pattern, ' '), cssText); - } - // change a selector like 'div' to 'name div' - _scopeSelectors(cssText, scopeSelector, hostSelector) { - return processRules(cssText, (rule) => { - let selector = rule.selector; - let content = rule.content; - if (rule.selector[0] != '@') { - selector = - this._scopeSelector(rule.selector, scopeSelector, hostSelector, this.strictStyling); - } - else if (rule.selector.startsWith('@media') || rule.selector.startsWith('@supports') || - rule.selector.startsWith('@page') || rule.selector.startsWith('@document')) { - content = this._scopeSelectors(rule.content, scopeSelector, hostSelector); - } - return new CssRule(selector, content); - }); - } - _scopeSelector(selector, scopeSelector, hostSelector, strict) { - return selector.split(',') - .map(part => part.trim().split(_shadowDeepSelectors)) - .map((deepParts) => { - const [shallowPart, ...otherParts] = deepParts; - const applyScope = (shallowPart) => { - if (this._selectorNeedsScoping(shallowPart, scopeSelector)) { - return strict ? - this._applyStrictSelectorScope(shallowPart, scopeSelector, hostSelector) : - this._applySelectorScope(shallowPart, scopeSelector, hostSelector); - } - else { - return shallowPart; - } - }; - return [applyScope(shallowPart), ...otherParts].join(' '); - }) - .join(', '); - } - _selectorNeedsScoping(selector, scopeSelector) { - const re = this._makeScopeMatcher(scopeSelector); - return !re.test(selector); - } - _makeScopeMatcher(scopeSelector) { - const lre = /\[/g; - const rre = /\]/g; - scopeSelector = scopeSelector.replace(lre, '\\[').replace(rre, '\\]'); - return new RegExp('^(' + scopeSelector + ')' + _selectorReSuffix, 'm'); - } - _applySelectorScope(selector, scopeSelector, hostSelector) { - // Difference from webcomponents.js: scopeSelector could not be an array - return this._applySimpleSelectorScope(selector, scopeSelector, hostSelector); - } - // scope via name and [is=name] - _applySimpleSelectorScope(selector, scopeSelector, hostSelector) { - // In Android browser, the lastIndex is not reset when the regex is used in String.replace() - _polyfillHostRe.lastIndex = 0; - if (_polyfillHostRe.test(selector)) { - const replaceBy = this.strictStyling ? `[${hostSelector}]` : scopeSelector; - return selector - .replace(_polyfillHostNoCombinatorRe, (hnc, selector) => { - return selector.replace(/([^:]*)(:*)(.*)/, (_, before, colon, after) => { - return before + replaceBy + colon + after; - }); - }) - .replace(_polyfillHostRe, replaceBy + ' '); - } - return scopeSelector + ' ' + selector; - } - // return a selector with [name] suffix on each simple selector - // e.g. .foo.bar > .zot becomes .foo[name].bar[name] > .zot[name] /** @internal */ - _applyStrictSelectorScope(selector, scopeSelector, hostSelector) { - const isRe = /\[is=([^\]]*)\]/g; - scopeSelector = scopeSelector.replace(isRe, (_, ...parts) => parts[0]); - const attrName = '[' + scopeSelector + ']'; - const _scopeSelectorPart = (p) => { - let scopedP = p.trim(); - if (!scopedP) { - return ''; - } - if (p.indexOf(_polyfillHostNoCombinator) > -1) { - scopedP = this._applySimpleSelectorScope(p, scopeSelector, hostSelector); - } - else { - // remove :host since it should be unnecessary - const t = p.replace(_polyfillHostRe, ''); - if (t.length > 0) { - const matches = t.match(/([^:]*)(:*)(.*)/); - if (matches) { - scopedP = matches[1] + attrName + matches[2] + matches[3]; - } - } - } - return scopedP; - }; - const safeContent = new SafeSelector(selector); - selector = safeContent.content(); - let scopedSelector = ''; - let startIndex = 0; - let res; - const sep = /( |>|\+|~(?!=))\s*/g; - // If a selector appears before :host it should not be shimmed as it - // matches on ancestor elements and not on elements in the host's shadow - // `:host-context(div)` is transformed to - // `-shadowcsshost-no-combinatordiv, div -shadowcsshost-no-combinator` - // the `div` is not part of the component in the 2nd selectors and should not be scoped. - // Historically `component-tag:host` was matching the component so we also want to preserve - // this behavior to avoid breaking legacy apps (it should not match). - // The behavior should be: - // - `tag:host` -> `tag[h]` (this is to avoid breaking legacy apps, should not match anything) - // - `tag :host` -> `tag [h]` (`tag` is not scoped because it's considered part of a - // `:host-context(tag)`) - const hasHost = selector.indexOf(_polyfillHostNoCombinator) > -1; - // Only scope parts after the first `-shadowcsshost-no-combinator` when it is present - let shouldScope = !hasHost; - while ((res = sep.exec(selector)) !== null) { - const separator = res[1]; - const part = selector.slice(startIndex, res.index).trim(); - shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1; - const scopedPart = shouldScope ? _scopeSelectorPart(part) : part; - scopedSelector += `${scopedPart} ${separator} `; - startIndex = sep.lastIndex; - } - const part = selector.substring(startIndex); - shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1; - scopedSelector += shouldScope ? _scopeSelectorPart(part) : part; - // replace the placeholders with their original values - return safeContent.restore(scopedSelector); - } - _insertPolyfillHostInCssText(selector) { - return selector.replace(_colonHostContextRe, _polyfillHostContext) - .replace(_colonHostRe, _polyfillHost); - } -} -class SafeSelector { - constructor(selector) { - this.placeholders = []; - this.index = 0; - // Replaces attribute selectors with placeholders. - // The WS in [attr="va lue"] would otherwise be interpreted as a selector separator. - selector = selector.replace(/(\[[^\]]*\])/g, (_, keep) => { - const replaceBy = `__ph-${this.index}__`; - this.placeholders.push(keep); - this.index++; - return replaceBy; - }); - // Replaces the expression in `:nth-child(2n + 1)` with a placeholder. - // WS and "+" would otherwise be interpreted as selector separators. - this._content = selector.replace(/(:nth-[-\w]+)(\([^)]+\))/g, (_, pseudo, exp) => { - const replaceBy = `__ph-${this.index}__`; - this.placeholders.push(exp); - this.index++; - return pseudo + replaceBy; - }); - } - restore(content) { - return content.replace(/__ph-(\d+)__/g, (ph, index) => this.placeholders[+index]); - } - content() { return this._content; } -} -const _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\s]*?(['"])(.*?)\1[;\s]*}([^{]*?){/gim; -const _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim; -const _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim; -const _polyfillHost = '-shadowcsshost'; -// note: :host-context pre-processed to -shadowcsshostcontext. -const _polyfillHostContext = '-shadowcsscontext'; -const _parenSuffix = ')(?:\\((' + - '(?:\\([^)(]*\\)|[^)(]*)+?' + - ')\\))?([^,{]*)'; -const _cssColonHostRe = new RegExp('(' + _polyfillHost + _parenSuffix, 'gim'); -const _cssColonHostContextRe = new RegExp('(' + _polyfillHostContext + _parenSuffix, 'gim'); -const _polyfillHostNoCombinator = _polyfillHost + '-no-combinator'; -const _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\s]*)/; -const _shadowDOMSelectorsRe = [ - /::shadow/g, - /::content/g, - // Deprecated selectors - /\/shadow-deep\//g, - /\/shadow\//g, -]; -// The deep combinator is deprecated in the CSS spec -// Support for `>>>`, `deep`, `::ng-deep` is then also deprecated and will be removed in the future. -// see https://github.com/angular/angular/pull/17677 -const _shadowDeepSelectors = /(?:>>>)|(?:\/deep\/)|(?:::ng-deep)/g; -const _selectorReSuffix = '([>\\s~+\[.,{:][\\s\\S]*)?$'; -const _polyfillHostRe = /-shadowcsshost/gim; -const _colonHostRe = /:host/gim; -const _colonHostContextRe = /:host-context/gim; -const _commentRe = /\/\*\s*[\s\S]*?\*\//g; -function stripComments(input) { - return input.replace(_commentRe, ''); -} -const _commentWithHashRe = /\/\*\s*#\s*source(Mapping)?URL=[\s\S]+?\*\//g; -function extractCommentsWithHash(input) { - return input.match(_commentWithHashRe) || []; -} -const _ruleRe = /(\s*)([^;\{\}]+?)(\s*)((?:{%BLOCK%}?\s*;?)|(?:\s*;))/g; -const _curlyRe = /([{}])/g; -const OPEN_CURLY = '{'; -const CLOSE_CURLY = '}'; -const BLOCK_PLACEHOLDER = '%BLOCK%'; -class CssRule { - constructor(selector, content) { - this.selector = selector; - this.content = content; - } -} -function processRules(input, ruleCallback) { - const inputWithEscapedBlocks = escapeBlocks(input); - let nextBlockIndex = 0; - return inputWithEscapedBlocks.escapedString.replace(_ruleRe, function (...m) { - const selector = m[2]; - let content = ''; - let suffix = m[4]; - let contentPrefix = ''; - if (suffix && suffix.startsWith('{' + BLOCK_PLACEHOLDER)) { - content = inputWithEscapedBlocks.blocks[nextBlockIndex++]; - suffix = suffix.substring(BLOCK_PLACEHOLDER.length + 1); - contentPrefix = '{'; - } - const rule = ruleCallback(new CssRule(selector, content)); - return `${m[1]}${rule.selector}${m[3]}${contentPrefix}${rule.content}${suffix}`; - }); -} -class StringWithEscapedBlocks { - constructor(escapedString, blocks) { - this.escapedString = escapedString; - this.blocks = blocks; - } -} -function escapeBlocks(input) { - const inputParts = input.split(_curlyRe); - const resultParts = []; - const escapedBlocks = []; - let bracketCount = 0; - let currentBlockParts = []; - for (let partIndex = 0; partIndex < inputParts.length; partIndex++) { - const part = inputParts[partIndex]; - if (part == CLOSE_CURLY) { - bracketCount--; - } - if (bracketCount > 0) { - currentBlockParts.push(part); - } - else { - if (currentBlockParts.length > 0) { - escapedBlocks.push(currentBlockParts.join('')); - resultParts.push(BLOCK_PLACEHOLDER); - currentBlockParts = []; - } - resultParts.push(part); - } - if (part == OPEN_CURLY) { - bracketCount++; - } - } - if (currentBlockParts.length > 0) { - escapedBlocks.push(currentBlockParts.join('')); - resultParts.push(BLOCK_PLACEHOLDER); - } - return new StringWithEscapedBlocks(resultParts.join(''), escapedBlocks); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const COMPONENT_VARIABLE = '%COMP%'; -const HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`; -const CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`; -class StylesCompileDependency { - constructor(name, moduleUrl, setValue) { - this.name = name; - this.moduleUrl = moduleUrl; - this.setValue = setValue; - } -} -class CompiledStylesheet { - constructor(outputCtx, stylesVar, dependencies, isShimmed, meta) { - this.outputCtx = outputCtx; - this.stylesVar = stylesVar; - this.dependencies = dependencies; - this.isShimmed = isShimmed; - this.meta = meta; - } -} -class StyleCompiler { - constructor(_urlResolver) { - this._urlResolver = _urlResolver; - this._shadowCss = new ShadowCss(); - } - compileComponent(outputCtx, comp) { - const template = comp.template; - return this._compileStyles(outputCtx, comp, new CompileStylesheetMetadata({ - styles: template.styles, - styleUrls: template.styleUrls, - moduleUrl: identifierModuleUrl(comp.type) - }), this.needsStyleShim(comp), true); - } - compileStyles(outputCtx, comp, stylesheet, shim = this.needsStyleShim(comp)) { - return this._compileStyles(outputCtx, comp, stylesheet, shim, false); - } - needsStyleShim(comp) { - return comp.template.encapsulation === ViewEncapsulation.Emulated; - } - _compileStyles(outputCtx, comp, stylesheet, shim, isComponentStylesheet) { - const styleExpressions = stylesheet.styles.map(plainStyle => literal(this._shimIfNeeded(plainStyle, shim))); - const dependencies = []; - stylesheet.styleUrls.forEach((styleUrl) => { - const exprIndex = styleExpressions.length; - // Note: This placeholder will be filled later. - styleExpressions.push(null); - dependencies.push(new StylesCompileDependency(getStylesVarName(null), styleUrl, (value) => styleExpressions[exprIndex] = outputCtx.importExpr(value))); - }); - // styles variable contains plain strings and arrays of other styles arrays (recursive), - // so we set its type to dynamic. - const stylesVar = getStylesVarName(isComponentStylesheet ? comp : null); - const stmt = variable(stylesVar) - .set(literalArr(styleExpressions, new ArrayType(DYNAMIC_TYPE, [TypeModifier.Const]))) - .toDeclStmt(null, isComponentStylesheet ? [StmtModifier.Final] : [ - StmtModifier.Final, StmtModifier.Exported - ]); - outputCtx.statements.push(stmt); - return new CompiledStylesheet(outputCtx, stylesVar, dependencies, shim, stylesheet); - } - _shimIfNeeded(style, shim) { - return shim ? this._shadowCss.shimCssText(style, CONTENT_ATTR, HOST_ATTR) : style; - } -} -function getStylesVarName(component) { - let result = `styles`; - if (component) { - result += `_${identifierName(component.type)}`; - } - return result; -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * A path is an ordered set of elements. Typically a path is to a - * particular offset in a source file. The head of the list is the top - * most node. The tail is the node that contains the offset directly. - * - * For example, the expression `a + b + c` might have an ast that looks - * like: - * + - * / \ - * a + - * / \ - * b c - * - * The path to the node at offset 9 would be `['+' at 1-10, '+' at 7-10, - * 'c' at 9-10]` and the path the node at offset 1 would be - * `['+' at 1-10, 'a' at 1-2]`. - */ -class AstPath { - constructor(path, position = -1) { - this.path = path; - this.position = position; - } - get empty() { return !this.path || !this.path.length; } - get head() { return this.path[0]; } - get tail() { return this.path[this.path.length - 1]; } - parentOf(node) { - return node && this.path[this.path.indexOf(node) - 1]; - } - childOf(node) { return this.path[this.path.indexOf(node) + 1]; } - first(ctor) { - for (let i = this.path.length - 1; i >= 0; i--) { - let item = this.path[i]; - if (item instanceof ctor) - return item; - } - } - push(node) { this.path.push(node); } - pop() { return this.path.pop(); } -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class Text$3 { - constructor(value, sourceSpan, i18n) { - this.value = value; - this.sourceSpan = sourceSpan; - this.i18n = i18n; - } - visit(visitor, context) { return visitor.visitText(this, context); } -} -class Expansion { - constructor(switchValue, type, cases, sourceSpan, switchValueSourceSpan, i18n) { - this.switchValue = switchValue; - this.type = type; - this.cases = cases; - this.sourceSpan = sourceSpan; - this.switchValueSourceSpan = switchValueSourceSpan; - this.i18n = i18n; - } - visit(visitor, context) { return visitor.visitExpansion(this, context); } -} -class ExpansionCase { - constructor(value, expression, sourceSpan, valueSourceSpan, expSourceSpan) { - this.value = value; - this.expression = expression; - this.sourceSpan = sourceSpan; - this.valueSourceSpan = valueSourceSpan; - this.expSourceSpan = expSourceSpan; - } - visit(visitor, context) { return visitor.visitExpansionCase(this, context); } -} -class Attribute { - constructor(name, value, sourceSpan, valueSpan, i18n) { - this.name = name; - this.value = value; - this.sourceSpan = sourceSpan; - this.valueSpan = valueSpan; - this.i18n = i18n; - } - visit(visitor, context) { return visitor.visitAttribute(this, context); } -} -class Element$1 { - constructor(name, attrs, children, sourceSpan, startSourceSpan = null, endSourceSpan = null, i18n) { - this.name = name; - this.attrs = attrs; - this.children = children; - this.sourceSpan = sourceSpan; - this.startSourceSpan = startSourceSpan; - this.endSourceSpan = endSourceSpan; - this.i18n = i18n; - } - visit(visitor, context) { return visitor.visitElement(this, context); } -} -class Comment { - constructor(value, sourceSpan) { - this.value = value; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { return visitor.visitComment(this, context); } -} -function visitAll$1(visitor, nodes, context = null) { - const result = []; - const visit = visitor.visit ? - (ast) => visitor.visit(ast, context) || ast.visit(visitor, context) : - (ast) => ast.visit(visitor, context); - nodes.forEach(ast => { - const astResult = visit(ast); - if (astResult) { - result.push(astResult); - } - }); - return result; -} -class RecursiveVisitor$1 { - constructor() { } - visitElement(ast, context) { - this.visitChildren(context, visit => { - visit(ast.attrs); - visit(ast.children); - }); - } - visitAttribute(ast, context) { } - visitText(ast, context) { } - visitComment(ast, context) { } - visitExpansion(ast, context) { - return this.visitChildren(context, visit => { visit(ast.cases); }); - } - visitExpansionCase(ast, context) { } - visitChildren(context, cb) { - let results = []; - let t = this; - function visit(children) { - if (children) - results.push(visitAll$1(t, children, context)); - } - cb(visit); - return Array.prototype.concat.apply([], results); - } -} -function spanOf(ast) { - const start = ast.sourceSpan.start.offset; - let end = ast.sourceSpan.end.offset; - if (ast instanceof Element$1) { - if (ast.endSourceSpan) { - end = ast.endSourceSpan.end.offset; - } - else if (ast.children && ast.children.length) { - end = spanOf(ast.children[ast.children.length - 1]).end; - } - } - return { start, end }; -} -function findNode(nodes, position) { - const path = []; - const visitor = new class extends RecursiveVisitor$1 { - visit(ast, context) { - const span = spanOf(ast); - if (span.start <= position && position < span.end) { - path.push(ast); - } - else { - // Returning a value here will result in the children being skipped. - return true; - } - } - }; - visitAll$1(visitor, nodes); - return new AstPath(path, position); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -var TokenType; -(function (TokenType) { - TokenType[TokenType["TAG_OPEN_START"] = 0] = "TAG_OPEN_START"; - TokenType[TokenType["TAG_OPEN_END"] = 1] = "TAG_OPEN_END"; - TokenType[TokenType["TAG_OPEN_END_VOID"] = 2] = "TAG_OPEN_END_VOID"; - TokenType[TokenType["TAG_CLOSE"] = 3] = "TAG_CLOSE"; - TokenType[TokenType["TEXT"] = 4] = "TEXT"; - TokenType[TokenType["ESCAPABLE_RAW_TEXT"] = 5] = "ESCAPABLE_RAW_TEXT"; - TokenType[TokenType["RAW_TEXT"] = 6] = "RAW_TEXT"; - TokenType[TokenType["COMMENT_START"] = 7] = "COMMENT_START"; - TokenType[TokenType["COMMENT_END"] = 8] = "COMMENT_END"; - TokenType[TokenType["CDATA_START"] = 9] = "CDATA_START"; - TokenType[TokenType["CDATA_END"] = 10] = "CDATA_END"; - TokenType[TokenType["ATTR_NAME"] = 11] = "ATTR_NAME"; - TokenType[TokenType["ATTR_QUOTE"] = 12] = "ATTR_QUOTE"; - TokenType[TokenType["ATTR_VALUE"] = 13] = "ATTR_VALUE"; - TokenType[TokenType["DOC_TYPE"] = 14] = "DOC_TYPE"; - TokenType[TokenType["EXPANSION_FORM_START"] = 15] = "EXPANSION_FORM_START"; - TokenType[TokenType["EXPANSION_CASE_VALUE"] = 16] = "EXPANSION_CASE_VALUE"; - TokenType[TokenType["EXPANSION_CASE_EXP_START"] = 17] = "EXPANSION_CASE_EXP_START"; - TokenType[TokenType["EXPANSION_CASE_EXP_END"] = 18] = "EXPANSION_CASE_EXP_END"; - TokenType[TokenType["EXPANSION_FORM_END"] = 19] = "EXPANSION_FORM_END"; - TokenType[TokenType["EOF"] = 20] = "EOF"; -})(TokenType || (TokenType = {})); -class Token { - constructor(type, parts, sourceSpan) { - this.type = type; - this.parts = parts; - this.sourceSpan = sourceSpan; - } -} -class TokenError extends ParseError { - constructor(errorMsg, tokenType, span) { - super(span, errorMsg); - this.tokenType = tokenType; - } -} -class TokenizeResult { - constructor(tokens, errors) { - this.tokens = tokens; - this.errors = errors; - } -} -function tokenize(source, url, getTagDefinition, options = {}) { - return new _Tokenizer(new ParseSourceFile(source, url), getTagDefinition, options).tokenize(); -} -const _CR_OR_CRLF_REGEXP = /\r\n?/g; -function _unexpectedCharacterErrorMsg(charCode) { - const char = charCode === $EOF ? 'EOF' : String.fromCharCode(charCode); - return `Unexpected character "${char}"`; -} -function _unknownEntityErrorMsg(entitySrc) { - return `Unknown entity "${entitySrc}" - use the "&#;" or "&#x;" syntax`; -} -class _ControlFlowError { - constructor(error) { - this.error = error; - } -} -// See http://www.w3.org/TR/html51/syntax.html#writing -class _Tokenizer { - /** - * @param _file The html source file being tokenized. - * @param _getTagDefinition A function that will retrieve a tag definition for a given tag name. - * @param options Configuration of the tokenization. - */ - constructor(_file, _getTagDefinition, options) { - this._getTagDefinition = _getTagDefinition; - this._currentTokenStart = null; - this._currentTokenType = null; - this._expansionCaseStack = []; - this._inInterpolation = false; - this.tokens = []; - this.errors = []; - this._tokenizeIcu = options.tokenizeExpansionForms || false; - this._interpolationConfig = options.interpolationConfig || DEFAULT_INTERPOLATION_CONFIG; - this._leadingTriviaCodePoints = - options.leadingTriviaChars && options.leadingTriviaChars.map(c => c.codePointAt(0) || 0); - const range = options.range || { endPos: _file.content.length, startPos: 0, startLine: 0, startCol: 0 }; - this._cursor = options.escapedString ? new EscapedCharacterCursor(_file, range) : - new PlainCharacterCursor(_file, range); - try { - this._cursor.init(); - } - catch (e) { - this.handleError(e); - } - } - _processCarriageReturns(content) { - // http://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream - // In order to keep the original position in the source, we can not - // pre-process it. - // Instead CRs are processed right before instantiating the tokens. - return content.replace(_CR_OR_CRLF_REGEXP, '\n'); - } - tokenize() { - while (this._cursor.peek() !== $EOF) { - const start = this._cursor.clone(); - try { - if (this._attemptCharCode($LT)) { - if (this._attemptCharCode($BANG)) { - if (this._attemptCharCode($LBRACKET)) { - this._consumeCdata(start); - } - else if (this._attemptCharCode($MINUS)) { - this._consumeComment(start); - } - else { - this._consumeDocType(start); - } - } - else if (this._attemptCharCode($SLASH)) { - this._consumeTagClose(start); - } - else { - this._consumeTagOpen(start); - } - } - else if (!(this._tokenizeIcu && this._tokenizeExpansionForm())) { - this._consumeText(); - } - } - catch (e) { - this.handleError(e); - } - } - this._beginToken(TokenType.EOF); - this._endToken([]); - return new TokenizeResult(mergeTextTokens(this.tokens), this.errors); - } - /** - * @returns whether an ICU token has been created - * @internal - */ - _tokenizeExpansionForm() { - if (this.isExpansionFormStart()) { - this._consumeExpansionFormStart(); - return true; - } - if (isExpansionCaseStart(this._cursor.peek()) && this._isInExpansionForm()) { - this._consumeExpansionCaseStart(); - return true; - } - if (this._cursor.peek() === $RBRACE) { - if (this._isInExpansionCase()) { - this._consumeExpansionCaseEnd(); - return true; - } - if (this._isInExpansionForm()) { - this._consumeExpansionFormEnd(); - return true; - } - } - return false; - } - _beginToken(type, start = this._cursor.clone()) { - this._currentTokenStart = start; - this._currentTokenType = type; - } - _endToken(parts, end = this._cursor.clone()) { - if (this._currentTokenStart === null) { - throw new TokenError('Programming error - attempted to end a token when there was no start to the token', this._currentTokenType, this._cursor.getSpan(end)); - } - if (this._currentTokenType === null) { - throw new TokenError('Programming error - attempted to end a token which has no token type', null, this._cursor.getSpan(this._currentTokenStart)); - } - const token = new Token(this._currentTokenType, parts, this._cursor.getSpan(this._currentTokenStart, this._leadingTriviaCodePoints)); - this.tokens.push(token); - this._currentTokenStart = null; - this._currentTokenType = null; - return token; - } - _createError(msg, span) { - if (this._isInExpansionForm()) { - msg += ` (Do you have an unescaped "{" in your template? Use "{{ '{' }}") to escape it.)`; - } - const error = new TokenError(msg, this._currentTokenType, span); - this._currentTokenStart = null; - this._currentTokenType = null; - return new _ControlFlowError(error); - } - handleError(e) { - if (e instanceof CursorError) { - e = this._createError(e.msg, this._cursor.getSpan(e.cursor)); - } - if (e instanceof _ControlFlowError) { - this.errors.push(e.error); - } - else { - throw e; - } - } - _attemptCharCode(charCode) { - if (this._cursor.peek() === charCode) { - this._cursor.advance(); - return true; - } - return false; - } - _attemptCharCodeCaseInsensitive(charCode) { - if (compareCharCodeCaseInsensitive(this._cursor.peek(), charCode)) { - this._cursor.advance(); - return true; - } - return false; - } - _requireCharCode(charCode) { - const location = this._cursor.clone(); - if (!this._attemptCharCode(charCode)) { - throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(location)); - } - } - _attemptStr(chars) { - const len = chars.length; - if (this._cursor.charsLeft() < len) { - return false; - } - const initialPosition = this._cursor.clone(); - for (let i = 0; i < len; i++) { - if (!this._attemptCharCode(chars.charCodeAt(i))) { - // If attempting to parse the string fails, we want to reset the parser - // to where it was before the attempt - this._cursor = initialPosition; - return false; - } - } - return true; - } - _attemptStrCaseInsensitive(chars) { - for (let i = 0; i < chars.length; i++) { - if (!this._attemptCharCodeCaseInsensitive(chars.charCodeAt(i))) { - return false; - } - } - return true; - } - _requireStr(chars) { - const location = this._cursor.clone(); - if (!this._attemptStr(chars)) { - throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(location)); - } - } - _attemptCharCodeUntilFn(predicate) { - while (!predicate(this._cursor.peek())) { - this._cursor.advance(); - } - } - _requireCharCodeUntilFn(predicate, len) { - const start = this._cursor.clone(); - this._attemptCharCodeUntilFn(predicate); - const end = this._cursor.clone(); - if (end.diff(start) < len) { - throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(start)); - } - } - _attemptUntilChar(char) { - while (this._cursor.peek() !== char) { - this._cursor.advance(); - } - } - _readChar(decodeEntities) { - if (decodeEntities && this._cursor.peek() === $AMPERSAND) { - return this._decodeEntity(); - } - else { - // Don't rely upon reading directly from `_input` as the actual char value - // may have been generated from an escape sequence. - const char = String.fromCodePoint(this._cursor.peek()); - this._cursor.advance(); - return char; - } - } - _decodeEntity() { - const start = this._cursor.clone(); - this._cursor.advance(); - if (this._attemptCharCode($HASH)) { - const isHex = this._attemptCharCode($x) || this._attemptCharCode($X); - const codeStart = this._cursor.clone(); - this._attemptCharCodeUntilFn(isDigitEntityEnd); - if (this._cursor.peek() != $SEMICOLON) { - throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan()); - } - const strNum = this._cursor.getChars(codeStart); - this._cursor.advance(); - try { - const charCode = parseInt(strNum, isHex ? 16 : 10); - return String.fromCharCode(charCode); - } - catch (_a) { - throw this._createError(_unknownEntityErrorMsg(this._cursor.getChars(start)), this._cursor.getSpan()); - } - } - else { - const nameStart = this._cursor.clone(); - this._attemptCharCodeUntilFn(isNamedEntityEnd); - if (this._cursor.peek() != $SEMICOLON) { - this._cursor = nameStart; - return '&'; - } - const name = this._cursor.getChars(nameStart); - this._cursor.advance(); - const char = NAMED_ENTITIES[name]; - if (!char) { - throw this._createError(_unknownEntityErrorMsg(name), this._cursor.getSpan(start)); - } - return char; - } - } - _consumeRawText(decodeEntities, endMarkerPredicate) { - this._beginToken(decodeEntities ? TokenType.ESCAPABLE_RAW_TEXT : TokenType.RAW_TEXT); - const parts = []; - while (true) { - const tagCloseStart = this._cursor.clone(); - const foundEndMarker = endMarkerPredicate(); - this._cursor = tagCloseStart; - if (foundEndMarker) { - break; - } - parts.push(this._readChar(decodeEntities)); - } - return this._endToken([this._processCarriageReturns(parts.join(''))]); - } - _consumeComment(start) { - this._beginToken(TokenType.COMMENT_START, start); - this._requireCharCode($MINUS); - this._endToken([]); - this._consumeRawText(false, () => this._attemptStr('-->')); - this._beginToken(TokenType.COMMENT_END); - this._requireStr('-->'); - this._endToken([]); - } - _consumeCdata(start) { - this._beginToken(TokenType.CDATA_START, start); - this._requireStr('CDATA['); - this._endToken([]); - this._consumeRawText(false, () => this._attemptStr(']]>')); - this._beginToken(TokenType.CDATA_END); - this._requireStr(']]>'); - this._endToken([]); - } - _consumeDocType(start) { - this._beginToken(TokenType.DOC_TYPE, start); - const contentStart = this._cursor.clone(); - this._attemptUntilChar($GT); - const content = this._cursor.getChars(contentStart); - this._cursor.advance(); - this._endToken([content]); - } - _consumePrefixAndName() { - const nameOrPrefixStart = this._cursor.clone(); - let prefix = ''; - while (this._cursor.peek() !== $COLON && !isPrefixEnd(this._cursor.peek())) { - this._cursor.advance(); - } - let nameStart; - if (this._cursor.peek() === $COLON) { - prefix = this._cursor.getChars(nameOrPrefixStart); - this._cursor.advance(); - nameStart = this._cursor.clone(); - } - else { - nameStart = nameOrPrefixStart; - } - this._requireCharCodeUntilFn(isNameEnd, prefix === '' ? 0 : 1); - const name = this._cursor.getChars(nameStart); - return [prefix, name]; - } - _consumeTagOpen(start) { - let tagName; - let prefix; - let openTagToken; - let tokensBeforeTagOpen = this.tokens.length; - const innerStart = this._cursor.clone(); - try { - if (!isAsciiLetter(this._cursor.peek())) { - throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(start)); - } - openTagToken = this._consumeTagOpenStart(start); - prefix = openTagToken.parts[0]; - tagName = openTagToken.parts[1]; - this._attemptCharCodeUntilFn(isNotWhitespace); - while (this._cursor.peek() !== $SLASH && this._cursor.peek() !== $GT) { - this._consumeAttributeName(); - this._attemptCharCodeUntilFn(isNotWhitespace); - if (this._attemptCharCode($EQ)) { - this._attemptCharCodeUntilFn(isNotWhitespace); - this._consumeAttributeValue(); - } - this._attemptCharCodeUntilFn(isNotWhitespace); - } - this._consumeTagOpenEnd(); - } - catch (e) { - if (e instanceof _ControlFlowError) { - // When the start tag is invalid (including invalid "attributes"), assume we want a "<" - this._cursor = innerStart; - if (openTagToken) { - this.tokens.length = tokensBeforeTagOpen; - } - // Back to back text tokens are merged at the end - this._beginToken(TokenType.TEXT, start); - this._endToken(['<']); - return; - } - throw e; - } - const contentTokenType = this._getTagDefinition(tagName).contentType; - if (contentTokenType === TagContentType.RAW_TEXT) { - this._consumeRawTextWithTagClose(prefix, tagName, false); - } - else if (contentTokenType === TagContentType.ESCAPABLE_RAW_TEXT) { - this._consumeRawTextWithTagClose(prefix, tagName, true); - } - } - _consumeRawTextWithTagClose(prefix, tagName, decodeEntities) { - const textToken = this._consumeRawText(decodeEntities, () => { - if (!this._attemptCharCode($LT)) - return false; - if (!this._attemptCharCode($SLASH)) - return false; - this._attemptCharCodeUntilFn(isNotWhitespace); - if (!this._attemptStrCaseInsensitive(tagName)) - return false; - this._attemptCharCodeUntilFn(isNotWhitespace); - return this._attemptCharCode($GT); - }); - this._beginToken(TokenType.TAG_CLOSE); - this._requireCharCodeUntilFn(code => code === $GT, 3); - this._cursor.advance(); // Consume the `>` - this._endToken([prefix, tagName]); - } - _consumeTagOpenStart(start) { - this._beginToken(TokenType.TAG_OPEN_START, start); - const parts = this._consumePrefixAndName(); - return this._endToken(parts); - } - _consumeAttributeName() { - const attrNameStart = this._cursor.peek(); - if (attrNameStart === $SQ || attrNameStart === $DQ) { - throw this._createError(_unexpectedCharacterErrorMsg(attrNameStart), this._cursor.getSpan()); - } - this._beginToken(TokenType.ATTR_NAME); - const prefixAndName = this._consumePrefixAndName(); - this._endToken(prefixAndName); - } - _consumeAttributeValue() { - let value; - if (this._cursor.peek() === $SQ || this._cursor.peek() === $DQ) { - this._beginToken(TokenType.ATTR_QUOTE); - const quoteChar = this._cursor.peek(); - this._cursor.advance(); - this._endToken([String.fromCodePoint(quoteChar)]); - this._beginToken(TokenType.ATTR_VALUE); - const parts = []; - while (this._cursor.peek() !== quoteChar) { - parts.push(this._readChar(true)); - } - value = parts.join(''); - this._endToken([this._processCarriageReturns(value)]); - this._beginToken(TokenType.ATTR_QUOTE); - this._cursor.advance(); - this._endToken([String.fromCodePoint(quoteChar)]); - } - else { - this._beginToken(TokenType.ATTR_VALUE); - const valueStart = this._cursor.clone(); - this._requireCharCodeUntilFn(isNameEnd, 1); - value = this._cursor.getChars(valueStart); - this._endToken([this._processCarriageReturns(value)]); - } - } - _consumeTagOpenEnd() { - const tokenType = this._attemptCharCode($SLASH) ? TokenType.TAG_OPEN_END_VOID : TokenType.TAG_OPEN_END; - this._beginToken(tokenType); - this._requireCharCode($GT); - this._endToken([]); - } - _consumeTagClose(start) { - this._beginToken(TokenType.TAG_CLOSE, start); - this._attemptCharCodeUntilFn(isNotWhitespace); - const prefixAndName = this._consumePrefixAndName(); - this._attemptCharCodeUntilFn(isNotWhitespace); - this._requireCharCode($GT); - this._endToken(prefixAndName); - } - _consumeExpansionFormStart() { - this._beginToken(TokenType.EXPANSION_FORM_START); - this._requireCharCode($LBRACE); - this._endToken([]); - this._expansionCaseStack.push(TokenType.EXPANSION_FORM_START); - this._beginToken(TokenType.RAW_TEXT); - const condition = this._readUntil($COMMA); - this._endToken([condition]); - this._requireCharCode($COMMA); - this._attemptCharCodeUntilFn(isNotWhitespace); - this._beginToken(TokenType.RAW_TEXT); - const type = this._readUntil($COMMA); - this._endToken([type]); - this._requireCharCode($COMMA); - this._attemptCharCodeUntilFn(isNotWhitespace); - } - _consumeExpansionCaseStart() { - this._beginToken(TokenType.EXPANSION_CASE_VALUE); - const value = this._readUntil($LBRACE).trim(); - this._endToken([value]); - this._attemptCharCodeUntilFn(isNotWhitespace); - this._beginToken(TokenType.EXPANSION_CASE_EXP_START); - this._requireCharCode($LBRACE); - this._endToken([]); - this._attemptCharCodeUntilFn(isNotWhitespace); - this._expansionCaseStack.push(TokenType.EXPANSION_CASE_EXP_START); - } - _consumeExpansionCaseEnd() { - this._beginToken(TokenType.EXPANSION_CASE_EXP_END); - this._requireCharCode($RBRACE); - this._endToken([]); - this._attemptCharCodeUntilFn(isNotWhitespace); - this._expansionCaseStack.pop(); - } - _consumeExpansionFormEnd() { - this._beginToken(TokenType.EXPANSION_FORM_END); - this._requireCharCode($RBRACE); - this._endToken([]); - this._expansionCaseStack.pop(); - } - _consumeText() { - const start = this._cursor.clone(); - this._beginToken(TokenType.TEXT, start); - const parts = []; - do { - if (this._interpolationConfig && this._attemptStr(this._interpolationConfig.start)) { - parts.push(this._interpolationConfig.start); - this._inInterpolation = true; - } - else if (this._interpolationConfig && this._inInterpolation && - this._attemptStr(this._interpolationConfig.end)) { - parts.push(this._interpolationConfig.end); - this._inInterpolation = false; - } - else { - parts.push(this._readChar(true)); - } - } while (!this._isTextEnd()); - this._endToken([this._processCarriageReturns(parts.join(''))]); - } - _isTextEnd() { - if (this._cursor.peek() === $LT || this._cursor.peek() === $EOF) { - return true; - } - if (this._tokenizeIcu && !this._inInterpolation) { - if (this.isExpansionFormStart()) { - // start of an expansion form - return true; - } - if (this._cursor.peek() === $RBRACE && this._isInExpansionCase()) { - // end of and expansion case - return true; - } - } - return false; - } - _readUntil(char) { - const start = this._cursor.clone(); - this._attemptUntilChar(char); - return this._cursor.getChars(start); - } - _isInExpansionCase() { - return this._expansionCaseStack.length > 0 && - this._expansionCaseStack[this._expansionCaseStack.length - 1] === - TokenType.EXPANSION_CASE_EXP_START; - } - _isInExpansionForm() { - return this._expansionCaseStack.length > 0 && - this._expansionCaseStack[this._expansionCaseStack.length - 1] === - TokenType.EXPANSION_FORM_START; - } - isExpansionFormStart() { - if (this._cursor.peek() !== $LBRACE) { - return false; - } - if (this._interpolationConfig) { - const start = this._cursor.clone(); - const isInterpolation = this._attemptStr(this._interpolationConfig.start); - this._cursor = start; - return !isInterpolation; - } - return true; - } -} -function isNotWhitespace(code) { - return !isWhitespace(code) || code === $EOF; -} -function isNameEnd(code) { - return isWhitespace(code) || code === $GT || code === $SLASH || - code === $SQ || code === $DQ || code === $EQ; -} -function isPrefixEnd(code) { - return (code < $a || $z < code) && (code < $A || $Z < code) && - (code < $0 || code > $9); -} -function isDigitEntityEnd(code) { - return code == $SEMICOLON || code == $EOF || !isAsciiHexDigit(code); -} -function isNamedEntityEnd(code) { - return code == $SEMICOLON || code == $EOF || !isAsciiLetter(code); -} -function isExpansionCaseStart(peek) { - return peek === $EQ || isAsciiLetter(peek) || isDigit(peek); -} -function compareCharCodeCaseInsensitive(code1, code2) { - return toUpperCaseCharCode(code1) == toUpperCaseCharCode(code2); -} -function toUpperCaseCharCode(code) { - return code >= $a && code <= $z ? code - $a + $A : code; -} -function mergeTextTokens(srcTokens) { - const dstTokens = []; - let lastDstToken = undefined; - for (let i = 0; i < srcTokens.length; i++) { - const token = srcTokens[i]; - if (lastDstToken && lastDstToken.type == TokenType.TEXT && token.type == TokenType.TEXT) { - lastDstToken.parts[0] += token.parts[0]; - lastDstToken.sourceSpan.end = token.sourceSpan.end; - } - else { - lastDstToken = token; - dstTokens.push(lastDstToken); - } - } - return dstTokens; -} -class PlainCharacterCursor { - constructor(fileOrCursor, range) { - if (fileOrCursor instanceof PlainCharacterCursor) { - this.file = fileOrCursor.file; - this.input = fileOrCursor.input; - this.end = fileOrCursor.end; - this.state = Object.assign({}, fileOrCursor.state); - } - else { - if (!range) { - throw new Error('Programming error: the range argument must be provided with a file argument.'); - } - this.file = fileOrCursor; - this.input = fileOrCursor.content; - this.end = range.endPos; - this.state = { - peek: -1, - offset: range.startPos, - line: range.startLine, - column: range.startCol, - }; - } - } - clone() { return new PlainCharacterCursor(this); } - peek() { return this.state.peek; } - charsLeft() { return this.end - this.state.offset; } - diff(other) { return this.state.offset - other.state.offset; } - advance() { this.advanceState(this.state); } - init() { this.updatePeek(this.state); } - getSpan(start, leadingTriviaCodePoints) { - start = start || this; - if (leadingTriviaCodePoints) { - start = start.clone(); - while (this.diff(start) > 0 && leadingTriviaCodePoints.indexOf(start.peek()) !== -1) { - start.advance(); - } - } - return new ParseSourceSpan(new ParseLocation(start.file, start.state.offset, start.state.line, start.state.column), new ParseLocation(this.file, this.state.offset, this.state.line, this.state.column)); - } - getChars(start) { - return this.input.substring(start.state.offset, this.state.offset); - } - charAt(pos) { return this.input.charCodeAt(pos); } - advanceState(state) { - if (state.offset >= this.end) { - this.state = state; - throw new CursorError('Unexpected character "EOF"', this); - } - const currentChar = this.charAt(state.offset); - if (currentChar === $LF) { - state.line++; - state.column = 0; - } - else if (!isNewLine(currentChar)) { - state.column++; - } - state.offset++; - this.updatePeek(state); - } - updatePeek(state) { - state.peek = state.offset >= this.end ? $EOF : this.charAt(state.offset); - } -} -class EscapedCharacterCursor extends PlainCharacterCursor { - constructor(fileOrCursor, range) { - if (fileOrCursor instanceof EscapedCharacterCursor) { - super(fileOrCursor); - this.internalState = Object.assign({}, fileOrCursor.internalState); - } - else { - super(fileOrCursor, range); - this.internalState = this.state; - } - } - advance() { - this.state = this.internalState; - super.advance(); - this.processEscapeSequence(); - } - init() { - super.init(); - this.processEscapeSequence(); - } - clone() { return new EscapedCharacterCursor(this); } - getChars(start) { - const cursor = start.clone(); - let chars = ''; - while (cursor.internalState.offset < this.internalState.offset) { - chars += String.fromCodePoint(cursor.peek()); - cursor.advance(); - } - return chars; - } - /** - * Process the escape sequence that starts at the current position in the text. - * - * This method is called to ensure that `peek` has the unescaped value of escape sequences. - */ - processEscapeSequence() { - const peek = () => this.internalState.peek; - if (peek() === $BACKSLASH) { - // We have hit an escape sequence so we need the internal state to become independent - // of the external state. - this.internalState = Object.assign({}, this.state); - // Move past the backslash - this.advanceState(this.internalState); - // First check for standard control char sequences - if (peek() === $n) { - this.state.peek = $LF; - } - else if (peek() === $r) { - this.state.peek = $CR; - } - else if (peek() === $v) { - this.state.peek = $VTAB; - } - else if (peek() === $t) { - this.state.peek = $TAB; - } - else if (peek() === $b) { - this.state.peek = $BSPACE; - } - else if (peek() === $f) { - this.state.peek = $FF; - } - // Now consider more complex sequences - else if (peek() === $u) { - // Unicode code-point sequence - this.advanceState(this.internalState); // advance past the `u` char - if (peek() === $LBRACE) { - // Variable length Unicode, e.g. `\x{123}` - this.advanceState(this.internalState); // advance past the `{` char - // Advance past the variable number of hex digits until we hit a `}` char - const digitStart = this.clone(); - let length = 0; - while (peek() !== $RBRACE) { - this.advanceState(this.internalState); - length++; - } - this.state.peek = this.decodeHexDigits(digitStart, length); - } - else { - // Fixed length Unicode, e.g. `\u1234` - const digitStart = this.clone(); - this.advanceState(this.internalState); - this.advanceState(this.internalState); - this.advanceState(this.internalState); - this.state.peek = this.decodeHexDigits(digitStart, 4); - } - } - else if (peek() === $x) { - // Hex char code, e.g. `\x2F` - this.advanceState(this.internalState); // advance past the `x` char - const digitStart = this.clone(); - this.advanceState(this.internalState); - this.state.peek = this.decodeHexDigits(digitStart, 2); - } - else if (isOctalDigit(peek())) { - // Octal char code, e.g. `\012`, - let octal = ''; - let length = 0; - let previous = this.clone(); - while (isOctalDigit(peek()) && length < 3) { - previous = this.clone(); - octal += String.fromCodePoint(peek()); - this.advanceState(this.internalState); - length++; - } - this.state.peek = parseInt(octal, 8); - // Backup one char - this.internalState = previous.internalState; - } - else if (isNewLine(this.internalState.peek)) { - // Line continuation `\` followed by a new line - this.advanceState(this.internalState); // advance over the newline - this.state = this.internalState; - } - else { - // If none of the `if` blocks were executed then we just have an escaped normal character. - // In that case we just, effectively, skip the backslash from the character. - this.state.peek = this.internalState.peek; - } - } - } - decodeHexDigits(start, length) { - const hex = this.input.substr(start.internalState.offset, length); - const charCode = parseInt(hex, 16); - if (!isNaN(charCode)) { - return charCode; - } - else { - start.state = start.internalState; - throw new CursorError('Invalid hexadecimal escape sequence', start); - } - } -} -class CursorError { - constructor(msg, cursor) { - this.msg = msg; - this.cursor = cursor; - } -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class TreeError extends ParseError { - constructor(elementName, span, msg) { - super(span, msg); - this.elementName = elementName; - } - static create(elementName, span, msg) { - return new TreeError(elementName, span, msg); - } -} -class ParseTreeResult { - constructor(rootNodes, errors) { - this.rootNodes = rootNodes; - this.errors = errors; - } -} -class Parser { - constructor(getTagDefinition) { - this.getTagDefinition = getTagDefinition; - } - parse(source, url, options) { - const tokensAndErrors = tokenize(source, url, this.getTagDefinition, options); - const treeAndErrors = new _TreeBuilder(tokensAndErrors.tokens, this.getTagDefinition).build(); - return new ParseTreeResult(treeAndErrors.rootNodes, tokensAndErrors.errors.concat(treeAndErrors.errors)); - } -} -class _TreeBuilder { - constructor(tokens, getTagDefinition) { - this.tokens = tokens; - this.getTagDefinition = getTagDefinition; - this._index = -1; - this._rootNodes = []; - this._errors = []; - this._elementStack = []; - this._advance(); - } - build() { - while (this._peek.type !== TokenType.EOF) { - if (this._peek.type === TokenType.TAG_OPEN_START) { - this._consumeStartTag(this._advance()); - } - else if (this._peek.type === TokenType.TAG_CLOSE) { - this._consumeEndTag(this._advance()); - } - else if (this._peek.type === TokenType.CDATA_START) { - this._closeVoidElement(); - this._consumeCdata(this._advance()); - } - else if (this._peek.type === TokenType.COMMENT_START) { - this._closeVoidElement(); - this._consumeComment(this._advance()); - } - else if (this._peek.type === TokenType.TEXT || this._peek.type === TokenType.RAW_TEXT || - this._peek.type === TokenType.ESCAPABLE_RAW_TEXT) { - this._closeVoidElement(); - this._consumeText(this._advance()); - } - else if (this._peek.type === TokenType.EXPANSION_FORM_START) { - this._consumeExpansion(this._advance()); - } - else { - // Skip all other tokens... - this._advance(); - } - } - return new ParseTreeResult(this._rootNodes, this._errors); - } - _advance() { - const prev = this._peek; - if (this._index < this.tokens.length - 1) { - // Note: there is always an EOF token at the end - this._index++; - } - this._peek = this.tokens[this._index]; - return prev; - } - _advanceIf(type) { - if (this._peek.type === type) { - return this._advance(); - } - return null; - } - _consumeCdata(startToken) { - this._consumeText(this._advance()); - this._advanceIf(TokenType.CDATA_END); - } - _consumeComment(token) { - const text = this._advanceIf(TokenType.RAW_TEXT); - this._advanceIf(TokenType.COMMENT_END); - const value = text != null ? text.parts[0].trim() : null; - this._addToParent(new Comment(value, token.sourceSpan)); - } - _consumeExpansion(token) { - const switchValue = this._advance(); - const type = this._advance(); - const cases = []; - // read = - while (this._peek.type === TokenType.EXPANSION_CASE_VALUE) { - const expCase = this._parseExpansionCase(); - if (!expCase) - return; // error - cases.push(expCase); - } - // read the final } - if (this._peek.type !== TokenType.EXPANSION_FORM_END) { - this._errors.push(TreeError.create(null, this._peek.sourceSpan, `Invalid ICU message. Missing '}'.`)); - return; - } - const sourceSpan = new ParseSourceSpan(token.sourceSpan.start, this._peek.sourceSpan.end); - this._addToParent(new Expansion(switchValue.parts[0], type.parts[0], cases, sourceSpan, switchValue.sourceSpan)); - this._advance(); - } - _parseExpansionCase() { - const value = this._advance(); - // read { - if (this._peek.type !== TokenType.EXPANSION_CASE_EXP_START) { - this._errors.push(TreeError.create(null, this._peek.sourceSpan, `Invalid ICU message. Missing '{'.`)); - return null; - } - // read until } - const start = this._advance(); - const exp = this._collectExpansionExpTokens(start); - if (!exp) - return null; - const end = this._advance(); - exp.push(new Token(TokenType.EOF, [], end.sourceSpan)); - // parse everything in between { and } - const parsedExp = new _TreeBuilder(exp, this.getTagDefinition).build(); - if (parsedExp.errors.length > 0) { - this._errors = this._errors.concat(parsedExp.errors); - return null; - } - const sourceSpan = new ParseSourceSpan(value.sourceSpan.start, end.sourceSpan.end); - const expSourceSpan = new ParseSourceSpan(start.sourceSpan.start, end.sourceSpan.end); - return new ExpansionCase(value.parts[0], parsedExp.rootNodes, sourceSpan, value.sourceSpan, expSourceSpan); - } - _collectExpansionExpTokens(start) { - const exp = []; - const expansionFormStack = [TokenType.EXPANSION_CASE_EXP_START]; - while (true) { - if (this._peek.type === TokenType.EXPANSION_FORM_START || - this._peek.type === TokenType.EXPANSION_CASE_EXP_START) { - expansionFormStack.push(this._peek.type); - } - if (this._peek.type === TokenType.EXPANSION_CASE_EXP_END) { - if (lastOnStack(expansionFormStack, TokenType.EXPANSION_CASE_EXP_START)) { - expansionFormStack.pop(); - if (expansionFormStack.length == 0) - return exp; - } - else { - this._errors.push(TreeError.create(null, start.sourceSpan, `Invalid ICU message. Missing '}'.`)); - return null; - } - } - if (this._peek.type === TokenType.EXPANSION_FORM_END) { - if (lastOnStack(expansionFormStack, TokenType.EXPANSION_FORM_START)) { - expansionFormStack.pop(); - } - else { - this._errors.push(TreeError.create(null, start.sourceSpan, `Invalid ICU message. Missing '}'.`)); - return null; - } - } - if (this._peek.type === TokenType.EOF) { - this._errors.push(TreeError.create(null, start.sourceSpan, `Invalid ICU message. Missing '}'.`)); - return null; - } - exp.push(this._advance()); - } - } - _consumeText(token) { - let text = token.parts[0]; - if (text.length > 0 && text[0] == '\n') { - const parent = this._getParentElement(); - if (parent != null && parent.children.length == 0 && - this.getTagDefinition(parent.name).ignoreFirstLf) { - text = text.substring(1); - } - } - if (text.length > 0) { - this._addToParent(new Text$3(text, token.sourceSpan)); - } - } - _closeVoidElement() { - const el = this._getParentElement(); - if (el && this.getTagDefinition(el.name).isVoid) { - this._elementStack.pop(); - } - } - _consumeStartTag(startTagToken) { - const prefix = startTagToken.parts[0]; - const name = startTagToken.parts[1]; - const attrs = []; - while (this._peek.type === TokenType.ATTR_NAME) { - attrs.push(this._consumeAttr(this._advance())); - } - const fullName = this._getElementFullName(prefix, name, this._getParentElement()); - let selfClosing = false; - // Note: There could have been a tokenizer error - // so that we don't get a token for the end tag... - if (this._peek.type === TokenType.TAG_OPEN_END_VOID) { - this._advance(); - selfClosing = true; - const tagDef = this.getTagDefinition(fullName); - if (!(tagDef.canSelfClose || getNsPrefix(fullName) !== null || tagDef.isVoid)) { - this._errors.push(TreeError.create(fullName, startTagToken.sourceSpan, `Only void and foreign elements can be self closed "${startTagToken.parts[1]}"`)); - } - } - else if (this._peek.type === TokenType.TAG_OPEN_END) { - this._advance(); - selfClosing = false; - } - const end = this._peek.sourceSpan.start; - const span = new ParseSourceSpan(startTagToken.sourceSpan.start, end); - const el = new Element$1(fullName, attrs, [], span, span, undefined); - this._pushElement(el); - if (selfClosing) { - this._popElement(fullName); - el.endSourceSpan = span; - } - } - _pushElement(el) { - const parentEl = this._getParentElement(); - if (parentEl && this.getTagDefinition(parentEl.name).isClosedByChild(el.name)) { - this._elementStack.pop(); - } - this._addToParent(el); - this._elementStack.push(el); - } - _consumeEndTag(endTagToken) { - const fullName = this._getElementFullName(endTagToken.parts[0], endTagToken.parts[1], this._getParentElement()); - if (this._getParentElement()) { - this._getParentElement().endSourceSpan = endTagToken.sourceSpan; - } - if (this.getTagDefinition(fullName).isVoid) { - this._errors.push(TreeError.create(fullName, endTagToken.sourceSpan, `Void elements do not have end tags "${endTagToken.parts[1]}"`)); - } - else if (!this._popElement(fullName)) { - const errMsg = `Unexpected closing tag "${fullName}". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags`; - this._errors.push(TreeError.create(fullName, endTagToken.sourceSpan, errMsg)); - } - } - _popElement(fullName) { - for (let stackIndex = this._elementStack.length - 1; stackIndex >= 0; stackIndex--) { - const el = this._elementStack[stackIndex]; - if (el.name == fullName) { - this._elementStack.splice(stackIndex, this._elementStack.length - stackIndex); - return true; - } - if (!this.getTagDefinition(el.name).closedByParent) { - return false; - } - } - return false; - } - _consumeAttr(attrName) { - const fullName = mergeNsAndName(attrName.parts[0], attrName.parts[1]); - let end = attrName.sourceSpan.end; - let value = ''; - let valueSpan = undefined; - if (this._peek.type === TokenType.ATTR_QUOTE) { - this._advance(); - } - if (this._peek.type === TokenType.ATTR_VALUE) { - const valueToken = this._advance(); - value = valueToken.parts[0]; - end = valueToken.sourceSpan.end; - valueSpan = valueToken.sourceSpan; - } - if (this._peek.type === TokenType.ATTR_QUOTE) { - const quoteToken = this._advance(); - end = quoteToken.sourceSpan.end; - } - return new Attribute(fullName, value, new ParseSourceSpan(attrName.sourceSpan.start, end), valueSpan); - } - _getParentElement() { - return this._elementStack.length > 0 ? this._elementStack[this._elementStack.length - 1] : null; - } - /** - * Returns the parent in the DOM and the container. - * - * `` elements are skipped as they are not rendered as DOM element. - */ - _getParentElementSkippingContainers() { - let container = null; - for (let i = this._elementStack.length - 1; i >= 0; i--) { - if (!isNgContainer(this._elementStack[i].name)) { - return { parent: this._elementStack[i], container }; - } - container = this._elementStack[i]; - } - return { parent: null, container }; - } - _addToParent(node) { - const parent = this._getParentElement(); - if (parent != null) { - parent.children.push(node); - } - else { - this._rootNodes.push(node); - } - } - /** - * Insert a node between the parent and the container. - * When no container is given, the node is appended as a child of the parent. - * Also updates the element stack accordingly. - * - * @internal - */ - _insertBeforeContainer(parent, container, node) { - if (!container) { - this._addToParent(node); - this._elementStack.push(node); - } - else { - if (parent) { - // replace the container with the new node in the children - const index = parent.children.indexOf(container); - parent.children[index] = node; - } - else { - this._rootNodes.push(node); - } - node.children.push(container); - this._elementStack.splice(this._elementStack.indexOf(container), 0, node); - } - } - _getElementFullName(prefix, localName, parentElement) { - if (prefix === '') { - prefix = this.getTagDefinition(localName).implicitNamespacePrefix || ''; - if (prefix === '' && parentElement != null) { - prefix = getNsPrefix(parentElement.name); - } - } - return mergeNsAndName(prefix, localName); - } -} -function lastOnStack(stack, element) { - return stack.length > 0 && stack[stack.length - 1] === element; -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class HtmlParser extends Parser { - constructor() { super(getHtmlTagDefinition); } - parse(source, url, options) { - return super.parse(source, url, options); - } -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const PRESERVE_WS_ATTR_NAME = 'ngPreserveWhitespaces'; -const SKIP_WS_TRIM_TAGS = new Set(['pre', 'template', 'textarea', 'script', 'style']); -// Equivalent to \s with \u00a0 (non-breaking space) excluded. -// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp -const WS_CHARS = ' \f\n\r\t\v\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff'; -const NO_WS_REGEXP = new RegExp(`[^${WS_CHARS}]`); -const WS_REPLACE_REGEXP = new RegExp(`[${WS_CHARS}]{2,}`, 'g'); -function hasPreserveWhitespacesAttr(attrs) { - return attrs.some((attr) => attr.name === PRESERVE_WS_ATTR_NAME); -} -/** - * Angular Dart introduced &ngsp; as a placeholder for non-removable space, see: - * https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart#L25-L32 - * In Angular Dart &ngsp; is converted to the 0xE500 PUA (Private Use Areas) unicode character - * and later on replaced by a space. We are re-implementing the same idea here. - */ -function replaceNgsp(value) { - // lexer is replacing the &ngsp; pseudo-entity with NGSP_UNICODE - return value.replace(new RegExp(NGSP_UNICODE, 'g'), ' '); -} -/** - * This visitor can walk HTML parse tree and remove / trim text nodes using the following rules: - * - consider spaces, tabs and new lines as whitespace characters; - * - drop text nodes consisting of whitespace characters only; - * - for all other text nodes replace consecutive whitespace characters with one space; - * - convert &ngsp; pseudo-entity to a single space; - * - * Removal and trimming of whitespaces have positive performance impact (less code to generate - * while compiling templates, faster view creation). At the same time it can be "destructive" - * in some cases (whitespaces can influence layout). Because of the potential of breaking layout - * this visitor is not activated by default in Angular 5 and people need to explicitly opt-in for - * whitespace removal. The default option for whitespace removal will be revisited in Angular 6 - * and might be changed to "on" by default. - */ -class WhitespaceVisitor { - visitElement(element, context) { - if (SKIP_WS_TRIM_TAGS.has(element.name) || hasPreserveWhitespacesAttr(element.attrs)) { - // don't descent into elements where we need to preserve whitespaces - // but still visit all attributes to eliminate one used as a market to preserve WS - return new Element$1(element.name, visitAll$1(this, element.attrs), element.children, element.sourceSpan, element.startSourceSpan, element.endSourceSpan, element.i18n); - } - return new Element$1(element.name, element.attrs, visitAll$1(this, element.children), element.sourceSpan, element.startSourceSpan, element.endSourceSpan, element.i18n); - } - visitAttribute(attribute, context) { - return attribute.name !== PRESERVE_WS_ATTR_NAME ? attribute : null; - } - visitText(text, context) { - const isNotBlank = text.value.match(NO_WS_REGEXP); - if (isNotBlank) { - return new Text$3(replaceNgsp(text.value).replace(WS_REPLACE_REGEXP, ' '), text.sourceSpan, text.i18n); - } - return null; - } - visitComment(comment, context) { return comment; } - visitExpansion(expansion, context) { return expansion; } - visitExpansionCase(expansionCase, context) { return expansionCase; } -} -function removeWhitespaces(htmlAstWithErrors) { - return new ParseTreeResult(visitAll$1(new WhitespaceVisitor(), htmlAstWithErrors.rootNodes), htmlAstWithErrors.errors); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -// http://cldr.unicode.org/index/cldr-spec/plural-rules -const PLURAL_CASES = ['zero', 'one', 'two', 'few', 'many', 'other']; -/** - * Expands special forms into elements. - * - * For example, - * - * ``` - * { messages.length, plural, - * =0 {zero} - * =1 {one} - * other {more than one} - * } - * ``` - * - * will be expanded into - * - * ``` - * - * zero - * one - * more than one - * - * ``` - */ -function expandNodes(nodes) { - const expander = new _Expander(); - return new ExpansionResult(visitAll$1(expander, nodes), expander.isExpanded, expander.errors); -} -class ExpansionResult { - constructor(nodes, expanded, errors) { - this.nodes = nodes; - this.expanded = expanded; - this.errors = errors; - } -} -class ExpansionError extends ParseError { - constructor(span, errorMsg) { super(span, errorMsg); } -} -/** - * Expand expansion forms (plural, select) to directives - * - * @internal - */ -class _Expander { - constructor() { - this.isExpanded = false; - this.errors = []; - } - visitElement(element, context) { - return new Element$1(element.name, element.attrs, visitAll$1(this, element.children), element.sourceSpan, element.startSourceSpan, element.endSourceSpan); - } - visitAttribute(attribute, context) { return attribute; } - visitText(text, context) { return text; } - visitComment(comment, context) { return comment; } - visitExpansion(icu, context) { - this.isExpanded = true; - return icu.type == 'plural' ? _expandPluralForm(icu, this.errors) : - _expandDefaultForm(icu, this.errors); - } - visitExpansionCase(icuCase, context) { - throw new Error('Should not be reached'); - } -} -// Plural forms are expanded to `NgPlural` and `NgPluralCase`s -function _expandPluralForm(ast, errors) { - const children = ast.cases.map(c => { - if (PLURAL_CASES.indexOf(c.value) == -1 && !c.value.match(/^=\d+$/)) { - errors.push(new ExpansionError(c.valueSourceSpan, `Plural cases should be "=" or one of ${PLURAL_CASES.join(", ")}`)); - } - const expansionResult = expandNodes(c.expression); - errors.push(...expansionResult.errors); - return new Element$1(`ng-template`, [new Attribute('ngPluralCase', `${c.value}`, c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan); - }); - const switchAttr = new Attribute('[ngPlural]', ast.switchValue, ast.switchValueSourceSpan); - return new Element$1('ng-container', [switchAttr], children, ast.sourceSpan, ast.sourceSpan, ast.sourceSpan); -} -// ICU messages (excluding plural form) are expanded to `NgSwitch` and `NgSwitchCase`s -function _expandDefaultForm(ast, errors) { - const children = ast.cases.map(c => { - const expansionResult = expandNodes(c.expression); - errors.push(...expansionResult.errors); - if (c.value === 'other') { - // other is the default case when no values match - return new Element$1(`ng-template`, [new Attribute('ngSwitchDefault', '', c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan); - } - return new Element$1(`ng-template`, [new Attribute('ngSwitchCase', `${c.value}`, c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan); - }); - const switchAttr = new Attribute('[ngSwitch]', ast.switchValue, ast.switchValueSourceSpan); - return new Element$1('ng-container', [switchAttr], children, ast.sourceSpan, ast.sourceSpan, ast.sourceSpan); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * A segment of text within the template. - */ -class TextAst { - constructor(value, ngContentIndex, sourceSpan) { - this.value = value; - this.ngContentIndex = ngContentIndex; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { return visitor.visitText(this, context); } -} -/** - * A bound expression within the text of a template. - */ -class BoundTextAst { - constructor(value, ngContentIndex, sourceSpan) { - this.value = value; - this.ngContentIndex = ngContentIndex; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { - return visitor.visitBoundText(this, context); - } -} -/** - * A plain attribute on an element. - */ -class AttrAst { - constructor(name, value, sourceSpan) { - this.name = name; - this.value = value; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { return visitor.visitAttr(this, context); } -} -const BoundPropertyMapping = { - [4 /* Animation */]: 4 /* Animation */, - [1 /* Attribute */]: 1 /* Attribute */, - [2 /* Class */]: 2 /* Class */, - [0 /* Property */]: 0 /* Property */, - [3 /* Style */]: 3 /* Style */, -}; -/** - * A binding for an element property (e.g. `[property]="expression"`) or an animation trigger (e.g. - * `[@trigger]="stateExp"`) - */ -class BoundElementPropertyAst { - constructor(name, type, securityContext, value, unit, sourceSpan) { - this.name = name; - this.type = type; - this.securityContext = securityContext; - this.value = value; - this.unit = unit; - this.sourceSpan = sourceSpan; - this.isAnimation = this.type === 4 /* Animation */; - } - static fromBoundProperty(prop) { - const type = BoundPropertyMapping[prop.type]; - return new BoundElementPropertyAst(prop.name, type, prop.securityContext, prop.value, prop.unit, prop.sourceSpan); - } - visit(visitor, context) { - return visitor.visitElementProperty(this, context); - } -} -/** - * A binding for an element event (e.g. `(event)="handler()"`) or an animation trigger event (e.g. - * `(@trigger.phase)="callback($event)"`). - */ -class BoundEventAst { - constructor(name, target, phase, handler, sourceSpan, handlerSpan) { - this.name = name; - this.target = target; - this.phase = phase; - this.handler = handler; - this.sourceSpan = sourceSpan; - this.handlerSpan = handlerSpan; - this.fullName = BoundEventAst.calcFullName(this.name, this.target, this.phase); - this.isAnimation = !!this.phase; - } - static calcFullName(name, target, phase) { - if (target) { - return `${target}:${name}`; - } - if (phase) { - return `@${name}.${phase}`; - } - return name; - } - static fromParsedEvent(event) { - const target = event.type === 0 /* Regular */ ? event.targetOrPhase : null; - const phase = event.type === 1 /* Animation */ ? event.targetOrPhase : null; - return new BoundEventAst(event.name, target, phase, event.handler, event.sourceSpan, event.handlerSpan); - } - visit(visitor, context) { - return visitor.visitEvent(this, context); - } -} -/** - * A reference declaration on an element (e.g. `let someName="expression"`). - */ -class ReferenceAst { - constructor(name, value, originalValue, sourceSpan) { - this.name = name; - this.value = value; - this.originalValue = originalValue; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { - return visitor.visitReference(this, context); - } -} -/** - * A variable declaration on a (e.g. `var-someName="someLocalName"`). - */ -class VariableAst { - constructor(name, value, sourceSpan) { - this.name = name; - this.value = value; - this.sourceSpan = sourceSpan; - } - static fromParsedVariable(v) { - return new VariableAst(v.name, v.value, v.sourceSpan); - } - visit(visitor, context) { - return visitor.visitVariable(this, context); - } -} -/** - * An element declaration in a template. - */ -class ElementAst { - constructor(name, attrs, inputs, outputs, references, directives, providers, hasViewContainer, queryMatches, children, ngContentIndex, sourceSpan, endSourceSpan) { - this.name = name; - this.attrs = attrs; - this.inputs = inputs; - this.outputs = outputs; - this.references = references; - this.directives = directives; - this.providers = providers; - this.hasViewContainer = hasViewContainer; - this.queryMatches = queryMatches; - this.children = children; - this.ngContentIndex = ngContentIndex; - this.sourceSpan = sourceSpan; - this.endSourceSpan = endSourceSpan; - } - visit(visitor, context) { - return visitor.visitElement(this, context); - } -} -/** - * A `` element included in an Angular template. - */ -class EmbeddedTemplateAst { - constructor(attrs, outputs, references, variables, directives, providers, hasViewContainer, queryMatches, children, ngContentIndex, sourceSpan) { - this.attrs = attrs; - this.outputs = outputs; - this.references = references; - this.variables = variables; - this.directives = directives; - this.providers = providers; - this.hasViewContainer = hasViewContainer; - this.queryMatches = queryMatches; - this.children = children; - this.ngContentIndex = ngContentIndex; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { - return visitor.visitEmbeddedTemplate(this, context); - } -} -/** - * A directive property with a bound value (e.g. `*ngIf="condition"). - */ -class BoundDirectivePropertyAst { - constructor(directiveName, templateName, value, sourceSpan) { - this.directiveName = directiveName; - this.templateName = templateName; - this.value = value; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { - return visitor.visitDirectiveProperty(this, context); - } -} -/** - * A directive declared on an element. - */ -class DirectiveAst { - constructor(directive, inputs, hostProperties, hostEvents, contentQueryStartId, sourceSpan) { - this.directive = directive; - this.inputs = inputs; - this.hostProperties = hostProperties; - this.hostEvents = hostEvents; - this.contentQueryStartId = contentQueryStartId; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { - return visitor.visitDirective(this, context); - } -} -/** - * A provider declared on an element - */ -class ProviderAst { - constructor(token, multiProvider, eager, providers, providerType, lifecycleHooks, sourceSpan, isModule) { - this.token = token; - this.multiProvider = multiProvider; - this.eager = eager; - this.providers = providers; - this.providerType = providerType; - this.lifecycleHooks = lifecycleHooks; - this.sourceSpan = sourceSpan; - this.isModule = isModule; - } - visit(visitor, context) { - // No visit method in the visitor for now... - return null; - } -} -var ProviderAstType; -(function (ProviderAstType) { - ProviderAstType[ProviderAstType["PublicService"] = 0] = "PublicService"; - ProviderAstType[ProviderAstType["PrivateService"] = 1] = "PrivateService"; - ProviderAstType[ProviderAstType["Component"] = 2] = "Component"; - ProviderAstType[ProviderAstType["Directive"] = 3] = "Directive"; - ProviderAstType[ProviderAstType["Builtin"] = 4] = "Builtin"; -})(ProviderAstType || (ProviderAstType = {})); -/** - * Position where content is to be projected (instance of `` in a template). - */ -class NgContentAst { - constructor(index, ngContentIndex, sourceSpan) { - this.index = index; - this.ngContentIndex = ngContentIndex; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { - return visitor.visitNgContent(this, context); - } -} -/** - * A visitor that accepts each node but doesn't do anything. It is intended to be used - * as the base class for a visitor that is only interested in a subset of the node types. - */ -class NullTemplateVisitor { - visitNgContent(ast, context) { } - visitEmbeddedTemplate(ast, context) { } - visitElement(ast, context) { } - visitReference(ast, context) { } - visitVariable(ast, context) { } - visitEvent(ast, context) { } - visitElementProperty(ast, context) { } - visitAttr(ast, context) { } - visitBoundText(ast, context) { } - visitText(ast, context) { } - visitDirective(ast, context) { } - visitDirectiveProperty(ast, context) { } -} -/** - * Base class that can be used to build a visitor that visits each node - * in an template ast recursively. - */ -class RecursiveTemplateAstVisitor extends NullTemplateVisitor { - constructor() { super(); } - // Nodes with children - visitEmbeddedTemplate(ast, context) { - return this.visitChildren(context, visit => { - visit(ast.attrs); - visit(ast.references); - visit(ast.variables); - visit(ast.directives); - visit(ast.providers); - visit(ast.children); - }); - } - visitElement(ast, context) { - return this.visitChildren(context, visit => { - visit(ast.attrs); - visit(ast.inputs); - visit(ast.outputs); - visit(ast.references); - visit(ast.directives); - visit(ast.providers); - visit(ast.children); - }); - } - visitDirective(ast, context) { - return this.visitChildren(context, visit => { - visit(ast.inputs); - visit(ast.hostProperties); - visit(ast.hostEvents); - }); - } - visitChildren(context, cb) { - let results = []; - let t = this; - function visit(children) { - if (children && children.length) - results.push(templateVisitAll(t, children, context)); - } - cb(visit); - return Array.prototype.concat.apply([], results); - } -} -/** - * Visit every node in a list of {@link TemplateAst}s with the given {@link TemplateAstVisitor}. - */ -function templateVisitAll(visitor, asts, context = null) { - const result = []; - const visit = visitor.visit ? - (ast) => visitor.visit(ast, context) || ast.visit(visitor, context) : - (ast) => ast.visit(visitor, context); - asts.forEach(ast => { - const astResult = visit(ast); - if (astResult) { - result.push(astResult); - } - }); - return result; -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class ProviderError extends ParseError { - constructor(message, span) { super(span, message); } -} -class ProviderViewContext { - constructor(reflector, component) { - this.reflector = reflector; - this.component = component; - this.errors = []; - this.viewQueries = _getViewQueries(component); - this.viewProviders = new Map(); - component.viewProviders.forEach((provider) => { - if (this.viewProviders.get(tokenReference(provider.token)) == null) { - this.viewProviders.set(tokenReference(provider.token), true); - } - }); - } -} -class ProviderElementContext { - constructor(viewContext, _parent, _isViewRoot, _directiveAsts, attrs, refs, isTemplate, contentQueryStartId, _sourceSpan) { - this.viewContext = viewContext; - this._parent = _parent; - this._isViewRoot = _isViewRoot; - this._directiveAsts = _directiveAsts; - this._sourceSpan = _sourceSpan; - this._transformedProviders = new Map(); - this._seenProviders = new Map(); - this._queriedTokens = new Map(); - this.transformedHasViewContainer = false; - this._attrs = {}; - attrs.forEach((attrAst) => this._attrs[attrAst.name] = attrAst.value); - const directivesMeta = _directiveAsts.map(directiveAst => directiveAst.directive); - this._allProviders = - _resolveProvidersFromDirectives(directivesMeta, _sourceSpan, viewContext.errors); - this._contentQueries = _getContentQueries(contentQueryStartId, directivesMeta); - Array.from(this._allProviders.values()).forEach((provider) => { - this._addQueryReadsTo(provider.token, provider.token, this._queriedTokens); - }); - if (isTemplate) { - const templateRefId = createTokenForExternalReference(this.viewContext.reflector, Identifiers.TemplateRef); - this._addQueryReadsTo(templateRefId, templateRefId, this._queriedTokens); - } - refs.forEach((refAst) => { - let defaultQueryValue = refAst.value || - createTokenForExternalReference(this.viewContext.reflector, Identifiers.ElementRef); - this._addQueryReadsTo({ value: refAst.name }, defaultQueryValue, this._queriedTokens); - }); - if (this._queriedTokens.get(this.viewContext.reflector.resolveExternalReference(Identifiers.ViewContainerRef))) { - this.transformedHasViewContainer = true; - } - // create the providers that we know are eager first - Array.from(this._allProviders.values()).forEach((provider) => { - const eager = provider.eager || this._queriedTokens.get(tokenReference(provider.token)); - if (eager) { - this._getOrCreateLocalProvider(provider.providerType, provider.token, true); - } - }); - } - afterElement() { - // collect lazy providers - Array.from(this._allProviders.values()).forEach((provider) => { - this._getOrCreateLocalProvider(provider.providerType, provider.token, false); - }); - } - get transformProviders() { - // Note: Maps keep their insertion order. - const lazyProviders = []; - const eagerProviders = []; - this._transformedProviders.forEach(provider => { - if (provider.eager) { - eagerProviders.push(provider); - } - else { - lazyProviders.push(provider); - } - }); - return lazyProviders.concat(eagerProviders); - } - get transformedDirectiveAsts() { - const sortedProviderTypes = this.transformProviders.map(provider => provider.token.identifier); - const sortedDirectives = this._directiveAsts.slice(); - sortedDirectives.sort((dir1, dir2) => sortedProviderTypes.indexOf(dir1.directive.type) - - sortedProviderTypes.indexOf(dir2.directive.type)); - return sortedDirectives; - } - get queryMatches() { - const allMatches = []; - this._queriedTokens.forEach((matches) => { allMatches.push(...matches); }); - return allMatches; - } - _addQueryReadsTo(token, defaultValue, queryReadTokens) { - this._getQueriesFor(token).forEach((query) => { - const queryValue = query.meta.read || defaultValue; - const tokenRef = tokenReference(queryValue); - let queryMatches = queryReadTokens.get(tokenRef); - if (!queryMatches) { - queryMatches = []; - queryReadTokens.set(tokenRef, queryMatches); - } - queryMatches.push({ queryId: query.queryId, value: queryValue }); - }); - } - _getQueriesFor(token) { - const result = []; - let currentEl = this; - let distance = 0; - let queries; - while (currentEl !== null) { - queries = currentEl._contentQueries.get(tokenReference(token)); - if (queries) { - result.push(...queries.filter((query) => query.meta.descendants || distance <= 1)); - } - if (currentEl._directiveAsts.length > 0) { - distance++; - } - currentEl = currentEl._parent; - } - queries = this.viewContext.viewQueries.get(tokenReference(token)); - if (queries) { - result.push(...queries); - } - return result; - } - _getOrCreateLocalProvider(requestingProviderType, token, eager) { - const resolvedProvider = this._allProviders.get(tokenReference(token)); - if (!resolvedProvider || ((requestingProviderType === ProviderAstType.Directive || - requestingProviderType === ProviderAstType.PublicService) && - resolvedProvider.providerType === ProviderAstType.PrivateService) || - ((requestingProviderType === ProviderAstType.PrivateService || - requestingProviderType === ProviderAstType.PublicService) && - resolvedProvider.providerType === ProviderAstType.Builtin)) { - return null; - } - let transformedProviderAst = this._transformedProviders.get(tokenReference(token)); - if (transformedProviderAst) { - return transformedProviderAst; - } - if (this._seenProviders.get(tokenReference(token)) != null) { - this.viewContext.errors.push(new ProviderError(`Cannot instantiate cyclic dependency! ${tokenName(token)}`, this._sourceSpan)); - return null; - } - this._seenProviders.set(tokenReference(token), true); - const transformedProviders = resolvedProvider.providers.map((provider) => { - let transformedUseValue = provider.useValue; - let transformedUseExisting = provider.useExisting; - let transformedDeps = undefined; - if (provider.useExisting != null) { - const existingDiDep = this._getDependency(resolvedProvider.providerType, { token: provider.useExisting }, eager); - if (existingDiDep.token != null) { - transformedUseExisting = existingDiDep.token; - } - else { - transformedUseExisting = null; - transformedUseValue = existingDiDep.value; - } - } - else if (provider.useFactory) { - const deps = provider.deps || provider.useFactory.diDeps; - transformedDeps = - deps.map((dep) => this._getDependency(resolvedProvider.providerType, dep, eager)); - } - else if (provider.useClass) { - const deps = provider.deps || provider.useClass.diDeps; - transformedDeps = - deps.map((dep) => this._getDependency(resolvedProvider.providerType, dep, eager)); - } - return _transformProvider(provider, { - useExisting: transformedUseExisting, - useValue: transformedUseValue, - deps: transformedDeps - }); - }); - transformedProviderAst = - _transformProviderAst(resolvedProvider, { eager: eager, providers: transformedProviders }); - this._transformedProviders.set(tokenReference(token), transformedProviderAst); - return transformedProviderAst; - } - _getLocalDependency(requestingProviderType, dep, eager = false) { - if (dep.isAttribute) { - const attrValue = this._attrs[dep.token.value]; - return { isValue: true, value: attrValue == null ? null : attrValue }; - } - if (dep.token != null) { - // access builtints - if ((requestingProviderType === ProviderAstType.Directive || - requestingProviderType === ProviderAstType.Component)) { - if (tokenReference(dep.token) === - this.viewContext.reflector.resolveExternalReference(Identifiers.Renderer) || - tokenReference(dep.token) === - this.viewContext.reflector.resolveExternalReference(Identifiers.ElementRef) || - tokenReference(dep.token) === - this.viewContext.reflector.resolveExternalReference(Identifiers.ChangeDetectorRef) || - tokenReference(dep.token) === - this.viewContext.reflector.resolveExternalReference(Identifiers.TemplateRef)) { - return dep; - } - if (tokenReference(dep.token) === - this.viewContext.reflector.resolveExternalReference(Identifiers.ViewContainerRef)) { - this.transformedHasViewContainer = true; - } - } - // access the injector - if (tokenReference(dep.token) === - this.viewContext.reflector.resolveExternalReference(Identifiers.Injector)) { - return dep; - } - // access providers - if (this._getOrCreateLocalProvider(requestingProviderType, dep.token, eager) != null) { - return dep; - } - } - return null; - } - _getDependency(requestingProviderType, dep, eager = false) { - let currElement = this; - let currEager = eager; - let result = null; - if (!dep.isSkipSelf) { - result = this._getLocalDependency(requestingProviderType, dep, eager); - } - if (dep.isSelf) { - if (!result && dep.isOptional) { - result = { isValue: true, value: null }; - } - } - else { - // check parent elements - while (!result && currElement._parent) { - const prevElement = currElement; - currElement = currElement._parent; - if (prevElement._isViewRoot) { - currEager = false; - } - result = currElement._getLocalDependency(ProviderAstType.PublicService, dep, currEager); - } - // check @Host restriction - if (!result) { - if (!dep.isHost || this.viewContext.component.isHost || - this.viewContext.component.type.reference === tokenReference(dep.token) || - this.viewContext.viewProviders.get(tokenReference(dep.token)) != null) { - result = dep; - } - else { - result = dep.isOptional ? { isValue: true, value: null } : null; - } - } - } - if (!result) { - this.viewContext.errors.push(new ProviderError(`No provider for ${tokenName(dep.token)}`, this._sourceSpan)); - } - return result; - } -} -class NgModuleProviderAnalyzer { - constructor(reflector, ngModule, extraProviders, sourceSpan) { - this.reflector = reflector; - this._transformedProviders = new Map(); - this._seenProviders = new Map(); - this._errors = []; - this._allProviders = new Map(); - ngModule.transitiveModule.modules.forEach((ngModuleType) => { - const ngModuleProvider = { token: { identifier: ngModuleType }, useClass: ngModuleType }; - _resolveProviders([ngModuleProvider], ProviderAstType.PublicService, true, sourceSpan, this._errors, this._allProviders, /* isModule */ true); - }); - _resolveProviders(ngModule.transitiveModule.providers.map(entry => entry.provider).concat(extraProviders), ProviderAstType.PublicService, false, sourceSpan, this._errors, this._allProviders, - /* isModule */ false); - } - parse() { - Array.from(this._allProviders.values()).forEach((provider) => { - this._getOrCreateLocalProvider(provider.token, provider.eager); - }); - if (this._errors.length > 0) { - const errorString = this._errors.join('\n'); - throw new Error(`Provider parse errors:\n${errorString}`); - } - // Note: Maps keep their insertion order. - const lazyProviders = []; - const eagerProviders = []; - this._transformedProviders.forEach(provider => { - if (provider.eager) { - eagerProviders.push(provider); - } - else { - lazyProviders.push(provider); - } - }); - return lazyProviders.concat(eagerProviders); - } - _getOrCreateLocalProvider(token, eager) { - const resolvedProvider = this._allProviders.get(tokenReference(token)); - if (!resolvedProvider) { - return null; - } - let transformedProviderAst = this._transformedProviders.get(tokenReference(token)); - if (transformedProviderAst) { - return transformedProviderAst; - } - if (this._seenProviders.get(tokenReference(token)) != null) { - this._errors.push(new ProviderError(`Cannot instantiate cyclic dependency! ${tokenName(token)}`, resolvedProvider.sourceSpan)); - return null; - } - this._seenProviders.set(tokenReference(token), true); - const transformedProviders = resolvedProvider.providers.map((provider) => { - let transformedUseValue = provider.useValue; - let transformedUseExisting = provider.useExisting; - let transformedDeps = undefined; - if (provider.useExisting != null) { - const existingDiDep = this._getDependency({ token: provider.useExisting }, eager, resolvedProvider.sourceSpan); - if (existingDiDep.token != null) { - transformedUseExisting = existingDiDep.token; - } - else { - transformedUseExisting = null; - transformedUseValue = existingDiDep.value; - } - } - else if (provider.useFactory) { - const deps = provider.deps || provider.useFactory.diDeps; - transformedDeps = - deps.map((dep) => this._getDependency(dep, eager, resolvedProvider.sourceSpan)); - } - else if (provider.useClass) { - const deps = provider.deps || provider.useClass.diDeps; - transformedDeps = - deps.map((dep) => this._getDependency(dep, eager, resolvedProvider.sourceSpan)); - } - return _transformProvider(provider, { - useExisting: transformedUseExisting, - useValue: transformedUseValue, - deps: transformedDeps - }); - }); - transformedProviderAst = - _transformProviderAst(resolvedProvider, { eager: eager, providers: transformedProviders }); - this._transformedProviders.set(tokenReference(token), transformedProviderAst); - return transformedProviderAst; - } - _getDependency(dep, eager = false, requestorSourceSpan) { - let foundLocal = false; - if (!dep.isSkipSelf && dep.token != null) { - // access the injector - if (tokenReference(dep.token) === - this.reflector.resolveExternalReference(Identifiers.Injector) || - tokenReference(dep.token) === - this.reflector.resolveExternalReference(Identifiers.ComponentFactoryResolver)) { - foundLocal = true; - // access providers - } - else if (this._getOrCreateLocalProvider(dep.token, eager) != null) { - foundLocal = true; - } - } - return dep; - } -} -function _transformProvider(provider, { useExisting, useValue, deps }) { - return { - token: provider.token, - useClass: provider.useClass, - useExisting: useExisting, - useFactory: provider.useFactory, - useValue: useValue, - deps: deps, - multi: provider.multi - }; -} -function _transformProviderAst(provider, { eager, providers }) { - return new ProviderAst(provider.token, provider.multiProvider, provider.eager || eager, providers, provider.providerType, provider.lifecycleHooks, provider.sourceSpan, provider.isModule); -} -function _resolveProvidersFromDirectives(directives, sourceSpan, targetErrors) { - const providersByToken = new Map(); - directives.forEach((directive) => { - const dirProvider = { token: { identifier: directive.type }, useClass: directive.type }; - _resolveProviders([dirProvider], directive.isComponent ? ProviderAstType.Component : ProviderAstType.Directive, true, sourceSpan, targetErrors, providersByToken, /* isModule */ false); - }); - // Note: directives need to be able to overwrite providers of a component! - const directivesWithComponentFirst = directives.filter(dir => dir.isComponent).concat(directives.filter(dir => !dir.isComponent)); - directivesWithComponentFirst.forEach((directive) => { - _resolveProviders(directive.providers, ProviderAstType.PublicService, false, sourceSpan, targetErrors, providersByToken, /* isModule */ false); - _resolveProviders(directive.viewProviders, ProviderAstType.PrivateService, false, sourceSpan, targetErrors, providersByToken, /* isModule */ false); - }); - return providersByToken; -} -function _resolveProviders(providers, providerType, eager, sourceSpan, targetErrors, targetProvidersByToken, isModule) { - providers.forEach((provider) => { - let resolvedProvider = targetProvidersByToken.get(tokenReference(provider.token)); - if (resolvedProvider != null && !!resolvedProvider.multiProvider !== !!provider.multi) { - targetErrors.push(new ProviderError(`Mixing multi and non multi provider is not possible for token ${tokenName(resolvedProvider.token)}`, sourceSpan)); - } - if (!resolvedProvider) { - const lifecycleHooks = provider.token.identifier && - provider.token.identifier.lifecycleHooks ? - provider.token.identifier.lifecycleHooks : - []; - const isUseValue = !(provider.useClass || provider.useExisting || provider.useFactory); - resolvedProvider = new ProviderAst(provider.token, !!provider.multi, eager || isUseValue, [provider], providerType, lifecycleHooks, sourceSpan, isModule); - targetProvidersByToken.set(tokenReference(provider.token), resolvedProvider); - } - else { - if (!provider.multi) { - resolvedProvider.providers.length = 0; - } - resolvedProvider.providers.push(provider); - } - }); -} -function _getViewQueries(component) { - // Note: queries start with id 1 so we can use the number in a Bloom filter! - let viewQueryId = 1; - const viewQueries = new Map(); - if (component.viewQueries) { - component.viewQueries.forEach((query) => _addQueryToTokenMap(viewQueries, { meta: query, queryId: viewQueryId++ })); - } - return viewQueries; -} -function _getContentQueries(contentQueryStartId, directives) { - let contentQueryId = contentQueryStartId; - const contentQueries = new Map(); - directives.forEach((directive, directiveIndex) => { - if (directive.queries) { - directive.queries.forEach((query) => _addQueryToTokenMap(contentQueries, { meta: query, queryId: contentQueryId++ })); - } - }); - return contentQueries; -} -function _addQueryToTokenMap(map, query) { - query.meta.selectors.forEach((token) => { - let entry = map.get(tokenReference(token)); - if (!entry) { - entry = []; - map.set(tokenReference(token), entry); - } - entry.push(query); - }); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class StyleWithImports { - constructor(style, styleUrls) { - this.style = style; - this.styleUrls = styleUrls; - } -} -function isStyleUrlResolvable(url) { - if (url == null || url.length === 0 || url[0] == '/') - return false; - const schemeMatch = url.match(URL_WITH_SCHEMA_REGEXP); - return schemeMatch === null || schemeMatch[1] == 'package' || schemeMatch[1] == 'asset'; -} -/** - * Rewrites stylesheets by resolving and removing the @import urls that - * are either relative or don't have a `package:` scheme - */ -function extractStyleUrls(resolver, baseUrl, cssText) { - const foundUrls = []; - const modifiedCssText = cssText.replace(CSS_STRIPPABLE_COMMENT_REGEXP, '') - .replace(CSS_IMPORT_REGEXP, (...m) => { - const url = m[1] || m[2]; - if (!isStyleUrlResolvable(url)) { - // Do not attempt to resolve non-package absolute URLs with URI - // scheme - return m[0]; - } - foundUrls.push(resolver.resolve(baseUrl, url)); - return ''; - }); - return new StyleWithImports(modifiedCssText, foundUrls); -} -const CSS_IMPORT_REGEXP = /@import\s+(?:url\()?\s*(?:(?:['"]([^'"]*))|([^;\)\s]*))[^;]*;?/g; -const CSS_STRIPPABLE_COMMENT_REGEXP = /\/\*(?!#\s*(?:sourceURL|sourceMappingURL)=)[\s\S]+?\*\//g; -const URL_WITH_SCHEMA_REGEXP = /^([^:/?#]+):/; - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const PROPERTY_PARTS_SEPARATOR = '.'; -const ATTRIBUTE_PREFIX = 'attr'; -const CLASS_PREFIX = 'class'; -const STYLE_PREFIX = 'style'; -const ANIMATE_PROP_PREFIX = 'animate-'; -/** - * Parses bindings in templates and in the directive host area. - */ -class BindingParser { - constructor(_exprParser, _interpolationConfig, _schemaRegistry, pipes, errors) { - this._exprParser = _exprParser; - this._interpolationConfig = _interpolationConfig; - this._schemaRegistry = _schemaRegistry; - this.errors = errors; - this.pipesByName = null; - this._usedPipes = new Map(); - // When the `pipes` parameter is `null`, do not check for used pipes - // This is used in IVY when we might not know the available pipes at compile time - if (pipes) { - const pipesByName = new Map(); - pipes.forEach(pipe => pipesByName.set(pipe.name, pipe)); - this.pipesByName = pipesByName; - } - } - get interpolationConfig() { return this._interpolationConfig; } - getUsedPipes() { return Array.from(this._usedPipes.values()); } - createBoundHostProperties(dirMeta, sourceSpan) { - if (dirMeta.hostProperties) { - const boundProps = []; - Object.keys(dirMeta.hostProperties).forEach(propName => { - const expression = dirMeta.hostProperties[propName]; - if (typeof expression === 'string') { - this.parsePropertyBinding(propName, expression, true, sourceSpan, sourceSpan.start.offset, undefined, [], boundProps); - } - else { - this._reportError(`Value of the host property binding "${propName}" needs to be a string representing an expression but got "${expression}" (${typeof expression})`, sourceSpan); - } - }); - return boundProps; - } - return null; - } - createDirectiveHostPropertyAsts(dirMeta, elementSelector, sourceSpan) { - const boundProps = this.createBoundHostProperties(dirMeta, sourceSpan); - return boundProps && - boundProps.map((prop) => this.createBoundElementProperty(elementSelector, prop)); - } - createDirectiveHostEventAsts(dirMeta, sourceSpan) { - if (dirMeta.hostListeners) { - const targetEvents = []; - Object.keys(dirMeta.hostListeners).forEach(propName => { - const expression = dirMeta.hostListeners[propName]; - if (typeof expression === 'string') { - // TODO: pass a more accurate handlerSpan for this event. - this.parseEvent(propName, expression, sourceSpan, sourceSpan, [], targetEvents); - } - else { - this._reportError(`Value of the host listener "${propName}" needs to be a string representing an expression but got "${expression}" (${typeof expression})`, sourceSpan); - } - }); - return targetEvents; - } - return null; - } - parseInterpolation(value, sourceSpan) { - const sourceInfo = sourceSpan.start.toString(); - try { - const ast = this._exprParser.parseInterpolation(value, sourceInfo, sourceSpan.start.offset, this._interpolationConfig); - if (ast) - this._reportExpressionParserErrors(ast.errors, sourceSpan); - this._checkPipes(ast, sourceSpan); - return ast; - } - catch (e) { - this._reportError(`${e}`, sourceSpan); - return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, sourceSpan.start.offset); - } - } - // Parse an inline template binding. ie `` - parseInlineTemplateBinding(tplKey, tplValue, sourceSpan, absoluteOffset, targetMatchableAttrs, targetProps, targetVars) { - const bindings = this._parseTemplateBindings(tplKey, tplValue, sourceSpan); - for (let i = 0; i < bindings.length; i++) { - const binding = bindings[i]; - if (binding.keyIsVar) { - targetVars.push(new ParsedVariable(binding.key, binding.name, sourceSpan)); - } - else if (binding.expression) { - this._parsePropertyAst(binding.key, binding.expression, sourceSpan, undefined, targetMatchableAttrs, targetProps); - } - else { - targetMatchableAttrs.push([binding.key, '']); - this.parseLiteralAttr(binding.key, null, sourceSpan, absoluteOffset, undefined, targetMatchableAttrs, targetProps); - } - } - } - _parseTemplateBindings(tplKey, tplValue, sourceSpan) { - const sourceInfo = sourceSpan.start.toString(); - try { - const bindingsResult = this._exprParser.parseTemplateBindings(tplKey, tplValue, sourceInfo, sourceSpan.start.offset); - this._reportExpressionParserErrors(bindingsResult.errors, sourceSpan); - bindingsResult.templateBindings.forEach((binding) => { - if (binding.expression) { - this._checkPipes(binding.expression, sourceSpan); - } - }); - bindingsResult.warnings.forEach((warning) => { this._reportError(warning, sourceSpan, ParseErrorLevel.WARNING); }); - return bindingsResult.templateBindings; - } - catch (e) { - this._reportError(`${e}`, sourceSpan); - return []; - } - } - parseLiteralAttr(name, value, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps) { - if (isAnimationLabel(name)) { - name = name.substring(1); - if (value) { - this._reportError(`Assigning animation triggers via @prop="exp" attributes with an expression is invalid.` + - ` Use property bindings (e.g. [@prop]="exp") or use an attribute without a value (e.g. @prop) instead.`, sourceSpan, ParseErrorLevel.ERROR); - } - this._parseAnimation(name, value, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps); - } - else { - targetProps.push(new ParsedProperty(name, this._exprParser.wrapLiteralPrimitive(value, '', absoluteOffset), ParsedPropertyType.LITERAL_ATTR, sourceSpan, valueSpan)); - } - } - parsePropertyBinding(name, expression, isHost, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps) { - let isAnimationProp = false; - if (name.startsWith(ANIMATE_PROP_PREFIX)) { - isAnimationProp = true; - name = name.substring(ANIMATE_PROP_PREFIX.length); - } - else if (isAnimationLabel(name)) { - isAnimationProp = true; - name = name.substring(1); - } - if (isAnimationProp) { - this._parseAnimation(name, expression, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps); - } - else { - this._parsePropertyAst(name, this._parseBinding(expression, isHost, valueSpan || sourceSpan, absoluteOffset), sourceSpan, valueSpan, targetMatchableAttrs, targetProps); - } - } - parsePropertyInterpolation(name, value, sourceSpan, valueSpan, targetMatchableAttrs, targetProps) { - const expr = this.parseInterpolation(value, valueSpan || sourceSpan); - if (expr) { - this._parsePropertyAst(name, expr, sourceSpan, valueSpan, targetMatchableAttrs, targetProps); - return true; - } - return false; - } - _parsePropertyAst(name, ast, sourceSpan, valueSpan, targetMatchableAttrs, targetProps) { - targetMatchableAttrs.push([name, ast.source]); - targetProps.push(new ParsedProperty(name, ast, ParsedPropertyType.DEFAULT, sourceSpan, valueSpan)); - } - _parseAnimation(name, expression, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps) { - // This will occur when a @trigger is not paired with an expression. - // For animations it is valid to not have an expression since */void - // states will be applied by angular when the element is attached/detached - const ast = this._parseBinding(expression || 'undefined', false, valueSpan || sourceSpan, absoluteOffset); - targetMatchableAttrs.push([name, ast.source]); - targetProps.push(new ParsedProperty(name, ast, ParsedPropertyType.ANIMATION, sourceSpan, valueSpan)); - } - _parseBinding(value, isHostBinding, sourceSpan, absoluteOffset) { - const sourceInfo = (sourceSpan && sourceSpan.start || '(unknown)').toString(); - try { - const ast = isHostBinding ? - this._exprParser.parseSimpleBinding(value, sourceInfo, absoluteOffset, this._interpolationConfig) : - this._exprParser.parseBinding(value, sourceInfo, absoluteOffset, this._interpolationConfig); - if (ast) - this._reportExpressionParserErrors(ast.errors, sourceSpan); - this._checkPipes(ast, sourceSpan); - return ast; - } - catch (e) { - this._reportError(`${e}`, sourceSpan); - return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, absoluteOffset); - } - } - createBoundElementProperty(elementSelector, boundProp, skipValidation = false, mapPropertyName = true) { - if (boundProp.isAnimation) { - return new BoundElementProperty(boundProp.name, 4 /* Animation */, SecurityContext.NONE, boundProp.expression, null, boundProp.sourceSpan, boundProp.valueSpan); - } - let unit = null; - let bindingType = undefined; - let boundPropertyName = null; - const parts = boundProp.name.split(PROPERTY_PARTS_SEPARATOR); - let securityContexts = undefined; - // Check for special cases (prefix style, attr, class) - if (parts.length > 1) { - if (parts[0] == ATTRIBUTE_PREFIX) { - boundPropertyName = parts[1]; - if (!skipValidation) { - this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, true); - } - securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, true); - const nsSeparatorIdx = boundPropertyName.indexOf(':'); - if (nsSeparatorIdx > -1) { - const ns = boundPropertyName.substring(0, nsSeparatorIdx); - const name = boundPropertyName.substring(nsSeparatorIdx + 1); - boundPropertyName = mergeNsAndName(ns, name); - } - bindingType = 1 /* Attribute */; - } - else if (parts[0] == CLASS_PREFIX) { - boundPropertyName = parts[1]; - bindingType = 2 /* Class */; - securityContexts = [SecurityContext.NONE]; - } - else if (parts[0] == STYLE_PREFIX) { - unit = parts.length > 2 ? parts[2] : null; - boundPropertyName = parts[1]; - bindingType = 3 /* Style */; - securityContexts = [SecurityContext.STYLE]; - } - } - // If not a special case, use the full property name - if (boundPropertyName === null) { - const mappedPropName = this._schemaRegistry.getMappedPropName(boundProp.name); - boundPropertyName = mapPropertyName ? mappedPropName : boundProp.name; - securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, mappedPropName, false); - bindingType = 0 /* Property */; - if (!skipValidation) { - this._validatePropertyOrAttributeName(mappedPropName, boundProp.sourceSpan, false); - } - } - return new BoundElementProperty(boundPropertyName, bindingType, securityContexts[0], boundProp.expression, unit, boundProp.sourceSpan, boundProp.valueSpan); - } - parseEvent(name, expression, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents) { - if (isAnimationLabel(name)) { - name = name.substr(1); - this._parseAnimationEvent(name, expression, sourceSpan, handlerSpan, targetEvents); - } - else { - this._parseRegularEvent(name, expression, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents); - } - } - calcPossibleSecurityContexts(selector, propName, isAttribute) { - const prop = this._schemaRegistry.getMappedPropName(propName); - return calcPossibleSecurityContexts(this._schemaRegistry, selector, prop, isAttribute); - } - _parseAnimationEvent(name, expression, sourceSpan, handlerSpan, targetEvents) { - const matches = splitAtPeriod(name, [name, '']); - const eventName = matches[0]; - const phase = matches[1].toLowerCase(); - if (phase) { - switch (phase) { - case 'start': - case 'done': - const ast = this._parseAction(expression, handlerSpan); - targetEvents.push(new ParsedEvent(eventName, phase, 1 /* Animation */, ast, sourceSpan, handlerSpan)); - break; - default: - this._reportError(`The provided animation output phase value "${phase}" for "@${eventName}" is not supported (use start or done)`, sourceSpan); - break; - } - } - else { - this._reportError(`The animation trigger output event (@${eventName}) is missing its phase value name (start or done are currently supported)`, sourceSpan); - } - } - _parseRegularEvent(name, expression, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents) { - // long format: 'target: eventName' - const [target, eventName] = splitAtColon(name, [null, name]); - const ast = this._parseAction(expression, handlerSpan); - targetMatchableAttrs.push([name, ast.source]); - targetEvents.push(new ParsedEvent(eventName, target, 0 /* Regular */, ast, sourceSpan, handlerSpan)); - // Don't detect directives for event names for now, - // so don't add the event name to the matchableAttrs - } - _parseAction(value, sourceSpan) { - const sourceInfo = (sourceSpan && sourceSpan.start || '(unknown').toString(); - const absoluteOffset = (sourceSpan && sourceSpan.start) ? sourceSpan.start.offset : 0; - try { - const ast = this._exprParser.parseAction(value, sourceInfo, absoluteOffset, this._interpolationConfig); - if (ast) { - this._reportExpressionParserErrors(ast.errors, sourceSpan); - } - if (!ast || ast.ast instanceof EmptyExpr) { - this._reportError(`Empty expressions are not allowed`, sourceSpan); - return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, absoluteOffset); - } - this._checkPipes(ast, sourceSpan); - return ast; - } - catch (e) { - this._reportError(`${e}`, sourceSpan); - return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, absoluteOffset); - } - } - _reportError(message, sourceSpan, level = ParseErrorLevel.ERROR) { - this.errors.push(new ParseError(sourceSpan, message, level)); - } - _reportExpressionParserErrors(errors, sourceSpan) { - for (const error of errors) { - this._reportError(error.message, sourceSpan); - } - } - // Make sure all the used pipes are known in `this.pipesByName` - _checkPipes(ast, sourceSpan) { - if (ast && this.pipesByName) { - const collector = new PipeCollector(); - ast.visit(collector); - collector.pipes.forEach((ast, pipeName) => { - const pipeMeta = this.pipesByName.get(pipeName); - if (!pipeMeta) { - this._reportError(`The pipe '${pipeName}' could not be found`, new ParseSourceSpan(sourceSpan.start.moveBy(ast.span.start), sourceSpan.start.moveBy(ast.span.end))); - } - else { - this._usedPipes.set(pipeName, pipeMeta); - } - }); - } - } - /** - * @param propName the name of the property / attribute - * @param sourceSpan - * @param isAttr true when binding to an attribute - */ - _validatePropertyOrAttributeName(propName, sourceSpan, isAttr) { - const report = isAttr ? this._schemaRegistry.validateAttribute(propName) : - this._schemaRegistry.validateProperty(propName); - if (report.error) { - this._reportError(report.msg, sourceSpan, ParseErrorLevel.ERROR); - } - } -} -class PipeCollector extends RecursiveAstVisitor$1 { - constructor() { - super(...arguments); - this.pipes = new Map(); - } - visitPipe(ast, context) { - this.pipes.set(ast.name, ast); - ast.exp.visit(this); - this.visitAll(ast.args, context); - return null; - } -} -function isAnimationLabel(name) { - return name[0] == '@'; -} -function calcPossibleSecurityContexts(registry, selector, propName, isAttribute) { - const ctxs = []; - CssSelector.parse(selector).forEach((selector) => { - const elementNames = selector.element ? [selector.element] : registry.allKnownElementNames(); - const notElementNames = new Set(selector.notSelectors.filter(selector => selector.isElementSelector()) - .map((selector) => selector.element)); - const possibleElementNames = elementNames.filter(elementName => !notElementNames.has(elementName)); - ctxs.push(...possibleElementNames.map(elementName => registry.securityContext(elementName, propName, isAttribute))); - }); - return ctxs.length === 0 ? [SecurityContext.NONE] : Array.from(new Set(ctxs)).sort(); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const NG_CONTENT_SELECT_ATTR = 'select'; -const LINK_ELEMENT = 'link'; -const LINK_STYLE_REL_ATTR = 'rel'; -const LINK_STYLE_HREF_ATTR = 'href'; -const LINK_STYLE_REL_VALUE = 'stylesheet'; -const STYLE_ELEMENT = 'style'; -const SCRIPT_ELEMENT = 'script'; -const NG_NON_BINDABLE_ATTR = 'ngNonBindable'; -const NG_PROJECT_AS = 'ngProjectAs'; -function preparseElement(ast) { - let selectAttr = null; - let hrefAttr = null; - let relAttr = null; - let nonBindable = false; - let projectAs = ''; - ast.attrs.forEach(attr => { - const lcAttrName = attr.name.toLowerCase(); - if (lcAttrName == NG_CONTENT_SELECT_ATTR) { - selectAttr = attr.value; - } - else if (lcAttrName == LINK_STYLE_HREF_ATTR) { - hrefAttr = attr.value; - } - else if (lcAttrName == LINK_STYLE_REL_ATTR) { - relAttr = attr.value; - } - else if (attr.name == NG_NON_BINDABLE_ATTR) { - nonBindable = true; - } - else if (attr.name == NG_PROJECT_AS) { - if (attr.value.length > 0) { - projectAs = attr.value; - } - } - }); - selectAttr = normalizeNgContentSelect(selectAttr); - const nodeName = ast.name.toLowerCase(); - let type = PreparsedElementType.OTHER; - if (isNgContent(nodeName)) { - type = PreparsedElementType.NG_CONTENT; - } - else if (nodeName == STYLE_ELEMENT) { - type = PreparsedElementType.STYLE; - } - else if (nodeName == SCRIPT_ELEMENT) { - type = PreparsedElementType.SCRIPT; - } - else if (nodeName == LINK_ELEMENT && relAttr == LINK_STYLE_REL_VALUE) { - type = PreparsedElementType.STYLESHEET; - } - return new PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs); -} -var PreparsedElementType; -(function (PreparsedElementType) { - PreparsedElementType[PreparsedElementType["NG_CONTENT"] = 0] = "NG_CONTENT"; - PreparsedElementType[PreparsedElementType["STYLE"] = 1] = "STYLE"; - PreparsedElementType[PreparsedElementType["STYLESHEET"] = 2] = "STYLESHEET"; - PreparsedElementType[PreparsedElementType["SCRIPT"] = 3] = "SCRIPT"; - PreparsedElementType[PreparsedElementType["OTHER"] = 4] = "OTHER"; -})(PreparsedElementType || (PreparsedElementType = {})); -class PreparsedElement { - constructor(type, selectAttr, hrefAttr, nonBindable, projectAs) { - this.type = type; - this.selectAttr = selectAttr; - this.hrefAttr = hrefAttr; - this.nonBindable = nonBindable; - this.projectAs = projectAs; - } -} -function normalizeNgContentSelect(selectAttr) { - if (selectAttr === null || selectAttr.length === 0) { - return '*'; - } - return selectAttr; -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const BIND_NAME_REGEXP = /^(?:(?:(?:(bind-)|(let-)|(ref-|#)|(on-)|(bindon-)|(@))(.+))|\[\(([^\)]+)\)\]|\[([^\]]+)\]|\(([^\)]+)\))$/; -// Group 1 = "bind-" -const KW_BIND_IDX = 1; -// Group 2 = "let-" -const KW_LET_IDX = 2; -// Group 3 = "ref-/#" -const KW_REF_IDX = 3; -// Group 4 = "on-" -const KW_ON_IDX = 4; -// Group 5 = "bindon-" -const KW_BINDON_IDX = 5; -// Group 6 = "@" -const KW_AT_IDX = 6; -// Group 7 = the identifier after "bind-", "let-", "ref-/#", "on-", "bindon-" or "@" -const IDENT_KW_IDX = 7; -// Group 8 = identifier inside [()] -const IDENT_BANANA_BOX_IDX = 8; -// Group 9 = identifier inside [] -const IDENT_PROPERTY_IDX = 9; -// Group 10 = identifier inside () -const IDENT_EVENT_IDX = 10; -const TEMPLATE_ATTR_PREFIX = '*'; -const CLASS_ATTR = 'class'; -let _TEXT_CSS_SELECTOR; -function TEXT_CSS_SELECTOR() { - if (!_TEXT_CSS_SELECTOR) { - _TEXT_CSS_SELECTOR = CssSelector.parse('*')[0]; - } - return _TEXT_CSS_SELECTOR; -} -class TemplateParseError extends ParseError { - constructor(message, span, level) { - super(span, message, level); - } -} -class TemplateParseResult { - constructor(templateAst, usedPipes, errors) { - this.templateAst = templateAst; - this.usedPipes = usedPipes; - this.errors = errors; - } -} -class TemplateParser { - constructor(_config, _reflector, _exprParser, _schemaRegistry, _htmlParser, _console, transforms) { - this._config = _config; - this._reflector = _reflector; - this._exprParser = _exprParser; - this._schemaRegistry = _schemaRegistry; - this._htmlParser = _htmlParser; - this._console = _console; - this.transforms = transforms; - } - get expressionParser() { return this._exprParser; } - parse(component, template, directives, pipes, schemas, templateUrl, preserveWhitespaces) { - const result = this.tryParse(component, template, directives, pipes, schemas, templateUrl, preserveWhitespaces); - const warnings = result.errors.filter(error => error.level === ParseErrorLevel.WARNING); - const errors = result.errors.filter(error => error.level === ParseErrorLevel.ERROR); - if (warnings.length > 0) { - this._console.warn(`Template parse warnings:\n${warnings.join('\n')}`); - } - if (errors.length > 0) { - const errorString = errors.join('\n'); - throw syntaxError(`Template parse errors:\n${errorString}`, errors); - } - return { template: result.templateAst, pipes: result.usedPipes }; - } - tryParse(component, template, directives, pipes, schemas, templateUrl, preserveWhitespaces) { - let htmlParseResult = typeof template === 'string' ? - this._htmlParser.parse(template, templateUrl, { - tokenizeExpansionForms: true, - interpolationConfig: this.getInterpolationConfig(component) - }) : - template; - if (!preserveWhitespaces) { - htmlParseResult = removeWhitespaces(htmlParseResult); - } - return this.tryParseHtml(this.expandHtml(htmlParseResult), component, directives, pipes, schemas); - } - tryParseHtml(htmlAstWithErrors, component, directives, pipes, schemas) { - let result; - const errors = htmlAstWithErrors.errors; - const usedPipes = []; - if (htmlAstWithErrors.rootNodes.length > 0) { - const uniqDirectives = removeSummaryDuplicates(directives); - const uniqPipes = removeSummaryDuplicates(pipes); - const providerViewContext = new ProviderViewContext(this._reflector, component); - let interpolationConfig = undefined; - if (component.template && component.template.interpolation) { - interpolationConfig = { - start: component.template.interpolation[0], - end: component.template.interpolation[1] - }; - } - const bindingParser = new BindingParser(this._exprParser, interpolationConfig, this._schemaRegistry, uniqPipes, errors); - const parseVisitor = new TemplateParseVisitor(this._reflector, this._config, providerViewContext, uniqDirectives, bindingParser, this._schemaRegistry, schemas, errors); - result = visitAll$1(parseVisitor, htmlAstWithErrors.rootNodes, EMPTY_ELEMENT_CONTEXT); - errors.push(...providerViewContext.errors); - usedPipes.push(...bindingParser.getUsedPipes()); - } - else { - result = []; - } - this._assertNoReferenceDuplicationOnTemplate(result, errors); - if (errors.length > 0) { - return new TemplateParseResult(result, usedPipes, errors); - } - if (this.transforms) { - this.transforms.forEach((transform) => { result = templateVisitAll(transform, result); }); - } - return new TemplateParseResult(result, usedPipes, errors); - } - expandHtml(htmlAstWithErrors, forced = false) { - const errors = htmlAstWithErrors.errors; - if (errors.length == 0 || forced) { - // Transform ICU messages to angular directives - const expandedHtmlAst = expandNodes(htmlAstWithErrors.rootNodes); - errors.push(...expandedHtmlAst.errors); - htmlAstWithErrors = new ParseTreeResult(expandedHtmlAst.nodes, errors); - } - return htmlAstWithErrors; - } - getInterpolationConfig(component) { - if (component.template) { - return InterpolationConfig.fromArray(component.template.interpolation); - } - return undefined; - } - /** @internal */ - _assertNoReferenceDuplicationOnTemplate(result, errors) { - const existingReferences = []; - result.filter(element => !!element.references) - .forEach(element => element.references.forEach((reference) => { - const name = reference.name; - if (existingReferences.indexOf(name) < 0) { - existingReferences.push(name); - } - else { - const error = new TemplateParseError(`Reference "#${name}" is defined several times`, reference.sourceSpan, ParseErrorLevel.ERROR); - errors.push(error); - } - })); - } -} -class TemplateParseVisitor { - constructor(reflector, config, providerViewContext, directives, _bindingParser, _schemaRegistry, _schemas, _targetErrors) { - this.reflector = reflector; - this.config = config; - this.providerViewContext = providerViewContext; - this._bindingParser = _bindingParser; - this._schemaRegistry = _schemaRegistry; - this._schemas = _schemas; - this._targetErrors = _targetErrors; - this.selectorMatcher = new SelectorMatcher(); - this.directivesIndex = new Map(); - this.ngContentCount = 0; - // Note: queries start with id 1 so we can use the number in a Bloom filter! - this.contentQueryStartId = providerViewContext.component.viewQueries.length + 1; - directives.forEach((directive, index) => { - const selector = CssSelector.parse(directive.selector); - this.selectorMatcher.addSelectables(selector, directive); - this.directivesIndex.set(directive, index); - }); - } - visitExpansion(expansion, context) { return null; } - visitExpansionCase(expansionCase, context) { return null; } - visitText(text, parent) { - const ngContentIndex = parent.findNgContentIndex(TEXT_CSS_SELECTOR()); - const valueNoNgsp = replaceNgsp(text.value); - const expr = this._bindingParser.parseInterpolation(valueNoNgsp, text.sourceSpan); - return expr ? new BoundTextAst(expr, ngContentIndex, text.sourceSpan) : - new TextAst(valueNoNgsp, ngContentIndex, text.sourceSpan); - } - visitAttribute(attribute, context) { - return new AttrAst(attribute.name, attribute.value, attribute.sourceSpan); - } - visitComment(comment, context) { return null; } - visitElement(element, parent) { - const queryStartIndex = this.contentQueryStartId; - const elName = element.name; - const preparsedElement = preparseElement(element); - if (preparsedElement.type === PreparsedElementType.SCRIPT || - preparsedElement.type === PreparsedElementType.STYLE) { - // Skipping - diff --git a/target/catalina-base/webapps/DAAExample/main-es2015.js b/target/catalina-base/webapps/DAAExample/main-es2015.js deleted file mode 100644 index bb1db318b35e342bb06955145022157e1831e6f9..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/main-es2015.js +++ /dev/null @@ -1,1134 +0,0 @@ -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["main"],{ - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html": -/*!**************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html ***! - \**************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n\r\n\r\n"); - -/***/ }), - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/login-panel/login-panel.component.html": -/*!*********************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/login-panel/login-panel.component.html ***! - \*********************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n\r\n
    \r\n
    \r\n

    DAA Example - Angular

    \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
    \r\n
    \r\n"); - -/***/ }), - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/main-panel/main-panel.component.html": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/main-panel/main-panel.component.html ***! - \*******************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n DAA Example\r\n \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n"); - -/***/ }), - -/***/ "./node_modules/tslib/tslib.es6.js": -/*!*****************************************!*\ - !*** ./node_modules/tslib/tslib.es6.js ***! - \*****************************************/ -/*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__extends", function() { return __extends; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__assign", function() { return __assign; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__rest", function() { return __rest; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__decorate", function() { return __decorate; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__param", function() { return __param; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__metadata", function() { return __metadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__awaiter", function() { return __awaiter; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__generator", function() { return __generator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__exportStar", function() { return __exportStar; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__values", function() { return __values; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__read", function() { return __read; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spread", function() { return __spread; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__await", function() { return __await; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function() { return __asyncGenerator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function() { return __asyncDelegator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncValues", function() { return __asyncValues; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function() { return __makeTemplateObject; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function() { return __importStar; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; }); -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ -/* global Reflect, Promise */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - } - return __assign.apply(this, arguments); -} - -function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) - t[p[i]] = s[p[i]]; - return t; -} - -function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -} - -function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); -} - -function __awaiter(thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -function __exportStar(m, exports) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} - -function __values(o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -} - -function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -} - -function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} - -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } -} - -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } -} - -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -} - -function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; - -function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result.default = mod; - return result; -} - -function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - - -/***/ }), - -/***/ "./src/$$_lazy_route_resource lazy recursive": -/*!**********************************************************!*\ - !*** ./src/$$_lazy_route_resource lazy namespace object ***! - \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -function webpackEmptyAsyncContext(req) { - // Here Promise.resolve().then() is used instead of new Promise() to prevent - // uncaught exception popping up in devtools - return Promise.resolve().then(function() { - var e = new Error("Cannot find module '" + req + "'"); - e.code = 'MODULE_NOT_FOUND'; - throw e; - }); -} -webpackEmptyAsyncContext.keys = function() { return []; }; -webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext; -module.exports = webpackEmptyAsyncContext; -webpackEmptyAsyncContext.id = "./src/$$_lazy_route_resource lazy recursive"; - -/***/ }), - -/***/ "./src/app/app-routing.module.ts": -/*!***************************************!*\ - !*** ./src/app/app-routing.module.ts ***! - \***************************************/ -/*! exports provided: AppRoutingModule */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppRoutingModule", function() { return AppRoutingModule; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* harmony import */ var _guards_unauthenticated_guard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./guards/unauthenticated.guard */ "./src/app/guards/unauthenticated.guard.ts"); -/* harmony import */ var _guards_authenticated_guard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./guards/authenticated.guard */ "./src/app/guards/authenticated.guard.ts"); -/* harmony import */ var _components_login_panel_login_panel_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/login-panel/login-panel.component */ "./src/app/components/login-panel/login-panel.component.ts"); -/* harmony import */ var _components_main_panel_main_panel_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/main-panel/main-panel.component */ "./src/app/components/main-panel/main-panel.component.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - - - - -const routes = [ - { - path: 'welcome', - pathMatch: 'full', - component: _components_login_panel_login_panel_component__WEBPACK_IMPORTED_MODULE_5__["LoginPanelComponent"], - canActivate: [_guards_unauthenticated_guard__WEBPACK_IMPORTED_MODULE_3__["UnauthenticatedGuard"]] - }, - { - path: '', - component: _components_main_panel_main_panel_component__WEBPACK_IMPORTED_MODULE_6__["MainPanelComponent"], - canActivate: [_guards_authenticated_guard__WEBPACK_IMPORTED_MODULE_4__["AuthenticatedGuard"]], - children: [ - { - path: '', - redirectTo: 'people', - pathMatch: 'full' - }, - { - path: 'people', - loadChildren: () => __webpack_require__.e(/*! import() | modules-people-people-module */ "modules-people-people-module").then(__webpack_require__.bind(null, /*! ./modules/people/people.module */ "./src/app/modules/people/people.module.ts")).then(m => m.PeopleModule) - }, - { - path: 'listPets/:person', - redirectTo: ':person', - pathMatch: 'full' - }, - { - path: ':person', - loadChildren: () => __webpack_require__.e(/*! import() | modules-pets-pets-module */ "modules-pets-pets-module").then(__webpack_require__.bind(null, /*! ./modules/pets/pets.module */ "./src/app/modules/pets/pets.module.ts")).then(m => m.PetsModule) - } - ] - }, -]; -let AppRoutingModule = class AppRoutingModule { -}; -AppRoutingModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - imports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"].forRoot(routes)], - exports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"]] - }) -], AppRoutingModule); - - - -/***/ }), - -/***/ "./src/app/app.component.scss": -/*!************************************!*\ - !*** ./src/app/app.component.scss ***! - \************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQzpcXFVzZXJzXFxOb2VsaWFcXERlc2t0b3BcXERBQVxcZGFhZXhhbXBsZVxcc3JjXFxtYWluXFxhbmd1bGFyL3NyY1xcYXBwXFxhcHAuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUEiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcclxuICogREFBIEV4YW1wbGVcclxuICpcclxuICogQ29weXJpZ2h0IChDKSAyMDE5IC0gTWlndWVsIFJlYm9pcm8tSmF0by5cclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXHJcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXHJcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxyXG4gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxyXG4gKlxyXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxyXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxyXG4gKi9cclxuXHJcbiJdfQ== */"); - -/***/ }), - -/***/ "./src/app/app.component.ts": -/*!**********************************!*\ - !*** ./src/app/app.component.ts ***! - \**********************************/ -/*! exports provided: AppComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppComponent", function() { return AppComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - -let AppComponent = class AppComponent { - constructor() { - this.title = 'angular'; - } -}; -AppComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-root', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./app.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./app.component.scss */ "./src/app/app.component.scss")).default] - }) -], AppComponent); - - - -/***/ }), - -/***/ "./src/app/app.module.ts": -/*!*******************************!*\ - !*** ./src/app/app.module.ts ***! - \*******************************/ -/*! exports provided: AppModule */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppModule", function() { return AppModule; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/platform-browser */ "./node_modules/@angular/platform-browser/fesm2015/platform-browser.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _app_routing_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app-routing.module */ "./src/app/app-routing.module.ts"); -/* harmony import */ var _app_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./app.component */ "./src/app/app.component.ts"); -/* harmony import */ var _components_login_panel_login_panel_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/login-panel/login-panel.component */ "./src/app/components/login-panel/login-panel.component.ts"); -/* harmony import */ var _components_main_panel_main_panel_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/main-panel/main-panel.component */ "./src/app/components/main-panel/main-panel.component.ts"); -/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/common/http */ "./node_modules/@angular/common/fesm2015/http.js"); -/* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/forms */ "./node_modules/@angular/forms/fesm2015/forms.js"); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @angular/common */ "./node_modules/@angular/common/fesm2015/common.js"); -/* harmony import */ var _interceptors_authentication_interceptor__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./interceptors/authentication.interceptor */ "./src/app/interceptors/authentication.interceptor.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - - - - - - - - -let AppModule = class AppModule { -}; -AppModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_2__["NgModule"])({ - declarations: [ - _app_component__WEBPACK_IMPORTED_MODULE_4__["AppComponent"], - _components_login_panel_login_panel_component__WEBPACK_IMPORTED_MODULE_5__["LoginPanelComponent"], - _components_main_panel_main_panel_component__WEBPACK_IMPORTED_MODULE_6__["MainPanelComponent"], - ], - imports: [ - _app_routing_module__WEBPACK_IMPORTED_MODULE_3__["AppRoutingModule"], - _angular_platform_browser__WEBPACK_IMPORTED_MODULE_1__["BrowserModule"], - _angular_common__WEBPACK_IMPORTED_MODULE_9__["CommonModule"], - _angular_forms__WEBPACK_IMPORTED_MODULE_8__["FormsModule"], - _angular_common_http__WEBPACK_IMPORTED_MODULE_7__["HttpClientModule"] - ], - providers: [ - { - provide: _angular_common_http__WEBPACK_IMPORTED_MODULE_7__["HTTP_INTERCEPTORS"], - useClass: _interceptors_authentication_interceptor__WEBPACK_IMPORTED_MODULE_10__["AuthenticationInterceptor"], - multi: true - }, - { - provide: _angular_common__WEBPACK_IMPORTED_MODULE_9__["LocationStrategy"], - useClass: _angular_common__WEBPACK_IMPORTED_MODULE_9__["HashLocationStrategy"] - } - ], - bootstrap: [_app_component__WEBPACK_IMPORTED_MODULE_4__["AppComponent"]] - }) -], AppModule); - - - -/***/ }), - -/***/ "./src/app/components/login-panel/login-panel.component.scss": -/*!*******************************************************************!*\ - !*** ./src/app/components/login-panel/login-panel.component.scss ***! - \*******************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n#container {\n height: 100%;\n width: 100%;\n display: -webkit-box;\n display: flex;\n -ms-flex-align: center;\n -ms-flex-pack: center;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n padding-top: 40px;\n padding-bottom: 40px;\n}\n.form-signin {\n width: 100%;\n max-width: 330px;\n padding: 15px;\n margin: 0 auto;\n}\n.form-signin .form-control {\n position: relative;\n box-sizing: border-box;\n height: auto;\n padding: 10px;\n font-size: 16px;\n}\n.form-signin .form-control:focus {\n z-index: 2;\n}\n#login {\n margin-bottom: -1px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n#password {\n margin-bottom: 10px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXGNvbXBvbmVudHNcXGxvZ2luLXBhbmVsXFxsb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9sb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQW1CQTtFQUNFLFlBQUE7RUFDQSxXQUFBO0VBRUEsb0JBQUE7RUFDQSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxxQkFBQTtFQUNBLHlCQUFBO0VBQ0EsbUJBQUE7RUFDQSx3QkFBQTtFQUNBLHVCQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtBQ0FGO0FER0E7RUFDRSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0VBQ0EsY0FBQTtBQ0FGO0FER0E7RUFDRSxrQkFBQTtFQUNBLHNCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxlQUFBO0FDQUY7QURHQTtFQUNFLFVBQUE7QUNBRjtBREdBO0VBQ0UsbUJBQUE7RUFDQSw2QkFBQTtFQUNBLDRCQUFBO0FDQUY7QURHQTtFQUNFLG1CQUFBO0VBQ0EseUJBQUE7RUFDQSwwQkFBQTtBQ0FGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9sb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuI2NvbnRhaW5lciB7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcclxuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XHJcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBwYWRkaW5nLXRvcDogNDBweDtcclxuICBwYWRkaW5nLWJvdHRvbTogNDBweDtcclxufVxyXG5cclxuLmZvcm0tc2lnbmluIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXgtd2lkdGg6IDMzMHB4O1xyXG4gIHBhZGRpbmc6IDE1cHg7XHJcbiAgbWFyZ2luOiAwIGF1dG87XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgcGFkZGluZzogMTBweDtcclxuICBmb250LXNpemU6IDE2cHg7XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sOmZvY3VzIHtcclxuICB6LWluZGV4OiAyO1xyXG59XHJcblxyXG4jbG9naW4ge1xyXG4gIG1hcmdpbi1ib3R0b206IC0xcHg7XHJcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcclxufVxyXG5cclxuI3Bhc3N3b3JkIHtcclxuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XHJcbn1cclxuIiwiLyohXG4gKiBEQUEgRXhhbXBsZVxuICpcbiAqIENvcHlyaWdodCAoQykgMjAxOSAtIE1pZ3VlbCBSZWJvaXJvLUphdG8uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cbiNjb250YWluZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XG4gIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZy10b3A6IDQwcHg7XG4gIHBhZGRpbmctYm90dG9tOiA0MHB4O1xufVxuXG4uZm9ybS1zaWduaW4ge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAzMzBweDtcbiAgcGFkZGluZzogMTVweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cblxuLmZvcm0tc2lnbmluIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuICB6LWluZGV4OiAyO1xufVxuXG4jbG9naW4ge1xuICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuI3Bhc3N3b3JkIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG59Il19 */"); - -/***/ }), - -/***/ "./src/app/components/login-panel/login-panel.component.ts": -/*!*****************************************************************!*\ - !*** ./src/app/components/login-panel/login-panel.component.ts ***! - \*****************************************************************/ -/*! exports provided: LoginPanelComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LoginPanelComponent", function() { return LoginPanelComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* harmony import */ var _services_authentication_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../services/authentication.service */ "./src/app/services/authentication.service.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - -let LoginPanelComponent = class LoginPanelComponent { - constructor(authenticationService, router) { - this.authenticationService = authenticationService; - this.router = router; - this.login = ''; - this.password = ''; - } - onLogin() { - const credentials = { - login: this.login, - password: this.password - }; - this.authenticationService.tryLogin(credentials) - .subscribe(() => this.router.navigate(['/'])); - } -}; -LoginPanelComponent.ctorParameters = () => [ - { type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_3__["AuthenticationService"] }, - { type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] } -]; -LoginPanelComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-login-panel', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./login-panel.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/login-panel/login-panel.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./login-panel.component.scss */ "./src/app/components/login-panel/login-panel.component.scss")).default] - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_3__["AuthenticationService"], - _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]]) -], LoginPanelComponent); - - - -/***/ }), - -/***/ "./src/app/components/main-panel/main-panel.component.scss": -/*!*****************************************************************!*\ - !*** ./src/app/components/main-panel/main-panel.component.scss ***! - \*****************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9tYWluLXBhbmVsL0M6XFxVc2Vyc1xcTm9lbGlhXFxEZXNrdG9wXFxEQUFcXGRhYWV4YW1wbGVcXHNyY1xcbWFpblxcYW5ndWxhci9zcmNcXGFwcFxcY29tcG9uZW50c1xcbWFpbi1wYW5lbFxcbWFpbi1wYW5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQSIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbWFpbi1wYW5lbC9tYWluLXBhbmVsLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXHJcbiAqIERBQSBFeGFtcGxlXHJcbiAqXHJcbiAqIENvcHlyaWdodCAoQykgMjAxOSAtIE1pZ3VlbCBSZWJvaXJvLUphdG8uXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxyXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxyXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcclxuICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cclxuICpcclxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcclxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cclxuICovXHJcbiJdfQ== */"); - -/***/ }), - -/***/ "./src/app/components/main-panel/main-panel.component.ts": -/*!***************************************************************!*\ - !*** ./src/app/components/main-panel/main-panel.component.ts ***! - \***************************************************************/ -/*! exports provided: MainPanelComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MainPanelComponent", function() { return MainPanelComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_cdk_layout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/cdk/layout */ "./node_modules/@angular/cdk/esm2015/layout.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* harmony import */ var _services_authentication_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../services/authentication.service */ "./src/app/services/authentication.service.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - - - -let MainPanelComponent = class MainPanelComponent { - constructor(authenticationService, breakpointObserver, router) { - this.authenticationService = authenticationService; - this.breakpointObserver = breakpointObserver; - this.router = router; - this.isHandset$ = this.breakpointObserver.observe(_angular_cdk_layout__WEBPACK_IMPORTED_MODULE_2__["Breakpoints"].Handset) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(result => result.matches)); - } - onLogout() { - this.authenticationService.logout(); - this.router.navigate(['welcome']); - } -}; -MainPanelComponent.ctorParameters = () => [ - { type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_5__["AuthenticationService"] }, - { type: _angular_cdk_layout__WEBPACK_IMPORTED_MODULE_2__["BreakpointObserver"] }, - { type: _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"] } -]; -MainPanelComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-main-panel', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./main-panel.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/main-panel/main-panel.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./main-panel.component.scss */ "./src/app/components/main-panel/main-panel.component.scss")).default] - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_5__["AuthenticationService"], - _angular_cdk_layout__WEBPACK_IMPORTED_MODULE_2__["BreakpointObserver"], - _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"]]) -], MainPanelComponent); - - - -/***/ }), - -/***/ "./src/app/guards/authenticated.guard.ts": -/*!***********************************************!*\ - !*** ./src/app/guards/authenticated.guard.ts ***! - \***********************************************/ -/*! exports provided: AuthenticatedGuard */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AuthenticatedGuard", function() { return AuthenticatedGuard; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); -/* harmony import */ var _services_authentication_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../services/authentication.service */ "./src/app/services/authentication.service.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - - -let AuthenticatedGuard = class AuthenticatedGuard { - constructor(authenticationService, router) { - this.authenticationService = authenticationService; - this.router = router; - } - canActivate(next, state) { - if (this.authenticationService.isLogged()) { - return true; - } - else { - return this.authenticationService.tryLoginWithStoredCredentials() - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(user => user !== null), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(isLogged => { - if (!isLogged) { - this.router.navigate(['welcome']); - } - })); - } - } -}; -AuthenticatedGuard.ctorParameters = () => [ - { type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_4__["AuthenticationService"] }, - { type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] } -]; -AuthenticatedGuard = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_4__["AuthenticationService"], - _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]]) -], AuthenticatedGuard); - - - -/***/ }), - -/***/ "./src/app/guards/unauthenticated.guard.ts": -/*!*************************************************!*\ - !*** ./src/app/guards/unauthenticated.guard.ts ***! - \*************************************************/ -/*! exports provided: UnauthenticatedGuard */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UnauthenticatedGuard", function() { return UnauthenticatedGuard; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); -/* harmony import */ var _services_authentication_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../services/authentication.service */ "./src/app/services/authentication.service.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - - -let UnauthenticatedGuard = class UnauthenticatedGuard { - constructor(authenticationService, router) { - this.authenticationService = authenticationService; - this.router = router; - } - canActivate(next, state) { - if (this.authenticationService.isLogged()) { - this.router.navigate([]); - return false; - } - else { - return this.authenticationService.tryLoginWithStoredCredentials() - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(user => user === null), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(isNotLogged => { - if (!isNotLogged) { - this.router.navigate([]); - } - })); - } - } -}; -UnauthenticatedGuard.ctorParameters = () => [ - { type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_4__["AuthenticationService"] }, - { type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] } -]; -UnauthenticatedGuard = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_4__["AuthenticationService"], - _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]]) -], UnauthenticatedGuard); - - - -/***/ }), - -/***/ "./src/app/interceptors/authentication.interceptor.ts": -/*!************************************************************!*\ - !*** ./src/app/interceptors/authentication.interceptor.ts ***! - \************************************************************/ -/*! exports provided: AuthenticationInterceptor */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AuthenticationInterceptor", function() { return AuthenticationInterceptor; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _services_authentication_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../services/authentication.service */ "./src/app/services/authentication.service.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - -let AuthenticationInterceptor = class AuthenticationInterceptor { - constructor(authenticationService) { - this.authenticationService = authenticationService; - } - intercept(request, next) { - const user = this.authenticationService.loggedUser; - if (user !== null) { - request = request.clone({ - setHeaders: { - Authorization: 'Basic ' + btoa(user.login + ':' + user.password) - } - }); - } - return next.handle(request); - } -}; -AuthenticationInterceptor.ctorParameters = () => [ - { type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_2__["AuthenticationService"] } -]; -AuthenticationInterceptor = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_2__["AuthenticationService"]]) -], AuthenticationInterceptor); - - - -/***/ }), - -/***/ "./src/app/services/authentication.service.ts": -/*!****************************************************!*\ - !*** ./src/app/services/authentication.service.ts ***! - \****************************************************/ -/*! exports provided: AuthenticationService */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AuthenticationService", function() { return AuthenticationService; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm2015/index.js"); -/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/common/http */ "./node_modules/@angular/common/fesm2015/http.js"); -/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../environments/environment */ "./src/environments/environment.ts"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ -var AuthenticationService_1; - - - - - - -let AuthenticationService = AuthenticationService_1 = class AuthenticationService { - constructor(http) { - this.http = http; - this._loggedUser$ = new rxjs__WEBPACK_IMPORTED_MODULE_2__["BehaviorSubject"](null); - } - static clearCredentials() { - localStorage.removeItem(AuthenticationService_1.USER_STORAGE_KEY); - } - static loadCredentials() { - const serializedCredentials = localStorage.getItem(AuthenticationService_1.USER_STORAGE_KEY); - if (serializedCredentials !== null) { - return JSON.parse(serializedCredentials); - } - else { - return null; - } - } - static storeCredentials(login, password) { - const credentials = { login, password }; - localStorage.setItem(AuthenticationService_1.USER_STORAGE_KEY, JSON.stringify(credentials)); - } - get loggedUser$() { - return this._loggedUser$.asObservable(); - } - get loggedUser() { - return this._loggedUser$.value; - } - isLogged() { - return this.loggedUser !== null; - } - logout() { - AuthenticationService_1.clearCredentials(); - this._loggedUser$.next(null); - } - tryLoginWithStoredCredentials() { - const credentials = AuthenticationService_1.loadCredentials(); - if (credentials !== null) { - return this.tryLogin(credentials); - } - else { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["of"])(null); - } - } - tryLogin(login, password) { - let userLogin; - let userPassword; - if (typeof login === 'string') { - if (password === undefined) { - throw new TypeError('password can\'t be null when login is string'); - } - userLogin = login; - userPassword = password; - } - else { - userLogin = login.login; - userPassword = login.password; - } - AuthenticationService_1.storeCredentials(userLogin, userPassword); - const headers = new _angular_common_http__WEBPACK_IMPORTED_MODULE_3__["HttpHeaders"]() - .set('Authorization', 'Basic ' + btoa(userLogin + ':' + userPassword)); - return this.http.get(`${_environments_environment__WEBPACK_IMPORTED_MODULE_4__["environment"].restApi}/users/${userLogin}`, { - headers: headers - }) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["tap"])(user => this._loggedUser$.next({ - login: userLogin, - password: userPassword - })), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["catchError"])(error => { - this._loggedUser$.next(null); - throw error; - })); - } -}; -AuthenticationService.USER_STORAGE_KEY = 'user'; -AuthenticationService.ctorParameters = () => [ - { type: _angular_common_http__WEBPACK_IMPORTED_MODULE_3__["HttpClient"] } -]; -AuthenticationService = AuthenticationService_1 = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_common_http__WEBPACK_IMPORTED_MODULE_3__["HttpClient"]]) -], AuthenticationService); - - - -/***/ }), - -/***/ "./src/environments/environment.ts": -/*!*****************************************!*\ - !*** ./src/environments/environment.ts ***! - \*****************************************/ -/*! exports provided: environment */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "environment", function() { return environment; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. -const environment = { - production: false, - restApi: 'http://localhost:9080/DAAExample/rest' -}; -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/dist/zone-error'; // Included with Angular CLI. - - -/***/ }), - -/***/ "./src/main.ts": -/*!*********************!*\ - !*** ./src/main.ts ***! - \*********************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/platform-browser-dynamic */ "./node_modules/@angular/platform-browser-dynamic/fesm2015/platform-browser-dynamic.js"); -/* harmony import */ var _app_app_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app/app.module */ "./src/app/app.module.ts"); -/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./environments/environment */ "./src/environments/environment.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - - -if (_environments_environment__WEBPACK_IMPORTED_MODULE_4__["environment"].production) { - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["enableProdMode"])(); -} -Object(_angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_2__["platformBrowserDynamic"])().bootstrapModule(_app_app_module__WEBPACK_IMPORTED_MODULE_3__["AppModule"]) - .catch(err => console.error(err)); - - -/***/ }), - -/***/ 0: -/*!***************************!*\ - !*** multi ./src/main.ts ***! - \***************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(/*! C:\Users\Noelia\Desktop\DAA\daaexample\src\main\angular\src\main.ts */"./src/main.ts"); - - -/***/ }) - -},[[0,"runtime","vendor"]]]); -//# sourceMappingURL=main-es2015.js.map \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/main-es2015.js.map b/target/catalina-base/webapps/DAAExample/main-es2015.js.map deleted file mode 100644 index 81bb2b8be66fdae59899f6e1ea95206b92b05249..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/main-es2015.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["./src/app/app.component.html","./src/app/components/login-panel/login-panel.component.html","./src/app/components/main-panel/main-panel.component.html","./node_modules/tslib/tslib.es6.js","./src/$_lazy_route_resource lazy namespace object","./src/app/app-routing.module.ts","./src/app/app.component.scss","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/components/login-panel/login-panel.component.scss","./src/app/components/login-panel/login-panel.component.ts","./src/app/components/main-panel/main-panel.component.scss","./src/app/components/main-panel/main-panel.component.ts","./src/app/guards/authenticated.guard.ts","./src/app/guards/unauthenticated.guard.ts","./src/app/interceptors/authentication.interceptor.ts","./src/app/services/authentication.service.ts","./src/environments/environment.ts","./src/main.ts"],"names":[],"mappings":"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","file":"main-es2015.js","sourcesContent":["export default \"\\r\\n\\r\\n\\r\\n\"","export default \"\\r\\n\\r\\n
    \\r\\n
    \\r\\n

    DAA Example - Angular

    \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\"","export default \"\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n DAA Example\\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\"","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport {UnauthenticatedGuard} from './guards/unauthenticated.guard';\r\nimport {AuthenticatedGuard} from './guards/authenticated.guard';\r\nimport {LoginPanelComponent} from './components/login-panel/login-panel.component';\r\nimport {MainPanelComponent} from './components/main-panel/main-panel.component';\r\nimport {PetsFormComponent} from './modules/pets/components/pets-form/pets-form.component';\r\n\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'welcome',\r\n pathMatch: 'full',\r\n component: LoginPanelComponent,\r\n canActivate: [UnauthenticatedGuard]\r\n },\r\n {\r\n path: '',\r\n component: MainPanelComponent,\r\n canActivate: [AuthenticatedGuard],\r\n children: [\r\n {\r\n path: '',\r\n redirectTo: 'people',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: 'people',\r\n loadChildren: () => import('./modules/people/people.module').then(m => m.PeopleModule)\r\n },\r\n {\r\n path: 'listPets/:person',\r\n redirectTo: ':person',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: ':person',\r\n loadChildren: () => import('./modules/pets/pets.module').then(m => m.PetsModule)\r\n }\r\n ]\r\n },\r\n \r\n\r\n \r\n \r\n \r\n /*{\r\n path: 'pets/:person',\r\n pathMatch: 'full',\r\n component: PetsFormComponent,\r\n canActivate: [AuthenticatedGuard]\r\n }*/\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQzpcXFVzZXJzXFxOb2VsaWFcXERlc2t0b3BcXERBQVxcZGFhZXhhbXBsZVxcc3JjXFxtYWluXFxhbmd1bGFyL3NyY1xcYXBwXFxhcHAuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUEiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcclxuICogREFBIEV4YW1wbGVcclxuICpcclxuICogQ29weXJpZ2h0IChDKSAyMDE5IC0gTWlndWVsIFJlYm9pcm8tSmF0by5cclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXHJcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXHJcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxyXG4gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxyXG4gKlxyXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxyXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxyXG4gKi9cclxuXHJcbiJdfQ== */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent {\r\n title = 'angular';\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {BrowserModule} from '@angular/platform-browser';\r\nimport {NgModule} from '@angular/core';\r\n\r\nimport {AppRoutingModule} from './app-routing.module';\r\nimport {AppComponent} from './app.component';\r\nimport {LoginPanelComponent} from './components/login-panel/login-panel.component';\r\nimport {MainPanelComponent} from './components/main-panel/main-panel.component';\r\nimport {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {CommonModule, HashLocationStrategy, LocationStrategy} from '@angular/common';\r\nimport {AuthenticationInterceptor} from './interceptors/authentication.interceptor';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n LoginPanelComponent,\r\n MainPanelComponent,\r\n ],\r\n imports: [\r\n AppRoutingModule,\r\n BrowserModule,\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule\r\n ],\r\n providers: [\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AuthenticationInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: LocationStrategy,\r\n useClass: HashLocationStrategy\r\n }\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {\r\n}\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n#container {\\n height: 100%;\\n width: 100%;\\n display: -webkit-box;\\n display: flex;\\n -ms-flex-align: center;\\n -ms-flex-pack: center;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n padding-top: 40px;\\n padding-bottom: 40px;\\n}\\n.form-signin {\\n width: 100%;\\n max-width: 330px;\\n padding: 15px;\\n margin: 0 auto;\\n}\\n.form-signin .form-control {\\n position: relative;\\n box-sizing: border-box;\\n height: auto;\\n padding: 10px;\\n font-size: 16px;\\n}\\n.form-signin .form-control:focus {\\n z-index: 2;\\n}\\n#login {\\n margin-bottom: -1px;\\n border-bottom-right-radius: 0;\\n border-bottom-left-radius: 0;\\n}\\n#password {\\n margin-bottom: 10px;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXGNvbXBvbmVudHNcXGxvZ2luLXBhbmVsXFxsb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9sb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQW1CQTtFQUNFLFlBQUE7RUFDQSxXQUFBO0VBRUEsb0JBQUE7RUFDQSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxxQkFBQTtFQUNBLHlCQUFBO0VBQ0EsbUJBQUE7RUFDQSx3QkFBQTtFQUNBLHVCQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtBQ0FGO0FER0E7RUFDRSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0VBQ0EsY0FBQTtBQ0FGO0FER0E7RUFDRSxrQkFBQTtFQUNBLHNCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxlQUFBO0FDQUY7QURHQTtFQUNFLFVBQUE7QUNBRjtBREdBO0VBQ0UsbUJBQUE7RUFDQSw2QkFBQTtFQUNBLDRCQUFBO0FDQUY7QURHQTtFQUNFLG1CQUFBO0VBQ0EseUJBQUE7RUFDQSwwQkFBQTtBQ0FGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9sb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuI2NvbnRhaW5lciB7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcclxuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XHJcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBwYWRkaW5nLXRvcDogNDBweDtcclxuICBwYWRkaW5nLWJvdHRvbTogNDBweDtcclxufVxyXG5cclxuLmZvcm0tc2lnbmluIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXgtd2lkdGg6IDMzMHB4O1xyXG4gIHBhZGRpbmc6IDE1cHg7XHJcbiAgbWFyZ2luOiAwIGF1dG87XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgcGFkZGluZzogMTBweDtcclxuICBmb250LXNpemU6IDE2cHg7XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sOmZvY3VzIHtcclxuICB6LWluZGV4OiAyO1xyXG59XHJcblxyXG4jbG9naW4ge1xyXG4gIG1hcmdpbi1ib3R0b206IC0xcHg7XHJcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcclxufVxyXG5cclxuI3Bhc3N3b3JkIHtcclxuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XHJcbn1cclxuIiwiLyohXG4gKiBEQUEgRXhhbXBsZVxuICpcbiAqIENvcHlyaWdodCAoQykgMjAxOSAtIE1pZ3VlbCBSZWJvaXJvLUphdG8uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cbiNjb250YWluZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XG4gIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZy10b3A6IDQwcHg7XG4gIHBhZGRpbmctYm90dG9tOiA0MHB4O1xufVxuXG4uZm9ybS1zaWduaW4ge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAzMzBweDtcbiAgcGFkZGluZzogMTVweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cblxuLmZvcm0tc2lnbmluIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuICB6LWluZGV4OiAyO1xufVxuXG4jbG9naW4ge1xuICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuI3Bhc3N3b3JkIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG59Il19 */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Component} from '@angular/core';\r\nimport {Router} from '@angular/router';\r\nimport {AuthenticationService} from '../../services/authentication.service';\r\nimport {UserModel} from '../../models';\r\n\r\n@Component({\r\n selector: 'app-login-panel',\r\n templateUrl: './login-panel.component.html',\r\n styleUrls: ['./login-panel.component.scss']\r\n})\r\nexport class LoginPanelComponent {\r\n public login: string;\r\n public password: string;\r\n\r\n public constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly router: Router\r\n ) {\r\n this.login = '';\r\n this.password = '';\r\n }\r\n\r\n public onLogin(): void {\r\n const credentials: UserModel = {\r\n login: this.login,\r\n password: this.password\r\n };\r\n\r\n this.authenticationService.tryLogin(credentials)\r\n .subscribe(() => this.router.navigate(['/']));\r\n }\r\n\r\n}\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9tYWluLXBhbmVsL0M6XFxVc2Vyc1xcTm9lbGlhXFxEZXNrdG9wXFxEQUFcXGRhYWV4YW1wbGVcXHNyY1xcbWFpblxcYW5ndWxhci9zcmNcXGFwcFxcY29tcG9uZW50c1xcbWFpbi1wYW5lbFxcbWFpbi1wYW5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQSIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbWFpbi1wYW5lbC9tYWluLXBhbmVsLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXHJcbiAqIERBQSBFeGFtcGxlXHJcbiAqXHJcbiAqIENvcHlyaWdodCAoQykgMjAxOSAtIE1pZ3VlbCBSZWJvaXJvLUphdG8uXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxyXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxyXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcclxuICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cclxuICpcclxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcclxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cclxuICovXHJcbiJdfQ== */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Component} from '@angular/core';\r\nimport {Observable} from 'rxjs';\r\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\r\nimport {map} from 'rxjs/operators';\r\nimport {Router} from '@angular/router';\r\nimport {AuthenticationService} from '../../services/authentication.service';\r\n\r\n@Component({\r\n selector: 'app-main-panel',\r\n templateUrl: './main-panel.component.html',\r\n styleUrls: ['./main-panel.component.scss']\r\n})\r\nexport class MainPanelComponent {\r\n public readonly isHandset$: Observable;\r\n\r\n public constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly breakpointObserver: BreakpointObserver,\r\n private readonly router: Router\r\n ) {\r\n this.isHandset$ = this.breakpointObserver.observe(Breakpoints.Handset)\r\n .pipe(\r\n map(result => result.matches)\r\n );\r\n }\r\n\r\n public onLogout(): void {\r\n this.authenticationService.logout();\r\n this.router.navigate(['welcome']);\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router';\r\nimport {Observable} from 'rxjs';\r\nimport {map, tap} from 'rxjs/operators';\r\nimport {AuthenticationService} from '../services/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticatedGuard implements CanActivate {\r\n public constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly router: Router\r\n ) {}\r\n\r\n public canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean | Observable {\r\n if (this.authenticationService.isLogged()) {\r\n return true;\r\n } else {\r\n return this.authenticationService.tryLoginWithStoredCredentials()\r\n .pipe(\r\n map(user => user !== null),\r\n tap(isLogged => {\r\n if (!isLogged) {\r\n this.router.navigate(['welcome']);\r\n }\r\n })\r\n );\r\n }\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router';\r\nimport {map, tap} from 'rxjs/operators';\r\nimport {Observable} from 'rxjs';\r\nimport {AuthenticationService} from '../services/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UnauthenticatedGuard implements CanActivate {\r\n public constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly router: Router\r\n ) {}\r\n\r\n public canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean | Observable {\r\n if (this.authenticationService.isLogged()) {\r\n this.router.navigate([]);\r\n return false;\r\n } else {\r\n return this.authenticationService.tryLoginWithStoredCredentials()\r\n .pipe(\r\n map(user => user === null),\r\n tap(isNotLogged => {\r\n if (!isNotLogged) {\r\n this.router.navigate([]);\r\n }\r\n })\r\n );\r\n }\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\r\nimport {Observable} from 'rxjs';\r\nimport {AuthenticationService} from '../services/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationInterceptor implements HttpInterceptor {\r\n\r\n public constructor(public authenticationService: AuthenticationService) {\r\n }\r\n\r\n public intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n const user = this.authenticationService.loggedUser;\r\n\r\n if (user !== null) {\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: 'Basic ' + btoa(user.login + ':' + user.password)\r\n }\r\n });\r\n }\r\n\r\n return next.handle(request);\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {BehaviorSubject, Observable, of} from 'rxjs';\r\nimport {UserModel} from '../models';\r\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\r\nimport {environment} from '../../environments/environment';\r\nimport {catchError, tap} from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationService {\r\n private static readonly USER_STORAGE_KEY = 'user';\r\n\r\n private readonly _loggedUser$: BehaviorSubject;\r\n\r\n private static clearCredentials(): void {\r\n localStorage.removeItem(AuthenticationService.USER_STORAGE_KEY);\r\n }\r\n\r\n private static loadCredentials(): UserModel | null {\r\n const serializedCredentials = localStorage.getItem(AuthenticationService.USER_STORAGE_KEY);\r\n\r\n if (serializedCredentials !== null) {\r\n return JSON.parse(serializedCredentials);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n private static storeCredentials(login: string, password: string): void {\r\n const credentials: UserModel = {login, password};\r\n\r\n localStorage.setItem(AuthenticationService.USER_STORAGE_KEY, JSON.stringify(credentials));\r\n }\r\n\r\n public constructor(\r\n private readonly http: HttpClient\r\n ) {\r\n this._loggedUser$ = new BehaviorSubject(null);\r\n }\r\n\r\n public get loggedUser$(): Observable {\r\n return this._loggedUser$.asObservable();\r\n }\r\n\r\n public get loggedUser(): UserModel | null {\r\n return this._loggedUser$.value;\r\n }\r\n\r\n public isLogged(): boolean {\r\n return this.loggedUser !== null;\r\n }\r\n\r\n public logout(): void {\r\n AuthenticationService.clearCredentials();\r\n this._loggedUser$.next(null);\r\n }\r\n\r\n public tryLoginWithStoredCredentials(): Observable {\r\n const credentials = AuthenticationService.loadCredentials();\r\n\r\n if (credentials !== null) {\r\n return this.tryLogin(credentials);\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n\r\n public tryLogin(login: UserModel): Observable;\r\n public tryLogin(login: string, password: string): Observable;\r\n\r\n public tryLogin(login: string | UserModel, password?: string): Observable {\r\n let userLogin: string;\r\n let userPassword: string;\r\n\r\n if (typeof login === 'string') {\r\n if (password === undefined) {\r\n throw new TypeError('password can\\'t be null when login is string');\r\n }\r\n\r\n userLogin = login;\r\n userPassword = password;\r\n } else {\r\n userLogin = login.login;\r\n userPassword = login.password;\r\n }\r\n AuthenticationService.storeCredentials(userLogin, userPassword);\r\n\r\n const headers = new HttpHeaders()\r\n .set('Authorization', 'Basic ' + btoa(userLogin + ':' + userPassword));\r\n\r\n return this.http.get(`${environment.restApi}/users/${userLogin}`, {\r\n headers: headers\r\n })\r\n .pipe(\r\n tap(user => this._loggedUser$.next({\r\n login: userLogin,\r\n password: userPassword\r\n })),\r\n catchError(error => {\r\n this._loggedUser$.next(null);\r\n throw error;\r\n })\r\n );\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\n// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false,\r\n restApi: 'http://localhost:9080/DAAExample/rest'\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/main-es5.js b/target/catalina-base/webapps/DAAExample/main-es5.js deleted file mode 100644 index 452bd882cc1a6595b53de0e24633669522fed20a..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/main-es5.js +++ /dev/null @@ -1,1938 +0,0 @@ -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["main"], { - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html": - /*!**************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html ***! - \**************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppAppComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n\r\n\r\n"; - /***/ - }, - - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/components/login-panel/login-panel.component.html": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/login-panel/login-panel.component.html ***! - \*********************************************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppComponentsLoginPanelLoginPanelComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n\r\n
    \r\n
    \r\n

    DAA Example - Angular

    \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
    \r\n
    \r\n"; - /***/ - }, - - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/components/main-panel/main-panel.component.html": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/main-panel/main-panel.component.html ***! - \*******************************************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppComponentsMainPanelMainPanelComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n DAA Example\r\n \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n"; - /***/ - }, - - /***/ - "./node_modules/tslib/tslib.es6.js": - /*!*****************************************!*\ - !*** ./node_modules/tslib/tslib.es6.js ***! - \*****************************************/ - - /*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */ - - /***/ - function node_modulesTslibTslibEs6Js(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__extends", function () { - return __extends; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__assign", function () { - return _assign; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__rest", function () { - return __rest; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__decorate", function () { - return __decorate; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__param", function () { - return __param; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__metadata", function () { - return __metadata; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__awaiter", function () { - return __awaiter; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__generator", function () { - return __generator; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__exportStar", function () { - return __exportStar; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__values", function () { - return __values; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__read", function () { - return __read; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__spread", function () { - return __spread; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__await", function () { - return __await; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function () { - return __asyncGenerator; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function () { - return __asyncDelegator; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__asyncValues", function () { - return __asyncValues; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function () { - return __makeTemplateObject; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__importStar", function () { - return __importStar; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__importDefault", function () { - return __importDefault; - }); - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - - /* global Reflect, Promise */ - - - var _extendStatics = function extendStatics(d, b) { - _extendStatics = Object.setPrototypeOf || { - __proto__: [] - } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) { - if (b.hasOwnProperty(p)) d[p] = b[p]; - } - }; - - return _extendStatics(d, b); - }; - - function __extends(d, b) { - _extendStatics(d, b); - - function __() { - this.constructor = d; - } - - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var _assign = function __assign() { - _assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - - for (var p in s) { - if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - } - - return t; - }; - - return _assign.apply(this, arguments); - }; - - function __rest(s, e) { - var t = {}; - - for (var p in s) { - if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; - } - - if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]]; - } - return t; - } - - function __decorate(decorators, target, key, desc) { - var c = arguments.length, - r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, - d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) { - if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - } - return c > 3 && r && Object.defineProperty(target, key, r), r; - } - - function __param(paramIndex, decorator) { - return function (target, key) { - decorator(target, key, paramIndex); - }; - } - - function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); - } - - function __awaiter(thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - - function step(result) { - result.done ? resolve(result.value) : new P(function (resolve) { - resolve(result.value); - }).then(fulfilled, rejected); - } - - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - } - - function __generator(thisArg, body) { - var _ = { - label: 0, - sent: function sent() { - if (t[0] & 1) throw t[1]; - return t[1]; - }, - trys: [], - ops: [] - }, - f, - y, - t, - g; - return g = { - next: verb(0), - "throw": verb(1), - "return": verb(2) - }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { - return this; - }), g; - - function verb(n) { - return function (v) { - return step([n, v]); - }; - } - - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - - while (_) { - try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - - switch (op[0]) { - case 0: - case 1: - t = op; - break; - - case 4: - _.label++; - return { - value: op[1], - done: false - }; - - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - - case 7: - op = _.ops.pop(); - - _.trys.pop(); - - continue; - - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _ = 0; - continue; - } - - if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { - _.label = op[1]; - break; - } - - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - - if (t && _.label < t[2]) { - _.label = t[2]; - - _.ops.push(op); - - break; - } - - if (t[2]) _.ops.pop(); - - _.trys.pop(); - - continue; - } - - op = body.call(thisArg, _); - } catch (e) { - op = [6, e]; - y = 0; - } finally { - f = t = 0; - } - } - - if (op[0] & 5) throw op[1]; - return { - value: op[0] ? op[1] : void 0, - done: true - }; - } - } - - function __exportStar(m, exports) { - for (var p in m) { - if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - } - - function __values(o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], - i = 0; - if (m) return m.call(o); - return { - next: function next() { - if (o && i >= o.length) o = void 0; - return { - value: o && o[i++], - done: !o - }; - } - }; - } - - function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), - r, - ar = [], - e; - - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { - ar.push(r.value); - } - } catch (error) { - e = { - error: error - }; - } finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } finally { - if (e) throw e.error; - } - } - - return ar; - } - - function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) { - ar = ar.concat(__read(arguments[i])); - } - - return ar; - } - - function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); - } - - function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), - i, - q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i; - - function verb(n) { - if (g[n]) i[n] = function (v) { - return new Promise(function (a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - - function fulfill(value) { - resume("next", value); - } - - function reject(value) { - resume("throw", value); - } - - function settle(f, v) { - if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); - } - } - - function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { - throw e; - }), verb("return"), i[Symbol.iterator] = function () { - return this; - }, i; - - function verb(n, f) { - i[n] = o[n] ? function (v) { - return (p = !p) ? { - value: __await(o[n](v)), - done: n === "return" - } : f ? f(v) : v; - } : f; - } - } - - function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], - i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i); - - function verb(n) { - i[n] = o[n] && function (v) { - return new Promise(function (resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function (v) { - resolve({ - value: v, - done: d - }); - }, reject); - } - } - - function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { - value: raw - }); - } else { - cooked.raw = raw; - } - - return cooked; - } - - ; - - function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) { - if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - } - result.default = mod; - return result; - } - - function __importDefault(mod) { - return mod && mod.__esModule ? mod : { - default: mod - }; - } - /***/ - - }, - - /***/ - "./src/$$_lazy_route_resource lazy recursive": - /*!**********************************************************!*\ - !*** ./src/$$_lazy_route_resource lazy namespace object ***! - \**********************************************************/ - - /*! no static exports found */ - - /***/ - function src$$_lazy_route_resourceLazyRecursive(module, exports) { - function webpackEmptyAsyncContext(req) { - // Here Promise.resolve().then() is used instead of new Promise() to prevent - // uncaught exception popping up in devtools - return Promise.resolve().then(function () { - var e = new Error("Cannot find module '" + req + "'"); - e.code = 'MODULE_NOT_FOUND'; - throw e; - }); - } - - webpackEmptyAsyncContext.keys = function () { - return []; - }; - - webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext; - module.exports = webpackEmptyAsyncContext; - webpackEmptyAsyncContext.id = "./src/$$_lazy_route_resource lazy recursive"; - /***/ - }, - - /***/ - "./src/app/app-routing.module.ts": - /*!***************************************!*\ - !*** ./src/app/app-routing.module.ts ***! - \***************************************/ - - /*! exports provided: AppRoutingModule */ - - /***/ - function srcAppAppRoutingModuleTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "AppRoutingModule", function () { - return AppRoutingModule; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* harmony import */ - - - var _guards_unauthenticated_guard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ./guards/unauthenticated.guard */ - "./src/app/guards/unauthenticated.guard.ts"); - /* harmony import */ - - - var _guards_authenticated_guard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! ./guards/authenticated.guard */ - "./src/app/guards/authenticated.guard.ts"); - /* harmony import */ - - - var _components_login_panel_login_panel_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( - /*! ./components/login-panel/login-panel.component */ - "./src/app/components/login-panel/login-panel.component.ts"); - /* harmony import */ - - - var _components_main_panel_main_panel_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( - /*! ./components/main-panel/main-panel.component */ - "./src/app/components/main-panel/main-panel.component.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var routes = [{ - path: 'welcome', - pathMatch: 'full', - component: _components_login_panel_login_panel_component__WEBPACK_IMPORTED_MODULE_5__["LoginPanelComponent"], - canActivate: [_guards_unauthenticated_guard__WEBPACK_IMPORTED_MODULE_3__["UnauthenticatedGuard"]] - }, { - path: '', - component: _components_main_panel_main_panel_component__WEBPACK_IMPORTED_MODULE_6__["MainPanelComponent"], - canActivate: [_guards_authenticated_guard__WEBPACK_IMPORTED_MODULE_4__["AuthenticatedGuard"]], - children: [{ - path: '', - redirectTo: 'people', - pathMatch: 'full' - }, { - path: 'people', - loadChildren: function loadChildren() { - return __webpack_require__.e( - /*! import() | modules-people-people-module */ - "modules-people-people-module").then(__webpack_require__.bind(null, - /*! ./modules/people/people.module */ - "./src/app/modules/people/people.module.ts")).then(function (m) { - return m.PeopleModule; - }); - } - }, { - path: 'listPets/:person', - redirectTo: ':person', - pathMatch: 'full' - }, { - path: ':person', - loadChildren: function loadChildren() { - return __webpack_require__.e( - /*! import() | modules-pets-pets-module */ - "modules-pets-pets-module").then(__webpack_require__.bind(null, - /*! ./modules/pets/pets.module */ - "./src/app/modules/pets/pets.module.ts")).then(function (m) { - return m.PetsModule; - }); - } - }] - }]; - - var AppRoutingModule = function AppRoutingModule() { - _classCallCheck(this, AppRoutingModule); - }; - - AppRoutingModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - imports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"].forRoot(routes)], - exports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"]] - })], AppRoutingModule); - /***/ - }, - - /***/ - "./src/app/app.component.scss": - /*!************************************!*\ - !*** ./src/app/app.component.scss ***! - \************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppAppComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQzpcXFVzZXJzXFxOb2VsaWFcXERlc2t0b3BcXERBQVxcZGFhZXhhbXBsZVxcc3JjXFxtYWluXFxhbmd1bGFyL3NyY1xcYXBwXFxhcHAuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUEiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcclxuICogREFBIEV4YW1wbGVcclxuICpcclxuICogQ29weXJpZ2h0IChDKSAyMDE5IC0gTWlndWVsIFJlYm9pcm8tSmF0by5cclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXHJcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXHJcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxyXG4gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxyXG4gKlxyXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxyXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxyXG4gKi9cclxuXHJcbiJdfQ== */"; - /***/ - }, - - /***/ - "./src/app/app.component.ts": - /*!**********************************!*\ - !*** ./src/app/app.component.ts ***! - \**********************************/ - - /*! exports provided: AppComponent */ - - /***/ - function srcAppAppComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "AppComponent", function () { - return AppComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var AppComponent = function AppComponent() { - _classCallCheck(this, AppComponent); - - this.title = 'angular'; - }; - - AppComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-root', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./app.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./app.component.scss */ - "./src/app/app.component.scss")).default] - })], AppComponent); - /***/ - }, - - /***/ - "./src/app/app.module.ts": - /*!*******************************!*\ - !*** ./src/app/app.module.ts ***! - \*******************************/ - - /*! exports provided: AppModule */ - - /***/ - function srcAppAppModuleTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "AppModule", function () { - return AppModule; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/platform-browser */ - "./node_modules/@angular/platform-browser/fesm2015/platform-browser.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _app_routing_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ./app-routing.module */ - "./src/app/app-routing.module.ts"); - /* harmony import */ - - - var _app_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! ./app.component */ - "./src/app/app.component.ts"); - /* harmony import */ - - - var _components_login_panel_login_panel_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( - /*! ./components/login-panel/login-panel.component */ - "./src/app/components/login-panel/login-panel.component.ts"); - /* harmony import */ - - - var _components_main_panel_main_panel_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( - /*! ./components/main-panel/main-panel.component */ - "./src/app/components/main-panel/main-panel.component.ts"); - /* harmony import */ - - - var _angular_common_http__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__( - /*! @angular/common/http */ - "./node_modules/@angular/common/fesm2015/http.js"); - /* harmony import */ - - - var _angular_forms__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__( - /*! @angular/forms */ - "./node_modules/@angular/forms/fesm2015/forms.js"); - /* harmony import */ - - - var _angular_common__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__( - /*! @angular/common */ - "./node_modules/@angular/common/fesm2015/common.js"); - /* harmony import */ - - - var _interceptors_authentication_interceptor__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__( - /*! ./interceptors/authentication.interceptor */ - "./src/app/interceptors/authentication.interceptor.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var AppModule = function AppModule() { - _classCallCheck(this, AppModule); - }; - - AppModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_2__["NgModule"])({ - declarations: [_app_component__WEBPACK_IMPORTED_MODULE_4__["AppComponent"], _components_login_panel_login_panel_component__WEBPACK_IMPORTED_MODULE_5__["LoginPanelComponent"], _components_main_panel_main_panel_component__WEBPACK_IMPORTED_MODULE_6__["MainPanelComponent"]], - imports: [_app_routing_module__WEBPACK_IMPORTED_MODULE_3__["AppRoutingModule"], _angular_platform_browser__WEBPACK_IMPORTED_MODULE_1__["BrowserModule"], _angular_common__WEBPACK_IMPORTED_MODULE_9__["CommonModule"], _angular_forms__WEBPACK_IMPORTED_MODULE_8__["FormsModule"], _angular_common_http__WEBPACK_IMPORTED_MODULE_7__["HttpClientModule"]], - providers: [{ - provide: _angular_common_http__WEBPACK_IMPORTED_MODULE_7__["HTTP_INTERCEPTORS"], - useClass: _interceptors_authentication_interceptor__WEBPACK_IMPORTED_MODULE_10__["AuthenticationInterceptor"], - multi: true - }, { - provide: _angular_common__WEBPACK_IMPORTED_MODULE_9__["LocationStrategy"], - useClass: _angular_common__WEBPACK_IMPORTED_MODULE_9__["HashLocationStrategy"] - }], - bootstrap: [_app_component__WEBPACK_IMPORTED_MODULE_4__["AppComponent"]] - })], AppModule); - /***/ - }, - - /***/ - "./src/app/components/login-panel/login-panel.component.scss": - /*!*******************************************************************!*\ - !*** ./src/app/components/login-panel/login-panel.component.scss ***! - \*******************************************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppComponentsLoginPanelLoginPanelComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n#container {\n height: 100%;\n width: 100%;\n display: -webkit-box;\n display: flex;\n -ms-flex-align: center;\n -ms-flex-pack: center;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n padding-top: 40px;\n padding-bottom: 40px;\n}\n.form-signin {\n width: 100%;\n max-width: 330px;\n padding: 15px;\n margin: 0 auto;\n}\n.form-signin .form-control {\n position: relative;\n box-sizing: border-box;\n height: auto;\n padding: 10px;\n font-size: 16px;\n}\n.form-signin .form-control:focus {\n z-index: 2;\n}\n#login {\n margin-bottom: -1px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n#password {\n margin-bottom: 10px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXGNvbXBvbmVudHNcXGxvZ2luLXBhbmVsXFxsb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9sb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQW1CQTtFQUNFLFlBQUE7RUFDQSxXQUFBO0VBRUEsb0JBQUE7RUFDQSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxxQkFBQTtFQUNBLHlCQUFBO0VBQ0EsbUJBQUE7RUFDQSx3QkFBQTtFQUNBLHVCQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtBQ0FGO0FER0E7RUFDRSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0VBQ0EsY0FBQTtBQ0FGO0FER0E7RUFDRSxrQkFBQTtFQUNBLHNCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxlQUFBO0FDQUY7QURHQTtFQUNFLFVBQUE7QUNBRjtBREdBO0VBQ0UsbUJBQUE7RUFDQSw2QkFBQTtFQUNBLDRCQUFBO0FDQUY7QURHQTtFQUNFLG1CQUFBO0VBQ0EseUJBQUE7RUFDQSwwQkFBQTtBQ0FGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9sb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuI2NvbnRhaW5lciB7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcclxuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XHJcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBwYWRkaW5nLXRvcDogNDBweDtcclxuICBwYWRkaW5nLWJvdHRvbTogNDBweDtcclxufVxyXG5cclxuLmZvcm0tc2lnbmluIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXgtd2lkdGg6IDMzMHB4O1xyXG4gIHBhZGRpbmc6IDE1cHg7XHJcbiAgbWFyZ2luOiAwIGF1dG87XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgcGFkZGluZzogMTBweDtcclxuICBmb250LXNpemU6IDE2cHg7XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sOmZvY3VzIHtcclxuICB6LWluZGV4OiAyO1xyXG59XHJcblxyXG4jbG9naW4ge1xyXG4gIG1hcmdpbi1ib3R0b206IC0xcHg7XHJcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcclxufVxyXG5cclxuI3Bhc3N3b3JkIHtcclxuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XHJcbn1cclxuIiwiLyohXG4gKiBEQUEgRXhhbXBsZVxuICpcbiAqIENvcHlyaWdodCAoQykgMjAxOSAtIE1pZ3VlbCBSZWJvaXJvLUphdG8uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cbiNjb250YWluZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XG4gIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZy10b3A6IDQwcHg7XG4gIHBhZGRpbmctYm90dG9tOiA0MHB4O1xufVxuXG4uZm9ybS1zaWduaW4ge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAzMzBweDtcbiAgcGFkZGluZzogMTVweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cblxuLmZvcm0tc2lnbmluIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuICB6LWluZGV4OiAyO1xufVxuXG4jbG9naW4ge1xuICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuI3Bhc3N3b3JkIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG59Il19 */"; - /***/ - }, - - /***/ - "./src/app/components/login-panel/login-panel.component.ts": - /*!*****************************************************************!*\ - !*** ./src/app/components/login-panel/login-panel.component.ts ***! - \*****************************************************************/ - - /*! exports provided: LoginPanelComponent */ - - /***/ - function srcAppComponentsLoginPanelLoginPanelComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "LoginPanelComponent", function () { - return LoginPanelComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* harmony import */ - - - var _services_authentication_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ../../services/authentication.service */ - "./src/app/services/authentication.service.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var LoginPanelComponent = - /*#__PURE__*/ - function () { - function LoginPanelComponent(authenticationService, router) { - _classCallCheck(this, LoginPanelComponent); - - this.authenticationService = authenticationService; - this.router = router; - this.login = ''; - this.password = ''; - } - - _createClass(LoginPanelComponent, [{ - key: "onLogin", - value: function onLogin() { - var _this = this; - - var credentials = { - login: this.login, - password: this.password - }; - this.authenticationService.tryLogin(credentials).subscribe(function () { - return _this.router.navigate(['/']); - }); - } - }]); - - return LoginPanelComponent; - }(); - - LoginPanelComponent.ctorParameters = function () { - return [{ - type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_3__["AuthenticationService"] - }, { - type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] - }]; - }; - - LoginPanelComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-login-panel', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./login-panel.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/components/login-panel/login-panel.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./login-panel.component.scss */ - "./src/app/components/login-panel/login-panel.component.scss")).default] - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_3__["AuthenticationService"], _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]])], LoginPanelComponent); - /***/ - }, - - /***/ - "./src/app/components/main-panel/main-panel.component.scss": - /*!*****************************************************************!*\ - !*** ./src/app/components/main-panel/main-panel.component.scss ***! - \*****************************************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppComponentsMainPanelMainPanelComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9tYWluLXBhbmVsL0M6XFxVc2Vyc1xcTm9lbGlhXFxEZXNrdG9wXFxEQUFcXGRhYWV4YW1wbGVcXHNyY1xcbWFpblxcYW5ndWxhci9zcmNcXGFwcFxcY29tcG9uZW50c1xcbWFpbi1wYW5lbFxcbWFpbi1wYW5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQSIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbWFpbi1wYW5lbC9tYWluLXBhbmVsLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXHJcbiAqIERBQSBFeGFtcGxlXHJcbiAqXHJcbiAqIENvcHlyaWdodCAoQykgMjAxOSAtIE1pZ3VlbCBSZWJvaXJvLUphdG8uXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxyXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxyXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcclxuICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cclxuICpcclxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcclxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cclxuICovXHJcbiJdfQ== */"; - /***/ - }, - - /***/ - "./src/app/components/main-panel/main-panel.component.ts": - /*!***************************************************************!*\ - !*** ./src/app/components/main-panel/main-panel.component.ts ***! - \***************************************************************/ - - /*! exports provided: MainPanelComponent */ - - /***/ - function srcAppComponentsMainPanelMainPanelComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "MainPanelComponent", function () { - return MainPanelComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_cdk_layout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/cdk/layout */ - "./node_modules/@angular/cdk/esm2015/layout.js"); - /* harmony import */ - - - var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! rxjs/operators */ - "./node_modules/rxjs/_esm2015/operators/index.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* harmony import */ - - - var _services_authentication_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( - /*! ../../services/authentication.service */ - "./src/app/services/authentication.service.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var MainPanelComponent = - /*#__PURE__*/ - function () { - function MainPanelComponent(authenticationService, breakpointObserver, router) { - _classCallCheck(this, MainPanelComponent); - - this.authenticationService = authenticationService; - this.breakpointObserver = breakpointObserver; - this.router = router; - this.isHandset$ = this.breakpointObserver.observe(_angular_cdk_layout__WEBPACK_IMPORTED_MODULE_2__["Breakpoints"].Handset).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (result) { - return result.matches; - })); - } - - _createClass(MainPanelComponent, [{ - key: "onLogout", - value: function onLogout() { - this.authenticationService.logout(); - this.router.navigate(['welcome']); - } - }]); - - return MainPanelComponent; - }(); - - MainPanelComponent.ctorParameters = function () { - return [{ - type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_5__["AuthenticationService"] - }, { - type: _angular_cdk_layout__WEBPACK_IMPORTED_MODULE_2__["BreakpointObserver"] - }, { - type: _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"] - }]; - }; - - MainPanelComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-main-panel', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./main-panel.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/components/main-panel/main-panel.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./main-panel.component.scss */ - "./src/app/components/main-panel/main-panel.component.scss")).default] - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_5__["AuthenticationService"], _angular_cdk_layout__WEBPACK_IMPORTED_MODULE_2__["BreakpointObserver"], _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"]])], MainPanelComponent); - /***/ - }, - - /***/ - "./src/app/guards/authenticated.guard.ts": - /*!***********************************************!*\ - !*** ./src/app/guards/authenticated.guard.ts ***! - \***********************************************/ - - /*! exports provided: AuthenticatedGuard */ - - /***/ - function srcAppGuardsAuthenticatedGuardTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "AuthenticatedGuard", function () { - return AuthenticatedGuard; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* harmony import */ - - - var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! rxjs/operators */ - "./node_modules/rxjs/_esm2015/operators/index.js"); - /* harmony import */ - - - var _services_authentication_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! ../services/authentication.service */ - "./src/app/services/authentication.service.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var AuthenticatedGuard = - /*#__PURE__*/ - function () { - function AuthenticatedGuard(authenticationService, router) { - _classCallCheck(this, AuthenticatedGuard); - - this.authenticationService = authenticationService; - this.router = router; - } - - _createClass(AuthenticatedGuard, [{ - key: "canActivate", - value: function canActivate(next, state) { - var _this2 = this; - - if (this.authenticationService.isLogged()) { - return true; - } else { - return this.authenticationService.tryLoginWithStoredCredentials().pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (user) { - return user !== null; - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(function (isLogged) { - if (!isLogged) { - _this2.router.navigate(['welcome']); - } - })); - } - } - }]); - - return AuthenticatedGuard; - }(); - - AuthenticatedGuard.ctorParameters = function () { - return [{ - type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_4__["AuthenticationService"] - }, { - type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] - }]; - }; - - AuthenticatedGuard = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_4__["AuthenticationService"], _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]])], AuthenticatedGuard); - /***/ - }, - - /***/ - "./src/app/guards/unauthenticated.guard.ts": - /*!*************************************************!*\ - !*** ./src/app/guards/unauthenticated.guard.ts ***! - \*************************************************/ - - /*! exports provided: UnauthenticatedGuard */ - - /***/ - function srcAppGuardsUnauthenticatedGuardTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "UnauthenticatedGuard", function () { - return UnauthenticatedGuard; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* harmony import */ - - - var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! rxjs/operators */ - "./node_modules/rxjs/_esm2015/operators/index.js"); - /* harmony import */ - - - var _services_authentication_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! ../services/authentication.service */ - "./src/app/services/authentication.service.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var UnauthenticatedGuard = - /*#__PURE__*/ - function () { - function UnauthenticatedGuard(authenticationService, router) { - _classCallCheck(this, UnauthenticatedGuard); - - this.authenticationService = authenticationService; - this.router = router; - } - - _createClass(UnauthenticatedGuard, [{ - key: "canActivate", - value: function canActivate(next, state) { - var _this3 = this; - - if (this.authenticationService.isLogged()) { - this.router.navigate([]); - return false; - } else { - return this.authenticationService.tryLoginWithStoredCredentials().pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (user) { - return user === null; - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(function (isNotLogged) { - if (!isNotLogged) { - _this3.router.navigate([]); - } - })); - } - } - }]); - - return UnauthenticatedGuard; - }(); - - UnauthenticatedGuard.ctorParameters = function () { - return [{ - type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_4__["AuthenticationService"] - }, { - type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] - }]; - }; - - UnauthenticatedGuard = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_4__["AuthenticationService"], _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]])], UnauthenticatedGuard); - /***/ - }, - - /***/ - "./src/app/interceptors/authentication.interceptor.ts": - /*!************************************************************!*\ - !*** ./src/app/interceptors/authentication.interceptor.ts ***! - \************************************************************/ - - /*! exports provided: AuthenticationInterceptor */ - - /***/ - function srcAppInterceptorsAuthenticationInterceptorTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "AuthenticationInterceptor", function () { - return AuthenticationInterceptor; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _services_authentication_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! ../services/authentication.service */ - "./src/app/services/authentication.service.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var AuthenticationInterceptor = - /*#__PURE__*/ - function () { - function AuthenticationInterceptor(authenticationService) { - _classCallCheck(this, AuthenticationInterceptor); - - this.authenticationService = authenticationService; - } - - _createClass(AuthenticationInterceptor, [{ - key: "intercept", - value: function intercept(request, next) { - var user = this.authenticationService.loggedUser; - - if (user !== null) { - request = request.clone({ - setHeaders: { - Authorization: 'Basic ' + btoa(user.login + ':' + user.password) - } - }); - } - - return next.handle(request); - } - }]); - - return AuthenticationInterceptor; - }(); - - AuthenticationInterceptor.ctorParameters = function () { - return [{ - type: _services_authentication_service__WEBPACK_IMPORTED_MODULE_2__["AuthenticationService"] - }]; - }; - - AuthenticationInterceptor = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_authentication_service__WEBPACK_IMPORTED_MODULE_2__["AuthenticationService"]])], AuthenticationInterceptor); - /***/ - }, - - /***/ - "./src/app/services/authentication.service.ts": - /*!****************************************************!*\ - !*** ./src/app/services/authentication.service.ts ***! - \****************************************************/ - - /*! exports provided: AuthenticationService */ - - /***/ - function srcAppServicesAuthenticationServiceTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "AuthenticationService", function () { - return AuthenticationService; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! rxjs */ - "./node_modules/rxjs/_esm2015/index.js"); - /* harmony import */ - - - var _angular_common_http__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! @angular/common/http */ - "./node_modules/@angular/common/fesm2015/http.js"); - /* harmony import */ - - - var _environments_environment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! ../../environments/environment */ - "./src/environments/environment.ts"); - /* harmony import */ - - - var rxjs_operators__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( - /*! rxjs/operators */ - "./node_modules/rxjs/_esm2015/operators/index.js"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var AuthenticationService_1; - - var AuthenticationService = AuthenticationService_1 = - /*#__PURE__*/ - function () { - function AuthenticationService(http) { - _classCallCheck(this, AuthenticationService); - - this.http = http; - this._loggedUser$ = new rxjs__WEBPACK_IMPORTED_MODULE_2__["BehaviorSubject"](null); - } - - _createClass(AuthenticationService, [{ - key: "isLogged", - value: function isLogged() { - return this.loggedUser !== null; - } - }, { - key: "logout", - value: function logout() { - AuthenticationService_1.clearCredentials(); - - this._loggedUser$.next(null); - } - }, { - key: "tryLoginWithStoredCredentials", - value: function tryLoginWithStoredCredentials() { - var credentials = AuthenticationService_1.loadCredentials(); - - if (credentials !== null) { - return this.tryLogin(credentials); - } else { - return Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["of"])(null); - } - } - }, { - key: "tryLogin", - value: function tryLogin(login, password) { - var _this4 = this; - - var userLogin; - var userPassword; - - if (typeof login === 'string') { - if (password === undefined) { - throw new TypeError('password can\'t be null when login is string'); - } - - userLogin = login; - userPassword = password; - } else { - userLogin = login.login; - userPassword = login.password; - } - - AuthenticationService_1.storeCredentials(userLogin, userPassword); - var headers = new _angular_common_http__WEBPACK_IMPORTED_MODULE_3__["HttpHeaders"]().set('Authorization', 'Basic ' + btoa(userLogin + ':' + userPassword)); - return this.http.get("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_4__["environment"].restApi, "/users/").concat(userLogin), { - headers: headers - }).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["tap"])(function (user) { - return _this4._loggedUser$.next({ - login: userLogin, - password: userPassword - }); - }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["catchError"])(function (error) { - _this4._loggedUser$.next(null); - - throw error; - })); - } - }, { - key: "loggedUser$", - get: function get() { - return this._loggedUser$.asObservable(); - } - }, { - key: "loggedUser", - get: function get() { - return this._loggedUser$.value; - } - }], [{ - key: "clearCredentials", - value: function clearCredentials() { - localStorage.removeItem(AuthenticationService_1.USER_STORAGE_KEY); - } - }, { - key: "loadCredentials", - value: function loadCredentials() { - var serializedCredentials = localStorage.getItem(AuthenticationService_1.USER_STORAGE_KEY); - - if (serializedCredentials !== null) { - return JSON.parse(serializedCredentials); - } else { - return null; - } - } - }, { - key: "storeCredentials", - value: function storeCredentials(login, password) { - var credentials = { - login: login, - password: password - }; - localStorage.setItem(AuthenticationService_1.USER_STORAGE_KEY, JSON.stringify(credentials)); - } - }]); - - return AuthenticationService; - }(); - - AuthenticationService.USER_STORAGE_KEY = 'user'; - - AuthenticationService.ctorParameters = function () { - return [{ - type: _angular_common_http__WEBPACK_IMPORTED_MODULE_3__["HttpClient"] - }]; - }; - - AuthenticationService = AuthenticationService_1 = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_common_http__WEBPACK_IMPORTED_MODULE_3__["HttpClient"]])], AuthenticationService); - /***/ - }, - - /***/ - "./src/environments/environment.ts": - /*!*****************************************!*\ - !*** ./src/environments/environment.ts ***! - \*****************************************/ - - /*! exports provided: environment */ - - /***/ - function srcEnvironmentsEnvironmentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "environment", function () { - return environment; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - // This file can be replaced during build by using the `fileReplacements` array. - // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. - // The list of file replacements can be found in `angular.json`. - - - var environment = { - production: false, - restApi: 'http://localhost:9080/DAAExample/rest' - }; - /* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ - // import 'zone.js/dist/zone-error'; // Included with Angular CLI. - - /***/ - }, - - /***/ - "./src/main.ts": - /*!*********************!*\ - !*** ./src/main.ts ***! - \*********************/ - - /*! no exports provided */ - - /***/ - function srcMainTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/platform-browser-dynamic */ - "./node_modules/@angular/platform-browser-dynamic/fesm2015/platform-browser-dynamic.js"); - /* harmony import */ - - - var _app_app_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ./app/app.module */ - "./src/app/app.module.ts"); - /* harmony import */ - - - var _environments_environment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! ./environments/environment */ - "./src/environments/environment.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - if (_environments_environment__WEBPACK_IMPORTED_MODULE_4__["environment"].production) { - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["enableProdMode"])(); - } - - Object(_angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_2__["platformBrowserDynamic"])().bootstrapModule(_app_app_module__WEBPACK_IMPORTED_MODULE_3__["AppModule"]).catch(function (err) { - return console.error(err); - }); - /***/ - }, - - /***/ - 0: - /*!***************************!*\ - !*** multi ./src/main.ts ***! - \***************************/ - - /*! no static exports found */ - - /***/ - function _(module, exports, __webpack_require__) { - module.exports = __webpack_require__( - /*! C:\Users\Noelia\Desktop\DAA\daaexample\src\main\angular\src\main.ts */ - "./src/main.ts"); - /***/ - } -}, [[0, "runtime", "vendor"]]]); -//# sourceMappingURL=main-es5.js.map \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/main-es5.js.map b/target/catalina-base/webapps/DAAExample/main-es5.js.map deleted file mode 100644 index 169aa30574098075b70202e311151e22e865a6ab..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/main-es5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["src/app/app.component.html","src/app/components/login-panel/login-panel.component.html","src/app/components/main-panel/main-panel.component.html","node_modules/tslib/tslib.es6.js","src/$_lazy_route_resource lazy namespace object","src/app/app-routing.module.ts","src/app/app.component.scss","src/app/app.component.ts","src/app/app.module.ts","src/app/components/login-panel/login-panel.component.scss","src/app/components/login-panel/login-panel.component.ts","src/app/components/main-panel/main-panel.component.scss","src/app/components/main-panel/main-panel.component.ts","src/app/guards/authenticated.guard.ts","src/app/guards/unauthenticated.guard.ts","src/app/interceptors/authentication.interceptor.ts","src/app/services/authentication.service.ts","src/environments/environment.ts","src/main.ts"],"names":[],"mappings":"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","sourcesContent":["export default \"\\r\\n\\r\\n\\r\\n\"","export default \"\\r\\n\\r\\n
    \\r\\n
    \\r\\n

    DAA Example - Angular

    \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n\"","export default \"\\r\\n\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\r\\n DAA Example\\r\\n \\r\\n\\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\"","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport {UnauthenticatedGuard} from './guards/unauthenticated.guard';\r\nimport {AuthenticatedGuard} from './guards/authenticated.guard';\r\nimport {LoginPanelComponent} from './components/login-panel/login-panel.component';\r\nimport {MainPanelComponent} from './components/main-panel/main-panel.component';\r\nimport {PetsFormComponent} from './modules/pets/components/pets-form/pets-form.component';\r\n\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'welcome',\r\n pathMatch: 'full',\r\n component: LoginPanelComponent,\r\n canActivate: [UnauthenticatedGuard]\r\n },\r\n {\r\n path: '',\r\n component: MainPanelComponent,\r\n canActivate: [AuthenticatedGuard],\r\n children: [\r\n {\r\n path: '',\r\n redirectTo: 'people',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: 'people',\r\n loadChildren: () => import('./modules/people/people.module').then(m => m.PeopleModule)\r\n },\r\n {\r\n path: 'listPets/:person',\r\n redirectTo: ':person',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: ':person',\r\n loadChildren: () => import('./modules/pets/pets.module').then(m => m.PetsModule)\r\n }\r\n ]\r\n },\r\n \r\n\r\n \r\n \r\n \r\n /*{\r\n path: 'pets/:person',\r\n pathMatch: 'full',\r\n component: PetsFormComponent,\r\n canActivate: [AuthenticatedGuard]\r\n }*/\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQzpcXFVzZXJzXFxOb2VsaWFcXERlc2t0b3BcXERBQVxcZGFhZXhhbXBsZVxcc3JjXFxtYWluXFxhbmd1bGFyL3NyY1xcYXBwXFxhcHAuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUEiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcclxuICogREFBIEV4YW1wbGVcclxuICpcclxuICogQ29weXJpZ2h0IChDKSAyMDE5IC0gTWlndWVsIFJlYm9pcm8tSmF0by5cclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXHJcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXHJcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxyXG4gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxyXG4gKlxyXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxyXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxyXG4gKi9cclxuXHJcbiJdfQ== */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent {\r\n title = 'angular';\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {BrowserModule} from '@angular/platform-browser';\r\nimport {NgModule} from '@angular/core';\r\n\r\nimport {AppRoutingModule} from './app-routing.module';\r\nimport {AppComponent} from './app.component';\r\nimport {LoginPanelComponent} from './components/login-panel/login-panel.component';\r\nimport {MainPanelComponent} from './components/main-panel/main-panel.component';\r\nimport {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {CommonModule, HashLocationStrategy, LocationStrategy} from '@angular/common';\r\nimport {AuthenticationInterceptor} from './interceptors/authentication.interceptor';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n LoginPanelComponent,\r\n MainPanelComponent,\r\n ],\r\n imports: [\r\n AppRoutingModule,\r\n BrowserModule,\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule\r\n ],\r\n providers: [\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AuthenticationInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: LocationStrategy,\r\n useClass: HashLocationStrategy\r\n }\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {\r\n}\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n#container {\\n height: 100%;\\n width: 100%;\\n display: -webkit-box;\\n display: flex;\\n -ms-flex-align: center;\\n -ms-flex-pack: center;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n justify-content: center;\\n padding-top: 40px;\\n padding-bottom: 40px;\\n}\\n.form-signin {\\n width: 100%;\\n max-width: 330px;\\n padding: 15px;\\n margin: 0 auto;\\n}\\n.form-signin .form-control {\\n position: relative;\\n box-sizing: border-box;\\n height: auto;\\n padding: 10px;\\n font-size: 16px;\\n}\\n.form-signin .form-control:focus {\\n z-index: 2;\\n}\\n#login {\\n margin-bottom: -1px;\\n border-bottom-right-radius: 0;\\n border-bottom-left-radius: 0;\\n}\\n#password {\\n margin-bottom: 10px;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXGNvbXBvbmVudHNcXGxvZ2luLXBhbmVsXFxsb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9sb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQW1CQTtFQUNFLFlBQUE7RUFDQSxXQUFBO0VBRUEsb0JBQUE7RUFDQSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxxQkFBQTtFQUNBLHlCQUFBO0VBQ0EsbUJBQUE7RUFDQSx3QkFBQTtFQUNBLHVCQUFBO0VBQ0EsaUJBQUE7RUFDQSxvQkFBQTtBQ0FGO0FER0E7RUFDRSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0VBQ0EsY0FBQTtBQ0FGO0FER0E7RUFDRSxrQkFBQTtFQUNBLHNCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxlQUFBO0FDQUY7QURHQTtFQUNFLFVBQUE7QUNBRjtBREdBO0VBQ0UsbUJBQUE7RUFDQSw2QkFBQTtFQUNBLDRCQUFBO0FDQUY7QURHQTtFQUNFLG1CQUFBO0VBQ0EseUJBQUE7RUFDQSwwQkFBQTtBQ0FGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi1wYW5lbC9sb2dpbi1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuI2NvbnRhaW5lciB7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcclxuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XHJcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBwYWRkaW5nLXRvcDogNDBweDtcclxuICBwYWRkaW5nLWJvdHRvbTogNDBweDtcclxufVxyXG5cclxuLmZvcm0tc2lnbmluIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXgtd2lkdGg6IDMzMHB4O1xyXG4gIHBhZGRpbmc6IDE1cHg7XHJcbiAgbWFyZ2luOiAwIGF1dG87XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgcGFkZGluZzogMTBweDtcclxuICBmb250LXNpemU6IDE2cHg7XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sOmZvY3VzIHtcclxuICB6LWluZGV4OiAyO1xyXG59XHJcblxyXG4jbG9naW4ge1xyXG4gIG1hcmdpbi1ib3R0b206IC0xcHg7XHJcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcclxufVxyXG5cclxuI3Bhc3N3b3JkIHtcclxuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XHJcbn1cclxuIiwiLyohXG4gKiBEQUEgRXhhbXBsZVxuICpcbiAqIENvcHlyaWdodCAoQykgMjAxOSAtIE1pZ3VlbCBSZWJvaXJvLUphdG8uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cbiNjb250YWluZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XG4gIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZy10b3A6IDQwcHg7XG4gIHBhZGRpbmctYm90dG9tOiA0MHB4O1xufVxuXG4uZm9ybS1zaWduaW4ge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAzMzBweDtcbiAgcGFkZGluZzogMTVweDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5mb3JtLXNpZ25pbiAuZm9ybS1jb250cm9sIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cblxuLmZvcm0tc2lnbmluIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuICB6LWluZGV4OiAyO1xufVxuXG4jbG9naW4ge1xuICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuI3Bhc3N3b3JkIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG59Il19 */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Component} from '@angular/core';\r\nimport {Router} from '@angular/router';\r\nimport {AuthenticationService} from '../../services/authentication.service';\r\nimport {UserModel} from '../../models';\r\n\r\n@Component({\r\n selector: 'app-login-panel',\r\n templateUrl: './login-panel.component.html',\r\n styleUrls: ['./login-panel.component.scss']\r\n})\r\nexport class LoginPanelComponent {\r\n public login: string;\r\n public password: string;\r\n\r\n public constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly router: Router\r\n ) {\r\n this.login = '';\r\n this.password = '';\r\n }\r\n\r\n public onLogin(): void {\r\n const credentials: UserModel = {\r\n login: this.login,\r\n password: this.password\r\n };\r\n\r\n this.authenticationService.tryLogin(credentials)\r\n .subscribe(() => this.router.navigate(['/']));\r\n }\r\n\r\n}\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9tYWluLXBhbmVsL0M6XFxVc2Vyc1xcTm9lbGlhXFxEZXNrdG9wXFxEQUFcXGRhYWV4YW1wbGVcXHNyY1xcbWFpblxcYW5ndWxhci9zcmNcXGFwcFxcY29tcG9uZW50c1xcbWFpbi1wYW5lbFxcbWFpbi1wYW5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQSIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbWFpbi1wYW5lbC9tYWluLXBhbmVsLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXHJcbiAqIERBQSBFeGFtcGxlXHJcbiAqXHJcbiAqIENvcHlyaWdodCAoQykgMjAxOSAtIE1pZ3VlbCBSZWJvaXJvLUphdG8uXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxyXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxyXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcclxuICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cclxuICpcclxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcclxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cclxuICovXHJcbiJdfQ== */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Component} from '@angular/core';\r\nimport {Observable} from 'rxjs';\r\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\r\nimport {map} from 'rxjs/operators';\r\nimport {Router} from '@angular/router';\r\nimport {AuthenticationService} from '../../services/authentication.service';\r\n\r\n@Component({\r\n selector: 'app-main-panel',\r\n templateUrl: './main-panel.component.html',\r\n styleUrls: ['./main-panel.component.scss']\r\n})\r\nexport class MainPanelComponent {\r\n public readonly isHandset$: Observable;\r\n\r\n public constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly breakpointObserver: BreakpointObserver,\r\n private readonly router: Router\r\n ) {\r\n this.isHandset$ = this.breakpointObserver.observe(Breakpoints.Handset)\r\n .pipe(\r\n map(result => result.matches)\r\n );\r\n }\r\n\r\n public onLogout(): void {\r\n this.authenticationService.logout();\r\n this.router.navigate(['welcome']);\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router';\r\nimport {Observable} from 'rxjs';\r\nimport {map, tap} from 'rxjs/operators';\r\nimport {AuthenticationService} from '../services/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticatedGuard implements CanActivate {\r\n public constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly router: Router\r\n ) {}\r\n\r\n public canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean | Observable {\r\n if (this.authenticationService.isLogged()) {\r\n return true;\r\n } else {\r\n return this.authenticationService.tryLoginWithStoredCredentials()\r\n .pipe(\r\n map(user => user !== null),\r\n tap(isLogged => {\r\n if (!isLogged) {\r\n this.router.navigate(['welcome']);\r\n }\r\n })\r\n );\r\n }\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router';\r\nimport {map, tap} from 'rxjs/operators';\r\nimport {Observable} from 'rxjs';\r\nimport {AuthenticationService} from '../services/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UnauthenticatedGuard implements CanActivate {\r\n public constructor(\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly router: Router\r\n ) {}\r\n\r\n public canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean | Observable {\r\n if (this.authenticationService.isLogged()) {\r\n this.router.navigate([]);\r\n return false;\r\n } else {\r\n return this.authenticationService.tryLoginWithStoredCredentials()\r\n .pipe(\r\n map(user => user === null),\r\n tap(isNotLogged => {\r\n if (!isNotLogged) {\r\n this.router.navigate([]);\r\n }\r\n })\r\n );\r\n }\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\r\nimport {Observable} from 'rxjs';\r\nimport {AuthenticationService} from '../services/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationInterceptor implements HttpInterceptor {\r\n\r\n public constructor(public authenticationService: AuthenticationService) {\r\n }\r\n\r\n public intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n const user = this.authenticationService.loggedUser;\r\n\r\n if (user !== null) {\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: 'Basic ' + btoa(user.login + ':' + user.password)\r\n }\r\n });\r\n }\r\n\r\n return next.handle(request);\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {BehaviorSubject, Observable, of} from 'rxjs';\r\nimport {UserModel} from '../models';\r\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\r\nimport {environment} from '../../environments/environment';\r\nimport {catchError, tap} from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationService {\r\n private static readonly USER_STORAGE_KEY = 'user';\r\n\r\n private readonly _loggedUser$: BehaviorSubject;\r\n\r\n private static clearCredentials(): void {\r\n localStorage.removeItem(AuthenticationService.USER_STORAGE_KEY);\r\n }\r\n\r\n private static loadCredentials(): UserModel | null {\r\n const serializedCredentials = localStorage.getItem(AuthenticationService.USER_STORAGE_KEY);\r\n\r\n if (serializedCredentials !== null) {\r\n return JSON.parse(serializedCredentials);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n private static storeCredentials(login: string, password: string): void {\r\n const credentials: UserModel = {login, password};\r\n\r\n localStorage.setItem(AuthenticationService.USER_STORAGE_KEY, JSON.stringify(credentials));\r\n }\r\n\r\n public constructor(\r\n private readonly http: HttpClient\r\n ) {\r\n this._loggedUser$ = new BehaviorSubject(null);\r\n }\r\n\r\n public get loggedUser$(): Observable {\r\n return this._loggedUser$.asObservable();\r\n }\r\n\r\n public get loggedUser(): UserModel | null {\r\n return this._loggedUser$.value;\r\n }\r\n\r\n public isLogged(): boolean {\r\n return this.loggedUser !== null;\r\n }\r\n\r\n public logout(): void {\r\n AuthenticationService.clearCredentials();\r\n this._loggedUser$.next(null);\r\n }\r\n\r\n public tryLoginWithStoredCredentials(): Observable {\r\n const credentials = AuthenticationService.loadCredentials();\r\n\r\n if (credentials !== null) {\r\n return this.tryLogin(credentials);\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n\r\n public tryLogin(login: UserModel): Observable;\r\n public tryLogin(login: string, password: string): Observable;\r\n\r\n public tryLogin(login: string | UserModel, password?: string): Observable {\r\n let userLogin: string;\r\n let userPassword: string;\r\n\r\n if (typeof login === 'string') {\r\n if (password === undefined) {\r\n throw new TypeError('password can\\'t be null when login is string');\r\n }\r\n\r\n userLogin = login;\r\n userPassword = password;\r\n } else {\r\n userLogin = login.login;\r\n userPassword = login.password;\r\n }\r\n AuthenticationService.storeCredentials(userLogin, userPassword);\r\n\r\n const headers = new HttpHeaders()\r\n .set('Authorization', 'Basic ' + btoa(userLogin + ':' + userPassword));\r\n\r\n return this.http.get(`${environment.restApi}/users/${userLogin}`, {\r\n headers: headers\r\n })\r\n .pipe(\r\n tap(user => this._loggedUser$.next({\r\n login: userLogin,\r\n password: userPassword\r\n })),\r\n catchError(error => {\r\n this._loggedUser$.next(null);\r\n throw error;\r\n })\r\n );\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\n// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false,\r\n restApi: 'http://localhost:9080/DAAExample/rest'\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"sourceRoot":"webpack:///","file":"main-es5.js"} \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/modules-people-people-module-es2015.js b/target/catalina-base/webapps/DAAExample/modules-people-people-module-es2015.js deleted file mode 100644 index 3bc0ffe86402d295e558d1e0f50d6a36d9f7dfab..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/modules-people-people-module-es2015.js +++ /dev/null @@ -1,571 +0,0 @@ -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["modules-people-people-module"],{ - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-form/people-form.component.html": -/*!************************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-form/people-form.component.html ***! - \************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n\r\n
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n"); - -/***/ }), - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-list/people-list.component.html": -/*!************************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-list/people-list.component.html ***! - \************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    NombreApellido 
    {{person.name}}{{person.surname}}\r\n \r\n \r\n \r\n
    \r\n"); - -/***/ }), - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-main/people-main.component.html": -/*!************************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-main/people-main.component.html ***! - \************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n\r\n

    Personas

    \r\n\r\n\r\n"); - -/***/ }), - -/***/ "./src/app/modules/people/components/people-form/people-form.component.scss": -/*!**********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-form/people-form.component.scss ***! - \**********************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtZm9ybS9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLWZvcm1cXHBlb3BsZS1mb3JtLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtZm9ybS9wZW9wbGUtZm9ybS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */"); - -/***/ }), - -/***/ "./src/app/modules/people/components/people-form/people-form.component.ts": -/*!********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-form/people-form.component.ts ***! - \********************************************************************************/ -/*! exports provided: PeopleFormComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PeopleFormComponent", function() { return PeopleFormComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _models_person_model__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../models/person.model */ "./src/app/modules/people/models/person.model.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - -let PeopleFormComponent = class PeopleFormComponent { - constructor() { - this.modify = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - this.clean = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - } - set person(person) { - this.activePerson = person; - this.name = person.name; - this.surname = person.surname; - } - get person() { - return this.activePerson; - } - onModify() { - this.modify.emit({ - id: this.person.id, - name: this.name, - surname: this.surname - }); - } - onClean() { - this.clean.emit(); - } -}; -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]) -], PeopleFormComponent.prototype, "modify", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]) -], PeopleFormComponent.prototype, "clean", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _models_person_model__WEBPACK_IMPORTED_MODULE_2__["PersonModel"]), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_models_person_model__WEBPACK_IMPORTED_MODULE_2__["PersonModel"]]) -], PeopleFormComponent.prototype, "person", null); -PeopleFormComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-people-form', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./people-form.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-form/people-form.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./people-form.component.scss */ "./src/app/modules/people/components/people-form/people-form.component.scss")).default] - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", []) -], PeopleFormComponent); - - - -/***/ }), - -/***/ "./src/app/modules/people/components/people-list/people-list.component.scss": -/*!**********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-list/people-list.component.scss ***! - \**********************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbGlzdC9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLWxpc3RcXHBlb3BsZS1saXN0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbGlzdC9wZW9wbGUtbGlzdC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */"); - -/***/ }), - -/***/ "./src/app/modules/people/components/people-list/people-list.component.ts": -/*!********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-list/people-list.component.ts ***! - \********************************************************************************/ -/*! exports provided: PeopleListComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PeopleListComponent", function() { return PeopleListComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - -let PeopleListComponent = class PeopleListComponent { - constructor(router) { - this.router = router; - this.people = []; - this.edit = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - this.delete = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - } - onEdit(person) { - this.edit.emit(person); - } - onDelete(person) { - this.delete.emit(person); - } - pets(person) { - this.router.navigate(['//listPets', person.id]); - } -}; -PeopleListComponent.ctorParameters = () => [ - { type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] } -]; -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", Array) -], PeopleListComponent.prototype, "people", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]) -], PeopleListComponent.prototype, "edit", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]) -], PeopleListComponent.prototype, "delete", void 0); -PeopleListComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-people-list', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./people-list.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-list/people-list.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./people-list.component.scss */ "./src/app/modules/people/components/people-list/people-list.component.scss")).default] - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]]) -], PeopleListComponent); - - - -/***/ }), - -/***/ "./src/app/modules/people/components/people-main/people-main.component.scss": -/*!**********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-main/people-main.component.scss ***! - \**********************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbWFpbi9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLW1haW5cXHBlb3BsZS1tYWluLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbWFpbi9wZW9wbGUtbWFpbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */"); - -/***/ }), - -/***/ "./src/app/modules/people/components/people-main/people-main.component.ts": -/*!********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-main/people-main.component.ts ***! - \********************************************************************************/ -/*! exports provided: PeopleMainComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PeopleMainComponent", function() { return PeopleMainComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _services_people_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/people.service */ "./src/app/modules/people/services/people.service.ts"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - -let PeopleMainComponent = class PeopleMainComponent { - constructor(peopleService) { - this.peopleService = peopleService; - this.people = []; - this.clearActivePerson(); - } - ngOnInit() { - this.peopleService.list() - .subscribe(people => this.people = people); - } - onEdit(person) { - this.activePerson = person; - } - onDelete(person) { - if (confirm(`¿Estás seguro de que deseas eliminar a ${person.name} ${person.surname}?`)) { - this.peopleService.delete(person) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(() => this.peopleService.list())) - .subscribe(people => this.people = people); - } - } - onCleanForm() { - this.clearActivePerson(); - } - onModifyForm(person) { - if (person.id === undefined) { - this.peopleService.create(person) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(() => this.peopleService.list())) - .subscribe(people => { - this.people = people; - this.clearActivePerson(); - }); - } - else { - this.peopleService.modify(person) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(() => this.peopleService.list())) - .subscribe(people => { - this.people = people; - this.clearActivePerson(); - }); - } - } - clearActivePerson() { - this.activePerson = { id: undefined, name: '', surname: '' }; - } -}; -PeopleMainComponent.ctorParameters = () => [ - { type: _services_people_service__WEBPACK_IMPORTED_MODULE_2__["PeopleService"] } -]; -PeopleMainComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-people-main', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./people-main.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-main/people-main.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./people-main.component.scss */ "./src/app/modules/people/components/people-main/people-main.component.scss")).default] - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_people_service__WEBPACK_IMPORTED_MODULE_2__["PeopleService"]]) -], PeopleMainComponent); - - - -/***/ }), - -/***/ "./src/app/modules/people/models/person.model.ts": -/*!*******************************************************!*\ - !*** ./src/app/modules/people/models/person.model.ts ***! - \*******************************************************/ -/*! exports provided: PersonModel */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PersonModel", function() { return PersonModel; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - -class PersonModel { -} - - -/***/ }), - -/***/ "./src/app/modules/people/people-routing.module.ts": -/*!*********************************************************!*\ - !*** ./src/app/modules/people/people-routing.module.ts ***! - \*********************************************************/ -/*! exports provided: PeopleRoutingModule */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PeopleRoutingModule", function() { return PeopleRoutingModule; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* harmony import */ var _components_people_main_people_main_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/people-main/people-main.component */ "./src/app/modules/people/components/people-main/people-main.component.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - -const routes = [ - { - path: '', - component: _components_people_main_people_main_component__WEBPACK_IMPORTED_MODULE_3__["PeopleMainComponent"] - } -]; -let PeopleRoutingModule = class PeopleRoutingModule { -}; -PeopleRoutingModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - imports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"].forChild(routes)], - exports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"]] - }) -], PeopleRoutingModule); - - - -/***/ }), - -/***/ "./src/app/modules/people/people.module.ts": -/*!*************************************************!*\ - !*** ./src/app/modules/people/people.module.ts ***! - \*************************************************/ -/*! exports provided: PeopleModule */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PeopleModule", function() { return PeopleModule; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/common */ "./node_modules/@angular/common/fesm2015/common.js"); -/* harmony import */ var _people_routing_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./people-routing.module */ "./src/app/modules/people/people-routing.module.ts"); -/* harmony import */ var _components_people_list_people_list_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/people-list/people-list.component */ "./src/app/modules/people/components/people-list/people-list.component.ts"); -/* harmony import */ var _components_people_form_people_form_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/people-form/people-form.component */ "./src/app/modules/people/components/people-form/people-form.component.ts"); -/* harmony import */ var _components_people_main_people_main_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/people-main/people-main.component */ "./src/app/modules/people/components/people-main/people-main.component.ts"); -/* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/forms */ "./node_modules/@angular/forms/fesm2015/forms.js"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - - - - - -let PeopleModule = class PeopleModule { -}; -PeopleModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - declarations: [ - _components_people_form_people_form_component__WEBPACK_IMPORTED_MODULE_5__["PeopleFormComponent"], - _components_people_list_people_list_component__WEBPACK_IMPORTED_MODULE_4__["PeopleListComponent"], - _components_people_main_people_main_component__WEBPACK_IMPORTED_MODULE_6__["PeopleMainComponent"] - ], - imports: [ - _angular_common__WEBPACK_IMPORTED_MODULE_2__["CommonModule"], - _angular_forms__WEBPACK_IMPORTED_MODULE_7__["FormsModule"], - _people_routing_module__WEBPACK_IMPORTED_MODULE_3__["PeopleRoutingModule"] - ] - }) -], PeopleModule); - - - -/***/ }), - -/***/ "./src/app/modules/people/services/people.service.ts": -/*!***********************************************************!*\ - !*** ./src/app/modules/people/services/people.service.ts ***! - \***********************************************************/ -/*! exports provided: PeopleService */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PeopleService", function() { return PeopleService; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/common/http */ "./node_modules/@angular/common/fesm2015/http.js"); -/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../environments/environment */ "./src/environments/environment.ts"); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - - -let PeopleService = class PeopleService { - constructor(http) { - this.http = http; - } - list() { - return this.http.get(`${_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi}/people`); - } - create(person) { - const data = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpParams"]() - .set('name', person.name) - .set('surname', person.surname); - return this.http.post(`${_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi}/people`, data); - } - modify(person) { - const data = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpParams"]() - .set('name', person.name) - .set('surname', person.surname); - return this.http.put(`${_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi}/people/${person.id}`, data); - } - delete(person) { - return this.http.delete(`${_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi}/people/${person.id}`); - } -}; -PeopleService.ctorParameters = () => [ - { type: _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"] } -]; -PeopleService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"]]) -], PeopleService); - - - -/***/ }) - -}]); -//# sourceMappingURL=modules-people-people-module-es2015.js.map \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/modules-people-people-module-es2015.js.map b/target/catalina-base/webapps/DAAExample/modules-people-people-module-es2015.js.map deleted file mode 100644 index 1fc06c23bf688f1c77443ef20ab9a1c7a2f79a9c..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/modules-people-people-module-es2015.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["./src/app/modules/people/components/people-form/people-form.component.html","./src/app/modules/people/components/people-list/people-list.component.html","./src/app/modules/people/components/people-main/people-main.component.html","./src/app/modules/people/components/people-form/people-form.component.scss","./src/app/modules/people/components/people-form/people-form.component.ts","./src/app/modules/people/components/people-list/people-list.component.scss","./src/app/modules/people/components/people-list/people-list.component.ts","./src/app/modules/people/components/people-main/people-main.component.scss","./src/app/modules/people/components/people-main/people-main.component.ts","./src/app/modules/people/models/person.model.ts","./src/app/modules/people/people-routing.module.ts","./src/app/modules/people/people.module.ts","./src/app/modules/people/services/people.service.ts"],"names":[],"mappings":"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","file":"modules-people-people-module-es2015.js","sourcesContent":["export default \"\\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\"","export default \"\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    NombreApellido 
    {{person.name}}{{person.surname}}\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n\"","export default \"\\r\\n\\r\\n

    Personas

    \\r\\n\\r\\n\\r\\n\"","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtZm9ybS9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLWZvcm1cXHBlb3BsZS1mb3JtLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtZm9ybS9wZW9wbGUtZm9ybS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {PersonModel} from '../../models/person.model';\r\n\r\n@Component({\r\n selector: 'app-people-form',\r\n templateUrl: './people-form.component.html',\r\n styleUrls: ['./people-form.component.scss']\r\n})\r\nexport class PeopleFormComponent {\r\n public activePerson: PersonModel;\r\n\r\n @Output()\r\n public readonly modify: EventEmitter;\r\n @Output()\r\n public readonly clean: EventEmitter;\r\n\r\n public name: string;\r\n public surname: string;\r\n\r\n public constructor() {\r\n this.modify = new EventEmitter();\r\n this.clean = new EventEmitter();\r\n }\r\n\r\n @Input()\r\n public set person(person: PersonModel) {\r\n this.activePerson = person;\r\n this.name = person.name;\r\n this.surname = person.surname;\r\n }\r\n\r\n public get person(): PersonModel {\r\n return this.activePerson;\r\n }\r\n\r\n public onModify() {\r\n this.modify.emit({\r\n id: this.person.id,\r\n name: this.name,\r\n surname: this.surname\r\n });\r\n }\r\n\r\n public onClean() {\r\n this.clean.emit();\r\n }\r\n}\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbGlzdC9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLWxpc3RcXHBlb3BsZS1saXN0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbGlzdC9wZW9wbGUtbGlzdC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {PersonModel} from '../../models/person.model';\r\nimport {PeopleService} from '../../services/people.service';\r\nimport {Router} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-people-list',\r\n templateUrl: './people-list.component.html',\r\n styleUrls: ['./people-list.component.scss']\r\n})\r\nexport class PeopleListComponent {\r\n\r\n @Input()\r\n public people: PersonModel[] = [];\r\n\r\n @Output()\r\n public readonly edit: EventEmitter;\r\n @Output()\r\n public readonly delete: EventEmitter;\r\n\r\n public constructor(private readonly router: Router) {\r\n this.edit = new EventEmitter();\r\n this.delete = new EventEmitter();\r\n }\r\n\r\n public onEdit(person: PersonModel) {\r\n this.edit.emit(person);\r\n }\r\n\r\n public onDelete(person: PersonModel) {\r\n this.delete.emit(person);\r\n }\r\n\r\n public pets(person: PersonModel){\r\n this.router.navigate(['//listPets',person.id]);\r\n }\r\n}\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbWFpbi9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLW1haW5cXHBlb3BsZS1tYWluLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbWFpbi9wZW9wbGUtbWFpbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport { Component, OnInit } from '@angular/core';\r\nimport {PersonModel} from '../../models/person.model';\r\nimport {PeopleService} from '../../services/people.service';\r\nimport {map, mergeMap} from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-people-main',\r\n templateUrl: './people-main.component.html',\r\n styleUrls: ['./people-main.component.scss']\r\n})\r\nexport class PeopleMainComponent implements OnInit {\r\n public activePerson: PersonModel;\r\n public people: PersonModel[];\r\n\r\n public constructor(\r\n private readonly peopleService: PeopleService\r\n ) {\r\n this.people = [];\r\n this.clearActivePerson();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.peopleService.list()\r\n .subscribe(people => this.people = people);\r\n }\r\n\r\n public onEdit(person: PersonModel): void {\r\n this.activePerson = person;\r\n }\r\n\r\n public onDelete(person: PersonModel): void {\r\n if (confirm(`¿Estás seguro de que deseas eliminar a ${person.name} ${person.surname}?`)) {\r\n this.peopleService.delete(person)\r\n .pipe(\r\n mergeMap(() => this.peopleService.list())\r\n )\r\n .subscribe(people => this.people = people);\r\n }\r\n }\r\n\r\n public onCleanForm(): void {\r\n this.clearActivePerson();\r\n }\r\n\r\n public onModifyForm(person: PersonModel): void {\r\n if (person.id === undefined) {\r\n this.peopleService.create(person)\r\n .pipe(\r\n mergeMap(() => this.peopleService.list())\r\n )\r\n .subscribe(people => {\r\n this.people = people;\r\n this.clearActivePerson();\r\n });\r\n } else {\r\n this.peopleService.modify(person)\r\n .pipe(\r\n mergeMap(() => this.peopleService.list())\r\n )\r\n .subscribe(people => {\r\n this.people = people;\r\n this.clearActivePerson();\r\n });\r\n }\r\n }\r\n\r\n private clearActivePerson(): void {\r\n this.activePerson = { id: undefined, name: '', surname: '' };\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nexport class PersonModel {\r\n id?: number;\r\n name: string;\r\n surname: string;\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {NgModule} from '@angular/core';\r\nimport {RouterModule, Routes} from '@angular/router';\r\nimport {PeopleMainComponent} from './components/people-main/people-main.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: PeopleMainComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class PeopleRoutingModule { }\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\n\r\nimport {PeopleRoutingModule} from './people-routing.module';\r\nimport {PeopleListComponent} from './components/people-list/people-list.component';\r\nimport {PeopleFormComponent} from './components/people-form/people-form.component';\r\nimport {PeopleMainComponent} from './components/people-main/people-main.component';\r\nimport {FormsModule} from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [\r\n PeopleFormComponent,\r\n PeopleListComponent,\r\n PeopleMainComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n PeopleRoutingModule\r\n ]\r\n})\r\nexport class PeopleModule {\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\r\nimport {environment} from '../../../../environments/environment';\r\nimport {Observable} from 'rxjs';\r\nimport {PersonModel} from '../models/person.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PeopleService {\r\n\r\n public constructor(private readonly http: HttpClient) { }\r\n\r\n public list(): Observable {\r\n return this.http.get(`${environment.restApi}/people`);\r\n }\r\n\r\n public create(person: PersonModel): Observable {\r\n const data = new HttpParams()\r\n .set('name', person.name)\r\n .set('surname', person.surname);\r\n\r\n return this.http.post(`${environment.restApi}/people`, data);\r\n }\r\n\r\n public modify(person: PersonModel): Observable {\r\n const data = new HttpParams()\r\n .set('name', person.name)\r\n .set('surname', person.surname);\r\n\r\n return this.http.put(`${environment.restApi}/people/${person.id}`, data);\r\n }\r\n\r\n public delete(person: PersonModel): Observable {\r\n return this.http.delete(`${environment.restApi}/people/${person.id}`);\r\n }\r\n}\r\n"],"sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/modules-people-people-module-es5.js b/target/catalina-base/webapps/DAAExample/modules-people-people-module-es5.js deleted file mode 100644 index 5e82290c7c37798ca19c539f5e81eaf8116c2fce..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/modules-people-people-module-es5.js +++ /dev/null @@ -1,850 +0,0 @@ -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["modules-people-people-module"], { - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-form/people-form.component.html": - /*!************************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-form/people-form.component.html ***! - \************************************************************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppModulesPeopleComponentsPeopleFormPeopleFormComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n\r\n
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n"; - /***/ - }, - - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-list/people-list.component.html": - /*!************************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-list/people-list.component.html ***! - \************************************************************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppModulesPeopleComponentsPeopleListPeopleListComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    NombreApellido 
    {{person.name}}{{person.surname}}\r\n \r\n \r\n \r\n
    \r\n"; - /***/ - }, - - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-main/people-main.component.html": - /*!************************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-main/people-main.component.html ***! - \************************************************************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppModulesPeopleComponentsPeopleMainPeopleMainComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n\r\n

    Personas

    \r\n\r\n\r\n"; - /***/ - }, - - /***/ - "./src/app/modules/people/components/people-form/people-form.component.scss": - /*!**********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-form/people-form.component.scss ***! - \**********************************************************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppModulesPeopleComponentsPeopleFormPeopleFormComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtZm9ybS9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLWZvcm1cXHBlb3BsZS1mb3JtLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtZm9ybS9wZW9wbGUtZm9ybS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */"; - /***/ - }, - - /***/ - "./src/app/modules/people/components/people-form/people-form.component.ts": - /*!********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-form/people-form.component.ts ***! - \********************************************************************************/ - - /*! exports provided: PeopleFormComponent */ - - /***/ - function srcAppModulesPeopleComponentsPeopleFormPeopleFormComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PeopleFormComponent", function () { - return PeopleFormComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _models_person_model__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! ../../models/person.model */ - "./src/app/modules/people/models/person.model.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var PeopleFormComponent = - /*#__PURE__*/ - function () { - function PeopleFormComponent() { - _classCallCheck(this, PeopleFormComponent); - - this.modify = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - this.clean = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - } - - _createClass(PeopleFormComponent, [{ - key: "onModify", - value: function onModify() { - this.modify.emit({ - id: this.person.id, - name: this.name, - surname: this.surname - }); - } - }, { - key: "onClean", - value: function onClean() { - this.clean.emit(); - } - }, { - key: "person", - set: function set(person) { - this.activePerson = person; - this.name = person.name; - this.surname = person.surname; - }, - get: function get() { - return this.activePerson; - } - }]); - - return PeopleFormComponent; - }(); - - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])], PeopleFormComponent.prototype, "modify", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])], PeopleFormComponent.prototype, "clean", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _models_person_model__WEBPACK_IMPORTED_MODULE_2__["PersonModel"]), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_models_person_model__WEBPACK_IMPORTED_MODULE_2__["PersonModel"]])], PeopleFormComponent.prototype, "person", null); - PeopleFormComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-people-form', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./people-form.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-form/people-form.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./people-form.component.scss */ - "./src/app/modules/people/components/people-form/people-form.component.scss")).default] - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [])], PeopleFormComponent); - /***/ - }, - - /***/ - "./src/app/modules/people/components/people-list/people-list.component.scss": - /*!**********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-list/people-list.component.scss ***! - \**********************************************************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppModulesPeopleComponentsPeopleListPeopleListComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbGlzdC9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLWxpc3RcXHBlb3BsZS1saXN0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbGlzdC9wZW9wbGUtbGlzdC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */"; - /***/ - }, - - /***/ - "./src/app/modules/people/components/people-list/people-list.component.ts": - /*!********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-list/people-list.component.ts ***! - \********************************************************************************/ - - /*! exports provided: PeopleListComponent */ - - /***/ - function srcAppModulesPeopleComponentsPeopleListPeopleListComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PeopleListComponent", function () { - return PeopleListComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var PeopleListComponent = - /*#__PURE__*/ - function () { - function PeopleListComponent(router) { - _classCallCheck(this, PeopleListComponent); - - this.router = router; - this.people = []; - this.edit = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - this.delete = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - } - - _createClass(PeopleListComponent, [{ - key: "onEdit", - value: function onEdit(person) { - this.edit.emit(person); - } - }, { - key: "onDelete", - value: function onDelete(person) { - this.delete.emit(person); - } - }, { - key: "pets", - value: function pets(person) { - this.router.navigate(['//listPets', person.id]); - } - }]); - - return PeopleListComponent; - }(); - - PeopleListComponent.ctorParameters = function () { - return [{ - type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] - }]; - }; - - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", Array)], PeopleListComponent.prototype, "people", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])], PeopleListComponent.prototype, "edit", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])], PeopleListComponent.prototype, "delete", void 0); - PeopleListComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-people-list', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./people-list.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-list/people-list.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./people-list.component.scss */ - "./src/app/modules/people/components/people-list/people-list.component.scss")).default] - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"]])], PeopleListComponent); - /***/ - }, - - /***/ - "./src/app/modules/people/components/people-main/people-main.component.scss": - /*!**********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-main/people-main.component.scss ***! - \**********************************************************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppModulesPeopleComponentsPeopleMainPeopleMainComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbWFpbi9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLW1haW5cXHBlb3BsZS1tYWluLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbWFpbi9wZW9wbGUtbWFpbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */"; - /***/ - }, - - /***/ - "./src/app/modules/people/components/people-main/people-main.component.ts": - /*!********************************************************************************!*\ - !*** ./src/app/modules/people/components/people-main/people-main.component.ts ***! - \********************************************************************************/ - - /*! exports provided: PeopleMainComponent */ - - /***/ - function srcAppModulesPeopleComponentsPeopleMainPeopleMainComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PeopleMainComponent", function () { - return PeopleMainComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _services_people_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! ../../services/people.service */ - "./src/app/modules/people/services/people.service.ts"); - /* harmony import */ - - - var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! rxjs/operators */ - "./node_modules/rxjs/_esm2015/operators/index.js"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var PeopleMainComponent = - /*#__PURE__*/ - function () { - function PeopleMainComponent(peopleService) { - _classCallCheck(this, PeopleMainComponent); - - this.peopleService = peopleService; - this.people = []; - this.clearActivePerson(); - } - - _createClass(PeopleMainComponent, [{ - key: "ngOnInit", - value: function ngOnInit() { - var _this = this; - - this.peopleService.list().subscribe(function (people) { - return _this.people = people; - }); - } - }, { - key: "onEdit", - value: function onEdit(person) { - this.activePerson = person; - } - }, { - key: "onDelete", - value: function onDelete(person) { - var _this2 = this; - - if (confirm("\xBFEst\xE1s seguro de que deseas eliminar a ".concat(person.name, " ").concat(person.surname, "?"))) { - this.peopleService.delete(person).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(function () { - return _this2.peopleService.list(); - })).subscribe(function (people) { - return _this2.people = people; - }); - } - } - }, { - key: "onCleanForm", - value: function onCleanForm() { - this.clearActivePerson(); - } - }, { - key: "onModifyForm", - value: function onModifyForm(person) { - var _this3 = this; - - if (person.id === undefined) { - this.peopleService.create(person).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(function () { - return _this3.peopleService.list(); - })).subscribe(function (people) { - _this3.people = people; - - _this3.clearActivePerson(); - }); - } else { - this.peopleService.modify(person).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(function () { - return _this3.peopleService.list(); - })).subscribe(function (people) { - _this3.people = people; - - _this3.clearActivePerson(); - }); - } - } - }, { - key: "clearActivePerson", - value: function clearActivePerson() { - this.activePerson = { - id: undefined, - name: '', - surname: '' - }; - } - }]); - - return PeopleMainComponent; - }(); - - PeopleMainComponent.ctorParameters = function () { - return [{ - type: _services_people_service__WEBPACK_IMPORTED_MODULE_2__["PeopleService"] - }]; - }; - - PeopleMainComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-people-main', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./people-main.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/people/components/people-main/people-main.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./people-main.component.scss */ - "./src/app/modules/people/components/people-main/people-main.component.scss")).default] - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_people_service__WEBPACK_IMPORTED_MODULE_2__["PeopleService"]])], PeopleMainComponent); - /***/ - }, - - /***/ - "./src/app/modules/people/models/person.model.ts": - /*!*******************************************************!*\ - !*** ./src/app/modules/people/models/person.model.ts ***! - \*******************************************************/ - - /*! exports provided: PersonModel */ - - /***/ - function srcAppModulesPeopleModelsPersonModelTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PersonModel", function () { - return PersonModel; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var PersonModel = function PersonModel() { - _classCallCheck(this, PersonModel); - }; - /***/ - - }, - - /***/ - "./src/app/modules/people/people-routing.module.ts": - /*!*********************************************************!*\ - !*** ./src/app/modules/people/people-routing.module.ts ***! - \*********************************************************/ - - /*! exports provided: PeopleRoutingModule */ - - /***/ - function srcAppModulesPeoplePeopleRoutingModuleTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PeopleRoutingModule", function () { - return PeopleRoutingModule; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* harmony import */ - - - var _components_people_main_people_main_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ./components/people-main/people-main.component */ - "./src/app/modules/people/components/people-main/people-main.component.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var routes = [{ - path: '', - component: _components_people_main_people_main_component__WEBPACK_IMPORTED_MODULE_3__["PeopleMainComponent"] - }]; - - var PeopleRoutingModule = function PeopleRoutingModule() { - _classCallCheck(this, PeopleRoutingModule); - }; - - PeopleRoutingModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - imports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"].forChild(routes)], - exports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"]] - })], PeopleRoutingModule); - /***/ - }, - - /***/ - "./src/app/modules/people/people.module.ts": - /*!*************************************************!*\ - !*** ./src/app/modules/people/people.module.ts ***! - \*************************************************/ - - /*! exports provided: PeopleModule */ - - /***/ - function srcAppModulesPeoplePeopleModuleTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PeopleModule", function () { - return PeopleModule; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/common */ - "./node_modules/@angular/common/fesm2015/common.js"); - /* harmony import */ - - - var _people_routing_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ./people-routing.module */ - "./src/app/modules/people/people-routing.module.ts"); - /* harmony import */ - - - var _components_people_list_people_list_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! ./components/people-list/people-list.component */ - "./src/app/modules/people/components/people-list/people-list.component.ts"); - /* harmony import */ - - - var _components_people_form_people_form_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( - /*! ./components/people-form/people-form.component */ - "./src/app/modules/people/components/people-form/people-form.component.ts"); - /* harmony import */ - - - var _components_people_main_people_main_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( - /*! ./components/people-main/people-main.component */ - "./src/app/modules/people/components/people-main/people-main.component.ts"); - /* harmony import */ - - - var _angular_forms__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__( - /*! @angular/forms */ - "./node_modules/@angular/forms/fesm2015/forms.js"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var PeopleModule = function PeopleModule() { - _classCallCheck(this, PeopleModule); - }; - - PeopleModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - declarations: [_components_people_form_people_form_component__WEBPACK_IMPORTED_MODULE_5__["PeopleFormComponent"], _components_people_list_people_list_component__WEBPACK_IMPORTED_MODULE_4__["PeopleListComponent"], _components_people_main_people_main_component__WEBPACK_IMPORTED_MODULE_6__["PeopleMainComponent"]], - imports: [_angular_common__WEBPACK_IMPORTED_MODULE_2__["CommonModule"], _angular_forms__WEBPACK_IMPORTED_MODULE_7__["FormsModule"], _people_routing_module__WEBPACK_IMPORTED_MODULE_3__["PeopleRoutingModule"]] - })], PeopleModule); - /***/ - }, - - /***/ - "./src/app/modules/people/services/people.service.ts": - /*!***********************************************************!*\ - !*** ./src/app/modules/people/services/people.service.ts ***! - \***********************************************************/ - - /*! exports provided: PeopleService */ - - /***/ - function srcAppModulesPeopleServicesPeopleServiceTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PeopleService", function () { - return PeopleService; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_common_http__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/common/http */ - "./node_modules/@angular/common/fesm2015/http.js"); - /* harmony import */ - - - var _environments_environment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ../../../../environments/environment */ - "./src/environments/environment.ts"); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * 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 . - */ - - - var PeopleService = - /*#__PURE__*/ - function () { - function PeopleService(http) { - _classCallCheck(this, PeopleService); - - this.http = http; - } - - _createClass(PeopleService, [{ - key: "list", - value: function list() { - return this.http.get("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi, "/people")); - } - }, { - key: "create", - value: function create(person) { - var data = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpParams"]().set('name', person.name).set('surname', person.surname); - return this.http.post("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi, "/people"), data); - } - }, { - key: "modify", - value: function modify(person) { - var data = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpParams"]().set('name', person.name).set('surname', person.surname); - return this.http.put("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi, "/people/").concat(person.id), data); - } - }, { - key: "delete", - value: function _delete(person) { - return this.http.delete("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi, "/people/").concat(person.id)); - } - }]); - - return PeopleService; - }(); - - PeopleService.ctorParameters = function () { - return [{ - type: _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"] - }]; - }; - - PeopleService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"]])], PeopleService); - /***/ - } -}]); -//# sourceMappingURL=modules-people-people-module-es5.js.map \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/modules-people-people-module-es5.js.map b/target/catalina-base/webapps/DAAExample/modules-people-people-module-es5.js.map deleted file mode 100644 index 93547e458baeafc22df2174a61f7220e642a2316..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/modules-people-people-module-es5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["src/app/modules/people/components/people-form/people-form.component.html","src/app/modules/people/components/people-list/people-list.component.html","src/app/modules/people/components/people-main/people-main.component.html","src/app/modules/people/components/people-form/people-form.component.scss","src/app/modules/people/components/people-form/people-form.component.ts","src/app/modules/people/components/people-list/people-list.component.scss","src/app/modules/people/components/people-list/people-list.component.ts","src/app/modules/people/components/people-main/people-main.component.scss","src/app/modules/people/components/people-main/people-main.component.ts","src/app/modules/people/models/person.model.ts","src/app/modules/people/people-routing.module.ts","src/app/modules/people/people.module.ts","src/app/modules/people/services/people.service.ts"],"names":[],"mappings":"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","sourcesContent":["export default \"\\r\\n\\r\\n
    \\r\\n \\r\\n\\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\"","export default \"\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    NombreApellido 
    {{person.name}}{{person.surname}}\\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n\"","export default \"\\r\\n\\r\\n

    Personas

    \\r\\n\\r\\n\\r\\n\"","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtZm9ybS9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLWZvcm1cXHBlb3BsZS1mb3JtLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtZm9ybS9wZW9wbGUtZm9ybS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {PersonModel} from '../../models/person.model';\r\n\r\n@Component({\r\n selector: 'app-people-form',\r\n templateUrl: './people-form.component.html',\r\n styleUrls: ['./people-form.component.scss']\r\n})\r\nexport class PeopleFormComponent {\r\n public activePerson: PersonModel;\r\n\r\n @Output()\r\n public readonly modify: EventEmitter;\r\n @Output()\r\n public readonly clean: EventEmitter;\r\n\r\n public name: string;\r\n public surname: string;\r\n\r\n public constructor() {\r\n this.modify = new EventEmitter();\r\n this.clean = new EventEmitter();\r\n }\r\n\r\n @Input()\r\n public set person(person: PersonModel) {\r\n this.activePerson = person;\r\n this.name = person.name;\r\n this.surname = person.surname;\r\n }\r\n\r\n public get person(): PersonModel {\r\n return this.activePerson;\r\n }\r\n\r\n public onModify() {\r\n this.modify.emit({\r\n id: this.person.id,\r\n name: this.name,\r\n surname: this.surname\r\n });\r\n }\r\n\r\n public onClean() {\r\n this.clean.emit();\r\n }\r\n}\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbGlzdC9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLWxpc3RcXHBlb3BsZS1saXN0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbGlzdC9wZW9wbGUtbGlzdC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {PersonModel} from '../../models/person.model';\r\nimport {PeopleService} from '../../services/people.service';\r\nimport {Router} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-people-list',\r\n templateUrl: './people-list.component.html',\r\n styleUrls: ['./people-list.component.scss']\r\n})\r\nexport class PeopleListComponent {\r\n\r\n @Input()\r\n public people: PersonModel[] = [];\r\n\r\n @Output()\r\n public readonly edit: EventEmitter;\r\n @Output()\r\n public readonly delete: EventEmitter;\r\n\r\n public constructor(private readonly router: Router) {\r\n this.edit = new EventEmitter();\r\n this.delete = new EventEmitter();\r\n }\r\n\r\n public onEdit(person: PersonModel) {\r\n this.edit.emit(person);\r\n }\r\n\r\n public onDelete(person: PersonModel) {\r\n this.delete.emit(person);\r\n }\r\n\r\n public pets(person: PersonModel){\r\n this.router.navigate(['//listPets',person.id]);\r\n }\r\n}\r\n","export default \"/*!\\n * DAA Example\\n *\\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU General Public License as published by\\n * the Free Software Foundation, either version 3 of the License, or\\n * (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU General Public License for more details.\\n *\\n * You should have received a copy of the GNU General Public License\\n * along with this program. If not, see .\\n */\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbWFpbi9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxhcHBcXG1vZHVsZXNcXHBlb3BsZVxcY29tcG9uZW50c1xccGVvcGxlLW1haW5cXHBlb3BsZS1tYWluLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvbW9kdWxlcy9wZW9wbGUvY29tcG9uZW50cy9wZW9wbGUtbWFpbi9wZW9wbGUtbWFpbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuIl19 */\"","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport { Component, OnInit } from '@angular/core';\r\nimport {PersonModel} from '../../models/person.model';\r\nimport {PeopleService} from '../../services/people.service';\r\nimport {map, mergeMap} from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-people-main',\r\n templateUrl: './people-main.component.html',\r\n styleUrls: ['./people-main.component.scss']\r\n})\r\nexport class PeopleMainComponent implements OnInit {\r\n public activePerson: PersonModel;\r\n public people: PersonModel[];\r\n\r\n public constructor(\r\n private readonly peopleService: PeopleService\r\n ) {\r\n this.people = [];\r\n this.clearActivePerson();\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.peopleService.list()\r\n .subscribe(people => this.people = people);\r\n }\r\n\r\n public onEdit(person: PersonModel): void {\r\n this.activePerson = person;\r\n }\r\n\r\n public onDelete(person: PersonModel): void {\r\n if (confirm(`¿Estás seguro de que deseas eliminar a ${person.name} ${person.surname}?`)) {\r\n this.peopleService.delete(person)\r\n .pipe(\r\n mergeMap(() => this.peopleService.list())\r\n )\r\n .subscribe(people => this.people = people);\r\n }\r\n }\r\n\r\n public onCleanForm(): void {\r\n this.clearActivePerson();\r\n }\r\n\r\n public onModifyForm(person: PersonModel): void {\r\n if (person.id === undefined) {\r\n this.peopleService.create(person)\r\n .pipe(\r\n mergeMap(() => this.peopleService.list())\r\n )\r\n .subscribe(people => {\r\n this.people = people;\r\n this.clearActivePerson();\r\n });\r\n } else {\r\n this.peopleService.modify(person)\r\n .pipe(\r\n mergeMap(() => this.peopleService.list())\r\n )\r\n .subscribe(people => {\r\n this.people = people;\r\n this.clearActivePerson();\r\n });\r\n }\r\n }\r\n\r\n private clearActivePerson(): void {\r\n this.activePerson = { id: undefined, name: '', surname: '' };\r\n }\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nexport class PersonModel {\r\n id?: number;\r\n name: string;\r\n surname: string;\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {NgModule} from '@angular/core';\r\nimport {RouterModule, Routes} from '@angular/router';\r\nimport {PeopleMainComponent} from './components/people-main/people-main.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: PeopleMainComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class PeopleRoutingModule { }\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\n\r\nimport {PeopleRoutingModule} from './people-routing.module';\r\nimport {PeopleListComponent} from './components/people-list/people-list.component';\r\nimport {PeopleFormComponent} from './components/people-form/people-form.component';\r\nimport {PeopleMainComponent} from './components/people-main/people-main.component';\r\nimport {FormsModule} from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [\r\n PeopleFormComponent,\r\n PeopleListComponent,\r\n PeopleMainComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n PeopleRoutingModule\r\n ]\r\n})\r\nexport class PeopleModule {\r\n}\r\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\nimport {Injectable} from '@angular/core';\r\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\r\nimport {environment} from '../../../../environments/environment';\r\nimport {Observable} from 'rxjs';\r\nimport {PersonModel} from '../models/person.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PeopleService {\r\n\r\n public constructor(private readonly http: HttpClient) { }\r\n\r\n public list(): Observable {\r\n return this.http.get(`${environment.restApi}/people`);\r\n }\r\n\r\n public create(person: PersonModel): Observable {\r\n const data = new HttpParams()\r\n .set('name', person.name)\r\n .set('surname', person.surname);\r\n\r\n return this.http.post(`${environment.restApi}/people`, data);\r\n }\r\n\r\n public modify(person: PersonModel): Observable {\r\n const data = new HttpParams()\r\n .set('name', person.name)\r\n .set('surname', person.surname);\r\n\r\n return this.http.put(`${environment.restApi}/people/${person.id}`, data);\r\n }\r\n\r\n public delete(person: PersonModel): Observable {\r\n return this.http.delete(`${environment.restApi}/people/${person.id}`);\r\n }\r\n}\r\n"],"sourceRoot":"webpack:///","file":"modules-people-people-module-es5.js"} \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/modules-pets-pets-module-es2015.js b/target/catalina-base/webapps/DAAExample/modules-pets-pets-module-es2015.js deleted file mode 100644 index 7fcf089dae78825ee39f107424ab3881000a2031..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/modules-pets-pets-module-es2015.js +++ /dev/null @@ -1,463 +0,0 @@ -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["modules-pets-pets-module"],{ - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-form/pets-form.component.html": -/*!******************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-form/pets-form.component.html ***! - \******************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n"); - -/***/ }), - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-list/pets-list.component.html": -/*!******************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-list/pets-list.component.html ***! - \******************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    NombreTipo 
    {{pet.name}}{{pet.kind}}\r\n \r\n \r\n
    \r\n\r\n\r\n"); - -/***/ }), - -/***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-main/pets-main.component.html": -/*!******************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-main/pets-main.component.html ***! - \******************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\r\n

    Mascotas

    \r\n\r\n\r\n\r\n\r\n"); - -/***/ }), - -/***/ "./src/app/modules/pets/components/pets-form/pets-form.component.scss": -/*!****************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-form/pets-form.component.scss ***! - \****************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtZm9ybS9wZXRzLWZvcm0uY29tcG9uZW50LnNjc3MifQ== */"); - -/***/ }), - -/***/ "./src/app/modules/pets/components/pets-form/pets-form.component.ts": -/*!**************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-form/pets-form.component.ts ***! - \**************************************************************************/ -/*! exports provided: PetsFormComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PetsFormComponent", function() { return PetsFormComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* harmony import */ var _models_pet_model__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../models/pet.model */ "./src/app/modules/pets/models/pet.model.ts"); - - - - -let PetsFormComponent = class PetsFormComponent { - constructor(route) { - this.route = route; - this.clean = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - this.modify = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - } - set pet(pet) { - this.activePet = pet; - this.name = pet.name; - this.kind = pet.kind; - } - get pet() { - return this.activePet; - } - onClean() { - this.clean.emit(); - } - onModify() { - this.modify.emit({ - id: this.pet.id, - name: this.name, - kind: this.kind, - owner: this.owner - }); - } -}; -PetsFormComponent.ctorParameters = () => [ - { type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["ActivatedRoute"] } -]; -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", Number) -], PetsFormComponent.prototype, "owner", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]) -], PetsFormComponent.prototype, "clean", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]) -], PetsFormComponent.prototype, "modify", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _models_pet_model__WEBPACK_IMPORTED_MODULE_3__["PetModel"]), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_models_pet_model__WEBPACK_IMPORTED_MODULE_3__["PetModel"]]) -], PetsFormComponent.prototype, "pet", null); -PetsFormComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-pets-form', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./pets-form.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-form/pets-form.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./pets-form.component.scss */ "./src/app/modules/pets/components/pets-form/pets-form.component.scss")).default] - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_router__WEBPACK_IMPORTED_MODULE_2__["ActivatedRoute"]]) -], PetsFormComponent); - - - -/***/ }), - -/***/ "./src/app/modules/pets/components/pets-list/pets-list.component.scss": -/*!****************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-list/pets-list.component.scss ***! - \****************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtbGlzdC9wZXRzLWxpc3QuY29tcG9uZW50LnNjc3MifQ== */"); - -/***/ }), - -/***/ "./src/app/modules/pets/components/pets-list/pets-list.component.ts": -/*!**************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-list/pets-list.component.ts ***! - \**************************************************************************/ -/*! exports provided: PetsListComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PetsListComponent", function() { return PetsListComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); - - -let PetsListComponent = class PetsListComponent { - constructor() { - this.pets = []; - this.delete = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - this.edit = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - } - onDelete(pet) { - this.delete.emit(pet); - } - onEdit(pet) { - this.edit.emit(pet); - } -}; -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", Array) -], PetsListComponent.prototype, "pets", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]) -], PetsListComponent.prototype, "delete", void 0); -tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"]) -], PetsListComponent.prototype, "edit", void 0); -PetsListComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-pets-list', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./pets-list.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-list/pets-list.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./pets-list.component.scss */ "./src/app/modules/pets/components/pets-list/pets-list.component.scss")).default] - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", []) -], PetsListComponent); - - - -/***/ }), - -/***/ "./src/app/modules/pets/components/pets-main/pets-main.component.scss": -/*!****************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-main/pets-main.component.scss ***! - \****************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__["default"] = ("\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtbWFpbi9wZXRzLW1haW4uY29tcG9uZW50LnNjc3MifQ== */"); - -/***/ }), - -/***/ "./src/app/modules/pets/components/pets-main/pets-main.component.ts": -/*!**************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-main/pets-main.component.ts ***! - \**************************************************************************/ -/*! exports provided: PetsMainComponent */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PetsMainComponent", function() { return PetsMainComponent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _services_pets_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/pets.service */ "./src/app/modules/pets/services/pets.service.ts"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); - - - - - -let PetsMainComponent = class PetsMainComponent { - constructor(petsService, route, router) { - this.petsService = petsService; - this.route = route; - this.router = router; - this.pets = []; - this.clearActivePet(); - } - ngOnInit() { - this.id = this.route.snapshot.params.person; - this.petsService.list(this.id) - .subscribe(pets => this.pets = pets); - } - onCleanForm() { - this.clearActivePet(); - } - clearActivePet() { - this.activePet = { id: undefined, name: '', kind: '', owner: undefined }; - } - back() { - this.router.navigate(['/']); - } - onDelete(pet) { - if (confirm(`¿Estás seguro de que deseas eliminar a ${pet.name}?`)) { - this.petsService.delete(pet) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(() => this.petsService.list(pet.owner))) - .subscribe(pets => this.pets = pets); - } - } - onEdit(pet) { - this.activePet = pet; - console.log("Noe"); - console.log(this.activePet); - } - onModifyForm(pet) { - if (pet.id === undefined) { - this.petsService.create(pet) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(() => this.petsService.list(pet.owner))) - .subscribe(pets => { - this.pets = pets; - this.clearActivePet(); - }); - } - else { - this.petsService.modify(pet) - .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(() => this.petsService.list(pet.owner))) - .subscribe(pets => { - this.pets = pets; - this.clearActivePet(); - }); - } - } -}; -PetsMainComponent.ctorParameters = () => [ - { type: _services_pets_service__WEBPACK_IMPORTED_MODULE_2__["PetsService"] }, - { type: _angular_router__WEBPACK_IMPORTED_MODULE_4__["ActivatedRoute"] }, - { type: _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"] } -]; -PetsMainComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-pets-main', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./pets-main.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-main/pets-main.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./pets-main.component.scss */ "./src/app/modules/pets/components/pets-main/pets-main.component.scss")).default] - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_pets_service__WEBPACK_IMPORTED_MODULE_2__["PetsService"], - _angular_router__WEBPACK_IMPORTED_MODULE_4__["ActivatedRoute"], - _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"]]) -], PetsMainComponent); - - - -/***/ }), - -/***/ "./src/app/modules/pets/models/pet.model.ts": -/*!**************************************************!*\ - !*** ./src/app/modules/pets/models/pet.model.ts ***! - \**************************************************/ -/*! exports provided: PetModel */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PetModel", function() { return PetModel; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); - -class PetModel { -} - - -/***/ }), - -/***/ "./src/app/modules/pets/pets-routing.module.ts": -/*!*****************************************************!*\ - !*** ./src/app/modules/pets/pets-routing.module.ts ***! - \*****************************************************/ -/*! exports provided: PetsRoutingModule */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PetsRoutingModule", function() { return PetsRoutingModule; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); -/* harmony import */ var _components_pets_main_pets_main_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/pets-main/pets-main.component */ "./src/app/modules/pets/components/pets-main/pets-main.component.ts"); - - - - -const routes = [ - { - path: '', - component: _components_pets_main_pets_main_component__WEBPACK_IMPORTED_MODULE_3__["PetsMainComponent"] - } -]; -let PetsRoutingModule = class PetsRoutingModule { -}; -PetsRoutingModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - imports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"].forChild(routes)], - exports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"]] - }) -], PetsRoutingModule); - - - -/***/ }), - -/***/ "./src/app/modules/pets/pets.module.ts": -/*!*********************************************!*\ - !*** ./src/app/modules/pets/pets.module.ts ***! - \*********************************************/ -/*! exports provided: PetsModule */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PetsModule", function() { return PetsModule; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/common */ "./node_modules/@angular/common/fesm2015/common.js"); -/* harmony import */ var _pets_routing_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pets-routing.module */ "./src/app/modules/pets/pets-routing.module.ts"); -/* harmony import */ var _components_pets_list_pets_list_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/pets-list/pets-list.component */ "./src/app/modules/pets/components/pets-list/pets-list.component.ts"); -/* harmony import */ var _components_pets_form_pets_form_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/pets-form/pets-form.component */ "./src/app/modules/pets/components/pets-form/pets-form.component.ts"); -/* harmony import */ var _components_pets_main_pets_main_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/pets-main/pets-main.component */ "./src/app/modules/pets/components/pets-main/pets-main.component.ts"); -/* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/forms */ "./node_modules/@angular/forms/fesm2015/forms.js"); - - - - - - - - -let PetsModule = class PetsModule { -}; -PetsModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - declarations: [ - _components_pets_form_pets_form_component__WEBPACK_IMPORTED_MODULE_5__["PetsFormComponent"], - _components_pets_list_pets_list_component__WEBPACK_IMPORTED_MODULE_4__["PetsListComponent"], - _components_pets_main_pets_main_component__WEBPACK_IMPORTED_MODULE_6__["PetsMainComponent"] - ], - imports: [ - _angular_common__WEBPACK_IMPORTED_MODULE_2__["CommonModule"], - _angular_forms__WEBPACK_IMPORTED_MODULE_7__["FormsModule"], - _pets_routing_module__WEBPACK_IMPORTED_MODULE_3__["PetsRoutingModule"] - ] - }) -], PetsModule); - - - -/***/ }), - -/***/ "./src/app/modules/pets/services/pets.service.ts": -/*!*******************************************************!*\ - !*** ./src/app/modules/pets/services/pets.service.ts ***! - \*******************************************************/ -/*! exports provided: PetsService */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PetsService", function() { return PetsService; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); -/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/common/http */ "./node_modules/@angular/common/fesm2015/http.js"); -/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../environments/environment */ "./src/environments/environment.ts"); - - - - -let PetsService = class PetsService { - constructor(http) { - this.http = http; - } - list(id) { - return this.http.get(`${_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi}/pets?owner=${id}`); - } - delete(pet) { - return this.http.delete(`${_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi}/pets/${pet.id}`); - } - modify(pet) { - const data = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpParams"]() - .set('name', pet.name) - .set('kind', pet.kind) - .set('owner', pet.owner.toString()); - return this.http.put(`${_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi}/pets/${pet.id}`, data); - } - create(pet) { - const data = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpParams"]() - .set('name', pet.name) - .set('kind', pet.kind) - .set('owner', pet.owner.toString()); - return this.http.post(`${_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi}/pets`, data); - } -}; -PetsService.ctorParameters = () => [ - { type: _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"] } -]; -PetsService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ - Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), - tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"]]) -], PetsService); - - - -/***/ }) - -}]); -//# sourceMappingURL=modules-pets-pets-module-es2015.js.map \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/modules-pets-pets-module-es2015.js.map b/target/catalina-base/webapps/DAAExample/modules-pets-pets-module-es2015.js.map deleted file mode 100644 index f30d7e791a12fd6a136f8ae35754b454503754b8..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/modules-pets-pets-module-es2015.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["./src/app/modules/pets/components/pets-form/pets-form.component.html","./src/app/modules/pets/components/pets-list/pets-list.component.html","./src/app/modules/pets/components/pets-main/pets-main.component.html","./src/app/modules/pets/components/pets-form/pets-form.component.scss","./src/app/modules/pets/components/pets-form/pets-form.component.ts","./src/app/modules/pets/components/pets-list/pets-list.component.scss","./src/app/modules/pets/components/pets-list/pets-list.component.ts","./src/app/modules/pets/components/pets-main/pets-main.component.scss","./src/app/modules/pets/components/pets-main/pets-main.component.ts","./src/app/modules/pets/models/pet.model.ts","./src/app/modules/pets/pets-routing.module.ts","./src/app/modules/pets/pets.module.ts","./src/app/modules/pets/services/pets.service.ts"],"names":[],"mappings":"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","file":"modules-pets-pets-module-es2015.js","sourcesContent":["export default \"\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\"","export default \"\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    NombreTipo 
    {{pet.name}}{{pet.kind}}\\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n\\r\\n\"","export default \"\\r\\n

    Mascotas

    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtZm9ybS9wZXRzLWZvcm0uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport { PetModel } from '../../models/pet.model';\r\n\r\n@Component({\r\n selector: 'app-pets-form',\r\n templateUrl: './pets-form.component.html',\r\n styleUrls: ['./pets-form.component.scss']\r\n})\r\nexport class PetsFormComponent {\r\n public activePet: PetModel;\r\n @Input()\r\n public owner: number;\r\n\r\n @Output()\r\n public readonly clean: EventEmitter;\r\n\r\n @Output()\r\n public readonly modify: EventEmitter;\r\n\r\n public name: string;\r\n public kind: string;\r\n \r\n constructor(\r\n private route: ActivatedRoute\r\n ) { \r\n this.clean = new EventEmitter();\r\n this.modify = new EventEmitter();\r\n }\r\n\r\n @Input()\r\n public set pet(pet: PetModel) {\r\n this.activePet = pet;\r\n this.name = pet.name;\r\n this.kind = pet.kind;\r\n }\r\n\r\n public get pet(): PetModel {\r\n return this.activePet;\r\n }\r\n\r\n public onClean() {\r\n this.clean.emit();\r\n }\r\n\r\n public onModify() {\r\n this.modify.emit({\r\n id: this.pet.id,\r\n name: this.name,\r\n kind: this.kind,\r\n owner: this.owner\r\n });\r\n }\r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtbGlzdC9wZXRzLWxpc3QuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, EventEmitter, OnInit, Input, Output } from '@angular/core';\r\nimport { PetModel} from '../../models/pet.model';\r\n@Component({\r\n selector: 'app-pets-list',\r\n templateUrl: './pets-list.component.html',\r\n styleUrls: ['./pets-list.component.scss']\r\n})\r\nexport class PetsListComponent {\r\n \r\n @Input()\r\n public pets: PetModel[] = [];\r\n\r\n @Output()\r\n public readonly delete: EventEmitter;\r\n\r\n @Output()\r\n public readonly edit: EventEmitter;\r\n\r\n constructor() { \r\n this.delete = new EventEmitter();\r\n this.edit = new EventEmitter();\r\n }\r\n\r\n public onDelete(pet: PetModel) {\r\n this.delete.emit(pet);\r\n }\r\n\r\n public onEdit(pet: PetModel) {\r\n this.edit.emit(pet);\r\n }\r\n\r\n \r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtbWFpbi9wZXRzLW1haW4uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\r\nimport {PetModel} from '../../models/pet.model';\r\nimport {PetsService} from '../../services/pets.service';\r\nimport {map, mergeMap} from 'rxjs/operators';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\n\r\n\r\n@Component({\r\n selector: 'app-pets-main',\r\n templateUrl: './pets-main.component.html',\r\n styleUrls: ['./pets-main.component.scss']\r\n})\r\nexport class PetsMainComponent implements OnInit {\r\n public id : number\r\n public activePet: PetModel;\r\n public pets: PetModel[];\r\n\r\n constructor(\r\n private readonly petsService: PetsService,\r\n private route: ActivatedRoute,\r\n private readonly router: Router\r\n ) { \r\n this.pets = [];\r\n this.clearActivePet()\r\n }\r\n\r\n ngOnInit() {\r\n this.id = this.route.snapshot.params.person;\r\n this.petsService.list(this.id)\r\n .subscribe(pets => this.pets = pets);\r\n \r\n }\r\n\r\n public onCleanForm(): void {\r\n this.clearActivePet();\r\n }\r\n\r\n public clearActivePet():void{\r\n this.activePet = { id: undefined, name: '', kind: '', owner: undefined };\r\n }\r\n\r\n public back(){\r\n this.router.navigate(['/']);\r\n }\r\n\r\n public onDelete(pet: PetModel): void {\r\n if (confirm(`¿Estás seguro de que deseas eliminar a ${pet.name}?`)) {\r\n this.petsService.delete(pet)\r\n .pipe(\r\n mergeMap(() => this.petsService.list(pet.owner))\r\n )\r\n .subscribe(pets => this.pets = pets);\r\n }\r\n }\r\n\r\n public onEdit(pet: PetModel): void {\r\n this.activePet = pet;\r\n console.log(\"Noe\")\r\n console.log(this.activePet)\r\n }\r\n\r\n public onModifyForm(pet: PetModel): void {\r\n if (pet.id === undefined) {\r\n this.petsService.create(pet)\r\n .pipe(\r\n mergeMap(() => this.petsService.list(pet.owner))\r\n )\r\n .subscribe(pets => {\r\n this.pets = pets;\r\n this.clearActivePet();\r\n });\r\n } else {\r\n this.petsService.modify(pet)\r\n .pipe(\r\n mergeMap(() => this.petsService.list(pet.owner))\r\n )\r\n .subscribe(pets => {\r\n this.pets = pets;\r\n this.clearActivePet();\r\n });\r\n }\r\n }\r\n\r\n}\r\n","export class PetModel {\r\n id?: number;\r\n name: string;\r\n kind: string;\r\n owner:number;\r\n }\r\n ","import {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {PetsMainComponent} from './components/pets-main/pets-main.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: PetsMainComponent\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class PetsRoutingModule { }\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\nimport {PetsRoutingModule} from './pets-routing.module';\nimport {PetsListComponent} from './components/pets-list/pets-list.component';\nimport {PetsFormComponent} from './components/pets-form/pets-form.component';\nimport {PetsMainComponent} from './components/pets-main/pets-main.component';\nimport {FormsModule} from '@angular/forms';\n\n@NgModule({\n declarations: [\n PetsFormComponent,\n PetsListComponent,\n PetsMainComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n PetsRoutingModule\n ]\n})\nexport class PetsModule { }\n","import { Injectable } from '@angular/core';\r\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\r\nimport {environment} from '../../../../environments/environment';\r\nimport {Observable} from 'rxjs';\r\nimport {PetModel} from '../models/pet.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PetsService {\r\n\r\n constructor(private readonly http: HttpClient) { }\r\n\r\n\r\n\r\n public list(id: number): Observable{\r\n return this.http.get(`${environment.restApi}/pets?owner=${id}`);\r\n }\r\n\r\n public delete(pet: PetModel): Observable {\r\n return this.http.delete(`${environment.restApi}/pets/${pet.id}`);\r\n }\r\n\r\n public modify(pet: PetModel): Observable {\r\n const data = new HttpParams()\r\n .set('name', pet.name)\r\n .set('kind', pet.kind)\r\n .set('owner', pet.owner.toString());\r\n\r\n return this.http.put(`${environment.restApi}/pets/${pet.id}`, data);\r\n }\r\n\r\n public create(pet: PetModel): Observable {\r\n const data = new HttpParams()\r\n .set('name', pet.name)\r\n .set('kind', pet.kind)\r\n .set('owner', pet.owner.toString());\r\n\r\n return this.http.post(`${environment.restApi}/pets`, data);\r\n }\r\n}\r\n"],"sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/modules-pets-pets-module-es5.js b/target/catalina-base/webapps/DAAExample/modules-pets-pets-module-es5.js deleted file mode 100644 index 366bb4f16ddff99247397bbfd3555b9f53f4a5b7..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/modules-pets-pets-module-es5.js +++ /dev/null @@ -1,735 +0,0 @@ -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["modules-pets-pets-module"], { - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-form/pets-form.component.html": - /*!******************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-form/pets-form.component.html ***! - \******************************************************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppModulesPetsComponentsPetsFormPetsFormComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n"; - /***/ - }, - - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-list/pets-list.component.html": - /*!******************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-list/pets-list.component.html ***! - \******************************************************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppModulesPetsComponentsPetsListPetsListComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    NombreTipo 
    {{pet.name}}{{pet.kind}}\r\n \r\n \r\n
    \r\n\r\n\r\n"; - /***/ - }, - - /***/ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-main/pets-main.component.html": - /*!******************************************************************************************************************!*\ - !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-main/pets-main.component.html ***! - \******************************************************************************************************************/ - - /*! exports provided: default */ - - /***/ - function node_modulesRawLoaderDistCjsJsSrcAppModulesPetsComponentsPetsMainPetsMainComponentHtml(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\r\n

    Mascotas

    \r\n\r\n\r\n\r\n\r\n"; - /***/ - }, - - /***/ - "./src/app/modules/pets/components/pets-form/pets-form.component.scss": - /*!****************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-form/pets-form.component.scss ***! - \****************************************************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppModulesPetsComponentsPetsFormPetsFormComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtZm9ybS9wZXRzLWZvcm0uY29tcG9uZW50LnNjc3MifQ== */"; - /***/ - }, - - /***/ - "./src/app/modules/pets/components/pets-form/pets-form.component.ts": - /*!**************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-form/pets-form.component.ts ***! - \**************************************************************************/ - - /*! exports provided: PetsFormComponent */ - - /***/ - function srcAppModulesPetsComponentsPetsFormPetsFormComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PetsFormComponent", function () { - return PetsFormComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* harmony import */ - - - var _models_pet_model__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ../../models/pet.model */ - "./src/app/modules/pets/models/pet.model.ts"); - - var PetsFormComponent = - /*#__PURE__*/ - function () { - function PetsFormComponent(route) { - _classCallCheck(this, PetsFormComponent); - - this.route = route; - this.clean = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - this.modify = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - } - - _createClass(PetsFormComponent, [{ - key: "onClean", - value: function onClean() { - this.clean.emit(); - } - }, { - key: "onModify", - value: function onModify() { - this.modify.emit({ - id: this.pet.id, - name: this.name, - kind: this.kind, - owner: this.owner - }); - } - }, { - key: "pet", - set: function set(pet) { - this.activePet = pet; - this.name = pet.name; - this.kind = pet.kind; - }, - get: function get() { - return this.activePet; - } - }]); - - return PetsFormComponent; - }(); - - PetsFormComponent.ctorParameters = function () { - return [{ - type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["ActivatedRoute"] - }]; - }; - - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", Number)], PetsFormComponent.prototype, "owner", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])], PetsFormComponent.prototype, "clean", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])], PetsFormComponent.prototype, "modify", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _models_pet_model__WEBPACK_IMPORTED_MODULE_3__["PetModel"]), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_models_pet_model__WEBPACK_IMPORTED_MODULE_3__["PetModel"]])], PetsFormComponent.prototype, "pet", null); - PetsFormComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-pets-form', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./pets-form.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-form/pets-form.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./pets-form.component.scss */ - "./src/app/modules/pets/components/pets-form/pets-form.component.scss")).default] - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_router__WEBPACK_IMPORTED_MODULE_2__["ActivatedRoute"]])], PetsFormComponent); - /***/ - }, - - /***/ - "./src/app/modules/pets/components/pets-list/pets-list.component.scss": - /*!****************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-list/pets-list.component.scss ***! - \****************************************************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppModulesPetsComponentsPetsListPetsListComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtbGlzdC9wZXRzLWxpc3QuY29tcG9uZW50LnNjc3MifQ== */"; - /***/ - }, - - /***/ - "./src/app/modules/pets/components/pets-list/pets-list.component.ts": - /*!**************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-list/pets-list.component.ts ***! - \**************************************************************************/ - - /*! exports provided: PetsListComponent */ - - /***/ - function srcAppModulesPetsComponentsPetsListPetsListComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PetsListComponent", function () { - return PetsListComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - - var PetsListComponent = - /*#__PURE__*/ - function () { - function PetsListComponent() { - _classCallCheck(this, PetsListComponent); - - this.pets = []; - this.delete = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - this.edit = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); - } - - _createClass(PetsListComponent, [{ - key: "onDelete", - value: function onDelete(pet) { - this.delete.emit(pet); - } - }, { - key: "onEdit", - value: function onEdit(pet) { - this.edit.emit(pet); - } - }]); - - return PetsListComponent; - }(); - - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", Array)], PetsListComponent.prototype, "pets", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])], PetsListComponent.prototype, "delete", void 0); - tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])(), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:type", _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])], PetsListComponent.prototype, "edit", void 0); - PetsListComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-pets-list', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./pets-list.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-list/pets-list.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./pets-list.component.scss */ - "./src/app/modules/pets/components/pets-list/pets-list.component.scss")).default] - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [])], PetsListComponent); - /***/ - }, - - /***/ - "./src/app/modules/pets/components/pets-main/pets-main.component.scss": - /*!****************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-main/pets-main.component.scss ***! - \****************************************************************************/ - - /*! exports provided: default */ - - /***/ - function srcAppModulesPetsComponentsPetsMainPetsMainComponentScss(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony default export */ - - - __webpack_exports__["default"] = "\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtbWFpbi9wZXRzLW1haW4uY29tcG9uZW50LnNjc3MifQ== */"; - /***/ - }, - - /***/ - "./src/app/modules/pets/components/pets-main/pets-main.component.ts": - /*!**************************************************************************!*\ - !*** ./src/app/modules/pets/components/pets-main/pets-main.component.ts ***! - \**************************************************************************/ - - /*! exports provided: PetsMainComponent */ - - /***/ - function srcAppModulesPetsComponentsPetsMainPetsMainComponentTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PetsMainComponent", function () { - return PetsMainComponent; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _services_pets_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! ../../services/pets.service */ - "./src/app/modules/pets/services/pets.service.ts"); - /* harmony import */ - - - var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! rxjs/operators */ - "./node_modules/rxjs/_esm2015/operators/index.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - - var PetsMainComponent = - /*#__PURE__*/ - function () { - function PetsMainComponent(petsService, route, router) { - _classCallCheck(this, PetsMainComponent); - - this.petsService = petsService; - this.route = route; - this.router = router; - this.pets = []; - this.clearActivePet(); - } - - _createClass(PetsMainComponent, [{ - key: "ngOnInit", - value: function ngOnInit() { - var _this = this; - - this.id = this.route.snapshot.params.person; - this.petsService.list(this.id).subscribe(function (pets) { - return _this.pets = pets; - }); - } - }, { - key: "onCleanForm", - value: function onCleanForm() { - this.clearActivePet(); - } - }, { - key: "clearActivePet", - value: function clearActivePet() { - this.activePet = { - id: undefined, - name: '', - kind: '', - owner: undefined - }; - } - }, { - key: "back", - value: function back() { - this.router.navigate(['/']); - } - }, { - key: "onDelete", - value: function onDelete(pet) { - var _this2 = this; - - if (confirm("\xBFEst\xE1s seguro de que deseas eliminar a ".concat(pet.name, "?"))) { - this.petsService.delete(pet).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(function () { - return _this2.petsService.list(pet.owner); - })).subscribe(function (pets) { - return _this2.pets = pets; - }); - } - } - }, { - key: "onEdit", - value: function onEdit(pet) { - this.activePet = pet; - console.log("Noe"); - console.log(this.activePet); - } - }, { - key: "onModifyForm", - value: function onModifyForm(pet) { - var _this3 = this; - - if (pet.id === undefined) { - this.petsService.create(pet).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(function () { - return _this3.petsService.list(pet.owner); - })).subscribe(function (pets) { - _this3.pets = pets; - - _this3.clearActivePet(); - }); - } else { - this.petsService.modify(pet).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mergeMap"])(function () { - return _this3.petsService.list(pet.owner); - })).subscribe(function (pets) { - _this3.pets = pets; - - _this3.clearActivePet(); - }); - } - } - }]); - - return PetsMainComponent; - }(); - - PetsMainComponent.ctorParameters = function () { - return [{ - type: _services_pets_service__WEBPACK_IMPORTED_MODULE_2__["PetsService"] - }, { - type: _angular_router__WEBPACK_IMPORTED_MODULE_4__["ActivatedRoute"] - }, { - type: _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"] - }]; - }; - - PetsMainComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ - selector: 'app-pets-main', - template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! raw-loader!./pets-main.component.html */ - "./node_modules/raw-loader/dist/cjs.js!./src/app/modules/pets/components/pets-main/pets-main.component.html")).default, - styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( - /*! ./pets-main.component.scss */ - "./src/app/modules/pets/components/pets-main/pets-main.component.scss")).default] - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_services_pets_service__WEBPACK_IMPORTED_MODULE_2__["PetsService"], _angular_router__WEBPACK_IMPORTED_MODULE_4__["ActivatedRoute"], _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"]])], PetsMainComponent); - /***/ - }, - - /***/ - "./src/app/modules/pets/models/pet.model.ts": - /*!**************************************************!*\ - !*** ./src/app/modules/pets/models/pet.model.ts ***! - \**************************************************/ - - /*! exports provided: PetModel */ - - /***/ - function srcAppModulesPetsModelsPetModelTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PetModel", function () { - return PetModel; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - - var PetModel = function PetModel() { - _classCallCheck(this, PetModel); - }; - /***/ - - }, - - /***/ - "./src/app/modules/pets/pets-routing.module.ts": - /*!*****************************************************!*\ - !*** ./src/app/modules/pets/pets-routing.module.ts ***! - \*****************************************************/ - - /*! exports provided: PetsRoutingModule */ - - /***/ - function srcAppModulesPetsPetsRoutingModuleTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PetsRoutingModule", function () { - return PetsRoutingModule; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/router */ - "./node_modules/@angular/router/fesm2015/router.js"); - /* harmony import */ - - - var _components_pets_main_pets_main_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ./components/pets-main/pets-main.component */ - "./src/app/modules/pets/components/pets-main/pets-main.component.ts"); - - var routes = [{ - path: '', - component: _components_pets_main_pets_main_component__WEBPACK_IMPORTED_MODULE_3__["PetsMainComponent"] - }]; - - var PetsRoutingModule = function PetsRoutingModule() { - _classCallCheck(this, PetsRoutingModule); - }; - - PetsRoutingModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - imports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"].forChild(routes)], - exports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"]] - })], PetsRoutingModule); - /***/ - }, - - /***/ - "./src/app/modules/pets/pets.module.ts": - /*!*********************************************!*\ - !*** ./src/app/modules/pets/pets.module.ts ***! - \*********************************************/ - - /*! exports provided: PetsModule */ - - /***/ - function srcAppModulesPetsPetsModuleTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PetsModule", function () { - return PetsModule; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/common */ - "./node_modules/@angular/common/fesm2015/common.js"); - /* harmony import */ - - - var _pets_routing_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ./pets-routing.module */ - "./src/app/modules/pets/pets-routing.module.ts"); - /* harmony import */ - - - var _components_pets_list_pets_list_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! ./components/pets-list/pets-list.component */ - "./src/app/modules/pets/components/pets-list/pets-list.component.ts"); - /* harmony import */ - - - var _components_pets_form_pets_form_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( - /*! ./components/pets-form/pets-form.component */ - "./src/app/modules/pets/components/pets-form/pets-form.component.ts"); - /* harmony import */ - - - var _components_pets_main_pets_main_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( - /*! ./components/pets-main/pets-main.component */ - "./src/app/modules/pets/components/pets-main/pets-main.component.ts"); - /* harmony import */ - - - var _angular_forms__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__( - /*! @angular/forms */ - "./node_modules/@angular/forms/fesm2015/forms.js"); - - var PetsModule = function PetsModule() { - _classCallCheck(this, PetsModule); - }; - - PetsModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ - declarations: [_components_pets_form_pets_form_component__WEBPACK_IMPORTED_MODULE_5__["PetsFormComponent"], _components_pets_list_pets_list_component__WEBPACK_IMPORTED_MODULE_4__["PetsListComponent"], _components_pets_main_pets_main_component__WEBPACK_IMPORTED_MODULE_6__["PetsMainComponent"]], - imports: [_angular_common__WEBPACK_IMPORTED_MODULE_2__["CommonModule"], _angular_forms__WEBPACK_IMPORTED_MODULE_7__["FormsModule"], _pets_routing_module__WEBPACK_IMPORTED_MODULE_3__["PetsRoutingModule"]] - })], PetsModule); - /***/ - }, - - /***/ - "./src/app/modules/pets/services/pets.service.ts": - /*!*******************************************************!*\ - !*** ./src/app/modules/pets/services/pets.service.ts ***! - \*******************************************************/ - - /*! exports provided: PetsService */ - - /***/ - function srcAppModulesPetsServicesPetsServiceTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "PetsService", function () { - return PetsService; - }); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! @angular/core */ - "./node_modules/@angular/core/fesm2015/core.js"); - /* harmony import */ - - - var _angular_common_http__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! @angular/common/http */ - "./node_modules/@angular/common/fesm2015/http.js"); - /* harmony import */ - - - var _environments_environment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! ../../../../environments/environment */ - "./src/environments/environment.ts"); - - var PetsService = - /*#__PURE__*/ - function () { - function PetsService(http) { - _classCallCheck(this, PetsService); - - this.http = http; - } - - _createClass(PetsService, [{ - key: "list", - value: function list(id) { - return this.http.get("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi, "/pets?owner=").concat(id)); - } - }, { - key: "delete", - value: function _delete(pet) { - return this.http.delete("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi, "/pets/").concat(pet.id)); - } - }, { - key: "modify", - value: function modify(pet) { - var data = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpParams"]().set('name', pet.name).set('kind', pet.kind).set('owner', pet.owner.toString()); - return this.http.put("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi, "/pets/").concat(pet.id), data); - } - }, { - key: "create", - value: function create(pet) { - var data = new _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpParams"]().set('name', pet.name).set('kind', pet.kind).set('owner', pet.owner.toString()); - return this.http.post("".concat(_environments_environment__WEBPACK_IMPORTED_MODULE_3__["environment"].restApi, "/pets"), data); - } - }]); - - return PetsService; - }(); - - PetsService.ctorParameters = function () { - return [{ - type: _angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"] - }]; - }; - - PetsService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ - providedIn: 'root' - }), tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [_angular_common_http__WEBPACK_IMPORTED_MODULE_2__["HttpClient"]])], PetsService); - /***/ - } -}]); -//# sourceMappingURL=modules-pets-pets-module-es5.js.map \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/modules-pets-pets-module-es5.js.map b/target/catalina-base/webapps/DAAExample/modules-pets-pets-module-es5.js.map deleted file mode 100644 index 6e73f548f209ac92d2d06dc6607abcee164ef7ae..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/modules-pets-pets-module-es5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["src/app/modules/pets/components/pets-form/pets-form.component.html","src/app/modules/pets/components/pets-list/pets-list.component.html","src/app/modules/pets/components/pets-main/pets-main.component.html","src/app/modules/pets/components/pets-form/pets-form.component.scss","src/app/modules/pets/components/pets-form/pets-form.component.ts","src/app/modules/pets/components/pets-list/pets-list.component.scss","src/app/modules/pets/components/pets-list/pets-list.component.ts","src/app/modules/pets/components/pets-main/pets-main.component.scss","src/app/modules/pets/components/pets-main/pets-main.component.ts","src/app/modules/pets/models/pet.model.ts","src/app/modules/pets/pets-routing.module.ts","src/app/modules/pets/pets.module.ts","src/app/modules/pets/services/pets.service.ts"],"names":[],"mappings":"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","sourcesContent":["export default \"\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n\\r\\n\"","export default \"\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    NombreTipo 
    {{pet.name}}{{pet.kind}}\\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n\\r\\n\"","export default \"\\r\\n

    Mascotas

    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtZm9ybS9wZXRzLWZvcm0uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport { PetModel } from '../../models/pet.model';\r\n\r\n@Component({\r\n selector: 'app-pets-form',\r\n templateUrl: './pets-form.component.html',\r\n styleUrls: ['./pets-form.component.scss']\r\n})\r\nexport class PetsFormComponent {\r\n public activePet: PetModel;\r\n @Input()\r\n public owner: number;\r\n\r\n @Output()\r\n public readonly clean: EventEmitter;\r\n\r\n @Output()\r\n public readonly modify: EventEmitter;\r\n\r\n public name: string;\r\n public kind: string;\r\n \r\n constructor(\r\n private route: ActivatedRoute\r\n ) { \r\n this.clean = new EventEmitter();\r\n this.modify = new EventEmitter();\r\n }\r\n\r\n @Input()\r\n public set pet(pet: PetModel) {\r\n this.activePet = pet;\r\n this.name = pet.name;\r\n this.kind = pet.kind;\r\n }\r\n\r\n public get pet(): PetModel {\r\n return this.activePet;\r\n }\r\n\r\n public onClean() {\r\n this.clean.emit();\r\n }\r\n\r\n public onModify() {\r\n this.modify.emit({\r\n id: this.pet.id,\r\n name: this.name,\r\n kind: this.kind,\r\n owner: this.owner\r\n });\r\n }\r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtbGlzdC9wZXRzLWxpc3QuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, EventEmitter, OnInit, Input, Output } from '@angular/core';\r\nimport { PetModel} from '../../models/pet.model';\r\n@Component({\r\n selector: 'app-pets-list',\r\n templateUrl: './pets-list.component.html',\r\n styleUrls: ['./pets-list.component.scss']\r\n})\r\nexport class PetsListComponent {\r\n \r\n @Input()\r\n public pets: PetModel[] = [];\r\n\r\n @Output()\r\n public readonly delete: EventEmitter;\r\n\r\n @Output()\r\n public readonly edit: EventEmitter;\r\n\r\n constructor() { \r\n this.delete = new EventEmitter();\r\n this.edit = new EventEmitter();\r\n }\r\n\r\n public onDelete(pet: PetModel) {\r\n this.delete.emit(pet);\r\n }\r\n\r\n public onEdit(pet: PetModel) {\r\n this.edit.emit(pet);\r\n }\r\n\r\n \r\n\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL21vZHVsZXMvcGV0cy9jb21wb25lbnRzL3BldHMtbWFpbi9wZXRzLW1haW4uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\r\nimport {PetModel} from '../../models/pet.model';\r\nimport {PetsService} from '../../services/pets.service';\r\nimport {map, mergeMap} from 'rxjs/operators';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\n\r\n\r\n@Component({\r\n selector: 'app-pets-main',\r\n templateUrl: './pets-main.component.html',\r\n styleUrls: ['./pets-main.component.scss']\r\n})\r\nexport class PetsMainComponent implements OnInit {\r\n public id : number\r\n public activePet: PetModel;\r\n public pets: PetModel[];\r\n\r\n constructor(\r\n private readonly petsService: PetsService,\r\n private route: ActivatedRoute,\r\n private readonly router: Router\r\n ) { \r\n this.pets = [];\r\n this.clearActivePet()\r\n }\r\n\r\n ngOnInit() {\r\n this.id = this.route.snapshot.params.person;\r\n this.petsService.list(this.id)\r\n .subscribe(pets => this.pets = pets);\r\n \r\n }\r\n\r\n public onCleanForm(): void {\r\n this.clearActivePet();\r\n }\r\n\r\n public clearActivePet():void{\r\n this.activePet = { id: undefined, name: '', kind: '', owner: undefined };\r\n }\r\n\r\n public back(){\r\n this.router.navigate(['/']);\r\n }\r\n\r\n public onDelete(pet: PetModel): void {\r\n if (confirm(`¿Estás seguro de que deseas eliminar a ${pet.name}?`)) {\r\n this.petsService.delete(pet)\r\n .pipe(\r\n mergeMap(() => this.petsService.list(pet.owner))\r\n )\r\n .subscribe(pets => this.pets = pets);\r\n }\r\n }\r\n\r\n public onEdit(pet: PetModel): void {\r\n this.activePet = pet;\r\n console.log(\"Noe\")\r\n console.log(this.activePet)\r\n }\r\n\r\n public onModifyForm(pet: PetModel): void {\r\n if (pet.id === undefined) {\r\n this.petsService.create(pet)\r\n .pipe(\r\n mergeMap(() => this.petsService.list(pet.owner))\r\n )\r\n .subscribe(pets => {\r\n this.pets = pets;\r\n this.clearActivePet();\r\n });\r\n } else {\r\n this.petsService.modify(pet)\r\n .pipe(\r\n mergeMap(() => this.petsService.list(pet.owner))\r\n )\r\n .subscribe(pets => {\r\n this.pets = pets;\r\n this.clearActivePet();\r\n });\r\n }\r\n }\r\n\r\n}\r\n","export class PetModel {\r\n id?: number;\r\n name: string;\r\n kind: string;\r\n owner:number;\r\n }\r\n ","import {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {PetsMainComponent} from './components/pets-main/pets-main.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: PetsMainComponent\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class PetsRoutingModule { }\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\nimport {PetsRoutingModule} from './pets-routing.module';\nimport {PetsListComponent} from './components/pets-list/pets-list.component';\nimport {PetsFormComponent} from './components/pets-form/pets-form.component';\nimport {PetsMainComponent} from './components/pets-main/pets-main.component';\nimport {FormsModule} from '@angular/forms';\n\n@NgModule({\n declarations: [\n PetsFormComponent,\n PetsListComponent,\n PetsMainComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n PetsRoutingModule\n ]\n})\nexport class PetsModule { }\n","import { Injectable } from '@angular/core';\r\nimport {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';\r\nimport {environment} from '../../../../environments/environment';\r\nimport {Observable} from 'rxjs';\r\nimport {PetModel} from '../models/pet.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PetsService {\r\n\r\n constructor(private readonly http: HttpClient) { }\r\n\r\n\r\n\r\n public list(id: number): Observable{\r\n return this.http.get(`${environment.restApi}/pets?owner=${id}`);\r\n }\r\n\r\n public delete(pet: PetModel): Observable {\r\n return this.http.delete(`${environment.restApi}/pets/${pet.id}`);\r\n }\r\n\r\n public modify(pet: PetModel): Observable {\r\n const data = new HttpParams()\r\n .set('name', pet.name)\r\n .set('kind', pet.kind)\r\n .set('owner', pet.owner.toString());\r\n\r\n return this.http.put(`${environment.restApi}/pets/${pet.id}`, data);\r\n }\r\n\r\n public create(pet: PetModel): Observable {\r\n const data = new HttpParams()\r\n .set('name', pet.name)\r\n .set('kind', pet.kind)\r\n .set('owner', pet.owner.toString());\r\n\r\n return this.http.post(`${environment.restApi}/pets`, data);\r\n }\r\n}\r\n"],"sourceRoot":"webpack:///","file":"modules-pets-pets-module-es5.js"} \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/polyfills-es2015.js b/target/catalina-base/webapps/DAAExample/polyfills-es2015.js deleted file mode 100644 index 65bf6c9c3914ce814ca9747c10f642f3a199bb9d..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/polyfills-es2015.js +++ /dev/null @@ -1,6495 +0,0 @@ -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["polyfills"],{ - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js ***! - \*************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = function (it) { - if (typeof it != 'function') { - throw TypeError(String(it) + ' is not a function'); - } return it; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js": -/*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js ***! - \***********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - -module.exports = function (it) { - if (!isObject(it) && it !== null) { - throw TypeError("Can't set " + String(it) + ' as a prototype'); - } return it; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js ***! - \**************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = function (it, Constructor, name) { - if (!(it instanceof Constructor)) { - throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation'); - } return it; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - -module.exports = function (it) { - if (!isObject(it)) { - throw TypeError(String(it) + ' is not an object'); - } return it; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js ***! - \*****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); -var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); -var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js"); - -// `Array.prototype.{ indexOf, includes }` methods implementation -var createMethod = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare - if (value != value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; - -module.exports = { - // `Array.prototype.includes` method - // https://tc39.github.io/ecma262/#sec-array.prototype.includes - includes: createMethod(true), - // `Array.prototype.indexOf` method - // https://tc39.github.io/ecma262/#sec-array.prototype.indexof - indexOf: createMethod(false) -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js ***! - \******************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js"); -var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js"); -var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); -var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); -var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js"); - -var push = [].push; - -// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation -var createMethod = function (TYPE) { - var IS_MAP = TYPE == 1; - var IS_FILTER = TYPE == 2; - var IS_SOME = TYPE == 3; - var IS_EVERY = TYPE == 4; - var IS_FIND_INDEX = TYPE == 6; - var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; - return function ($this, callbackfn, that, specificCreate) { - var O = toObject($this); - var self = IndexedObject(O); - var boundFunction = bind(callbackfn, that, 3); - var length = toLength(self.length); - var index = 0; - var create = specificCreate || arraySpeciesCreate; - var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; - var value, result; - for (;length > index; index++) if (NO_HOLES || index in self) { - value = self[index]; - result = boundFunction(value, index, O); - if (TYPE) { - if (IS_MAP) target[index] = result; // map - else if (result) switch (TYPE) { - case 3: return true; // some - case 5: return value; // find - case 6: return index; // findIndex - case 2: push.call(target, value); // filter - } else if (IS_EVERY) return false; // every - } - } - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; - }; -}; - -module.exports = { - // `Array.prototype.forEach` method - // https://tc39.github.io/ecma262/#sec-array.prototype.foreach - forEach: createMethod(0), - // `Array.prototype.map` method - // https://tc39.github.io/ecma262/#sec-array.prototype.map - map: createMethod(1), - // `Array.prototype.filter` method - // https://tc39.github.io/ecma262/#sec-array.prototype.filter - filter: createMethod(2), - // `Array.prototype.some` method - // https://tc39.github.io/ecma262/#sec-array.prototype.some - some: createMethod(3), - // `Array.prototype.every` method - // https://tc39.github.io/ecma262/#sec-array.prototype.every - every: createMethod(4), - // `Array.prototype.find` method - // https://tc39.github.io/ecma262/#sec-array.prototype.find - find: createMethod(5), - // `Array.prototype.findIndex` method - // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex - findIndex: createMethod(6) -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js": -/*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js ***! - \***********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); -var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - -var SPECIES = wellKnownSymbol('species'); - -// `ArraySpeciesCreate` abstract operation -// https://tc39.github.io/ecma262/#sec-arrayspeciescreate -module.exports = function (originalArray, length) { - var C; - if (isArray(originalArray)) { - C = originalArray.constructor; - // cross-realm fallback - if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; - else if (isObject(C)) { - C = C[SPECIES]; - if (C === null) C = undefined; - } - } return new (C === undefined ? Array : C)(length === 0 ? 0 : length); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js": -/*!***********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js ***! - \***********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - -// call something on iterator step with safe closing on error -module.exports = function (iterator, fn, value, ENTRIES) { - try { - return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); - // 7.4.6 IteratorClose(iterator, completion) - } catch (error) { - var returnMethod = iterator['return']; - if (returnMethod !== undefined) anObject(returnMethod.call(iterator)); - throw error; - } -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js": -/*!*********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js ***! - \*********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - -var ITERATOR = wellKnownSymbol('iterator'); -var SAFE_CLOSING = false; - -try { - var called = 0; - var iteratorWithReturn = { - next: function () { - return { done: !!called++ }; - }, - 'return': function () { - SAFE_CLOSING = true; - } - }; - iteratorWithReturn[ITERATOR] = function () { - return this; - }; - // eslint-disable-next-line no-throw-literal - Array.from(iteratorWithReturn, function () { throw 2; }); -} catch (error) { /* empty */ } - -module.exports = function (exec, SKIP_CLOSING) { - if (!SKIP_CLOSING && !SAFE_CLOSING) return false; - var ITERATION_SUPPORT = false; - try { - var object = {}; - object[ITERATOR] = function () { - return { - next: function () { - return { done: ITERATION_SUPPORT = true }; - } - }; - }; - exec(object); - } catch (error) { /* empty */ } - return ITERATION_SUPPORT; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js ***! - \**************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var toString = {}.toString; - -module.exports = function (it) { - return toString.call(it).slice(8, -1); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js ***! - \**********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js"); -var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - -var TO_STRING_TAG = wellKnownSymbol('toStringTag'); -// ES3 wrong here -var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; - -// fallback for IE11 Script Access Denied error -var tryGet = function (it, key) { - try { - return it[key]; - } catch (error) { /* empty */ } -}; - -// getting tag from ES6+ `Object.prototype.toString` -module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag - // builtinTag case - : CORRECT_ARGUMENTS ? classofRaw(O) - // ES3 arguments fallback - : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; -var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); -var redefineAll = __webpack_require__(/*! ../internals/redefine-all */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js"); -var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js"); -var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js"); -var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); -var defineIterator = __webpack_require__(/*! ../internals/define-iterator */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js"); -var setSpecies = __webpack_require__(/*! ../internals/set-species */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js"); -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); -var fastKey = __webpack_require__(/*! ../internals/internal-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js").fastKey; -var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - -var setInternalState = InternalStateModule.set; -var internalStateGetterFor = InternalStateModule.getterFor; - -module.exports = { - getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { - var C = wrapper(function (that, iterable) { - anInstance(that, C, CONSTRUCTOR_NAME); - setInternalState(that, { - type: CONSTRUCTOR_NAME, - index: create(null), - first: undefined, - last: undefined, - size: 0 - }); - if (!DESCRIPTORS) that.size = 0; - if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); - }); - - var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); - - var define = function (that, key, value) { - var state = getInternalState(that); - var entry = getEntry(that, key); - var previous, index; - // change existing entry - if (entry) { - entry.value = value; - // create new entry - } else { - state.last = entry = { - index: index = fastKey(key, true), - key: key, - value: value, - previous: previous = state.last, - next: undefined, - removed: false - }; - if (!state.first) state.first = entry; - if (previous) previous.next = entry; - if (DESCRIPTORS) state.size++; - else that.size++; - // add to index - if (index !== 'F') state.index[index] = entry; - } return that; - }; - - var getEntry = function (that, key) { - var state = getInternalState(that); - // fast case - var index = fastKey(key); - var entry; - if (index !== 'F') return state.index[index]; - // frozen object case - for (entry = state.first; entry; entry = entry.next) { - if (entry.key == key) return entry; - } - }; - - redefineAll(C.prototype, { - // 23.1.3.1 Map.prototype.clear() - // 23.2.3.2 Set.prototype.clear() - clear: function clear() { - var that = this; - var state = getInternalState(that); - var data = state.index; - var entry = state.first; - while (entry) { - entry.removed = true; - if (entry.previous) entry.previous = entry.previous.next = undefined; - delete data[entry.index]; - entry = entry.next; - } - state.first = state.last = undefined; - if (DESCRIPTORS) state.size = 0; - else that.size = 0; - }, - // 23.1.3.3 Map.prototype.delete(key) - // 23.2.3.4 Set.prototype.delete(value) - 'delete': function (key) { - var that = this; - var state = getInternalState(that); - var entry = getEntry(that, key); - if (entry) { - var next = entry.next; - var prev = entry.previous; - delete state.index[entry.index]; - entry.removed = true; - if (prev) prev.next = next; - if (next) next.previous = prev; - if (state.first == entry) state.first = next; - if (state.last == entry) state.last = prev; - if (DESCRIPTORS) state.size--; - else that.size--; - } return !!entry; - }, - // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) - // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) - forEach: function forEach(callbackfn /* , that = undefined */) { - var state = getInternalState(this); - var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); - var entry; - while (entry = entry ? entry.next : state.first) { - boundFunction(entry.value, entry.key, this); - // revert to the last existing entry - while (entry && entry.removed) entry = entry.previous; - } - }, - // 23.1.3.7 Map.prototype.has(key) - // 23.2.3.7 Set.prototype.has(value) - has: function has(key) { - return !!getEntry(this, key); - } - }); - - redefineAll(C.prototype, IS_MAP ? { - // 23.1.3.6 Map.prototype.get(key) - get: function get(key) { - var entry = getEntry(this, key); - return entry && entry.value; - }, - // 23.1.3.9 Map.prototype.set(key, value) - set: function set(key, value) { - return define(this, key === 0 ? 0 : key, value); - } - } : { - // 23.2.3.1 Set.prototype.add(value) - add: function add(value) { - return define(this, value = value === 0 ? 0 : value, value); - } - }); - if (DESCRIPTORS) defineProperty(C.prototype, 'size', { - get: function () { - return getInternalState(this).size; - } - }); - return C; - }, - setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) { - var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator'; - var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME); - var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME); - // add .keys, .values, .entries, [@@iterator] - // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 - defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) { - setInternalState(this, { - type: ITERATOR_NAME, - target: iterated, - state: getInternalCollectionState(iterated), - kind: kind, - last: undefined - }); - }, function () { - var state = getInternalIteratorState(this); - var kind = state.kind; - var entry = state.last; - // revert to the last existing entry - while (entry && entry.removed) entry = entry.previous; - // get next entry - if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) { - // or finish the iteration - state.target = undefined; - return { value: undefined, done: true }; - } - // return step by kind - if (kind == 'keys') return { value: entry.key, done: false }; - if (kind == 'values') return { value: entry.value, done: false }; - return { value: [entry.key, entry.value], done: false }; - }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); - - // add [@@species], 23.1.2.2, 23.2.2.2 - setSpecies(CONSTRUCTOR_NAME); - } -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-weak.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-weak.js ***! - \******************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var redefineAll = __webpack_require__(/*! ../internals/redefine-all */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js"); -var getWeakData = __webpack_require__(/*! ../internals/internal-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js").getWeakData; -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); -var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js"); -var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); -var ArrayIterationModule = __webpack_require__(/*! ../internals/array-iteration */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js"); -var $has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - -var setInternalState = InternalStateModule.set; -var internalStateGetterFor = InternalStateModule.getterFor; -var find = ArrayIterationModule.find; -var findIndex = ArrayIterationModule.findIndex; -var id = 0; - -// fallback for uncaught frozen keys -var uncaughtFrozenStore = function (store) { - return store.frozen || (store.frozen = new UncaughtFrozenStore()); -}; - -var UncaughtFrozenStore = function () { - this.entries = []; -}; - -var findUncaughtFrozen = function (store, key) { - return find(store.entries, function (it) { - return it[0] === key; - }); -}; - -UncaughtFrozenStore.prototype = { - get: function (key) { - var entry = findUncaughtFrozen(this, key); - if (entry) return entry[1]; - }, - has: function (key) { - return !!findUncaughtFrozen(this, key); - }, - set: function (key, value) { - var entry = findUncaughtFrozen(this, key); - if (entry) entry[1] = value; - else this.entries.push([key, value]); - }, - 'delete': function (key) { - var index = findIndex(this.entries, function (it) { - return it[0] === key; - }); - if (~index) this.entries.splice(index, 1); - return !!~index; - } -}; - -module.exports = { - getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { - var C = wrapper(function (that, iterable) { - anInstance(that, C, CONSTRUCTOR_NAME); - setInternalState(that, { - type: CONSTRUCTOR_NAME, - id: id++, - frozen: undefined - }); - if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); - }); - - var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); - - var define = function (that, key, value) { - var state = getInternalState(that); - var data = getWeakData(anObject(key), true); - if (data === true) uncaughtFrozenStore(state).set(key, value); - else data[state.id] = value; - return that; - }; - - redefineAll(C.prototype, { - // 23.3.3.2 WeakMap.prototype.delete(key) - // 23.4.3.3 WeakSet.prototype.delete(value) - 'delete': function (key) { - var state = getInternalState(this); - if (!isObject(key)) return false; - var data = getWeakData(key); - if (data === true) return uncaughtFrozenStore(state)['delete'](key); - return data && $has(data, state.id) && delete data[state.id]; - }, - // 23.3.3.4 WeakMap.prototype.has(key) - // 23.4.3.4 WeakSet.prototype.has(value) - has: function has(key) { - var state = getInternalState(this); - if (!isObject(key)) return false; - var data = getWeakData(key); - if (data === true) return uncaughtFrozenStore(state).has(key); - return data && $has(data, state.id); - } - }); - - redefineAll(C.prototype, IS_MAP ? { - // 23.3.3.3 WeakMap.prototype.get(key) - get: function get(key) { - var state = getInternalState(this); - if (isObject(key)) { - var data = getWeakData(key); - if (data === true) return uncaughtFrozenStore(state).get(key); - return data ? data[state.id] : undefined; - } - }, - // 23.3.3.5 WeakMap.prototype.set(key, value) - set: function set(key, value) { - return define(this, key, value); - } - } : { - // 23.4.3.1 WeakSet.prototype.add(value) - add: function add(value) { - return define(this, value, true); - } - }); - - return C; - } -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js ***! - \*************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js"); -var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); -var InternalMetadataModule = __webpack_require__(/*! ../internals/internal-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js"); -var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); -var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); -var checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js"); -var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); -var inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js"); - -module.exports = function (CONSTRUCTOR_NAME, wrapper, common) { - var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1; - var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1; - var ADDER = IS_MAP ? 'set' : 'add'; - var NativeConstructor = global[CONSTRUCTOR_NAME]; - var NativePrototype = NativeConstructor && NativeConstructor.prototype; - var Constructor = NativeConstructor; - var exported = {}; - - var fixMethod = function (KEY) { - var nativeMethod = NativePrototype[KEY]; - redefine(NativePrototype, KEY, - KEY == 'add' ? function add(value) { - nativeMethod.call(this, value === 0 ? 0 : value); - return this; - } : KEY == 'delete' ? function (key) { - return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); - } : KEY == 'get' ? function get(key) { - return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key); - } : KEY == 'has' ? function has(key) { - return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); - } : function set(key, value) { - nativeMethod.call(this, key === 0 ? 0 : key, value); - return this; - } - ); - }; - - // eslint-disable-next-line max-len - if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () { - new NativeConstructor().entries().next(); - })))) { - // create collection constructor - Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); - InternalMetadataModule.REQUIRED = true; - } else if (isForced(CONSTRUCTOR_NAME, true)) { - var instance = new Constructor(); - // early implementations not supports chaining - var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; - // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false - var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); - // most early implementations doesn't supports iterables, most modern - not close it correctly - // eslint-disable-next-line no-new - var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); }); - // for early implementations -0 and +0 not the same - var BUGGY_ZERO = !IS_WEAK && fails(function () { - // V8 ~ Chromium 42- fails only with 5+ elements - var $instance = new NativeConstructor(); - var index = 5; - while (index--) $instance[ADDER](index, index); - return !$instance.has(-0); - }); - - if (!ACCEPT_ITERABLES) { - Constructor = wrapper(function (dummy, iterable) { - anInstance(dummy, Constructor, CONSTRUCTOR_NAME); - var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor); - if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); - return that; - }); - Constructor.prototype = NativePrototype; - NativePrototype.constructor = Constructor; - } - - if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { - fixMethod('delete'); - fixMethod('has'); - IS_MAP && fixMethod('get'); - } - - if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); - - // weak collections should not contains .clear method - if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear; - } - - exported[CONSTRUCTOR_NAME] = Constructor; - $({ global: true, forced: Constructor != NativeConstructor }, exported); - - setToStringTag(Constructor, CONSTRUCTOR_NAME); - - if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); - - return Constructor; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js": -/*!******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js ***! - \******************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js"); -var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js"); -var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - -module.exports = function (target, source) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js": -/*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js ***! - \***************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - -module.exports = !fails(function () { - function F() { /* empty */ } - F.prototype.constructor = null; - return Object.getPrototypeOf(new F()) !== F.prototype; -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-iterator-constructor.js": -/*!******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-iterator-constructor.js ***! - \******************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js").IteratorPrototype; -var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); -var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); -var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); -var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); - -var returnThis = function () { return this; }; - -module.exports = function (IteratorConstructor, NAME, next) { - var TO_STRING_TAG = NAME + ' Iterator'; - IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) }); - setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); - Iterators[TO_STRING_TAG] = returnThis; - return IteratorConstructor; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js": -/*!*********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js ***! - \*********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); -var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); -var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); - -module.exports = DESCRIPTORS ? function (object, key, value) { - return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js": -/*!*****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js ***! - \*****************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js ***! - \******************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-iterator-constructor.js"); -var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); -var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js"); -var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); -var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); -var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); -var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); -var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); -var IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js"); - -var IteratorPrototype = IteratorsCore.IteratorPrototype; -var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; -var ITERATOR = wellKnownSymbol('iterator'); -var KEYS = 'keys'; -var VALUES = 'values'; -var ENTRIES = 'entries'; - -var returnThis = function () { return this; }; - -module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { - createIteratorConstructor(IteratorConstructor, NAME, next); - - var getIterationMethod = function (KIND) { - if (KIND === DEFAULT && defaultIterator) return defaultIterator; - if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; - switch (KIND) { - case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; - case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; - case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; - } return function () { return new IteratorConstructor(this); }; - }; - - var TO_STRING_TAG = NAME + ' Iterator'; - var INCORRECT_VALUES_NAME = false; - var IterablePrototype = Iterable.prototype; - var nativeIterator = IterablePrototype[ITERATOR] - || IterablePrototype['@@iterator'] - || DEFAULT && IterablePrototype[DEFAULT]; - var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); - var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; - var CurrentIteratorPrototype, methods, KEY; - - // fix native - if (anyNativeIterator) { - CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); - if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { - if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { - if (setPrototypeOf) { - setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); - } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') { - createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis); - } - } - // Set @@toStringTag to native iterators - setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); - if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; - } - } - - // fix Array#{values, @@iterator}.name in V8 / FF - if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { - INCORRECT_VALUES_NAME = true; - defaultIterator = function values() { return nativeIterator.call(this); }; - } - - // define iterator - if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { - createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator); - } - Iterators[NAME] = defaultIterator; - - // export additional methods - if (DEFAULT) { - methods = { - values: getIterationMethod(VALUES), - keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), - entries: getIterationMethod(ENTRIES) - }; - if (FORCED) for (KEY in methods) { - if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { - redefine(IterablePrototype, KEY, methods[KEY]); - } - } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); - } - - return methods; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js ***! - \**************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - -// Thank's IE8 for his funny defineProperty -module.exports = !fails(function () { - return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js": -/*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js ***! - \**************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - -var document = global.document; -// typeof document.createElement is 'object' in old IE -var EXISTS = isObject(document) && isObject(document.createElement); - -module.exports = function (it) { - return EXISTS ? document.createElement(it) : {}; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js ***! - \****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -// IE8- don't enum bug keys -module.exports = [ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' -]; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js ***! - \*********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js").f; -var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); -var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); -var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js"); -var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js"); -var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js"); - -/* - options.target - name of the target object - options.global - target is the global object - options.stat - export as static methods of target - options.proto - export as prototype methods of target - options.real - real prototype method for the `pure` version - options.forced - export even if the native feature is available - options.bind - bind methods to the target, required for the `pure` version - options.wrap - wrap constructors to preventing global pollution, required for the `pure` version - options.unsafe - use the simple assignment of property instead of delete + defineProperty - options.sham - add a flag to not completely full polyfills - options.enumerable - export as enumerable property - options.noTargetGet - prevent calling a getter on target -*/ -module.exports = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global; - } else if (STATIC) { - target = global[TARGET] || setGlobal(TARGET, {}); - } else { - target = (global[TARGET] || {}).prototype; - } - if (target) for (key in source) { - sourceProperty = source[key]; - if (options.noTargetGet) { - descriptor = getOwnPropertyDescriptor(target, key); - targetProperty = descriptor && descriptor.value; - } else targetProperty = target[key]; - FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); - // contained in target - if (!FORCED && targetProperty !== undefined) { - if (typeof sourceProperty === typeof targetProperty) continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - // add a flag to not completely full polyfills - if (options.sham || (targetProperty && targetProperty.sham)) { - createNonEnumerableProperty(sourceProperty, 'sham', true); - } - // extend global - redefine(target, key, sourceProperty, options); - } -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js": -/*!********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js ***! - \********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js ***! - \***********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - -module.exports = !fails(function () { - return Object.isExtensible(Object.preventExtensions({})); -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js": -/*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js ***! - \************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var aFunction = __webpack_require__(/*! ../internals/a-function */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - -// optional / simple context binding -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - switch (length) { - case 0: return function () { - return fn.call(that); - }; - case 1: return function (a) { - return fn.call(that, a); - }; - case 2: return function (a, b) { - return fn.call(that, a, b); - }; - case 3: return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function (/* ...args */) { - return fn.apply(that, arguments); - }; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js ***! - \***************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var path = __webpack_require__(/*! ../internals/path */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js"); -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - -var aFunction = function (variable) { - return typeof variable == 'function' ? variable : undefined; -}; - -module.exports = function (namespace, method) { - return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) - : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method]; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js": -/*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js ***! - \**********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js"); -var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - -var ITERATOR = wellKnownSymbol('iterator'); - -module.exports = function (it) { - if (it != undefined) return it[ITERATOR] - || it['@@iterator'] - || Iterators[classof(it)]; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js ***! - \*********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var check = function (it) { - return it && it.Math == Math && it; -}; - -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -module.exports = - // eslint-disable-next-line no-undef - check(typeof globalThis == 'object' && globalThis) || - check(typeof window == 'object' && window) || - check(typeof self == 'object' && self) || - check(typeof global == 'object' && global) || - // eslint-disable-next-line no-new-func - Function('return this')(); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js": -/*!******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js ***! - \******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var hasOwnProperty = {}.hasOwnProperty; - -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js ***! - \**************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = {}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js": -/*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js ***! - \*******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - -module.exports = getBuiltIn('document', 'documentElement'); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js ***! - \*****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); -var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js"); - -// Thank's IE8 for his funny defineProperty -module.exports = !DESCRIPTORS && !fails(function () { - return Object.defineProperty(createElement('div'), 'a', { - get: function () { return 7; } - }).a != 7; -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js ***! - \*****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); -var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - -var split = ''.split; - -// fallback for non-array-like ES3 and non-enumerable old V8 strings -module.exports = fails(function () { - // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins - return !Object('z').propertyIsEnumerable(0); -}) ? function (it) { - return classof(it) == 'String' ? split.call(it, '') : Object(it); -} : Object; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js": -/*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js ***! - \**********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); -var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js"); - -// makes subclassing work correct for wrapped built-ins -module.exports = function ($this, dummy, Wrapper) { - var NewTarget, NewTargetPrototype; - if ( - // it can work only with native `setPrototypeOf` - setPrototypeOf && - // we haven't completely correct pre-ES6 way for getting `new.target`, so use this - typeof (NewTarget = dummy.constructor) == 'function' && - NewTarget !== Wrapper && - isObject(NewTargetPrototype = NewTarget.prototype) && - NewTargetPrototype !== Wrapper.prototype - ) setPrototypeOf($this, NewTargetPrototype); - return $this; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js ***! - \*****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js"); - -var functionToString = Function.toString; - -// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper -if (typeof store.inspectSource != 'function') { - store.inspectSource = function (it) { - return functionToString.call(it); - }; -} - -module.exports = store.inspectSource; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; -var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js"); -var FREEZING = __webpack_require__(/*! ../internals/freezing */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js"); - -var METADATA = uid('meta'); -var id = 0; - -var isExtensible = Object.isExtensible || function () { - return true; -}; - -var setMetadata = function (it) { - defineProperty(it, METADATA, { value: { - objectID: 'O' + ++id, // object ID - weakData: {} // weak collections IDs - } }); -}; - -var fastKey = function (it, create) { - // return a primitive with prefix - if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - if (!has(it, METADATA)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return 'F'; - // not necessary to add metadata - if (!create) return 'E'; - // add missing metadata - setMetadata(it); - // return object ID - } return it[METADATA].objectID; -}; - -var getWeakData = function (it, create) { - if (!has(it, METADATA)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return true; - // not necessary to add metadata - if (!create) return false; - // add missing metadata - setMetadata(it); - // return the store of weak collections IDs - } return it[METADATA].weakData; -}; - -// add metadata on freeze-family methods calling -var onFreeze = function (it) { - if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it); - return it; -}; - -var meta = module.exports = { - REQUIRED: false, - fastKey: fastKey, - getWeakData: getWeakData, - onFreeze: onFreeze -}; - -hiddenKeys[METADATA] = true; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js ***! - \*****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js"); -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); -var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); -var objectHas = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js"); -var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); - -var WeakMap = global.WeakMap; -var set, get, has; - -var enforce = function (it) { - return has(it) ? get(it) : set(it, {}); -}; - -var getterFor = function (TYPE) { - return function (it) { - var state; - if (!isObject(it) || (state = get(it)).type !== TYPE) { - throw TypeError('Incompatible receiver, ' + TYPE + ' required'); - } return state; - }; -}; - -if (NATIVE_WEAK_MAP) { - var store = new WeakMap(); - var wmget = store.get; - var wmhas = store.has; - var wmset = store.set; - set = function (it, metadata) { - wmset.call(store, it, metadata); - return metadata; - }; - get = function (it) { - return wmget.call(store, it) || {}; - }; - has = function (it) { - return wmhas.call(store, it); - }; -} else { - var STATE = sharedKey('state'); - hiddenKeys[STATE] = true; - set = function (it, metadata) { - createNonEnumerableProperty(it, STATE, metadata); - return metadata; - }; - get = function (it) { - return objectHas(it, STATE) ? it[STATE] : {}; - }; - has = function (it) { - return objectHas(it, STATE); - }; -} - -module.exports = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js": -/*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js ***! - \***************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); -var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); - -var ITERATOR = wellKnownSymbol('iterator'); -var ArrayPrototype = Array.prototype; - -// check on default Array iterator -module.exports = function (it) { - return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js ***! - \***********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - -// `IsArray` abstract operation -// https://tc39.github.io/ecma262/#sec-isarray -module.exports = Array.isArray || function isArray(arg) { - return classof(arg) == 'Array'; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - -var replacement = /#|\.prototype\./; - -var isForced = function (feature, detection) { - var value = data[normalize(feature)]; - return value == POLYFILL ? true - : value == NATIVE ? false - : typeof detection == 'function' ? fails(detection) - : !!detection; -}; - -var normalize = isForced.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); -}; - -var data = isForced.data = {}; -var NATIVE = isForced.NATIVE = 'N'; -var POLYFILL = isForced.POLYFILL = 'P'; - -module.exports = isForced; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js ***! - \**********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = false; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js": -/*!**********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js ***! - \**********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js"); -var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); -var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js"); -var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js"); -var callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js"); - -var Result = function (stopped, result) { - this.stopped = stopped; - this.result = result; -}; - -var iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) { - var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1); - var iterator, iterFn, index, length, result, next, step; - - if (IS_ITERATOR) { - iterator = iterable; - } else { - iterFn = getIteratorMethod(iterable); - if (typeof iterFn != 'function') throw TypeError('Target is not iterable'); - // optimisation for array iterators - if (isArrayIteratorMethod(iterFn)) { - for (index = 0, length = toLength(iterable.length); length > index; index++) { - result = AS_ENTRIES - ? boundFunction(anObject(step = iterable[index])[0], step[1]) - : boundFunction(iterable[index]); - if (result && result instanceof Result) return result; - } return new Result(false); - } - iterator = iterFn.call(iterable); - } - - next = iterator.next; - while (!(step = next.call(iterator)).done) { - result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES); - if (typeof result == 'object' && result && result instanceof Result) return result; - } return new Result(false); -}; - -iterate.stop = function (result) { - return new Result(true, result); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js": -/*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js ***! - \*****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); -var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); -var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); - -var ITERATOR = wellKnownSymbol('iterator'); -var BUGGY_SAFARI_ITERATORS = false; - -var returnThis = function () { return this; }; - -// `%IteratorPrototype%` object -// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object -var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; - -if ([].keys) { - arrayIterator = [].keys(); - // Safari 8 has buggy iterators w/o `next` - if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; - else { - PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); - if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; - } -} - -if (IteratorPrototype == undefined) IteratorPrototype = {}; - -// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) { - createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis); -} - -module.exports = { - IteratorPrototype: IteratorPrototype, - BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = {}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js ***! - \****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - -module.exports = !!Object.getOwnPropertySymbols && !fails(function () { - // Chrome 38 Symbol has incorrect toString conversion - // eslint-disable-next-line no-undef - return !String(Symbol()); -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js": -/*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js ***! - \******************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js"); - -var WeakMap = global.WeakMap; - -module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap)); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js": -/*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js ***! - \****************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js"); -var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js"); -var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); -var html = __webpack_require__(/*! ../internals/html */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js"); -var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js"); -var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js"); - -var GT = '>'; -var LT = '<'; -var PROTOTYPE = 'prototype'; -var SCRIPT = 'script'; -var IE_PROTO = sharedKey('IE_PROTO'); - -var EmptyConstructor = function () { /* empty */ }; - -var scriptTag = function (content) { - return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; -}; - -// Create object with fake `null` prototype: use ActiveX Object with cleared prototype -var NullProtoObjectViaActiveX = function (activeXDocument) { - activeXDocument.write(scriptTag('')); - activeXDocument.close(); - var temp = activeXDocument.parentWindow.Object; - activeXDocument = null; // avoid memory leak - return temp; -}; - -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var NullProtoObjectViaIFrame = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = documentCreateElement('iframe'); - var JS = 'java' + SCRIPT + ':'; - var iframeDocument; - iframe.style.display = 'none'; - html.appendChild(iframe); - // https://github.com/zloirock/core-js/issues/475 - iframe.src = String(JS); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(scriptTag('document.F=Object')); - iframeDocument.close(); - return iframeDocument.F; -}; - -// Check for document.domain and active x support -// No need to use active x approach when document.domain is not set -// see https://github.com/es-shims/es5-shim/issues/150 -// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 -// avoid IE GC bug -var activeXDocument; -var NullProtoObject = function () { - try { - /* global ActiveXObject */ - activeXDocument = document.domain && new ActiveXObject('htmlfile'); - } catch (error) { /* ignore */ } - NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame(); - var length = enumBugKeys.length; - while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; - return NullProtoObject(); -}; - -hiddenKeys[IE_PROTO] = true; - -// `Object.create` method -// https://tc39.github.io/ecma262/#sec-object.create -module.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - EmptyConstructor[PROTOTYPE] = anObject(O); - result = new EmptyConstructor(); - EmptyConstructor[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = NullProtoObject(); - return Properties === undefined ? result : defineProperties(result, Properties); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js": -/*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js ***! - \***************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); -var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js"); - -// `Object.defineProperties` method -// https://tc39.github.io/ecma262/#sec-object.defineproperties -module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = objectKeys(Properties); - var length = keys.length; - var index = 0; - var key; - while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]); - return O; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js": -/*!*************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js ***! - \*************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); -var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - -var nativeDefineProperty = Object.defineProperty; - -// `Object.defineProperty` method -// https://tc39.github.io/ecma262/#sec-object.defineproperty -exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return nativeDefineProperty(O, P, Attributes); - } catch (error) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js": -/*!*************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js ***! - \*************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); -var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js"); -var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); -var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); -var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js"); - -var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - -// `Object.getOwnPropertyDescriptor` method -// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor -exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return nativeGetOwnPropertyDescriptor(O, P); - } catch (error) { /* empty */ } - if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js": -/*!********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js ***! - \********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js"); -var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js"); - -var hiddenKeys = enumBugKeys.concat('length', 'prototype'); - -// `Object.getOwnPropertyNames` method -// https://tc39.github.io/ecma262/#sec-object.getownpropertynames -exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys(O, hiddenKeys); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js": -/*!**********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js ***! - \**********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -exports.f = Object.getOwnPropertySymbols; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js": -/*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js ***! - \**************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); -var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js"); -var CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js"); - -var IE_PROTO = sharedKey('IE_PROTO'); -var ObjectPrototype = Object.prototype; - -// `Object.getPrototypeOf` method -// https://tc39.github.io/ecma262/#sec-object.getprototypeof -module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) return O[IE_PROTO]; - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } return O instanceof Object ? ObjectPrototype : null; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js": -/*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js ***! - \***********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); -var indexOf = __webpack_require__(/*! ../internals/array-includes */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js").indexOf; -var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); - -module.exports = function (object, names) { - var O = toIndexedObject(object); - var i = 0; - var result = []; - var key; - for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key); - // Don't enum bug & hidden keys - while (names.length > i) if (has(O, key = names[i++])) { - ~indexOf(result, key) || result.push(key); - } - return result; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js ***! - \**************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js"); -var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js"); - -// `Object.keys` method -// https://tc39.github.io/ecma262/#sec-object.keys -module.exports = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js": -/*!********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js ***! - \********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var nativePropertyIsEnumerable = {}.propertyIsEnumerable; -var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - -// Nashorn ~ JDK8 bug -var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); - -// `Object.prototype.propertyIsEnumerable` method implementation -// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable -exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor(this, V); - return !!descriptor && descriptor.enumerable; -} : nativePropertyIsEnumerable; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js": -/*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js ***! - \**************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js"); - -// `Object.setPrototypeOf` method -// https://tc39.github.io/ecma262/#sec-object.setprototypeof -// Works with __proto__ only. Old v8 can't work with null proto objects. -/* eslint-disable no-proto */ -module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { - var CORRECT_SETTER = false; - var test = {}; - var setter; - try { - setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; - setter.call(test, []); - CORRECT_SETTER = test instanceof Array; - } catch (error) { /* empty */ } - return function setPrototypeOf(O, proto) { - anObject(O); - aPossiblePrototype(proto); - if (CORRECT_SETTER) setter.call(O, proto); - else O.__proto__ = proto; - return O; - }; -}() : undefined); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js ***! - \***********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); -var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js"); -var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - -// all object keys, includes non-enumerable and symbols -module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js": -/*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js ***! - \*******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - -module.exports = global; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js ***! - \***************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - -module.exports = function (target, src, options) { - for (var key in src) redefine(target, key, src[key], options); - return target; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js": -/*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js ***! - \***********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js"); -var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js"); -var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - -var getInternalState = InternalStateModule.get; -var enforceInternalState = InternalStateModule.enforce; -var TEMPLATE = String(String).split('String'); - -(module.exports = function (O, key, value, options) { - var unsafe = options ? !!options.unsafe : false; - var simple = options ? !!options.enumerable : false; - var noTargetGet = options ? !!options.noTargetGet : false; - if (typeof value == 'function') { - if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key); - enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); - } - if (O === global) { - if (simple) O[key] = value; - else setGlobal(key, value); - return; - } else if (!unsafe) { - delete O[key]; - } else if (!noTargetGet && O[key]) { - simple = true; - } - if (simple) O[key] = value; - else createNonEnumerableProperty(O, key, value); -// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative -})(Function.prototype, 'toString', function toString() { - return typeof this == 'function' && getInternalState(this).source || inspectSource(this); -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js ***! - \*******************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` -var Map = __webpack_require__(/*! ../modules/es.map */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js"); -var WeakMap = __webpack_require__(/*! ../modules/es.weak-map */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js"); -var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js"); - -var metadata = shared('metadata'); -var store = metadata.store || (metadata.store = new WeakMap()); - -var getOrCreateMetadataMap = function (target, targetKey, create) { - var targetMetadata = store.get(target); - if (!targetMetadata) { - if (!create) return; - store.set(target, targetMetadata = new Map()); - } - var keyMetadata = targetMetadata.get(targetKey); - if (!keyMetadata) { - if (!create) return; - targetMetadata.set(targetKey, keyMetadata = new Map()); - } return keyMetadata; -}; - -var ordinaryHasOwnMetadata = function (MetadataKey, O, P) { - var metadataMap = getOrCreateMetadataMap(O, P, false); - return metadataMap === undefined ? false : metadataMap.has(MetadataKey); -}; - -var ordinaryGetOwnMetadata = function (MetadataKey, O, P) { - var metadataMap = getOrCreateMetadataMap(O, P, false); - return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey); -}; - -var ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) { - getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue); -}; - -var ordinaryOwnMetadataKeys = function (target, targetKey) { - var metadataMap = getOrCreateMetadataMap(target, targetKey, false); - var keys = []; - if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); }); - return keys; -}; - -var toMetadataKey = function (it) { - return it === undefined || typeof it == 'symbol' ? it : String(it); -}; - -module.exports = { - store: store, - getMap: getOrCreateMetadataMap, - has: ordinaryHasOwnMetadata, - get: ordinaryGetOwnMetadata, - set: ordinaryDefineOwnMetadata, - keys: ordinaryOwnMetadataKeys, - toKey: toMetadataKey -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js": -/*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js ***! - \***************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -// `RequireObjectCoercible` abstract operation -// https://tc39.github.io/ecma262/#sec-requireobjectcoercible -module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js ***! - \*************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - -module.exports = function (key, value) { - try { - createNonEnumerableProperty(global, key, value); - } catch (error) { - global[key] = value; - } return value; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js ***! - \**************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); -var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - -var SPECIES = wellKnownSymbol('species'); - -module.exports = function (CONSTRUCTOR_NAME) { - var Constructor = getBuiltIn(CONSTRUCTOR_NAME); - var defineProperty = definePropertyModule.f; - - if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { - defineProperty(Constructor, SPECIES, { - configurable: true, - get: function () { return this; } - }); - } -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - -var TO_STRING_TAG = wellKnownSymbol('toStringTag'); - -module.exports = function (it, TAG, STATIC) { - if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { - defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG }); - } -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js ***! - \*************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js"); -var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js"); - -var keys = shared('keys'); - -module.exports = function (key) { - return keys[key] || (keys[key] = uid(key)); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js ***! - \***************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js"); - -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || setGlobal(SHARED, {}); - -module.exports = store; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js ***! - \*********************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); -var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js"); - -(module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: '3.6.4', - mode: IS_PURE ? 'pure' : 'global', - copyright: '© 2020 Denis Pushkarev (zloirock.ru)' -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - -var max = Math.max; -var min = Math.min; - -// Helper for a popular repeating case of the spec: -// Let integer be ? ToInteger(index). -// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). -module.exports = function (index, length) { - var integer = toInteger(index); - return integer < 0 ? max(integer + length, 0) : min(integer, length); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -// toObject with fallback for non-array-like ES3 strings -var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js"); -var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - -module.exports = function (it) { - return IndexedObject(requireObjectCoercible(it)); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js ***! - \*************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var ceil = Math.ceil; -var floor = Math.floor; - -// `ToInteger` abstract operation -// https://tc39.github.io/ecma262/#sec-tointeger -module.exports = function (argument) { - return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - -var min = Math.min; - -// `ToLength` abstract operation -// https://tc39.github.io/ecma262/#sec-tolength -module.exports = function (argument) { - return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - -// `ToObject` abstract operation -// https://tc39.github.io/ecma262/#sec-toobject -module.exports = function (argument) { - return Object(requireObjectCoercible(argument)); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js": -/*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js ***! - \***************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - -// `ToPrimitive` abstract operation -// https://tc39.github.io/ecma262/#sec-toprimitive -// instead of the ES6 spec version, we didn't implement @@toPrimitive case -// and the second argument - flag - preferred type is a string -module.exports = function (input, PREFERRED_STRING) { - if (!isObject(input)) return input; - var fn, val; - if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; - if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; - if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; - throw TypeError("Can't convert object to primitive value"); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js": -/*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js ***! - \************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - -var TO_STRING_TAG = wellKnownSymbol('toStringTag'); -var test = {}; - -test[TO_STRING_TAG] = 'z'; - -module.exports = String(test) === '[object z]'; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js": -/*!******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js ***! - \******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var id = 0; -var postfix = Math.random(); - -module.exports = function (key) { - return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js"); - -module.exports = NATIVE_SYMBOL - // eslint-disable-next-line no-undef - && !Symbol.sham - // eslint-disable-next-line no-undef - && typeof Symbol.iterator == 'symbol'; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js"); -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); -var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js"); -var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js"); -var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js"); - -var WellKnownSymbolsStore = shared('wks'); -var Symbol = global.Symbol; -var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid; - -module.exports = function (name) { - if (!has(WellKnownSymbolsStore, name)) { - if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name]; - else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name); - } return WellKnownSymbolsStore[name]; -}; - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js": -/*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js ***! - \*******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var collection = __webpack_require__(/*! ../internals/collection */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js"); -var collectionStrong = __webpack_require__(/*! ../internals/collection-strong */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js"); - -// `Map` constructor -// https://tc39.github.io/ecma262/#sec-map-objects -module.exports = collection('Map', function (init) { - return function Map() { return init(this, arguments.length ? arguments[0] : undefined); }; -}, collectionStrong); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js": -/*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js ***! - \*******************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var collection = __webpack_require__(/*! ../internals/collection */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js"); -var collectionStrong = __webpack_require__(/*! ../internals/collection-strong */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js"); - -// `Set` constructor -// https://tc39.github.io/ecma262/#sec-set-objects -module.exports = collection('Set', function (init) { - return function Set() { return init(this, arguments.length ? arguments[0] : undefined); }; -}, collectionStrong); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js": -/*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js ***! - \************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); -var redefineAll = __webpack_require__(/*! ../internals/redefine-all */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js"); -var InternalMetadataModule = __webpack_require__(/*! ../internals/internal-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js"); -var collection = __webpack_require__(/*! ../internals/collection */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js"); -var collectionWeak = __webpack_require__(/*! ../internals/collection-weak */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-weak.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); -var enforceIternalState = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js").enforce; -var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js"); - -var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global; -var isExtensible = Object.isExtensible; -var InternalWeakMap; - -var wrapper = function (init) { - return function WeakMap() { - return init(this, arguments.length ? arguments[0] : undefined); - }; -}; - -// `WeakMap` constructor -// https://tc39.github.io/ecma262/#sec-weakmap-constructor -var $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak); - -// IE11 WeakMap frozen keys fix -// We can't use feature detection because it crash some old IE builds -// https://github.com/zloirock/core-js/issues/485 -if (NATIVE_WEAK_MAP && IS_IE11) { - InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true); - InternalMetadataModule.REQUIRED = true; - var WeakMapPrototype = $WeakMap.prototype; - var nativeDelete = WeakMapPrototype['delete']; - var nativeHas = WeakMapPrototype.has; - var nativeGet = WeakMapPrototype.get; - var nativeSet = WeakMapPrototype.set; - redefineAll(WeakMapPrototype, { - 'delete': function (key) { - if (isObject(key) && !isExtensible(key)) { - var state = enforceIternalState(this); - if (!state.frozen) state.frozen = new InternalWeakMap(); - return nativeDelete.call(this, key) || state.frozen['delete'](key); - } return nativeDelete.call(this, key); - }, - has: function has(key) { - if (isObject(key) && !isExtensible(key)) { - var state = enforceIternalState(this); - if (!state.frozen) state.frozen = new InternalWeakMap(); - return nativeHas.call(this, key) || state.frozen.has(key); - } return nativeHas.call(this, key); - }, - get: function get(key) { - if (isObject(key) && !isExtensible(key)) { - var state = enforceIternalState(this); - if (!state.frozen) state.frozen = new InternalWeakMap(); - return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key); - } return nativeGet.call(this, key); - }, - set: function set(key, value) { - if (isObject(key) && !isExtensible(key)) { - var state = enforceIternalState(this); - if (!state.frozen) state.frozen = new InternalWeakMap(); - nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value); - } else nativeSet.call(this, key, value); - return this; - } - }); -} - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.define-metadata.js": -/*!*******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.define-metadata.js ***! - \*******************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - -var toMetadataKey = ReflectMetadataModule.toKey; -var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; - -// `Reflect.defineMetadata` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - defineMetadata: function defineMetadata(metadataKey, metadataValue, target /* , targetKey */) { - var targetKey = arguments.length < 4 ? undefined : toMetadataKey(arguments[3]); - ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), targetKey); - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.delete-metadata.js": -/*!*******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.delete-metadata.js ***! - \*******************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - -var toMetadataKey = ReflectMetadataModule.toKey; -var getOrCreateMetadataMap = ReflectMetadataModule.getMap; -var store = ReflectMetadataModule.store; - -// `Reflect.deleteMetadata` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false); - if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false; - if (metadataMap.size) return true; - var targetMetadata = store.get(target); - targetMetadata['delete'](targetKey); - return !!targetMetadata.size || store['delete'](target); - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js": -/*!*********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js ***! - \*********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` -var Set = __webpack_require__(/*! ../modules/es.set */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); -var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); - -var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; -var toMetadataKey = ReflectMetadataModule.toKey; - -var from = function (iter) { - var result = []; - iterate(iter, result.push, result); - return result; -}; - -var ordinaryMetadataKeys = function (O, P) { - var oKeys = ordinaryOwnMetadataKeys(O, P); - var parent = getPrototypeOf(O); - if (parent === null) return oKeys; - var pKeys = ordinaryMetadataKeys(parent, P); - return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys; -}; - -// `Reflect.getMetadataKeys` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - getMetadataKeys: function getMetadataKeys(target /* , targetKey */) { - var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); - return ordinaryMetadataKeys(anObject(target), targetKey); - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata.js": -/*!****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata.js ***! - \****************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - -var ordinaryHasOwnMetadata = ReflectMetadataModule.has; -var ordinaryGetOwnMetadata = ReflectMetadataModule.get; -var toMetadataKey = ReflectMetadataModule.toKey; - -var ordinaryGetMetadata = function (MetadataKey, O, P) { - var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); - if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P); - var parent = getPrototypeOf(O); - return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined; -}; - -// `Reflect.getMetadata` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - getMetadata: function getMetadata(metadataKey, target /* , targetKey */) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - return ordinaryGetMetadata(metadataKey, anObject(target), targetKey); - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js": -/*!*************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js ***! - \*************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - -var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; -var toMetadataKey = ReflectMetadataModule.toKey; - -// `Reflect.getOwnMetadataKeys` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) { - var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); - return ordinaryOwnMetadataKeys(anObject(target), targetKey); - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js": -/*!********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js ***! - \********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - -var ordinaryGetOwnMetadata = ReflectMetadataModule.get; -var toMetadataKey = ReflectMetadataModule.toKey; - -// `Reflect.getOwnMetadata` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - return ordinaryGetOwnMetadata(metadataKey, anObject(target), targetKey); - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-metadata.js": -/*!****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-metadata.js ***! - \****************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); -var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - -var ordinaryHasOwnMetadata = ReflectMetadataModule.has; -var toMetadataKey = ReflectMetadataModule.toKey; - -var ordinaryHasMetadata = function (MetadataKey, O, P) { - var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); - if (hasOwn) return true; - var parent = getPrototypeOf(O); - return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false; -}; - -// `Reflect.hasMetadata` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - return ordinaryHasMetadata(metadataKey, anObject(target), targetKey); - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js": -/*!********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js ***! - \********************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - -var ordinaryHasOwnMetadata = ReflectMetadataModule.has; -var toMetadataKey = ReflectMetadataModule.toKey; - -// `Reflect.hasOwnMetadata` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - return ordinaryHasOwnMetadata(metadataKey, anObject(target), targetKey); - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.metadata.js": -/*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.metadata.js ***! - \************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); -var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - -var toMetadataKey = ReflectMetadataModule.toKey; -var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; - -// `Reflect.metadata` method -// https://github.com/rbuckton/reflect-metadata -$({ target: 'Reflect', stat: true }, { - metadata: function metadata(metadataKey, metadataValue) { - return function decorator(target, key) { - ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetadataKey(key)); - }; - } -}); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata.js": -/*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata.js ***! - \*******************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(/*! ../modules/esnext.reflect.define-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.define-metadata.js"); -__webpack_require__(/*! ../modules/esnext.reflect.delete-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.delete-metadata.js"); -__webpack_require__(/*! ../modules/esnext.reflect.get-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata.js"); -__webpack_require__(/*! ../modules/esnext.reflect.get-metadata-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js"); -__webpack_require__(/*! ../modules/esnext.reflect.get-own-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js"); -__webpack_require__(/*! ../modules/esnext.reflect.get-own-metadata-keys */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js"); -__webpack_require__(/*! ../modules/esnext.reflect.has-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-metadata.js"); -__webpack_require__(/*! ../modules/esnext.reflect.has-own-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js"); -__webpack_require__(/*! ../modules/esnext.reflect.metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.metadata.js"); - - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js": -/*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js ***! - \**************************************************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/proposals/reflect-metadata */ "./node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata.js"); -/* harmony import */ var core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0__); -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - - -/***/ }), - -/***/ "./node_modules/tslib/tslib.es6.js": -/*!*****************************************!*\ - !*** ./node_modules/tslib/tslib.es6.js ***! - \*****************************************/ -/*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__extends", function() { return __extends; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__assign", function() { return __assign; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__rest", function() { return __rest; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__decorate", function() { return __decorate; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__param", function() { return __param; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__metadata", function() { return __metadata; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__awaiter", function() { return __awaiter; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__generator", function() { return __generator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__exportStar", function() { return __exportStar; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__values", function() { return __values; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__read", function() { return __read; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spread", function() { return __spread; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__await", function() { return __await; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function() { return __asyncGenerator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function() { return __asyncDelegator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncValues", function() { return __asyncValues; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function() { return __makeTemplateObject; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function() { return __importStar; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; }); -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ -/* global Reflect, Promise */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - } - return __assign.apply(this, arguments); -} - -function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) - t[p[i]] = s[p[i]]; - return t; -} - -function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -} - -function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); -} - -function __awaiter(thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -function __exportStar(m, exports) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} - -function __values(o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -} - -function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -} - -function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} - -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } -} - -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } -} - -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -} - -function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; - -function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result.default = mod; - return result; -} - -function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - - -/***/ }), - -/***/ "./node_modules/zone.js/dist/zone-evergreen.js": -/*!*****************************************************!*\ - !*** ./node_modules/zone.js/dist/zone-evergreen.js ***! - \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** -* @license -* Copyright Google Inc. All Rights Reserved. -* -* Use of this source code is governed by an MIT-style license that can be -* found in the LICENSE file at https://angular.io/license -*/ -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const Zone$1 = (function (global) { - const performance = global['performance']; - function mark(name) { - performance && performance['mark'] && performance['mark'](name); - } - function performanceMeasure(name, label) { - performance && performance['measure'] && performance['measure'](name, label); - } - mark('Zone'); - const checkDuplicate = global[('__zone_symbol__forceDuplicateZoneCheck')] === true; - if (global['Zone']) { - // if global['Zone'] already exists (maybe zone.js was already loaded or - // some other lib also registered a global object named Zone), we may need - // to throw an error, but sometimes user may not want this error. - // For example, - // we have two web pages, page1 includes zone.js, page2 doesn't. - // and the 1st time user load page1 and page2, everything work fine, - // but when user load page2 again, error occurs because global['Zone'] already exists. - // so we add a flag to let user choose whether to throw this error or not. - // By default, if existing Zone is from zone.js, we will not throw the error. - if (checkDuplicate || typeof global['Zone'].__symbol__ !== 'function') { - throw new Error('Zone already loaded.'); - } - else { - return global['Zone']; - } - } - class Zone { - constructor(parent, zoneSpec) { - this._parent = parent; - this._name = zoneSpec ? zoneSpec.name || 'unnamed' : ''; - this._properties = zoneSpec && zoneSpec.properties || {}; - this._zoneDelegate = - new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec); - } - static assertZonePatched() { - if (global['Promise'] !== patches['ZoneAwarePromise']) { - throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' + - 'has been overwritten.\n' + - 'Most likely cause is that a Promise polyfill has been loaded ' + - 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' + - 'If you must load one, do so before loading zone.js.)'); - } - } - static get root() { - let zone = Zone.current; - while (zone.parent) { - zone = zone.parent; - } - return zone; - } - static get current() { - return _currentZoneFrame.zone; - } - static get currentTask() { - return _currentTask; - } - static __load_patch(name, fn) { - if (patches.hasOwnProperty(name)) { - if (checkDuplicate) { - throw Error('Already loaded patch: ' + name); - } - } - else if (!global['__Zone_disable_' + name]) { - const perfName = 'Zone:' + name; - mark(perfName); - patches[name] = fn(global, Zone, _api); - performanceMeasure(perfName, perfName); - } - } - get parent() { - return this._parent; - } - get name() { - return this._name; - } - get(key) { - const zone = this.getZoneWith(key); - if (zone) - return zone._properties[key]; - } - getZoneWith(key) { - let current = this; - while (current) { - if (current._properties.hasOwnProperty(key)) { - return current; - } - current = current._parent; - } - return null; - } - fork(zoneSpec) { - if (!zoneSpec) - throw new Error('ZoneSpec required!'); - return this._zoneDelegate.fork(this, zoneSpec); - } - wrap(callback, source) { - if (typeof callback !== 'function') { - throw new Error('Expecting function got: ' + callback); - } - const _callback = this._zoneDelegate.intercept(this, callback, source); - const zone = this; - return function () { - return zone.runGuarded(_callback, this, arguments, source); - }; - } - run(callback, applyThis, applyArgs, source) { - _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; - try { - return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); - } - finally { - _currentZoneFrame = _currentZoneFrame.parent; - } - } - runGuarded(callback, applyThis = null, applyArgs, source) { - _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; - try { - try { - return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); - } - catch (error) { - if (this._zoneDelegate.handleError(this, error)) { - throw error; - } - } - } - finally { - _currentZoneFrame = _currentZoneFrame.parent; - } - } - runTask(task, applyThis, applyArgs) { - if (task.zone != this) { - throw new Error('A task can only be run in the zone of creation! (Creation: ' + - (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')'); - } - // https://github.com/angular/zone.js/issues/778, sometimes eventTask - // will run in notScheduled(canceled) state, we should not try to - // run such kind of task but just return - if (task.state === notScheduled && (task.type === eventTask || task.type === macroTask)) { - return; - } - const reEntryGuard = task.state != running; - reEntryGuard && task._transitionTo(running, scheduled); - task.runCount++; - const previousTask = _currentTask; - _currentTask = task; - _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; - try { - if (task.type == macroTask && task.data && !task.data.isPeriodic) { - task.cancelFn = undefined; - } - try { - return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs); - } - catch (error) { - if (this._zoneDelegate.handleError(this, error)) { - throw error; - } - } - } - finally { - // if the task's state is notScheduled or unknown, then it has already been cancelled - // we should not reset the state to scheduled - if (task.state !== notScheduled && task.state !== unknown) { - if (task.type == eventTask || (task.data && task.data.isPeriodic)) { - reEntryGuard && task._transitionTo(scheduled, running); - } - else { - task.runCount = 0; - this._updateTaskCount(task, -1); - reEntryGuard && - task._transitionTo(notScheduled, running, notScheduled); - } - } - _currentZoneFrame = _currentZoneFrame.parent; - _currentTask = previousTask; - } - } - scheduleTask(task) { - if (task.zone && task.zone !== this) { - // check if the task was rescheduled, the newZone - // should not be the children of the original zone - let newZone = this; - while (newZone) { - if (newZone === task.zone) { - throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${task.zone.name}`); - } - newZone = newZone.parent; - } - } - task._transitionTo(scheduling, notScheduled); - const zoneDelegates = []; - task._zoneDelegates = zoneDelegates; - task._zone = this; - try { - task = this._zoneDelegate.scheduleTask(this, task); - } - catch (err) { - // should set task's state to unknown when scheduleTask throw error - // because the err may from reschedule, so the fromState maybe notScheduled - task._transitionTo(unknown, scheduling, notScheduled); - // TODO: @JiaLiPassion, should we check the result from handleError? - this._zoneDelegate.handleError(this, err); - throw err; - } - if (task._zoneDelegates === zoneDelegates) { - // we have to check because internally the delegate can reschedule the task. - this._updateTaskCount(task, 1); - } - if (task.state == scheduling) { - task._transitionTo(scheduled, scheduling); - } - return task; - } - scheduleMicroTask(source, callback, data, customSchedule) { - return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, undefined)); - } - scheduleMacroTask(source, callback, data, customSchedule, customCancel) { - return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel)); - } - scheduleEventTask(source, callback, data, customSchedule, customCancel) { - return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel)); - } - cancelTask(task) { - if (task.zone != this) - throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' + - (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')'); - task._transitionTo(canceling, scheduled, running); - try { - this._zoneDelegate.cancelTask(this, task); - } - catch (err) { - // if error occurs when cancelTask, transit the state to unknown - task._transitionTo(unknown, canceling); - this._zoneDelegate.handleError(this, err); - throw err; - } - this._updateTaskCount(task, -1); - task._transitionTo(notScheduled, canceling); - task.runCount = 0; - return task; - } - _updateTaskCount(task, count) { - const zoneDelegates = task._zoneDelegates; - if (count == -1) { - task._zoneDelegates = null; - } - for (let i = 0; i < zoneDelegates.length; i++) { - zoneDelegates[i]._updateTaskCount(task.type, count); - } - } - } - Zone.__symbol__ = __symbol__; - const DELEGATE_ZS = { - name: '', - onHasTask: (delegate, _, target, hasTaskState) => delegate.hasTask(target, hasTaskState), - onScheduleTask: (delegate, _, target, task) => delegate.scheduleTask(target, task), - onInvokeTask: (delegate, _, target, task, applyThis, applyArgs) => delegate.invokeTask(target, task, applyThis, applyArgs), - onCancelTask: (delegate, _, target, task) => delegate.cancelTask(target, task) - }; - class ZoneDelegate { - constructor(zone, parentDelegate, zoneSpec) { - this._taskCounts = { 'microTask': 0, 'macroTask': 0, 'eventTask': 0 }; - this.zone = zone; - this._parentDelegate = parentDelegate; - this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS); - this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt); - this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone); - this._interceptZS = - zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS); - this._interceptDlgt = - zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt); - this._interceptCurrZone = - zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone); - this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS); - this._invokeDlgt = - zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt); - this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone); - this._handleErrorZS = - zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS); - this._handleErrorDlgt = - zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt); - this._handleErrorCurrZone = - zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone); - this._scheduleTaskZS = - zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS); - this._scheduleTaskDlgt = zoneSpec && - (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt); - this._scheduleTaskCurrZone = - zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone); - this._invokeTaskZS = - zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS); - this._invokeTaskDlgt = - zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt); - this._invokeTaskCurrZone = - zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone); - this._cancelTaskZS = - zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS); - this._cancelTaskDlgt = - zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt); - this._cancelTaskCurrZone = - zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone); - this._hasTaskZS = null; - this._hasTaskDlgt = null; - this._hasTaskDlgtOwner = null; - this._hasTaskCurrZone = null; - const zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask; - const parentHasTask = parentDelegate && parentDelegate._hasTaskZS; - if (zoneSpecHasTask || parentHasTask) { - // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such - // a case all task related interceptors must go through this ZD. We can't short circuit it. - this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS; - this._hasTaskDlgt = parentDelegate; - this._hasTaskDlgtOwner = this; - this._hasTaskCurrZone = zone; - if (!zoneSpec.onScheduleTask) { - this._scheduleTaskZS = DELEGATE_ZS; - this._scheduleTaskDlgt = parentDelegate; - this._scheduleTaskCurrZone = this.zone; - } - if (!zoneSpec.onInvokeTask) { - this._invokeTaskZS = DELEGATE_ZS; - this._invokeTaskDlgt = parentDelegate; - this._invokeTaskCurrZone = this.zone; - } - if (!zoneSpec.onCancelTask) { - this._cancelTaskZS = DELEGATE_ZS; - this._cancelTaskDlgt = parentDelegate; - this._cancelTaskCurrZone = this.zone; - } - } - } - fork(targetZone, zoneSpec) { - return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) : - new Zone(targetZone, zoneSpec); - } - intercept(targetZone, callback, source) { - return this._interceptZS ? - this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) : - callback; - } - invoke(targetZone, callback, applyThis, applyArgs, source) { - return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) : - callback.apply(applyThis, applyArgs); - } - handleError(targetZone, error) { - return this._handleErrorZS ? - this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) : - true; - } - scheduleTask(targetZone, task) { - let returnTask = task; - if (this._scheduleTaskZS) { - if (this._hasTaskZS) { - returnTask._zoneDelegates.push(this._hasTaskDlgtOwner); - } - returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task); - if (!returnTask) - returnTask = task; - } - else { - if (task.scheduleFn) { - task.scheduleFn(task); - } - else if (task.type == microTask) { - scheduleMicroTask(task); - } - else { - throw new Error('Task is missing scheduleFn.'); - } - } - return returnTask; - } - invokeTask(targetZone, task, applyThis, applyArgs) { - return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) : - task.callback.apply(applyThis, applyArgs); - } - cancelTask(targetZone, task) { - let value; - if (this._cancelTaskZS) { - value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task); - } - else { - if (!task.cancelFn) { - throw Error('Task is not cancelable'); - } - value = task.cancelFn(task); - } - return value; - } - hasTask(targetZone, isEmpty) { - // hasTask should not throw error so other ZoneDelegate - // can still trigger hasTask callback - try { - this._hasTaskZS && - this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty); - } - catch (err) { - this.handleError(targetZone, err); - } - } - _updateTaskCount(type, count) { - const counts = this._taskCounts; - const prev = counts[type]; - const next = counts[type] = prev + count; - if (next < 0) { - throw new Error('More tasks executed then were scheduled.'); - } - if (prev == 0 || next == 0) { - const isEmpty = { - microTask: counts['microTask'] > 0, - macroTask: counts['macroTask'] > 0, - eventTask: counts['eventTask'] > 0, - change: type - }; - this.hasTask(this.zone, isEmpty); - } - } - } - class ZoneTask { - constructor(type, source, callback, options, scheduleFn, cancelFn) { - this._zone = null; - this.runCount = 0; - this._zoneDelegates = null; - this._state = 'notScheduled'; - this.type = type; - this.source = source; - this.data = options; - this.scheduleFn = scheduleFn; - this.cancelFn = cancelFn; - this.callback = callback; - const self = this; - // TODO: @JiaLiPassion options should have interface - if (type === eventTask && options && options.useG) { - this.invoke = ZoneTask.invokeTask; - } - else { - this.invoke = function () { - return ZoneTask.invokeTask.call(global, self, this, arguments); - }; - } - } - static invokeTask(task, target, args) { - if (!task) { - task = this; - } - _numberOfNestedTaskFrames++; - try { - task.runCount++; - return task.zone.runTask(task, target, args); - } - finally { - if (_numberOfNestedTaskFrames == 1) { - drainMicroTaskQueue(); - } - _numberOfNestedTaskFrames--; - } - } - get zone() { - return this._zone; - } - get state() { - return this._state; - } - cancelScheduleRequest() { - this._transitionTo(notScheduled, scheduling); - } - _transitionTo(toState, fromState1, fromState2) { - if (this._state === fromState1 || this._state === fromState2) { - this._state = toState; - if (toState == notScheduled) { - this._zoneDelegates = null; - } - } - else { - throw new Error(`${this.type} '${this.source}': can not transition to '${toState}', expecting state '${fromState1}'${fromState2 ? ' or \'' + fromState2 + '\'' : ''}, was '${this._state}'.`); - } - } - toString() { - if (this.data && typeof this.data.handleId !== 'undefined') { - return this.data.handleId.toString(); - } - else { - return Object.prototype.toString.call(this); - } - } - // add toJSON method to prevent cyclic error when - // call JSON.stringify(zoneTask) - toJSON() { - return { - type: this.type, - state: this.state, - source: this.source, - zone: this.zone.name, - runCount: this.runCount - }; - } - } - ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - /// MICROTASK QUEUE - ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - const symbolSetTimeout = __symbol__('setTimeout'); - const symbolPromise = __symbol__('Promise'); - const symbolThen = __symbol__('then'); - let _microTaskQueue = []; - let _isDrainingMicrotaskQueue = false; - let nativeMicroTaskQueuePromise; - function scheduleMicroTask(task) { - // if we are not running in any task, and there has not been anything scheduled - // we must bootstrap the initial task creation by manually scheduling the drain - if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) { - // We are not running in Task, so we need to kickstart the microtask queue. - if (!nativeMicroTaskQueuePromise) { - if (global[symbolPromise]) { - nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0); - } - } - if (nativeMicroTaskQueuePromise) { - let nativeThen = nativeMicroTaskQueuePromise[symbolThen]; - if (!nativeThen) { - // native Promise is not patchable, we need to use `then` directly - // issue 1078 - nativeThen = nativeMicroTaskQueuePromise['then']; - } - nativeThen.call(nativeMicroTaskQueuePromise, drainMicroTaskQueue); - } - else { - global[symbolSetTimeout](drainMicroTaskQueue, 0); - } - } - task && _microTaskQueue.push(task); - } - function drainMicroTaskQueue() { - if (!_isDrainingMicrotaskQueue) { - _isDrainingMicrotaskQueue = true; - while (_microTaskQueue.length) { - const queue = _microTaskQueue; - _microTaskQueue = []; - for (let i = 0; i < queue.length; i++) { - const task = queue[i]; - try { - task.zone.runTask(task, null, null); - } - catch (error) { - _api.onUnhandledError(error); - } - } - } - _api.microtaskDrainDone(); - _isDrainingMicrotaskQueue = false; - } - } - ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - /// BOOTSTRAP - ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - const NO_ZONE = { name: 'NO ZONE' }; - const notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown'; - const microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask'; - const patches = {}; - const _api = { - symbol: __symbol__, - currentZoneFrame: () => _currentZoneFrame, - onUnhandledError: noop, - microtaskDrainDone: noop, - scheduleMicroTask: scheduleMicroTask, - showUncaughtError: () => !Zone[__symbol__('ignoreConsoleErrorUncaughtError')], - patchEventTarget: () => [], - patchOnProperties: noop, - patchMethod: () => noop, - bindArguments: () => [], - patchThen: () => noop, - patchMacroTask: () => noop, - setNativePromise: (NativePromise) => { - // sometimes NativePromise.resolve static function - // is not ready yet, (such as core-js/es6.promise) - // so we need to check here. - if (NativePromise && typeof NativePromise.resolve === 'function') { - nativeMicroTaskQueuePromise = NativePromise.resolve(0); - } - }, - patchEventPrototype: () => noop, - isIEOrEdge: () => false, - getGlobalObjects: () => undefined, - ObjectDefineProperty: () => noop, - ObjectGetOwnPropertyDescriptor: () => undefined, - ObjectCreate: () => undefined, - ArraySlice: () => [], - patchClass: () => noop, - wrapWithCurrentZone: () => noop, - filterProperties: () => [], - attachOriginToPatched: () => noop, - _redefineProperty: () => noop, - patchCallbacks: () => noop - }; - let _currentZoneFrame = { parent: null, zone: new Zone(null, null) }; - let _currentTask = null; - let _numberOfNestedTaskFrames = 0; - function noop() { } - function __symbol__(name) { - return '__zone_symbol__' + name; - } - performanceMeasure('Zone', 'Zone'); - return global['Zone'] = Zone; -})(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global); - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -Zone.__load_patch('ZoneAwarePromise', (global, Zone, api) => { - const ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - const ObjectDefineProperty = Object.defineProperty; - function readableObjectToString(obj) { - if (obj && obj.toString === Object.prototype.toString) { - const className = obj.constructor && obj.constructor.name; - return (className ? className : '') + ': ' + JSON.stringify(obj); - } - return obj ? obj.toString() : Object.prototype.toString.call(obj); - } - const __symbol__ = api.symbol; - const _uncaughtPromiseErrors = []; - const symbolPromise = __symbol__('Promise'); - const symbolThen = __symbol__('then'); - const creationTrace = '__creationTrace__'; - api.onUnhandledError = (e) => { - if (api.showUncaughtError()) { - const rejection = e && e.rejection; - if (rejection) { - console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined); - } - else { - console.error(e); - } - } - }; - api.microtaskDrainDone = () => { - while (_uncaughtPromiseErrors.length) { - while (_uncaughtPromiseErrors.length) { - const uncaughtPromiseError = _uncaughtPromiseErrors.shift(); - try { - uncaughtPromiseError.zone.runGuarded(() => { - throw uncaughtPromiseError; - }); - } - catch (error) { - handleUnhandledRejection(error); - } - } - } - }; - const UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler'); - function handleUnhandledRejection(e) { - api.onUnhandledError(e); - try { - const handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL]; - if (handler && typeof handler === 'function') { - handler.call(this, e); - } - } - catch (err) { - } - } - function isThenable(value) { - return value && value.then; - } - function forwardResolution(value) { - return value; - } - function forwardRejection(rejection) { - return ZoneAwarePromise.reject(rejection); - } - const symbolState = __symbol__('state'); - const symbolValue = __symbol__('value'); - const symbolFinally = __symbol__('finally'); - const symbolParentPromiseValue = __symbol__('parentPromiseValue'); - const symbolParentPromiseState = __symbol__('parentPromiseState'); - const source = 'Promise.then'; - const UNRESOLVED = null; - const RESOLVED = true; - const REJECTED = false; - const REJECTED_NO_CATCH = 0; - function makeResolver(promise, state) { - return (v) => { - try { - resolvePromise(promise, state, v); - } - catch (err) { - resolvePromise(promise, false, err); - } - // Do not return value or you will break the Promise spec. - }; - } - const once = function () { - let wasCalled = false; - return function wrapper(wrappedFunction) { - return function () { - if (wasCalled) { - return; - } - wasCalled = true; - wrappedFunction.apply(null, arguments); - }; - }; - }; - const TYPE_ERROR = 'Promise resolved with itself'; - const CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace'); - // Promise Resolution - function resolvePromise(promise, state, value) { - const onceWrapper = once(); - if (promise === value) { - throw new TypeError(TYPE_ERROR); - } - if (promise[symbolState] === UNRESOLVED) { - // should only get value.then once based on promise spec. - let then = null; - try { - if (typeof value === 'object' || typeof value === 'function') { - then = value && value.then; - } - } - catch (err) { - onceWrapper(() => { - resolvePromise(promise, false, err); - })(); - return promise; - } - // if (value instanceof ZoneAwarePromise) { - if (state !== REJECTED && value instanceof ZoneAwarePromise && - value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) && - value[symbolState] !== UNRESOLVED) { - clearRejectedNoCatch(value); - resolvePromise(promise, value[symbolState], value[symbolValue]); - } - else if (state !== REJECTED && typeof then === 'function') { - try { - then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false))); - } - catch (err) { - onceWrapper(() => { - resolvePromise(promise, false, err); - })(); - } - } - else { - promise[symbolState] = state; - const queue = promise[symbolValue]; - promise[symbolValue] = value; - if (promise[symbolFinally] === symbolFinally) { - // the promise is generated by Promise.prototype.finally - if (state === RESOLVED) { - // the state is resolved, should ignore the value - // and use parent promise value - promise[symbolState] = promise[symbolParentPromiseState]; - promise[symbolValue] = promise[symbolParentPromiseValue]; - } - } - // record task information in value when error occurs, so we can - // do some additional work such as render longStackTrace - if (state === REJECTED && value instanceof Error) { - // check if longStackTraceZone is here - const trace = Zone.currentTask && Zone.currentTask.data && - Zone.currentTask.data[creationTrace]; - if (trace) { - // only keep the long stack trace into error when in longStackTraceZone - ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { configurable: true, enumerable: false, writable: true, value: trace }); - } - } - for (let i = 0; i < queue.length;) { - scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]); - } - if (queue.length == 0 && state == REJECTED) { - promise[symbolState] = REJECTED_NO_CATCH; - try { - // try to print more readable error log - throw new Error('Uncaught (in promise): ' + readableObjectToString(value) + - (value && value.stack ? '\n' + value.stack : '')); - } - catch (err) { - const error = err; - error.rejection = value; - error.promise = promise; - error.zone = Zone.current; - error.task = Zone.currentTask; - _uncaughtPromiseErrors.push(error); - api.scheduleMicroTask(); // to make sure that it is running - } - } - } - } - // Resolving an already resolved promise is a noop. - return promise; - } - const REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler'); - function clearRejectedNoCatch(promise) { - if (promise[symbolState] === REJECTED_NO_CATCH) { - // if the promise is rejected no catch status - // and queue.length > 0, means there is a error handler - // here to handle the rejected promise, we should trigger - // windows.rejectionhandled eventHandler or nodejs rejectionHandled - // eventHandler - try { - const handler = Zone[REJECTION_HANDLED_HANDLER]; - if (handler && typeof handler === 'function') { - handler.call(this, { rejection: promise[symbolValue], promise: promise }); - } - } - catch (err) { - } - promise[symbolState] = REJECTED; - for (let i = 0; i < _uncaughtPromiseErrors.length; i++) { - if (promise === _uncaughtPromiseErrors[i].promise) { - _uncaughtPromiseErrors.splice(i, 1); - } - } - } - } - function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) { - clearRejectedNoCatch(promise); - const promiseState = promise[symbolState]; - const delegate = promiseState ? - (typeof onFulfilled === 'function') ? onFulfilled : forwardResolution : - (typeof onRejected === 'function') ? onRejected : forwardRejection; - zone.scheduleMicroTask(source, () => { - try { - const parentPromiseValue = promise[symbolValue]; - const isFinallyPromise = chainPromise && symbolFinally === chainPromise[symbolFinally]; - if (isFinallyPromise) { - // if the promise is generated from finally call, keep parent promise's state and value - chainPromise[symbolParentPromiseValue] = parentPromiseValue; - chainPromise[symbolParentPromiseState] = promiseState; - } - // should not pass value to finally callback - const value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ? - [] : - [parentPromiseValue]); - resolvePromise(chainPromise, true, value); - } - catch (error) { - // if error occurs, should always return this error - resolvePromise(chainPromise, false, error); - } - }, chainPromise); - } - const ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }'; - class ZoneAwarePromise { - constructor(executor) { - const promise = this; - if (!(promise instanceof ZoneAwarePromise)) { - throw new Error('Must be an instanceof Promise.'); - } - promise[symbolState] = UNRESOLVED; - promise[symbolValue] = []; // queue; - try { - executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED)); - } - catch (error) { - resolvePromise(promise, false, error); - } - } - static toString() { - return ZONE_AWARE_PROMISE_TO_STRING; - } - static resolve(value) { - return resolvePromise(new this(null), RESOLVED, value); - } - static reject(error) { - return resolvePromise(new this(null), REJECTED, error); - } - static race(values) { - let resolve; - let reject; - let promise = new this((res, rej) => { - resolve = res; - reject = rej; - }); - function onResolve(value) { - resolve(value); - } - function onReject(error) { - reject(error); - } - for (let value of values) { - if (!isThenable(value)) { - value = this.resolve(value); - } - value.then(onResolve, onReject); - } - return promise; - } - static all(values) { - let resolve; - let reject; - let promise = new this((res, rej) => { - resolve = res; - reject = rej; - }); - // Start at 2 to prevent prematurely resolving if .then is called immediately. - let unresolvedCount = 2; - let valueIndex = 0; - const resolvedValues = []; - for (let value of values) { - if (!isThenable(value)) { - value = this.resolve(value); - } - const curValueIndex = valueIndex; - value.then((value) => { - resolvedValues[curValueIndex] = value; - unresolvedCount--; - if (unresolvedCount === 0) { - resolve(resolvedValues); - } - }, reject); - unresolvedCount++; - valueIndex++; - } - // Make the unresolvedCount zero-based again. - unresolvedCount -= 2; - if (unresolvedCount === 0) { - resolve(resolvedValues); - } - return promise; - } - get [Symbol.toStringTag]() { - return 'Promise'; - } - then(onFulfilled, onRejected) { - const chainPromise = new this.constructor(null); - const zone = Zone.current; - if (this[symbolState] == UNRESOLVED) { - this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected); - } - else { - scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected); - } - return chainPromise; - } - catch(onRejected) { - return this.then(null, onRejected); - } - finally(onFinally) { - const chainPromise = new this.constructor(null); - chainPromise[symbolFinally] = symbolFinally; - const zone = Zone.current; - if (this[symbolState] == UNRESOLVED) { - this[symbolValue].push(zone, chainPromise, onFinally, onFinally); - } - else { - scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally); - } - return chainPromise; - } - } - // Protect against aggressive optimizers dropping seemingly unused properties. - // E.g. Closure Compiler in advanced mode. - ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve; - ZoneAwarePromise['reject'] = ZoneAwarePromise.reject; - ZoneAwarePromise['race'] = ZoneAwarePromise.race; - ZoneAwarePromise['all'] = ZoneAwarePromise.all; - const NativePromise = global[symbolPromise] = global['Promise']; - const ZONE_AWARE_PROMISE = Zone.__symbol__('ZoneAwarePromise'); - let desc = ObjectGetOwnPropertyDescriptor(global, 'Promise'); - if (!desc || desc.configurable) { - desc && delete desc.writable; - desc && delete desc.value; - if (!desc) { - desc = { configurable: true, enumerable: true }; - } - desc.get = function () { - // if we already set ZoneAwarePromise, use patched one - // otherwise return native one. - return global[ZONE_AWARE_PROMISE] ? global[ZONE_AWARE_PROMISE] : global[symbolPromise]; - }; - desc.set = function (NewNativePromise) { - if (NewNativePromise === ZoneAwarePromise) { - // if the NewNativePromise is ZoneAwarePromise - // save to global - global[ZONE_AWARE_PROMISE] = NewNativePromise; - } - else { - // if the NewNativePromise is not ZoneAwarePromise - // for example: after load zone.js, some library just - // set es6-promise to global, if we set it to global - // directly, assertZonePatched will fail and angular - // will not loaded, so we just set the NewNativePromise - // to global[symbolPromise], so the result is just like - // we load ES6 Promise before zone.js - global[symbolPromise] = NewNativePromise; - if (!NewNativePromise.prototype[symbolThen]) { - patchThen(NewNativePromise); - } - api.setNativePromise(NewNativePromise); - } - }; - ObjectDefineProperty(global, 'Promise', desc); - } - global['Promise'] = ZoneAwarePromise; - const symbolThenPatched = __symbol__('thenPatched'); - function patchThen(Ctor) { - const proto = Ctor.prototype; - const prop = ObjectGetOwnPropertyDescriptor(proto, 'then'); - if (prop && (prop.writable === false || !prop.configurable)) { - // check Ctor.prototype.then propertyDescriptor is writable or not - // in meteor env, writable is false, we should ignore such case - return; - } - const originalThen = proto.then; - // Keep a reference to the original method. - proto[symbolThen] = originalThen; - Ctor.prototype.then = function (onResolve, onReject) { - const wrapped = new ZoneAwarePromise((resolve, reject) => { - originalThen.call(this, resolve, reject); - }); - return wrapped.then(onResolve, onReject); - }; - Ctor[symbolThenPatched] = true; - } - api.patchThen = patchThen; - function zoneify(fn) { - return function () { - let resultPromise = fn.apply(this, arguments); - if (resultPromise instanceof ZoneAwarePromise) { - return resultPromise; - } - let ctor = resultPromise.constructor; - if (!ctor[symbolThenPatched]) { - patchThen(ctor); - } - return resultPromise; - }; - } - if (NativePromise) { - patchThen(NativePromise); - const fetch = global['fetch']; - if (typeof fetch == 'function') { - global[api.symbol('fetch')] = fetch; - global['fetch'] = zoneify(fetch); - } - } - // This is not part of public API, but it is useful for tests, so we expose it. - Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors; - return ZoneAwarePromise; -}); - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * Suppress closure compiler errors about unknown 'Zone' variable - * @fileoverview - * @suppress {undefinedVars,globalThis,missingRequire} - */ -// issue #989, to reduce bundle size, use short name -/** Object.getOwnPropertyDescriptor */ -const ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; -/** Object.defineProperty */ -const ObjectDefineProperty = Object.defineProperty; -/** Object.getPrototypeOf */ -const ObjectGetPrototypeOf = Object.getPrototypeOf; -/** Object.create */ -const ObjectCreate = Object.create; -/** Array.prototype.slice */ -const ArraySlice = Array.prototype.slice; -/** addEventListener string const */ -const ADD_EVENT_LISTENER_STR = 'addEventListener'; -/** removeEventListener string const */ -const REMOVE_EVENT_LISTENER_STR = 'removeEventListener'; -/** zoneSymbol addEventListener */ -const ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR); -/** zoneSymbol removeEventListener */ -const ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR); -/** true string const */ -const TRUE_STR = 'true'; -/** false string const */ -const FALSE_STR = 'false'; -/** __zone_symbol__ string const */ -const ZONE_SYMBOL_PREFIX = '__zone_symbol__'; -function wrapWithCurrentZone(callback, source) { - return Zone.current.wrap(callback, source); -} -function scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) { - return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel); -} -const zoneSymbol = Zone.__symbol__; -const isWindowExists = typeof window !== 'undefined'; -const internalWindow = isWindowExists ? window : undefined; -const _global = isWindowExists && internalWindow || typeof self === 'object' && self || global; -const REMOVE_ATTRIBUTE = 'removeAttribute'; -const NULL_ON_PROP_VALUE = [null]; -function bindArguments(args, source) { - for (let i = args.length - 1; i >= 0; i--) { - if (typeof args[i] === 'function') { - args[i] = wrapWithCurrentZone(args[i], source + '_' + i); - } - } - return args; -} -function patchPrototype(prototype, fnNames) { - const source = prototype.constructor['name']; - for (let i = 0; i < fnNames.length; i++) { - const name = fnNames[i]; - const delegate = prototype[name]; - if (delegate) { - const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name); - if (!isPropertyWritable(prototypeDesc)) { - continue; - } - prototype[name] = ((delegate) => { - const patched = function () { - return delegate.apply(this, bindArguments(arguments, source + '.' + name)); - }; - attachOriginToPatched(patched, delegate); - return patched; - })(delegate); - } - } -} -function isPropertyWritable(propertyDesc) { - if (!propertyDesc) { - return true; - } - if (propertyDesc.writable === false) { - return false; - } - return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined'); -} -const isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope); -// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify -// this code. -const isNode = (!('nw' in _global) && typeof _global.process !== 'undefined' && - {}.toString.call(_global.process) === '[object process]'); -const isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']); -// we are in electron of nw, so we are both browser and nodejs -// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify -// this code. -const isMix = typeof _global.process !== 'undefined' && - {}.toString.call(_global.process) === '[object process]' && !isWebWorker && - !!(isWindowExists && internalWindow['HTMLElement']); -const zoneSymbolEventNames = {}; -const wrapFn = function (event) { - // https://github.com/angular/zone.js/issues/911, in IE, sometimes - // event will be undefined, so we need to use window.event - event = event || _global.event; - if (!event) { - return; - } - let eventNameSymbol = zoneSymbolEventNames[event.type]; - if (!eventNameSymbol) { - eventNameSymbol = zoneSymbolEventNames[event.type] = zoneSymbol('ON_PROPERTY' + event.type); - } - const target = this || event.target || _global; - const listener = target[eventNameSymbol]; - let result; - if (isBrowser && target === internalWindow && event.type === 'error') { - // window.onerror have different signiture - // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#window.onerror - // and onerror callback will prevent default when callback return true - const errorEvent = event; - result = listener && - listener.call(this, errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error); - if (result === true) { - event.preventDefault(); - } - } - else { - result = listener && listener.apply(this, arguments); - if (result != undefined && !result) { - event.preventDefault(); - } - } - return result; -}; -function patchProperty(obj, prop, prototype) { - let desc = ObjectGetOwnPropertyDescriptor(obj, prop); - if (!desc && prototype) { - // when patch window object, use prototype to check prop exist or not - const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop); - if (prototypeDesc) { - desc = { enumerable: true, configurable: true }; - } - } - // if the descriptor not exists or is not configurable - // just return - if (!desc || !desc.configurable) { - return; - } - const onPropPatchedSymbol = zoneSymbol('on' + prop + 'patched'); - if (obj.hasOwnProperty(onPropPatchedSymbol) && obj[onPropPatchedSymbol]) { - return; - } - // A property descriptor cannot have getter/setter and be writable - // deleting the writable and value properties avoids this error: - // - // TypeError: property descriptors must not specify a value or be writable when a - // getter or setter has been specified - delete desc.writable; - delete desc.value; - const originalDescGet = desc.get; - const originalDescSet = desc.set; - // substr(2) cuz 'onclick' -> 'click', etc - const eventName = prop.substr(2); - let eventNameSymbol = zoneSymbolEventNames[eventName]; - if (!eventNameSymbol) { - eventNameSymbol = zoneSymbolEventNames[eventName] = zoneSymbol('ON_PROPERTY' + eventName); - } - desc.set = function (newValue) { - // in some of windows's onproperty callback, this is undefined - // so we need to check it - let target = this; - if (!target && obj === _global) { - target = _global; - } - if (!target) { - return; - } - let previousValue = target[eventNameSymbol]; - if (previousValue) { - target.removeEventListener(eventName, wrapFn); - } - // issue #978, when onload handler was added before loading zone.js - // we should remove it with originalDescSet - if (originalDescSet) { - originalDescSet.apply(target, NULL_ON_PROP_VALUE); - } - if (typeof newValue === 'function') { - target[eventNameSymbol] = newValue; - target.addEventListener(eventName, wrapFn, false); - } - else { - target[eventNameSymbol] = null; - } - }; - // The getter would return undefined for unassigned properties but the default value of an - // unassigned property is null - desc.get = function () { - // in some of windows's onproperty callback, this is undefined - // so we need to check it - let target = this; - if (!target && obj === _global) { - target = _global; - } - if (!target) { - return null; - } - const listener = target[eventNameSymbol]; - if (listener) { - return listener; - } - else if (originalDescGet) { - // result will be null when use inline event attribute, - // such as - // because the onclick function is internal raw uncompiled handler - // the onclick will be evaluated when first time event was triggered or - // the property is accessed, https://github.com/angular/zone.js/issues/525 - // so we should use original native get to retrieve the handler - let value = originalDescGet && originalDescGet.call(this); - if (value) { - desc.set.call(this, value); - if (typeof target[REMOVE_ATTRIBUTE] === 'function') { - target.removeAttribute(prop); - } - return value; - } - } - return null; - }; - ObjectDefineProperty(obj, prop, desc); - obj[onPropPatchedSymbol] = true; -} -function patchOnProperties(obj, properties, prototype) { - if (properties) { - for (let i = 0; i < properties.length; i++) { - patchProperty(obj, 'on' + properties[i], prototype); - } - } - else { - const onProperties = []; - for (const prop in obj) { - if (prop.substr(0, 2) == 'on') { - onProperties.push(prop); - } - } - for (let j = 0; j < onProperties.length; j++) { - patchProperty(obj, onProperties[j], prototype); - } - } -} -const originalInstanceKey = zoneSymbol('originalInstance'); -// wrap some native API on `window` -function patchClass(className) { - const OriginalClass = _global[className]; - if (!OriginalClass) - return; - // keep original class in global - _global[zoneSymbol(className)] = OriginalClass; - _global[className] = function () { - const a = bindArguments(arguments, className); - switch (a.length) { - case 0: - this[originalInstanceKey] = new OriginalClass(); - break; - case 1: - this[originalInstanceKey] = new OriginalClass(a[0]); - break; - case 2: - this[originalInstanceKey] = new OriginalClass(a[0], a[1]); - break; - case 3: - this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]); - break; - case 4: - this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]); - break; - default: - throw new Error('Arg list too long.'); - } - }; - // attach original delegate to patched function - attachOriginToPatched(_global[className], OriginalClass); - const instance = new OriginalClass(function () { }); - let prop; - for (prop in instance) { - // https://bugs.webkit.org/show_bug.cgi?id=44721 - if (className === 'XMLHttpRequest' && prop === 'responseBlob') - continue; - (function (prop) { - if (typeof instance[prop] === 'function') { - _global[className].prototype[prop] = function () { - return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments); - }; - } - else { - ObjectDefineProperty(_global[className].prototype, prop, { - set: function (fn) { - if (typeof fn === 'function') { - this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop); - // keep callback in wrapped function so we can - // use it in Function.prototype.toString to return - // the native one. - attachOriginToPatched(this[originalInstanceKey][prop], fn); - } - else { - this[originalInstanceKey][prop] = fn; - } - }, - get: function () { - return this[originalInstanceKey][prop]; - } - }); - } - }(prop)); - } - for (prop in OriginalClass) { - if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) { - _global[className][prop] = OriginalClass[prop]; - } - } -} -function copySymbolProperties(src, dest) { - if (typeof Object.getOwnPropertySymbols !== 'function') { - return; - } - const symbols = Object.getOwnPropertySymbols(src); - symbols.forEach((symbol) => { - const desc = Object.getOwnPropertyDescriptor(src, symbol); - Object.defineProperty(dest, symbol, { - get: function () { - return src[symbol]; - }, - set: function (value) { - if (desc && (!desc.writable || typeof desc.set !== 'function')) { - // if src[symbol] is not writable or not have a setter, just return - return; - } - src[symbol] = value; - }, - enumerable: desc ? desc.enumerable : true, - configurable: desc ? desc.configurable : true - }); - }); -} -let shouldCopySymbolProperties = false; - -function patchMethod(target, name, patchFn) { - let proto = target; - while (proto && !proto.hasOwnProperty(name)) { - proto = ObjectGetPrototypeOf(proto); - } - if (!proto && target[name]) { - // somehow we did not find it, but we can see it. This happens on IE for Window properties. - proto = target; - } - const delegateName = zoneSymbol(name); - let delegate = null; - if (proto && !(delegate = proto[delegateName])) { - delegate = proto[delegateName] = proto[name]; - // check whether proto[name] is writable - // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob - const desc = proto && ObjectGetOwnPropertyDescriptor(proto, name); - if (isPropertyWritable(desc)) { - const patchDelegate = patchFn(delegate, delegateName, name); - proto[name] = function () { - return patchDelegate(this, arguments); - }; - attachOriginToPatched(proto[name], delegate); - if (shouldCopySymbolProperties) { - copySymbolProperties(delegate, proto[name]); - } - } - } - return delegate; -} -// TODO: @JiaLiPassion, support cancel task later if necessary -function patchMacroTask(obj, funcName, metaCreator) { - let setNative = null; - function scheduleTask(task) { - const data = task.data; - data.args[data.cbIdx] = function () { - task.invoke.apply(this, arguments); - }; - setNative.apply(data.target, data.args); - return task; - } - setNative = patchMethod(obj, funcName, (delegate) => function (self, args) { - const meta = metaCreator(self, args); - if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') { - return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask); - } - else { - // cause an error by calling it directly. - return delegate.apply(self, args); - } - }); -} - -function attachOriginToPatched(patched, original) { - patched[zoneSymbol('OriginalDelegate')] = original; -} -let isDetectedIEOrEdge = false; -let ieOrEdge = false; -function isIE() { - try { - const ua = internalWindow.navigator.userAgent; - if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1) { - return true; - } - } - catch (error) { - } - return false; -} -function isIEOrEdge() { - if (isDetectedIEOrEdge) { - return ieOrEdge; - } - isDetectedIEOrEdge = true; - try { - const ua = internalWindow.navigator.userAgent; - if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) { - ieOrEdge = true; - } - } - catch (error) { - } - return ieOrEdge; -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -// override Function.prototype.toString to make zone.js patched function -// look like native function -Zone.__load_patch('toString', (global) => { - // patch Func.prototype.toString to let them look like native - const originalFunctionToString = Function.prototype.toString; - const ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate'); - const PROMISE_SYMBOL = zoneSymbol('Promise'); - const ERROR_SYMBOL = zoneSymbol('Error'); - const newFunctionToString = function toString() { - if (typeof this === 'function') { - const originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL]; - if (originalDelegate) { - if (typeof originalDelegate === 'function') { - return originalFunctionToString.call(originalDelegate); - } - else { - return Object.prototype.toString.call(originalDelegate); - } - } - if (this === Promise) { - const nativePromise = global[PROMISE_SYMBOL]; - if (nativePromise) { - return originalFunctionToString.call(nativePromise); - } - } - if (this === Error) { - const nativeError = global[ERROR_SYMBOL]; - if (nativeError) { - return originalFunctionToString.call(nativeError); - } - } - } - return originalFunctionToString.call(this); - }; - newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString; - Function.prototype.toString = newFunctionToString; - // patch Object.prototype.toString to let them look like native - const originalObjectToString = Object.prototype.toString; - const PROMISE_OBJECT_TO_STRING = '[object Promise]'; - Object.prototype.toString = function () { - if (this instanceof Promise) { - return PROMISE_OBJECT_TO_STRING; - } - return originalObjectToString.call(this); - }; -}); - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @fileoverview - * @suppress {missingRequire} - */ -let passiveSupported = false; -if (typeof window !== 'undefined') { - try { - const options = Object.defineProperty({}, 'passive', { - get: function () { - passiveSupported = true; - } - }); - window.addEventListener('test', options, options); - window.removeEventListener('test', options, options); - } - catch (err) { - passiveSupported = false; - } -} -// an identifier to tell ZoneTask do not create a new invoke closure -const OPTIMIZED_ZONE_EVENT_TASK_DATA = { - useG: true -}; -const zoneSymbolEventNames$1 = {}; -const globalSources = {}; -const EVENT_NAME_SYMBOL_REGX = /^__zone_symbol__(\w+)(true|false)$/; -const IMMEDIATE_PROPAGATION_SYMBOL = ('__zone_symbol__propagationStopped'); -function patchEventTarget(_global, apis, patchOptions) { - const ADD_EVENT_LISTENER = (patchOptions && patchOptions.add) || ADD_EVENT_LISTENER_STR; - const REMOVE_EVENT_LISTENER = (patchOptions && patchOptions.rm) || REMOVE_EVENT_LISTENER_STR; - const LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.listeners) || 'eventListeners'; - const REMOVE_ALL_LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.rmAll) || 'removeAllListeners'; - const zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER); - const ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':'; - const PREPEND_EVENT_LISTENER = 'prependListener'; - const PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':'; - const invokeTask = function (task, target, event) { - // for better performance, check isRemoved which is set - // by removeEventListener - if (task.isRemoved) { - return; - } - const delegate = task.callback; - if (typeof delegate === 'object' && delegate.handleEvent) { - // create the bind version of handleEvent when invoke - task.callback = (event) => delegate.handleEvent(event); - task.originalDelegate = delegate; - } - // invoke static task.invoke - task.invoke(task, target, [event]); - const options = task.options; - if (options && typeof options === 'object' && options.once) { - // if options.once is true, after invoke once remove listener here - // only browser need to do this, nodejs eventEmitter will cal removeListener - // inside EventEmitter.once - const delegate = task.originalDelegate ? task.originalDelegate : task.callback; - target[REMOVE_EVENT_LISTENER].call(target, event.type, delegate, options); - } - }; - // global shared zoneAwareCallback to handle all event callback with capture = false - const globalZoneAwareCallback = function (event) { - // https://github.com/angular/zone.js/issues/911, in IE, sometimes - // event will be undefined, so we need to use window.event - event = event || _global.event; - if (!event) { - return; - } - // event.target is needed for Samsung TV and SourceBuffer - // || global is needed https://github.com/angular/zone.js/issues/190 - const target = this || event.target || _global; - const tasks = target[zoneSymbolEventNames$1[event.type][FALSE_STR]]; - if (tasks) { - // invoke all tasks which attached to current target with given event.type and capture = false - // for performance concern, if task.length === 1, just invoke - if (tasks.length === 1) { - invokeTask(tasks[0], target, event); - } - else { - // https://github.com/angular/zone.js/issues/836 - // copy the tasks array before invoke, to avoid - // the callback will remove itself or other listener - const copyTasks = tasks.slice(); - for (let i = 0; i < copyTasks.length; i++) { - if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) { - break; - } - invokeTask(copyTasks[i], target, event); - } - } - } - }; - // global shared zoneAwareCallback to handle all event callback with capture = true - const globalZoneAwareCaptureCallback = function (event) { - // https://github.com/angular/zone.js/issues/911, in IE, sometimes - // event will be undefined, so we need to use window.event - event = event || _global.event; - if (!event) { - return; - } - // event.target is needed for Samsung TV and SourceBuffer - // || global is needed https://github.com/angular/zone.js/issues/190 - const target = this || event.target || _global; - const tasks = target[zoneSymbolEventNames$1[event.type][TRUE_STR]]; - if (tasks) { - // invoke all tasks which attached to current target with given event.type and capture = false - // for performance concern, if task.length === 1, just invoke - if (tasks.length === 1) { - invokeTask(tasks[0], target, event); - } - else { - // https://github.com/angular/zone.js/issues/836 - // copy the tasks array before invoke, to avoid - // the callback will remove itself or other listener - const copyTasks = tasks.slice(); - for (let i = 0; i < copyTasks.length; i++) { - if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) { - break; - } - invokeTask(copyTasks[i], target, event); - } - } - } - }; - function patchEventTargetMethods(obj, patchOptions) { - if (!obj) { - return false; - } - let useGlobalCallback = true; - if (patchOptions && patchOptions.useG !== undefined) { - useGlobalCallback = patchOptions.useG; - } - const validateHandler = patchOptions && patchOptions.vh; - let checkDuplicate = true; - if (patchOptions && patchOptions.chkDup !== undefined) { - checkDuplicate = patchOptions.chkDup; - } - let returnTarget = false; - if (patchOptions && patchOptions.rt !== undefined) { - returnTarget = patchOptions.rt; - } - let proto = obj; - while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) { - proto = ObjectGetPrototypeOf(proto); - } - if (!proto && obj[ADD_EVENT_LISTENER]) { - // somehow we did not find it, but we can see it. This happens on IE for Window properties. - proto = obj; - } - if (!proto) { - return false; - } - if (proto[zoneSymbolAddEventListener]) { - return false; - } - const eventNameToString = patchOptions && patchOptions.eventNameToString; - // a shared global taskData to pass data for scheduleEventTask - // so we do not need to create a new object just for pass some data - const taskData = {}; - const nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER]; - const nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] = - proto[REMOVE_EVENT_LISTENER]; - const nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] = - proto[LISTENERS_EVENT_LISTENER]; - const nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] = - proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER]; - let nativePrependEventListener; - if (patchOptions && patchOptions.prepend) { - nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] = - proto[patchOptions.prepend]; - } - function checkIsPassive(task) { - if (!passiveSupported && typeof taskData.options !== 'boolean' && - typeof taskData.options !== 'undefined' && taskData.options !== null) { - // options is a non-null non-undefined object - // passive is not supported - // don't pass options as object - // just pass capture as a boolean - task.options = !!taskData.options.capture; - taskData.options = task.options; - } - } - const customScheduleGlobal = function (task) { - // if there is already a task for the eventName + capture, - // just return, because we use the shared globalZoneAwareCallback here. - if (taskData.isExisting) { - return; - } - checkIsPassive(task); - return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options); - }; - const customCancelGlobal = function (task) { - // if task is not marked as isRemoved, this call is directly - // from Zone.prototype.cancelTask, we should remove the task - // from tasksList of target first - if (!task.isRemoved) { - const symbolEventNames = zoneSymbolEventNames$1[task.eventName]; - let symbolEventName; - if (symbolEventNames) { - symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR]; - } - const existingTasks = symbolEventName && task.target[symbolEventName]; - if (existingTasks) { - for (let i = 0; i < existingTasks.length; i++) { - const existingTask = existingTasks[i]; - if (existingTask === task) { - existingTasks.splice(i, 1); - // set isRemoved to data for faster invokeTask check - task.isRemoved = true; - if (existingTasks.length === 0) { - // all tasks for the eventName + capture have gone, - // remove globalZoneAwareCallback and remove the task cache from target - task.allRemoved = true; - task.target[symbolEventName] = null; - } - break; - } - } - } - } - // if all tasks for the eventName + capture have gone, - // we will really remove the global event callback, - // if not, return - if (!task.allRemoved) { - return; - } - return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options); - }; - const customScheduleNonGlobal = function (task) { - checkIsPassive(task); - return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options); - }; - const customSchedulePrepend = function (task) { - return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options); - }; - const customCancelNonGlobal = function (task) { - return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options); - }; - const customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal; - const customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal; - const compareTaskCallbackVsDelegate = function (task, delegate) { - const typeOfDelegate = typeof delegate; - return (typeOfDelegate === 'function' && task.callback === delegate) || - (typeOfDelegate === 'object' && task.originalDelegate === delegate); - }; - const compare = (patchOptions && patchOptions.diff) ? patchOptions.diff : compareTaskCallbackVsDelegate; - const blackListedEvents = Zone[Zone.__symbol__('BLACK_LISTED_EVENTS')]; - const makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget = false, prepend = false) { - return function () { - const target = this || _global; - const eventName = arguments[0]; - let delegate = arguments[1]; - if (!delegate) { - return nativeListener.apply(this, arguments); - } - if (isNode && eventName === 'uncaughtException') { - // don't patch uncaughtException of nodejs to prevent endless loop - return nativeListener.apply(this, arguments); - } - // don't create the bind delegate function for handleEvent - // case here to improve addEventListener performance - // we will create the bind delegate when invoke - let isHandleEvent = false; - if (typeof delegate !== 'function') { - if (!delegate.handleEvent) { - return nativeListener.apply(this, arguments); - } - isHandleEvent = true; - } - if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) { - return; - } - const options = arguments[2]; - if (blackListedEvents) { - // check black list - for (let i = 0; i < blackListedEvents.length; i++) { - if (eventName === blackListedEvents[i]) { - return nativeListener.apply(this, arguments); - } - } - } - let capture; - let once = false; - if (options === undefined) { - capture = false; - } - else if (options === true) { - capture = true; - } - else if (options === false) { - capture = false; - } - else { - capture = options ? !!options.capture : false; - once = options ? !!options.once : false; - } - const zone = Zone.current; - const symbolEventNames = zoneSymbolEventNames$1[eventName]; - let symbolEventName; - if (!symbolEventNames) { - // the code is duplicate, but I just want to get some better performance - const falseEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + FALSE_STR; - const trueEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + TRUE_STR; - const symbol = ZONE_SYMBOL_PREFIX + falseEventName; - const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; - zoneSymbolEventNames$1[eventName] = {}; - zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol; - zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture; - symbolEventName = capture ? symbolCapture : symbol; - } - else { - symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR]; - } - let existingTasks = target[symbolEventName]; - let isExisting = false; - if (existingTasks) { - // already have task registered - isExisting = true; - if (checkDuplicate) { - for (let i = 0; i < existingTasks.length; i++) { - if (compare(existingTasks[i], delegate)) { - // same callback, same capture, same event name, just return - return; - } - } - } - } - else { - existingTasks = target[symbolEventName] = []; - } - let source; - const constructorName = target.constructor['name']; - const targetSource = globalSources[constructorName]; - if (targetSource) { - source = targetSource[eventName]; - } - if (!source) { - source = constructorName + addSource + - (eventNameToString ? eventNameToString(eventName) : eventName); - } - // do not create a new object as task.data to pass those things - // just use the global shared one - taskData.options = options; - if (once) { - // if addEventListener with once options, we don't pass it to - // native addEventListener, instead we keep the once setting - // and handle ourselves. - taskData.options.once = false; - } - taskData.target = target; - taskData.capture = capture; - taskData.eventName = eventName; - taskData.isExisting = isExisting; - const data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : undefined; - // keep taskData into data to allow onScheduleEventTask to access the task information - if (data) { - data.taskData = taskData; - } - const task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn); - // should clear taskData.target to avoid memory leak - // issue, https://github.com/angular/angular/issues/20442 - taskData.target = null; - // need to clear up taskData because it is a global object - if (data) { - data.taskData = null; - } - // have to save those information to task in case - // application may call task.zone.cancelTask() directly - if (once) { - options.once = true; - } - if (!(!passiveSupported && typeof task.options === 'boolean')) { - // if not support passive, and we pass an option object - // to addEventListener, we should save the options to task - task.options = options; - } - task.target = target; - task.capture = capture; - task.eventName = eventName; - if (isHandleEvent) { - // save original delegate for compare to check duplicate - task.originalDelegate = delegate; - } - if (!prepend) { - existingTasks.push(task); - } - else { - existingTasks.unshift(task); - } - if (returnTarget) { - return target; - } - }; - }; - proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget); - if (nativePrependEventListener) { - proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true); - } - proto[REMOVE_EVENT_LISTENER] = function () { - const target = this || _global; - const eventName = arguments[0]; - const options = arguments[2]; - let capture; - if (options === undefined) { - capture = false; - } - else if (options === true) { - capture = true; - } - else if (options === false) { - capture = false; - } - else { - capture = options ? !!options.capture : false; - } - const delegate = arguments[1]; - if (!delegate) { - return nativeRemoveEventListener.apply(this, arguments); - } - if (validateHandler && - !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) { - return; - } - const symbolEventNames = zoneSymbolEventNames$1[eventName]; - let symbolEventName; - if (symbolEventNames) { - symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR]; - } - const existingTasks = symbolEventName && target[symbolEventName]; - if (existingTasks) { - for (let i = 0; i < existingTasks.length; i++) { - const existingTask = existingTasks[i]; - if (compare(existingTask, delegate)) { - existingTasks.splice(i, 1); - // set isRemoved to data for faster invokeTask check - existingTask.isRemoved = true; - if (existingTasks.length === 0) { - // all tasks for the eventName + capture have gone, - // remove globalZoneAwareCallback and remove the task cache from target - existingTask.allRemoved = true; - target[symbolEventName] = null; - } - existingTask.zone.cancelTask(existingTask); - if (returnTarget) { - return target; - } - return; - } - } - } - // issue 930, didn't find the event name or callback - // from zone kept existingTasks, the callback maybe - // added outside of zone, we need to call native removeEventListener - // to try to remove it. - return nativeRemoveEventListener.apply(this, arguments); - }; - proto[LISTENERS_EVENT_LISTENER] = function () { - const target = this || _global; - const eventName = arguments[0]; - const listeners = []; - const tasks = findEventTasks(target, eventNameToString ? eventNameToString(eventName) : eventName); - for (let i = 0; i < tasks.length; i++) { - const task = tasks[i]; - let delegate = task.originalDelegate ? task.originalDelegate : task.callback; - listeners.push(delegate); - } - return listeners; - }; - proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () { - const target = this || _global; - const eventName = arguments[0]; - if (!eventName) { - const keys = Object.keys(target); - for (let i = 0; i < keys.length; i++) { - const prop = keys[i]; - const match = EVENT_NAME_SYMBOL_REGX.exec(prop); - let evtName = match && match[1]; - // in nodejs EventEmitter, removeListener event is - // used for monitoring the removeListener call, - // so just keep removeListener eventListener until - // all other eventListeners are removed - if (evtName && evtName !== 'removeListener') { - this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName); - } - } - // remove removeListener listener finally - this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener'); - } - else { - const symbolEventNames = zoneSymbolEventNames$1[eventName]; - if (symbolEventNames) { - const symbolEventName = symbolEventNames[FALSE_STR]; - const symbolCaptureEventName = symbolEventNames[TRUE_STR]; - const tasks = target[symbolEventName]; - const captureTasks = target[symbolCaptureEventName]; - if (tasks) { - const removeTasks = tasks.slice(); - for (let i = 0; i < removeTasks.length; i++) { - const task = removeTasks[i]; - let delegate = task.originalDelegate ? task.originalDelegate : task.callback; - this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options); - } - } - if (captureTasks) { - const removeTasks = captureTasks.slice(); - for (let i = 0; i < removeTasks.length; i++) { - const task = removeTasks[i]; - let delegate = task.originalDelegate ? task.originalDelegate : task.callback; - this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options); - } - } - } - } - if (returnTarget) { - return this; - } - }; - // for native toString patch - attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener); - attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener); - if (nativeRemoveAllListeners) { - attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners); - } - if (nativeListeners) { - attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners); - } - return true; - } - let results = []; - for (let i = 0; i < apis.length; i++) { - results[i] = patchEventTargetMethods(apis[i], patchOptions); - } - return results; -} -function findEventTasks(target, eventName) { - const foundTasks = []; - for (let prop in target) { - const match = EVENT_NAME_SYMBOL_REGX.exec(prop); - let evtName = match && match[1]; - if (evtName && (!eventName || evtName === eventName)) { - const tasks = target[prop]; - if (tasks) { - for (let i = 0; i < tasks.length; i++) { - foundTasks.push(tasks[i]); - } - } - } - } - return foundTasks; -} -function patchEventPrototype(global, api) { - const Event = global['Event']; - if (Event && Event.prototype) { - api.patchMethod(Event.prototype, 'stopImmediatePropagation', (delegate) => function (self, args) { - self[IMMEDIATE_PROPAGATION_SYMBOL] = true; - // we need to call the native stopImmediatePropagation - // in case in some hybrid application, some part of - // application will be controlled by zone, some are not - delegate && delegate.apply(self, args); - }); - } -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function patchCallbacks(api, target, targetName, method, callbacks) { - const symbol = Zone.__symbol__(method); - if (target[symbol]) { - return; - } - const nativeDelegate = target[symbol] = target[method]; - target[method] = function (name, opts, options) { - if (opts && opts.prototype) { - callbacks.forEach(function (callback) { - const source = `${targetName}.${method}::` + callback; - const prototype = opts.prototype; - if (prototype.hasOwnProperty(callback)) { - const descriptor = api.ObjectGetOwnPropertyDescriptor(prototype, callback); - if (descriptor && descriptor.value) { - descriptor.value = api.wrapWithCurrentZone(descriptor.value, source); - api._redefineProperty(opts.prototype, callback, descriptor); - } - else if (prototype[callback]) { - prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source); - } - } - else if (prototype[callback]) { - prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source); - } - }); - } - return nativeDelegate.call(target, name, opts, options); - }; - api.attachOriginToPatched(target[method], nativeDelegate); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/* - * This is necessary for Chrome and Chrome mobile, to enable - * things like redefining `createdCallback` on an element. - */ -const zoneSymbol$1 = Zone.__symbol__; -const _defineProperty = Object[zoneSymbol$1('defineProperty')] = Object.defineProperty; -const _getOwnPropertyDescriptor = Object[zoneSymbol$1('getOwnPropertyDescriptor')] = - Object.getOwnPropertyDescriptor; -const _create = Object.create; -const unconfigurablesKey = zoneSymbol$1('unconfigurables'); -function propertyPatch() { - Object.defineProperty = function (obj, prop, desc) { - if (isUnconfigurable(obj, prop)) { - throw new TypeError('Cannot assign to read only property \'' + prop + '\' of ' + obj); - } - const originalConfigurableFlag = desc.configurable; - if (prop !== 'prototype') { - desc = rewriteDescriptor(obj, prop, desc); - } - return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); - }; - Object.defineProperties = function (obj, props) { - Object.keys(props).forEach(function (prop) { - Object.defineProperty(obj, prop, props[prop]); - }); - return obj; - }; - Object.create = function (obj, proto) { - if (typeof proto === 'object' && !Object.isFrozen(proto)) { - Object.keys(proto).forEach(function (prop) { - proto[prop] = rewriteDescriptor(obj, prop, proto[prop]); - }); - } - return _create(obj, proto); - }; - Object.getOwnPropertyDescriptor = function (obj, prop) { - const desc = _getOwnPropertyDescriptor(obj, prop); - if (desc && isUnconfigurable(obj, prop)) { - desc.configurable = false; - } - return desc; - }; -} -function _redefineProperty(obj, prop, desc) { - const originalConfigurableFlag = desc.configurable; - desc = rewriteDescriptor(obj, prop, desc); - return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); -} -function isUnconfigurable(obj, prop) { - return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop]; -} -function rewriteDescriptor(obj, prop, desc) { - // issue-927, if the desc is frozen, don't try to change the desc - if (!Object.isFrozen(desc)) { - desc.configurable = true; - } - if (!desc.configurable) { - // issue-927, if the obj is frozen, don't try to set the desc to obj - if (!obj[unconfigurablesKey] && !Object.isFrozen(obj)) { - _defineProperty(obj, unconfigurablesKey, { writable: true, value: {} }); - } - if (obj[unconfigurablesKey]) { - obj[unconfigurablesKey][prop] = true; - } - } - return desc; -} -function _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) { - try { - return _defineProperty(obj, prop, desc); - } - catch (error) { - if (desc.configurable) { - // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's - // retry with the original flag value - if (typeof originalConfigurableFlag == 'undefined') { - delete desc.configurable; - } - else { - desc.configurable = originalConfigurableFlag; - } - try { - return _defineProperty(obj, prop, desc); - } - catch (error) { - let descJson = null; - try { - descJson = JSON.stringify(desc); - } - catch (error) { - descJson = desc.toString(); - } - console.log(`Attempting to configure '${prop}' with descriptor '${descJson}' on object '${obj}' and got error, giving up: ${error}`); - } - } - else { - throw error; - } - } -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @fileoverview - * @suppress {globalThis} - */ -const globalEventHandlersEventNames = [ - 'abort', - 'animationcancel', - 'animationend', - 'animationiteration', - 'auxclick', - 'beforeinput', - 'blur', - 'cancel', - 'canplay', - 'canplaythrough', - 'change', - 'compositionstart', - 'compositionupdate', - 'compositionend', - 'cuechange', - 'click', - 'close', - 'contextmenu', - 'curechange', - 'dblclick', - 'drag', - 'dragend', - 'dragenter', - 'dragexit', - 'dragleave', - 'dragover', - 'drop', - 'durationchange', - 'emptied', - 'ended', - 'error', - 'focus', - 'focusin', - 'focusout', - 'gotpointercapture', - 'input', - 'invalid', - 'keydown', - 'keypress', - 'keyup', - 'load', - 'loadstart', - 'loadeddata', - 'loadedmetadata', - 'lostpointercapture', - 'mousedown', - 'mouseenter', - 'mouseleave', - 'mousemove', - 'mouseout', - 'mouseover', - 'mouseup', - 'mousewheel', - 'orientationchange', - 'pause', - 'play', - 'playing', - 'pointercancel', - 'pointerdown', - 'pointerenter', - 'pointerleave', - 'pointerlockchange', - 'mozpointerlockchange', - 'webkitpointerlockerchange', - 'pointerlockerror', - 'mozpointerlockerror', - 'webkitpointerlockerror', - 'pointermove', - 'pointout', - 'pointerover', - 'pointerup', - 'progress', - 'ratechange', - 'reset', - 'resize', - 'scroll', - 'seeked', - 'seeking', - 'select', - 'selectionchange', - 'selectstart', - 'show', - 'sort', - 'stalled', - 'submit', - 'suspend', - 'timeupdate', - 'volumechange', - 'touchcancel', - 'touchmove', - 'touchstart', - 'touchend', - 'transitioncancel', - 'transitionend', - 'waiting', - 'wheel' -]; -const documentEventNames = [ - 'afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'freeze', 'fullscreenchange', - 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror', - 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange', - 'visibilitychange', 'resume' -]; -const windowEventNames = [ - 'absolutedeviceorientation', - 'afterinput', - 'afterprint', - 'appinstalled', - 'beforeinstallprompt', - 'beforeprint', - 'beforeunload', - 'devicelight', - 'devicemotion', - 'deviceorientation', - 'deviceorientationabsolute', - 'deviceproximity', - 'hashchange', - 'languagechange', - 'message', - 'mozbeforepaint', - 'offline', - 'online', - 'paint', - 'pageshow', - 'pagehide', - 'popstate', - 'rejectionhandled', - 'storage', - 'unhandledrejection', - 'unload', - 'userproximity', - 'vrdisplyconnected', - 'vrdisplaydisconnected', - 'vrdisplaypresentchange' -]; -const htmlElementEventNames = [ - 'beforecopy', 'beforecut', 'beforepaste', 'copy', 'cut', 'paste', 'dragstart', 'loadend', - 'animationstart', 'search', 'transitionrun', 'transitionstart', 'webkitanimationend', - 'webkitanimationiteration', 'webkitanimationstart', 'webkittransitionend' -]; -const mediaElementEventNames = ['encrypted', 'waitingforkey', 'msneedkey', 'mozinterruptbegin', 'mozinterruptend']; -const ieElementEventNames = [ - 'activate', - 'afterupdate', - 'ariarequest', - 'beforeactivate', - 'beforedeactivate', - 'beforeeditfocus', - 'beforeupdate', - 'cellchange', - 'controlselect', - 'dataavailable', - 'datasetchanged', - 'datasetcomplete', - 'errorupdate', - 'filterchange', - 'layoutcomplete', - 'losecapture', - 'move', - 'moveend', - 'movestart', - 'propertychange', - 'resizeend', - 'resizestart', - 'rowenter', - 'rowexit', - 'rowsdelete', - 'rowsinserted', - 'command', - 'compassneedscalibration', - 'deactivate', - 'help', - 'mscontentzoom', - 'msmanipulationstatechanged', - 'msgesturechange', - 'msgesturedoubletap', - 'msgestureend', - 'msgesturehold', - 'msgesturestart', - 'msgesturetap', - 'msgotpointercapture', - 'msinertiastart', - 'mslostpointercapture', - 'mspointercancel', - 'mspointerdown', - 'mspointerenter', - 'mspointerhover', - 'mspointerleave', - 'mspointermove', - 'mspointerout', - 'mspointerover', - 'mspointerup', - 'pointerout', - 'mssitemodejumplistitemremoved', - 'msthumbnailclick', - 'stop', - 'storagecommit' -]; -const webglEventNames = ['webglcontextrestored', 'webglcontextlost', 'webglcontextcreationerror']; -const formEventNames = ['autocomplete', 'autocompleteerror']; -const detailEventNames = ['toggle']; -const frameEventNames = ['load']; -const frameSetEventNames = ['blur', 'error', 'focus', 'load', 'resize', 'scroll', 'messageerror']; -const marqueeEventNames = ['bounce', 'finish', 'start']; -const XMLHttpRequestEventNames = [ - 'loadstart', 'progress', 'abort', 'error', 'load', 'progress', 'timeout', 'loadend', - 'readystatechange' -]; -const IDBIndexEventNames = ['upgradeneeded', 'complete', 'abort', 'success', 'error', 'blocked', 'versionchange', 'close']; -const websocketEventNames = ['close', 'error', 'open', 'message']; -const workerEventNames = ['error', 'message']; -const eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames); -function filterProperties(target, onProperties, ignoreProperties) { - if (!ignoreProperties || ignoreProperties.length === 0) { - return onProperties; - } - const tip = ignoreProperties.filter(ip => ip.target === target); - if (!tip || tip.length === 0) { - return onProperties; - } - const targetIgnoreProperties = tip[0].ignoreProperties; - return onProperties.filter(op => targetIgnoreProperties.indexOf(op) === -1); -} -function patchFilteredProperties(target, onProperties, ignoreProperties, prototype) { - // check whether target is available, sometimes target will be undefined - // because different browser or some 3rd party plugin. - if (!target) { - return; - } - const filteredProperties = filterProperties(target, onProperties, ignoreProperties); - patchOnProperties(target, filteredProperties, prototype); -} -function propertyDescriptorPatch(api, _global) { - if (isNode && !isMix) { - return; - } - if (Zone[api.symbol('patchEvents')]) { - // events are already been patched by legacy patch. - return; - } - const supportsWebSocket = typeof WebSocket !== 'undefined'; - const ignoreProperties = _global['__Zone_ignore_on_properties']; - // for browsers that we can patch the descriptor: Chrome & Firefox - if (isBrowser) { - const internalWindow = window; - const ignoreErrorProperties = isIE ? [{ target: internalWindow, ignoreProperties: ['error'] }] : []; - // in IE/Edge, onProp not exist in window object, but in WindowPrototype - // so we need to pass WindowPrototype to check onProp exist or not - patchFilteredProperties(internalWindow, eventNames.concat(['messageerror']), ignoreProperties ? ignoreProperties.concat(ignoreErrorProperties) : ignoreProperties, ObjectGetPrototypeOf(internalWindow)); - patchFilteredProperties(Document.prototype, eventNames, ignoreProperties); - if (typeof internalWindow['SVGElement'] !== 'undefined') { - patchFilteredProperties(internalWindow['SVGElement'].prototype, eventNames, ignoreProperties); - } - patchFilteredProperties(Element.prototype, eventNames, ignoreProperties); - patchFilteredProperties(HTMLElement.prototype, eventNames, ignoreProperties); - patchFilteredProperties(HTMLMediaElement.prototype, mediaElementEventNames, ignoreProperties); - patchFilteredProperties(HTMLFrameSetElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties); - patchFilteredProperties(HTMLBodyElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties); - patchFilteredProperties(HTMLFrameElement.prototype, frameEventNames, ignoreProperties); - patchFilteredProperties(HTMLIFrameElement.prototype, frameEventNames, ignoreProperties); - const HTMLMarqueeElement = internalWindow['HTMLMarqueeElement']; - if (HTMLMarqueeElement) { - patchFilteredProperties(HTMLMarqueeElement.prototype, marqueeEventNames, ignoreProperties); - } - const Worker = internalWindow['Worker']; - if (Worker) { - patchFilteredProperties(Worker.prototype, workerEventNames, ignoreProperties); - } - } - const XMLHttpRequest = _global['XMLHttpRequest']; - if (XMLHttpRequest) { - // XMLHttpRequest is not available in ServiceWorker, so we need to check here - patchFilteredProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames, ignoreProperties); - } - const XMLHttpRequestEventTarget = _global['XMLHttpRequestEventTarget']; - if (XMLHttpRequestEventTarget) { - patchFilteredProperties(XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype, XMLHttpRequestEventNames, ignoreProperties); - } - if (typeof IDBIndex !== 'undefined') { - patchFilteredProperties(IDBIndex.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBRequest.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBOpenDBRequest.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBDatabase.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBTransaction.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBCursor.prototype, IDBIndexEventNames, ignoreProperties); - } - if (supportsWebSocket) { - patchFilteredProperties(WebSocket.prototype, websocketEventNames, ignoreProperties); - } -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -Zone.__load_patch('util', (global, Zone, api) => { - api.patchOnProperties = patchOnProperties; - api.patchMethod = patchMethod; - api.bindArguments = bindArguments; - api.patchMacroTask = patchMacroTask; - // In earlier version of zone.js (<0.9.0), we use env name `__zone_symbol__BLACK_LISTED_EVENTS` to - // define which events will not be patched by `Zone.js`. - // In newer version (>=0.9.0), we change the env name to `__zone_symbol__UNPATCHED_EVENTS` to keep - // the name consistent with angular repo. - // The `__zone_symbol__BLACK_LISTED_EVENTS` is deprecated, but it is still be supported for - // backwards compatibility. - const SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS'); - const SYMBOL_UNPATCHED_EVENTS = Zone.__symbol__('UNPATCHED_EVENTS'); - if (global[SYMBOL_UNPATCHED_EVENTS]) { - global[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_UNPATCHED_EVENTS]; - } - if (global[SYMBOL_BLACK_LISTED_EVENTS]) { - Zone[SYMBOL_BLACK_LISTED_EVENTS] = Zone[SYMBOL_UNPATCHED_EVENTS] = - global[SYMBOL_BLACK_LISTED_EVENTS]; - } - api.patchEventPrototype = patchEventPrototype; - api.patchEventTarget = patchEventTarget; - api.isIEOrEdge = isIEOrEdge; - api.ObjectDefineProperty = ObjectDefineProperty; - api.ObjectGetOwnPropertyDescriptor = ObjectGetOwnPropertyDescriptor; - api.ObjectCreate = ObjectCreate; - api.ArraySlice = ArraySlice; - api.patchClass = patchClass; - api.wrapWithCurrentZone = wrapWithCurrentZone; - api.filterProperties = filterProperties; - api.attachOriginToPatched = attachOriginToPatched; - api._redefineProperty = _redefineProperty; - api.patchCallbacks = patchCallbacks; - api.getGlobalObjects = () => ({ - globalSources, - zoneSymbolEventNames: zoneSymbolEventNames$1, - eventNames, - isBrowser, - isMix, - isNode, - TRUE_STR, - FALSE_STR, - ZONE_SYMBOL_PREFIX, - ADD_EVENT_LISTENER_STR, - REMOVE_EVENT_LISTENER_STR - }); -}); - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @fileoverview - * @suppress {missingRequire} - */ -const taskSymbol = zoneSymbol('zoneTask'); -function patchTimer(window, setName, cancelName, nameSuffix) { - let setNative = null; - let clearNative = null; - setName += nameSuffix; - cancelName += nameSuffix; - const tasksByHandleId = {}; - function scheduleTask(task) { - const data = task.data; - function timer() { - try { - task.invoke.apply(this, arguments); - } - finally { - // issue-934, task will be cancelled - // even it is a periodic task such as - // setInterval - if (!(task.data && task.data.isPeriodic)) { - if (typeof data.handleId === 'number') { - // in non-nodejs env, we remove timerId - // from local cache - delete tasksByHandleId[data.handleId]; - } - else if (data.handleId) { - // Node returns complex objects as handleIds - // we remove task reference from timer object - data.handleId[taskSymbol] = null; - } - } - } - } - data.args[0] = timer; - data.handleId = setNative.apply(window, data.args); - return task; - } - function clearTask(task) { - return clearNative(task.data.handleId); - } - setNative = - patchMethod(window, setName, (delegate) => function (self, args) { - if (typeof args[0] === 'function') { - const options = { - isPeriodic: nameSuffix === 'Interval', - delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 : - undefined, - args: args - }; - const task = scheduleMacroTaskWithCurrentZone(setName, args[0], options, scheduleTask, clearTask); - if (!task) { - return task; - } - // Node.js must additionally support the ref and unref functions. - const handle = task.data.handleId; - if (typeof handle === 'number') { - // for non nodejs env, we save handleId: task - // mapping in local cache for clearTimeout - tasksByHandleId[handle] = task; - } - else if (handle) { - // for nodejs env, we save task - // reference in timerId Object for clearTimeout - handle[taskSymbol] = task; - } - // check whether handle is null, because some polyfill or browser - // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame - if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' && - typeof handle.unref === 'function') { - task.ref = handle.ref.bind(handle); - task.unref = handle.unref.bind(handle); - } - if (typeof handle === 'number' || handle) { - return handle; - } - return task; - } - else { - // cause an error by calling it directly. - return delegate.apply(window, args); - } - }); - clearNative = - patchMethod(window, cancelName, (delegate) => function (self, args) { - const id = args[0]; - let task; - if (typeof id === 'number') { - // non nodejs env. - task = tasksByHandleId[id]; - } - else { - // nodejs env. - task = id && id[taskSymbol]; - // other environments. - if (!task) { - task = id; - } - } - if (task && typeof task.type === 'string') { - if (task.state !== 'notScheduled' && - (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) { - if (typeof id === 'number') { - delete tasksByHandleId[id]; - } - else if (id) { - id[taskSymbol] = null; - } - // Do not cancel already canceled functions - task.zone.cancelTask(task); - } - } - else { - // cause an error by calling it directly. - delegate.apply(window, args); - } - }); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function patchCustomElements(_global, api) { - const { isBrowser, isMix } = api.getGlobalObjects(); - if ((!isBrowser && !isMix) || !_global['customElements'] || !('customElements' in _global)) { - return; - } - const callbacks = ['connectedCallback', 'disconnectedCallback', 'adoptedCallback', 'attributeChangedCallback']; - api.patchCallbacks(api, _global.customElements, 'customElements', 'define', callbacks); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -function eventTargetPatch(_global, api) { - if (Zone[api.symbol('patchEventTarget')]) { - // EventTarget is already patched. - return; - } - const { eventNames, zoneSymbolEventNames, TRUE_STR, FALSE_STR, ZONE_SYMBOL_PREFIX } = api.getGlobalObjects(); - // predefine all __zone_symbol__ + eventName + true/false string - for (let i = 0; i < eventNames.length; i++) { - const eventName = eventNames[i]; - const falseEventName = eventName + FALSE_STR; - const trueEventName = eventName + TRUE_STR; - const symbol = ZONE_SYMBOL_PREFIX + falseEventName; - const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; - zoneSymbolEventNames[eventName] = {}; - zoneSymbolEventNames[eventName][FALSE_STR] = symbol; - zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture; - } - const EVENT_TARGET = _global['EventTarget']; - if (!EVENT_TARGET || !EVENT_TARGET.prototype) { - return; - } - api.patchEventTarget(_global, [EVENT_TARGET && EVENT_TARGET.prototype]); - return true; -} -function patchEvent(global, api) { - api.patchEventPrototype(global, api); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * @fileoverview - * @suppress {missingRequire} - */ -Zone.__load_patch('legacy', (global) => { - const legacyPatch = global[Zone.__symbol__('legacyPatch')]; - if (legacyPatch) { - legacyPatch(); - } -}); -Zone.__load_patch('timers', (global) => { - const set = 'set'; - const clear = 'clear'; - patchTimer(global, set, clear, 'Timeout'); - patchTimer(global, set, clear, 'Interval'); - patchTimer(global, set, clear, 'Immediate'); -}); -Zone.__load_patch('requestAnimationFrame', (global) => { - patchTimer(global, 'request', 'cancel', 'AnimationFrame'); - patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame'); - patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame'); -}); -Zone.__load_patch('blocking', (global, Zone) => { - const blockingMethods = ['alert', 'prompt', 'confirm']; - for (let i = 0; i < blockingMethods.length; i++) { - const name = blockingMethods[i]; - patchMethod(global, name, (delegate, symbol, name) => { - return function (s, args) { - return Zone.current.run(delegate, global, args, name); - }; - }); - } -}); -Zone.__load_patch('EventTarget', (global, Zone, api) => { - patchEvent(global, api); - eventTargetPatch(global, api); - // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener - const XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget']; - if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) { - api.patchEventTarget(global, [XMLHttpRequestEventTarget.prototype]); - } - patchClass('MutationObserver'); - patchClass('WebKitMutationObserver'); - patchClass('IntersectionObserver'); - patchClass('FileReader'); -}); -Zone.__load_patch('on_property', (global, Zone, api) => { - propertyDescriptorPatch(api, global); - propertyPatch(); -}); -Zone.__load_patch('customElements', (global, Zone, api) => { - patchCustomElements(global, api); -}); -Zone.__load_patch('XHR', (global, Zone) => { - // Treat XMLHttpRequest as a macrotask. - patchXHR(global); - const XHR_TASK = zoneSymbol('xhrTask'); - const XHR_SYNC = zoneSymbol('xhrSync'); - const XHR_LISTENER = zoneSymbol('xhrListener'); - const XHR_SCHEDULED = zoneSymbol('xhrScheduled'); - const XHR_URL = zoneSymbol('xhrURL'); - const XHR_ERROR_BEFORE_SCHEDULED = zoneSymbol('xhrErrorBeforeScheduled'); - function patchXHR(window) { - const XMLHttpRequest = window['XMLHttpRequest']; - if (!XMLHttpRequest) { - // XMLHttpRequest is not available in service worker - return; - } - const XMLHttpRequestPrototype = XMLHttpRequest.prototype; - function findPendingTask(target) { - return target[XHR_TASK]; - } - let oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER]; - let oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; - if (!oriAddListener) { - const XMLHttpRequestEventTarget = window['XMLHttpRequestEventTarget']; - if (XMLHttpRequestEventTarget) { - const XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget.prototype; - oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER]; - oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; - } - } - const READY_STATE_CHANGE = 'readystatechange'; - const SCHEDULED = 'scheduled'; - function scheduleTask(task) { - const data = task.data; - const target = data.target; - target[XHR_SCHEDULED] = false; - target[XHR_ERROR_BEFORE_SCHEDULED] = false; - // remove existing event listener - const listener = target[XHR_LISTENER]; - if (!oriAddListener) { - oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER]; - oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; - } - if (listener) { - oriRemoveListener.call(target, READY_STATE_CHANGE, listener); - } - const newListener = target[XHR_LISTENER] = () => { - if (target.readyState === target.DONE) { - // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with - // readyState=4 multiple times, so we need to check task state here - if (!data.aborted && target[XHR_SCHEDULED] && task.state === SCHEDULED) { - // check whether the xhr has registered onload listener - // if that is the case, the task should invoke after all - // onload listeners finish. - const loadTasks = target['__zone_symbol__loadfalse']; - if (loadTasks && loadTasks.length > 0) { - const oriInvoke = task.invoke; - task.invoke = function () { - // need to load the tasks again, because in other - // load listener, they may remove themselves - const loadTasks = target['__zone_symbol__loadfalse']; - for (let i = 0; i < loadTasks.length; i++) { - if (loadTasks[i] === task) { - loadTasks.splice(i, 1); - } - } - if (!data.aborted && task.state === SCHEDULED) { - oriInvoke.call(task); - } - }; - loadTasks.push(task); - } - else { - task.invoke(); - } - } - else if (!data.aborted && target[XHR_SCHEDULED] === false) { - // error occurs when xhr.send() - target[XHR_ERROR_BEFORE_SCHEDULED] = true; - } - } - }; - oriAddListener.call(target, READY_STATE_CHANGE, newListener); - const storedTask = target[XHR_TASK]; - if (!storedTask) { - target[XHR_TASK] = task; - } - sendNative.apply(target, data.args); - target[XHR_SCHEDULED] = true; - return task; - } - function placeholderCallback() { } - function clearTask(task) { - const data = task.data; - // Note - ideally, we would call data.target.removeEventListener here, but it's too late - // to prevent it from firing. So instead, we store info for the event listener. - data.aborted = true; - return abortNative.apply(data.target, data.args); - } - const openNative = patchMethod(XMLHttpRequestPrototype, 'open', () => function (self, args) { - self[XHR_SYNC] = args[2] == false; - self[XHR_URL] = args[1]; - return openNative.apply(self, args); - }); - const XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send'; - const fetchTaskAborting = zoneSymbol('fetchTaskAborting'); - const fetchTaskScheduling = zoneSymbol('fetchTaskScheduling'); - const sendNative = patchMethod(XMLHttpRequestPrototype, 'send', () => function (self, args) { - if (Zone.current[fetchTaskScheduling] === true) { - // a fetch is scheduling, so we are using xhr to polyfill fetch - // and because we already schedule macroTask for fetch, we should - // not schedule a macroTask for xhr again - return sendNative.apply(self, args); - } - if (self[XHR_SYNC]) { - // if the XHR is sync there is no task to schedule, just execute the code. - return sendNative.apply(self, args); - } - else { - const options = { target: self, url: self[XHR_URL], isPeriodic: false, args: args, aborted: false }; - const task = scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask); - if (self && self[XHR_ERROR_BEFORE_SCHEDULED] === true && !options.aborted && - task.state === SCHEDULED) { - // xhr request throw error when send - // we should invoke task instead of leaving a scheduled - // pending macroTask - task.invoke(); - } - } - }); - const abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', () => function (self, args) { - const task = findPendingTask(self); - if (task && typeof task.type == 'string') { - // If the XHR has already completed, do nothing. - // If the XHR has already been aborted, do nothing. - // Fix #569, call abort multiple times before done will cause - // macroTask task count be negative number - if (task.cancelFn == null || (task.data && task.data.aborted)) { - return; - } - task.zone.cancelTask(task); - } - else if (Zone.current[fetchTaskAborting] === true) { - // the abort is called from fetch polyfill, we need to call native abort of XHR. - return abortNative.apply(self, args); - } - // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no - // task - // to cancel. Do nothing. - }); - } -}); -Zone.__load_patch('geolocation', (global) => { - /// GEO_LOCATION - if (global['navigator'] && global['navigator'].geolocation) { - patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']); - } -}); -Zone.__load_patch('PromiseRejectionEvent', (global, Zone) => { - // handle unhandled promise rejection - function findPromiseRejectionHandler(evtName) { - return function (e) { - const eventTasks = findEventTasks(global, evtName); - eventTasks.forEach(eventTask => { - // windows has added unhandledrejection event listener - // trigger the event listener - const PromiseRejectionEvent = global['PromiseRejectionEvent']; - if (PromiseRejectionEvent) { - const evt = new PromiseRejectionEvent(evtName, { promise: e.promise, reason: e.rejection }); - eventTask.invoke(evt); - } - }); - }; - } - if (global['PromiseRejectionEvent']) { - Zone[zoneSymbol('unhandledPromiseRejectionHandler')] = - findPromiseRejectionHandler('unhandledrejection'); - Zone[zoneSymbol('rejectionHandledHandler')] = - findPromiseRejectionHandler('rejectionhandled'); - } -}); - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - -/***/ }), - -/***/ "./src/polyfills.ts": -/*!**************************!*\ - !*** ./src/polyfills.ts ***! - \**************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); -/* harmony import */ var zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zone.js/dist/zone */ "./node_modules/zone.js/dist/zone-evergreen.js"); -/* harmony import */ var zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1__); -/* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), - * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ -/*************************************************************************************************** - * BROWSER POLYFILLS - */ -/** IE9, IE10 and IE11 requires all of the following polyfills. **/ -// import 'core-js/es6/symbol'; -// import 'core-js/es6/object'; -// import 'core-js/es6/function'; -// import 'core-js/es6/parse-int'; -// import 'core-js/es6/parse-float'; -// import 'core-js/es6/number'; -// import 'core-js/es6/math'; -// import 'core-js/es6/string'; -// import 'core-js/es6/date'; -// import 'core-js/es6/array'; -// import 'core-js/es6/regexp'; -// import 'core-js/es6/map'; -// import 'core-js/es6/weak-map'; -// import 'core-js/es6/set'; -/** - * If the application will be indexed by Google Search, the following is required. - * Googlebot uses a renderer based on Chrome 41. - * https://developers.google.com/search/docs/guides/rendering - **/ -// import 'core-js/es6/array'; -/** IE10 and IE11 requires the following for NgClass support on SVG elements */ -// import 'classlist.js'; // Run `npm install --save classlist.js`. -/** IE10 and IE11 requires the following for the Reflect API. */ -// import 'core-js/es6/reflect'; -/** - * Web Animations `@angular/platform-browser/animations` - * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. - * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). - **/ -// import 'web-animations-js'; // Run `npm install --save web-animations-js`. -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - */ -// (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame -// (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick -// (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames -/* -* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js -* with the following flag, it will bypass `zone.js` patch for IE/Edge -*/ -// (window as any).__Zone_enable_cross_context_check = true; -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ - // Included with Angular CLI. -/*************************************************************************************************** - * APPLICATION IMPORTS - */ - - -/***/ }), - -/***/ 2: -/*!***************************************************************************************************************************!*\ - !*** multi ./src/polyfills.ts ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js ***! - \***************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(/*! C:\Users\Noelia\Desktop\DAA\daaexample\src\main\angular\src\polyfills.ts */"./src/polyfills.ts"); -module.exports = __webpack_require__(/*! C:\Users\Noelia\Desktop\DAA\daaexample\src\main\angular\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models\jit-polyfills.js */"./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js"); - - -/***/ }) - -},[[2,"runtime"]]]); -//# sourceMappingURL=polyfills-es2015.js.map \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/polyfills-es2015.js.map b/target/catalina-base/webapps/DAAExample/polyfills-es2015.js.map deleted file mode 100644 index 253988edc38edeedc72cb4f6d838d2d4e713b145..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/polyfills-es2015.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-weak.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-iterator-constructor.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.define-metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.delete-metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.metadata.js","./node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata.js","./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js","./node_modules/tslib/tslib.es6.js","./node_modules/zone.js/dist/zone-evergreen.js","./src/polyfills.ts"],"names":[],"mappings":"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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,kCAAkC;AAClC,oCAAoC;AACpC,cAAc;AACd,KAAK;;AAEL;AACA;AACA;AACA;;;;;;;;;;;;;ACzLa;AACb,kBAAkB,mBAAO,CAAC,8HAA2B;AACrD,kBAAkB,mBAAO,CAAC,wIAAgC;AAC1D,eAAe,mBAAO,CAAC,wHAAwB;AAC/C,eAAe,mBAAO,CAAC,wHAAwB;AAC/C,iBAAiB,mBAAO,CAAC,4HAA0B;AACnD,cAAc,mBAAO,CAAC,oHAAsB;AAC5C,2BAA2B,mBAAO,CAAC,oIAA8B;AACjE,WAAW,mBAAO,CAAC,4GAAkB;AACrC,0BAA0B,mBAAO,CAAC,kIAA6B;;AAE/D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;;;;;;;;;;;;ACxHa;AACb,QAAQ,mBAAO,CAAC,kHAAqB;AACrC,aAAa,mBAAO,CAAC,kHAAqB;AAC1C,eAAe,mBAAO,CAAC,wHAAwB;AAC/C,eAAe,mBAAO,CAAC,sHAAuB;AAC9C,6BAA6B,mBAAO,CAAC,wIAAgC;AACrE,cAAc,mBAAO,CAAC,oHAAsB;AAC5C,iBAAiB,mBAAO,CAAC,4HAA0B;AACnD,eAAe,mBAAO,CAAC,wHAAwB;AAC/C,YAAY,mBAAO,CAAC,gHAAoB;AACxC,kCAAkC,mBAAO,CAAC,kKAA6C;AACvF,qBAAqB,mBAAO,CAAC,wIAAgC;AAC7D,wBAAwB,mBAAO,CAAC,4IAAkC;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,qDAAqD;AACrD;AACA,kDAAkD,iBAAiB,EAAE;AACrE;AACA;AACA,4EAA4E,iCAAiC,EAAE;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK,yDAAyD;;AAE9D;;AAEA;;AAEA;AACA;;;;;;;;;;;;AClGA,UAAU,mBAAO,CAAC,4GAAkB;AACpC,cAAc,mBAAO,CAAC,sHAAuB;AAC7C,qCAAqC,mBAAO,CAAC,0KAAiD;AAC9F,2BAA2B,mBAAO,CAAC,kJAAqC;;AAExE;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;;;;;;;;;;;;ACbA,YAAY,mBAAO,CAAC,gHAAoB;;AAExC;AACA,gBAAgB;AAChB;AACA;AACA,CAAC;;;;;;;;;;;;;ACNY;AACb,wBAAwB,mBAAO,CAAC,kIAA6B;AAC7D,aAAa,mBAAO,CAAC,gIAA4B;AACjD,+BAA+B,mBAAO,CAAC,0JAAyC;AAChF,qBAAqB,mBAAO,CAAC,wIAAgC;AAC7D,gBAAgB,mBAAO,CAAC,wHAAwB;;AAEhD,8BAA8B,aAAa;;AAE3C;AACA;AACA,6DAA6D,0CAA0C;AACvG;AACA;AACA;AACA;;;;;;;;;;;;ACfA,kBAAkB,mBAAO,CAAC,4HAA0B;AACpD,2BAA2B,mBAAO,CAAC,kJAAqC;AACxE,+BAA+B,mBAAO,CAAC,0JAAyC;;AAEhF;AACA;AACA,CAAC;AACD;AACA;AACA;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACPa;AACb,QAAQ,mBAAO,CAAC,kHAAqB;AACrC,gCAAgC,mBAAO,CAAC,4JAA0C;AAClF,qBAAqB,mBAAO,CAAC,oJAAsC;AACnE,qBAAqB,mBAAO,CAAC,oJAAsC;AACnE,qBAAqB,mBAAO,CAAC,wIAAgC;AAC7D,kCAAkC,mBAAO,CAAC,kKAA6C;AACvF,eAAe,mBAAO,CAAC,sHAAuB;AAC9C,sBAAsB,mBAAO,CAAC,wIAAgC;AAC9D,cAAc,mBAAO,CAAC,oHAAsB;AAC5C,gBAAgB,mBAAO,CAAC,wHAAwB;AAChD,oBAAoB,mBAAO,CAAC,kIAA6B;;AAEzD;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,aAAa;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,4CAA4C;AACrF,6CAA6C,4CAA4C;AACzF,+CAA+C,4CAA4C;AAC3F,KAAK,qBAAqB,sCAAsC;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,mBAAmB;AACnC;AACA;AACA,yCAAyC,kCAAkC;AAC3E;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,SAAS,qFAAqF;AACnG;;AAEA;AACA;;;;;;;;;;;;ACzFA,YAAY,mBAAO,CAAC,gHAAoB;;AAExC;AACA;AACA,iCAAiC,MAAM,mBAAmB,UAAU,EAAE,EAAE;AACxE,CAAC;;;;;;;;;;;;ACLD,aAAa,mBAAO,CAAC,kHAAqB;AAC1C,eAAe,mBAAO,CAAC,wHAAwB;;AAE/C;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACTA,aAAa,mBAAO,CAAC,kHAAqB;AAC1C,+BAA+B,mBAAO,CAAC,0KAAiD;AACxF,kCAAkC,mBAAO,CAAC,kKAA6C;AACvF,eAAe,mBAAO,CAAC,sHAAuB;AAC9C,gBAAgB,mBAAO,CAAC,0HAAyB;AACjD,gCAAgC,mBAAO,CAAC,4JAA0C;AAClF,eAAe,mBAAO,CAAC,wHAAwB;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,mDAAmD;AACnD,GAAG;AACH,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;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;;;;;ACzLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,UAAU,6CAA6C,eAAe;AACxI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0BAA0B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU,IAAI,YAAY,4BAA4B,QAAQ,sBAAsB,WAAW,GAAG,+CAA+C,SAAS,YAAY;AACzM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4HAA4H,wBAAwB,oCAAoC;AACxL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,sEAAsE;AACtJ;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oDAAoD;AAC5F;AACA;AACA;AACA;AACA;AACA,2BAA2B,mCAAmC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,uEAAuE,gBAAgB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,EAAE;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,8BAA8B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,0BAA0B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0BAA0B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iBAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,WAAW,GAAG,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,0BAA0B,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,KAAK,qBAAqB,SAAS,eAAe,IAAI,8BAA8B,MAAM;AAClJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sDAAsD;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,4EAA4E;AACvF;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,0CAA0C;AAC9G;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5+FA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAEH;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AAEH,mEAAmE;AACnE,+BAA+B;AAC/B,+BAA+B;AAC/B,iCAAiC;AACjC,kCAAkC;AAClC,oCAAoC;AACpC,+BAA+B;AAC/B,6BAA6B;AAC7B,+BAA+B;AAC/B,6BAA6B;AAC7B,8BAA8B;AAC9B,+BAA+B;AAC/B,4BAA4B;AAC5B,iCAAiC;AACjC,4BAA4B;AAE5B;;;;IAII;AACJ,8BAA8B;AAE9B,+EAA+E;AAC/E,oEAAoE;AAEpE,gEAAgE;AAChE,gCAAgC;AAEhC;;;;IAII;AACJ,8EAA8E;AAE9E;;;GAGG;AAEF,sGAAsG;AACtG,iGAAiG;AACjG,sHAAsH;AAEtH;;;EAGE;AACH,4DAA4D;AAE5D;;GAEG;AACwB,CAAE,6BAA6B;AAG1D;;GAEG","file":"polyfills-es2015.js","sourcesContent":["module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('../internals/redefine-all');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar ArrayIterationModule = require('../internals/array-iteration');\nvar $has = require('../internals/has');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (store) {\n return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n return find(store.entries, function (it) {\n return it[0] === key;\n });\n};\n\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.entries.push([key, value]);\n },\n 'delete': function (key) {\n var index = findIndex(this.entries, function (it) {\n return it[0] === key;\n });\n if (~index) this.entries.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: undefined\n });\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var data = getWeakData(anObject(key), true);\n if (data === true) uncaughtFrozenStore(state).set(key, value);\n else data[state.id] = value;\n return that;\n };\n\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n return data && $has(data, state.id) && delete data[state.id];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).has(key);\n return data && $has(data, state.id);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n var state = getInternalState(this);\n if (isObject(key)) {\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).get(key);\n return data ? data[state.id] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key, value);\n }\n } : {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return define(this, value, true);\n }\n });\n\n return C;\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n // eslint-disable-next-line max-len\n if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n })))) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP);\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = {};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = false;\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES\n ? boundFunction(anObject(step = iterable[index])[0], step[1])\n : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n\niterate.stop = function (result) {\n return new Result(true, result);\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nvar Map = require('../modules/es.map');\nvar WeakMap = require('../modules/es.weak-map');\nvar shared = require('../internals/shared');\n\nvar metadata = shared('metadata');\nvar store = metadata.store || (metadata.store = new WeakMap());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\n\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\n\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\n\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\n\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\n\nvar toMetadataKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\n\nmodule.exports = {\n store: store,\n getMap: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n toKey: toMetadataKey\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.6.4',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.github.io/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.github.io/ecma262/#sec-set-objects\nmodule.exports = collection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar global = require('../internals/global');\nvar redefineAll = require('../internals/redefine-all');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\nvar isObject = require('../internals/is-object');\nvar enforceIternalState = require('../internals/internal-state').enforce;\nvar NATIVE_WEAK_MAP = require('../internals/native-weak-map');\n\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar isExtensible = Object.isExtensible;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n return function WeakMap() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n};\n\n// `WeakMap` constructor\n// https://tc39.github.io/ecma262/#sec-weakmap-constructor\nvar $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak);\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n InternalMetadataModule.REQUIRED = true;\n var WeakMapPrototype = $WeakMap.prototype;\n var nativeDelete = WeakMapPrototype['delete'];\n var nativeHas = WeakMapPrototype.has;\n var nativeGet = WeakMapPrototype.get;\n var nativeSet = WeakMapPrototype.set;\n redefineAll(WeakMapPrototype, {\n 'delete': function (key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeDelete.call(this, key) || state.frozen['delete'](key);\n } return nativeDelete.call(this, key);\n },\n has: function has(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) || state.frozen.has(key);\n } return nativeHas.call(this, key);\n },\n get: function get(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);\n } return nativeGet.call(this, key);\n },\n set: function set(key, value) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);\n } else nativeSet.call(this, key, value);\n return this;\n }\n });\n}\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar toMetadataKey = ReflectMetadataModule.toKey;\nvar ordinaryDefineOwnMetadata = ReflectMetadataModule.set;\n\n// `Reflect.defineMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n defineMetadata: function defineMetadata(metadataKey, metadataValue, target /* , targetKey */) {\n var targetKey = arguments.length < 4 ? undefined : toMetadataKey(arguments[3]);\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), targetKey);\n }\n});\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar toMetadataKey = ReflectMetadataModule.toKey;\nvar getOrCreateMetadataMap = ReflectMetadataModule.getMap;\nvar store = ReflectMetadataModule.store;\n\n// `Reflect.deleteMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n }\n});\n","var $ = require('../internals/export');\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nvar Set = require('../modules/es.set');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar iterate = require('../internals/iterate');\n\nvar ordinaryOwnMetadataKeys = ReflectMetadataModule.keys;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\nvar from = function (iter) {\n var result = [];\n iterate(iter, result.push, result);\n return result;\n};\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\n// `Reflect.getMetadataKeys` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]);\n return ordinaryMetadataKeys(anObject(target), targetKey);\n }\n});\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\nvar ordinaryHasOwnMetadata = ReflectMetadataModule.has;\nvar ordinaryGetOwnMetadata = ReflectMetadataModule.get;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\n// `Reflect.getMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);\n return ordinaryGetMetadata(metadataKey, anObject(target), targetKey);\n }\n});\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar ordinaryOwnMetadataKeys = ReflectMetadataModule.keys;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\n// `Reflect.getOwnMetadataKeys` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]);\n return ordinaryOwnMetadataKeys(anObject(target), targetKey);\n }\n});\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar ordinaryGetOwnMetadata = ReflectMetadataModule.get;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\n// `Reflect.getOwnMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);\n return ordinaryGetOwnMetadata(metadataKey, anObject(target), targetKey);\n }\n});\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\nvar ordinaryHasOwnMetadata = ReflectMetadataModule.has;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\n// `Reflect.hasMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);\n return ordinaryHasMetadata(metadataKey, anObject(target), targetKey);\n }\n});\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar ordinaryHasOwnMetadata = ReflectMetadataModule.has;\nvar toMetadataKey = ReflectMetadataModule.toKey;\n\n// `Reflect.hasOwnMetadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]);\n return ordinaryHasOwnMetadata(metadataKey, anObject(target), targetKey);\n }\n});\n","var $ = require('../internals/export');\nvar ReflectMetadataModule = require('../internals/reflect-metadata');\nvar anObject = require('../internals/an-object');\n\nvar toMetadataKey = ReflectMetadataModule.toKey;\nvar ordinaryDefineOwnMetadata = ReflectMetadataModule.set;\n\n// `Reflect.metadata` method\n// https://github.com/rbuckton/reflect-metadata\n$({ target: 'Reflect', stat: true }, {\n metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, key) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetadataKey(key));\n };\n }\n});\n","require('../modules/esnext.reflect.define-metadata');\nrequire('../modules/esnext.reflect.delete-metadata');\nrequire('../modules/esnext.reflect.get-metadata');\nrequire('../modules/esnext.reflect.get-metadata-keys');\nrequire('../modules/esnext.reflect.get-own-metadata');\nrequire('../modules/esnext.reflect.get-own-metadata-keys');\nrequire('../modules/esnext.reflect.has-metadata');\nrequire('../modules/esnext.reflect.has-own-metadata');\nrequire('../modules/esnext.reflect.metadata');\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport 'core-js/proposals/reflect-metadata';\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","/**\n* @license\n* Copyright Google Inc. All Rights Reserved.\n*\n* Use of this source code is governed by an MIT-style license that can be\n* found in the LICENSE file at https://angular.io/license\n*/\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst Zone$1 = (function (global) {\n const performance = global['performance'];\n function mark(name) {\n performance && performance['mark'] && performance['mark'](name);\n }\n function performanceMeasure(name, label) {\n performance && performance['measure'] && performance['measure'](name, label);\n }\n mark('Zone');\n const checkDuplicate = global[('__zone_symbol__forceDuplicateZoneCheck')] === true;\n if (global['Zone']) {\n // if global['Zone'] already exists (maybe zone.js was already loaded or\n // some other lib also registered a global object named Zone), we may need\n // to throw an error, but sometimes user may not want this error.\n // For example,\n // we have two web pages, page1 includes zone.js, page2 doesn't.\n // and the 1st time user load page1 and page2, everything work fine,\n // but when user load page2 again, error occurs because global['Zone'] already exists.\n // so we add a flag to let user choose whether to throw this error or not.\n // By default, if existing Zone is from zone.js, we will not throw the error.\n if (checkDuplicate || typeof global['Zone'].__symbol__ !== 'function') {\n throw new Error('Zone already loaded.');\n }\n else {\n return global['Zone'];\n }\n }\n class Zone {\n constructor(parent, zoneSpec) {\n this._parent = parent;\n this._name = zoneSpec ? zoneSpec.name || 'unnamed' : '';\n this._properties = zoneSpec && zoneSpec.properties || {};\n this._zoneDelegate =\n new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec);\n }\n static assertZonePatched() {\n if (global['Promise'] !== patches['ZoneAwarePromise']) {\n throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' +\n 'has been overwritten.\\n' +\n 'Most likely cause is that a Promise polyfill has been loaded ' +\n 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' +\n 'If you must load one, do so before loading zone.js.)');\n }\n }\n static get root() {\n let zone = Zone.current;\n while (zone.parent) {\n zone = zone.parent;\n }\n return zone;\n }\n static get current() {\n return _currentZoneFrame.zone;\n }\n static get currentTask() {\n return _currentTask;\n }\n static __load_patch(name, fn) {\n if (patches.hasOwnProperty(name)) {\n if (checkDuplicate) {\n throw Error('Already loaded patch: ' + name);\n }\n }\n else if (!global['__Zone_disable_' + name]) {\n const perfName = 'Zone:' + name;\n mark(perfName);\n patches[name] = fn(global, Zone, _api);\n performanceMeasure(perfName, perfName);\n }\n }\n get parent() {\n return this._parent;\n }\n get name() {\n return this._name;\n }\n get(key) {\n const zone = this.getZoneWith(key);\n if (zone)\n return zone._properties[key];\n }\n getZoneWith(key) {\n let current = this;\n while (current) {\n if (current._properties.hasOwnProperty(key)) {\n return current;\n }\n current = current._parent;\n }\n return null;\n }\n fork(zoneSpec) {\n if (!zoneSpec)\n throw new Error('ZoneSpec required!');\n return this._zoneDelegate.fork(this, zoneSpec);\n }\n wrap(callback, source) {\n if (typeof callback !== 'function') {\n throw new Error('Expecting function got: ' + callback);\n }\n const _callback = this._zoneDelegate.intercept(this, callback, source);\n const zone = this;\n return function () {\n return zone.runGuarded(_callback, this, arguments, source);\n };\n }\n run(callback, applyThis, applyArgs, source) {\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n }\n runGuarded(callback, applyThis = null, applyArgs, source) {\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n }\n runTask(task, applyThis, applyArgs) {\n if (task.zone != this) {\n throw new Error('A task can only be run in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n }\n // https://github.com/angular/zone.js/issues/778, sometimes eventTask\n // will run in notScheduled(canceled) state, we should not try to\n // run such kind of task but just return\n if (task.state === notScheduled && (task.type === eventTask || task.type === macroTask)) {\n return;\n }\n const reEntryGuard = task.state != running;\n reEntryGuard && task._transitionTo(running, scheduled);\n task.runCount++;\n const previousTask = _currentTask;\n _currentTask = task;\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n if (task.type == macroTask && task.data && !task.data.isPeriodic) {\n task.cancelFn = undefined;\n }\n try {\n return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n // if the task's state is notScheduled or unknown, then it has already been cancelled\n // we should not reset the state to scheduled\n if (task.state !== notScheduled && task.state !== unknown) {\n if (task.type == eventTask || (task.data && task.data.isPeriodic)) {\n reEntryGuard && task._transitionTo(scheduled, running);\n }\n else {\n task.runCount = 0;\n this._updateTaskCount(task, -1);\n reEntryGuard &&\n task._transitionTo(notScheduled, running, notScheduled);\n }\n }\n _currentZoneFrame = _currentZoneFrame.parent;\n _currentTask = previousTask;\n }\n }\n scheduleTask(task) {\n if (task.zone && task.zone !== this) {\n // check if the task was rescheduled, the newZone\n // should not be the children of the original zone\n let newZone = this;\n while (newZone) {\n if (newZone === task.zone) {\n throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${task.zone.name}`);\n }\n newZone = newZone.parent;\n }\n }\n task._transitionTo(scheduling, notScheduled);\n const zoneDelegates = [];\n task._zoneDelegates = zoneDelegates;\n task._zone = this;\n try {\n task = this._zoneDelegate.scheduleTask(this, task);\n }\n catch (err) {\n // should set task's state to unknown when scheduleTask throw error\n // because the err may from reschedule, so the fromState maybe notScheduled\n task._transitionTo(unknown, scheduling, notScheduled);\n // TODO: @JiaLiPassion, should we check the result from handleError?\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n if (task._zoneDelegates === zoneDelegates) {\n // we have to check because internally the delegate can reschedule the task.\n this._updateTaskCount(task, 1);\n }\n if (task.state == scheduling) {\n task._transitionTo(scheduled, scheduling);\n }\n return task;\n }\n scheduleMicroTask(source, callback, data, customSchedule) {\n return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, undefined));\n }\n scheduleMacroTask(source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel));\n }\n scheduleEventTask(source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel));\n }\n cancelTask(task) {\n if (task.zone != this)\n throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n task._transitionTo(canceling, scheduled, running);\n try {\n this._zoneDelegate.cancelTask(this, task);\n }\n catch (err) {\n // if error occurs when cancelTask, transit the state to unknown\n task._transitionTo(unknown, canceling);\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n this._updateTaskCount(task, -1);\n task._transitionTo(notScheduled, canceling);\n task.runCount = 0;\n return task;\n }\n _updateTaskCount(task, count) {\n const zoneDelegates = task._zoneDelegates;\n if (count == -1) {\n task._zoneDelegates = null;\n }\n for (let i = 0; i < zoneDelegates.length; i++) {\n zoneDelegates[i]._updateTaskCount(task.type, count);\n }\n }\n }\n Zone.__symbol__ = __symbol__;\n const DELEGATE_ZS = {\n name: '',\n onHasTask: (delegate, _, target, hasTaskState) => delegate.hasTask(target, hasTaskState),\n onScheduleTask: (delegate, _, target, task) => delegate.scheduleTask(target, task),\n onInvokeTask: (delegate, _, target, task, applyThis, applyArgs) => delegate.invokeTask(target, task, applyThis, applyArgs),\n onCancelTask: (delegate, _, target, task) => delegate.cancelTask(target, task)\n };\n class ZoneDelegate {\n constructor(zone, parentDelegate, zoneSpec) {\n this._taskCounts = { 'microTask': 0, 'macroTask': 0, 'eventTask': 0 };\n this.zone = zone;\n this._parentDelegate = parentDelegate;\n this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS);\n this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt);\n this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone);\n this._interceptZS =\n zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS);\n this._interceptDlgt =\n zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt);\n this._interceptCurrZone =\n zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone);\n this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS);\n this._invokeDlgt =\n zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt);\n this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone);\n this._handleErrorZS =\n zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS);\n this._handleErrorDlgt =\n zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt);\n this._handleErrorCurrZone =\n zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone);\n this._scheduleTaskZS =\n zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS);\n this._scheduleTaskDlgt = zoneSpec &&\n (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt);\n this._scheduleTaskCurrZone =\n zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone);\n this._invokeTaskZS =\n zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS);\n this._invokeTaskDlgt =\n zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt);\n this._invokeTaskCurrZone =\n zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone);\n this._cancelTaskZS =\n zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS);\n this._cancelTaskDlgt =\n zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt);\n this._cancelTaskCurrZone =\n zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone);\n this._hasTaskZS = null;\n this._hasTaskDlgt = null;\n this._hasTaskDlgtOwner = null;\n this._hasTaskCurrZone = null;\n const zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask;\n const parentHasTask = parentDelegate && parentDelegate._hasTaskZS;\n if (zoneSpecHasTask || parentHasTask) {\n // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such\n // a case all task related interceptors must go through this ZD. We can't short circuit it.\n this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS;\n this._hasTaskDlgt = parentDelegate;\n this._hasTaskDlgtOwner = this;\n this._hasTaskCurrZone = zone;\n if (!zoneSpec.onScheduleTask) {\n this._scheduleTaskZS = DELEGATE_ZS;\n this._scheduleTaskDlgt = parentDelegate;\n this._scheduleTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onInvokeTask) {\n this._invokeTaskZS = DELEGATE_ZS;\n this._invokeTaskDlgt = parentDelegate;\n this._invokeTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onCancelTask) {\n this._cancelTaskZS = DELEGATE_ZS;\n this._cancelTaskDlgt = parentDelegate;\n this._cancelTaskCurrZone = this.zone;\n }\n }\n }\n fork(targetZone, zoneSpec) {\n return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) :\n new Zone(targetZone, zoneSpec);\n }\n intercept(targetZone, callback, source) {\n return this._interceptZS ?\n this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) :\n callback;\n }\n invoke(targetZone, callback, applyThis, applyArgs, source) {\n return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) :\n callback.apply(applyThis, applyArgs);\n }\n handleError(targetZone, error) {\n return this._handleErrorZS ?\n this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) :\n true;\n }\n scheduleTask(targetZone, task) {\n let returnTask = task;\n if (this._scheduleTaskZS) {\n if (this._hasTaskZS) {\n returnTask._zoneDelegates.push(this._hasTaskDlgtOwner);\n }\n returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task);\n if (!returnTask)\n returnTask = task;\n }\n else {\n if (task.scheduleFn) {\n task.scheduleFn(task);\n }\n else if (task.type == microTask) {\n scheduleMicroTask(task);\n }\n else {\n throw new Error('Task is missing scheduleFn.');\n }\n }\n return returnTask;\n }\n invokeTask(targetZone, task, applyThis, applyArgs) {\n return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) :\n task.callback.apply(applyThis, applyArgs);\n }\n cancelTask(targetZone, task) {\n let value;\n if (this._cancelTaskZS) {\n value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task);\n }\n else {\n if (!task.cancelFn) {\n throw Error('Task is not cancelable');\n }\n value = task.cancelFn(task);\n }\n return value;\n }\n hasTask(targetZone, isEmpty) {\n // hasTask should not throw error so other ZoneDelegate\n // can still trigger hasTask callback\n try {\n this._hasTaskZS &&\n this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty);\n }\n catch (err) {\n this.handleError(targetZone, err);\n }\n }\n _updateTaskCount(type, count) {\n const counts = this._taskCounts;\n const prev = counts[type];\n const next = counts[type] = prev + count;\n if (next < 0) {\n throw new Error('More tasks executed then were scheduled.');\n }\n if (prev == 0 || next == 0) {\n const isEmpty = {\n microTask: counts['microTask'] > 0,\n macroTask: counts['macroTask'] > 0,\n eventTask: counts['eventTask'] > 0,\n change: type\n };\n this.hasTask(this.zone, isEmpty);\n }\n }\n }\n class ZoneTask {\n constructor(type, source, callback, options, scheduleFn, cancelFn) {\n this._zone = null;\n this.runCount = 0;\n this._zoneDelegates = null;\n this._state = 'notScheduled';\n this.type = type;\n this.source = source;\n this.data = options;\n this.scheduleFn = scheduleFn;\n this.cancelFn = cancelFn;\n this.callback = callback;\n const self = this;\n // TODO: @JiaLiPassion options should have interface\n if (type === eventTask && options && options.useG) {\n this.invoke = ZoneTask.invokeTask;\n }\n else {\n this.invoke = function () {\n return ZoneTask.invokeTask.call(global, self, this, arguments);\n };\n }\n }\n static invokeTask(task, target, args) {\n if (!task) {\n task = this;\n }\n _numberOfNestedTaskFrames++;\n try {\n task.runCount++;\n return task.zone.runTask(task, target, args);\n }\n finally {\n if (_numberOfNestedTaskFrames == 1) {\n drainMicroTaskQueue();\n }\n _numberOfNestedTaskFrames--;\n }\n }\n get zone() {\n return this._zone;\n }\n get state() {\n return this._state;\n }\n cancelScheduleRequest() {\n this._transitionTo(notScheduled, scheduling);\n }\n _transitionTo(toState, fromState1, fromState2) {\n if (this._state === fromState1 || this._state === fromState2) {\n this._state = toState;\n if (toState == notScheduled) {\n this._zoneDelegates = null;\n }\n }\n else {\n throw new Error(`${this.type} '${this.source}': can not transition to '${toState}', expecting state '${fromState1}'${fromState2 ? ' or \\'' + fromState2 + '\\'' : ''}, was '${this._state}'.`);\n }\n }\n toString() {\n if (this.data && typeof this.data.handleId !== 'undefined') {\n return this.data.handleId.toString();\n }\n else {\n return Object.prototype.toString.call(this);\n }\n }\n // add toJSON method to prevent cyclic error when\n // call JSON.stringify(zoneTask)\n toJSON() {\n return {\n type: this.type,\n state: this.state,\n source: this.source,\n zone: this.zone.name,\n runCount: this.runCount\n };\n }\n }\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// MICROTASK QUEUE\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n const symbolSetTimeout = __symbol__('setTimeout');\n const symbolPromise = __symbol__('Promise');\n const symbolThen = __symbol__('then');\n let _microTaskQueue = [];\n let _isDrainingMicrotaskQueue = false;\n let nativeMicroTaskQueuePromise;\n function scheduleMicroTask(task) {\n // if we are not running in any task, and there has not been anything scheduled\n // we must bootstrap the initial task creation by manually scheduling the drain\n if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) {\n // We are not running in Task, so we need to kickstart the microtask queue.\n if (!nativeMicroTaskQueuePromise) {\n if (global[symbolPromise]) {\n nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0);\n }\n }\n if (nativeMicroTaskQueuePromise) {\n let nativeThen = nativeMicroTaskQueuePromise[symbolThen];\n if (!nativeThen) {\n // native Promise is not patchable, we need to use `then` directly\n // issue 1078\n nativeThen = nativeMicroTaskQueuePromise['then'];\n }\n nativeThen.call(nativeMicroTaskQueuePromise, drainMicroTaskQueue);\n }\n else {\n global[symbolSetTimeout](drainMicroTaskQueue, 0);\n }\n }\n task && _microTaskQueue.push(task);\n }\n function drainMicroTaskQueue() {\n if (!_isDrainingMicrotaskQueue) {\n _isDrainingMicrotaskQueue = true;\n while (_microTaskQueue.length) {\n const queue = _microTaskQueue;\n _microTaskQueue = [];\n for (let i = 0; i < queue.length; i++) {\n const task = queue[i];\n try {\n task.zone.runTask(task, null, null);\n }\n catch (error) {\n _api.onUnhandledError(error);\n }\n }\n }\n _api.microtaskDrainDone();\n _isDrainingMicrotaskQueue = false;\n }\n }\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// BOOTSTRAP\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n const NO_ZONE = { name: 'NO ZONE' };\n const notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown';\n const microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask';\n const patches = {};\n const _api = {\n symbol: __symbol__,\n currentZoneFrame: () => _currentZoneFrame,\n onUnhandledError: noop,\n microtaskDrainDone: noop,\n scheduleMicroTask: scheduleMicroTask,\n showUncaughtError: () => !Zone[__symbol__('ignoreConsoleErrorUncaughtError')],\n patchEventTarget: () => [],\n patchOnProperties: noop,\n patchMethod: () => noop,\n bindArguments: () => [],\n patchThen: () => noop,\n patchMacroTask: () => noop,\n setNativePromise: (NativePromise) => {\n // sometimes NativePromise.resolve static function\n // is not ready yet, (such as core-js/es6.promise)\n // so we need to check here.\n if (NativePromise && typeof NativePromise.resolve === 'function') {\n nativeMicroTaskQueuePromise = NativePromise.resolve(0);\n }\n },\n patchEventPrototype: () => noop,\n isIEOrEdge: () => false,\n getGlobalObjects: () => undefined,\n ObjectDefineProperty: () => noop,\n ObjectGetOwnPropertyDescriptor: () => undefined,\n ObjectCreate: () => undefined,\n ArraySlice: () => [],\n patchClass: () => noop,\n wrapWithCurrentZone: () => noop,\n filterProperties: () => [],\n attachOriginToPatched: () => noop,\n _redefineProperty: () => noop,\n patchCallbacks: () => noop\n };\n let _currentZoneFrame = { parent: null, zone: new Zone(null, null) };\n let _currentTask = null;\n let _numberOfNestedTaskFrames = 0;\n function noop() { }\n function __symbol__(name) {\n return '__zone_symbol__' + name;\n }\n performanceMeasure('Zone', 'Zone');\n return global['Zone'] = Zone;\n})(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global);\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nZone.__load_patch('ZoneAwarePromise', (global, Zone, api) => {\n const ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n const ObjectDefineProperty = Object.defineProperty;\n function readableObjectToString(obj) {\n if (obj && obj.toString === Object.prototype.toString) {\n const className = obj.constructor && obj.constructor.name;\n return (className ? className : '') + ': ' + JSON.stringify(obj);\n }\n return obj ? obj.toString() : Object.prototype.toString.call(obj);\n }\n const __symbol__ = api.symbol;\n const _uncaughtPromiseErrors = [];\n const symbolPromise = __symbol__('Promise');\n const symbolThen = __symbol__('then');\n const creationTrace = '__creationTrace__';\n api.onUnhandledError = (e) => {\n if (api.showUncaughtError()) {\n const rejection = e && e.rejection;\n if (rejection) {\n console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined);\n }\n else {\n console.error(e);\n }\n }\n };\n api.microtaskDrainDone = () => {\n while (_uncaughtPromiseErrors.length) {\n while (_uncaughtPromiseErrors.length) {\n const uncaughtPromiseError = _uncaughtPromiseErrors.shift();\n try {\n uncaughtPromiseError.zone.runGuarded(() => {\n throw uncaughtPromiseError;\n });\n }\n catch (error) {\n handleUnhandledRejection(error);\n }\n }\n }\n };\n const UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler');\n function handleUnhandledRejection(e) {\n api.onUnhandledError(e);\n try {\n const handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL];\n if (handler && typeof handler === 'function') {\n handler.call(this, e);\n }\n }\n catch (err) {\n }\n }\n function isThenable(value) {\n return value && value.then;\n }\n function forwardResolution(value) {\n return value;\n }\n function forwardRejection(rejection) {\n return ZoneAwarePromise.reject(rejection);\n }\n const symbolState = __symbol__('state');\n const symbolValue = __symbol__('value');\n const symbolFinally = __symbol__('finally');\n const symbolParentPromiseValue = __symbol__('parentPromiseValue');\n const symbolParentPromiseState = __symbol__('parentPromiseState');\n const source = 'Promise.then';\n const UNRESOLVED = null;\n const RESOLVED = true;\n const REJECTED = false;\n const REJECTED_NO_CATCH = 0;\n function makeResolver(promise, state) {\n return (v) => {\n try {\n resolvePromise(promise, state, v);\n }\n catch (err) {\n resolvePromise(promise, false, err);\n }\n // Do not return value or you will break the Promise spec.\n };\n }\n const once = function () {\n let wasCalled = false;\n return function wrapper(wrappedFunction) {\n return function () {\n if (wasCalled) {\n return;\n }\n wasCalled = true;\n wrappedFunction.apply(null, arguments);\n };\n };\n };\n const TYPE_ERROR = 'Promise resolved with itself';\n const CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace');\n // Promise Resolution\n function resolvePromise(promise, state, value) {\n const onceWrapper = once();\n if (promise === value) {\n throw new TypeError(TYPE_ERROR);\n }\n if (promise[symbolState] === UNRESOLVED) {\n // should only get value.then once based on promise spec.\n let then = null;\n try {\n if (typeof value === 'object' || typeof value === 'function') {\n then = value && value.then;\n }\n }\n catch (err) {\n onceWrapper(() => {\n resolvePromise(promise, false, err);\n })();\n return promise;\n }\n // if (value instanceof ZoneAwarePromise) {\n if (state !== REJECTED && value instanceof ZoneAwarePromise &&\n value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) &&\n value[symbolState] !== UNRESOLVED) {\n clearRejectedNoCatch(value);\n resolvePromise(promise, value[symbolState], value[symbolValue]);\n }\n else if (state !== REJECTED && typeof then === 'function') {\n try {\n then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false)));\n }\n catch (err) {\n onceWrapper(() => {\n resolvePromise(promise, false, err);\n })();\n }\n }\n else {\n promise[symbolState] = state;\n const queue = promise[symbolValue];\n promise[symbolValue] = value;\n if (promise[symbolFinally] === symbolFinally) {\n // the promise is generated by Promise.prototype.finally\n if (state === RESOLVED) {\n // the state is resolved, should ignore the value\n // and use parent promise value\n promise[symbolState] = promise[symbolParentPromiseState];\n promise[symbolValue] = promise[symbolParentPromiseValue];\n }\n }\n // record task information in value when error occurs, so we can\n // do some additional work such as render longStackTrace\n if (state === REJECTED && value instanceof Error) {\n // check if longStackTraceZone is here\n const trace = Zone.currentTask && Zone.currentTask.data &&\n Zone.currentTask.data[creationTrace];\n if (trace) {\n // only keep the long stack trace into error when in longStackTraceZone\n ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { configurable: true, enumerable: false, writable: true, value: trace });\n }\n }\n for (let i = 0; i < queue.length;) {\n scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]);\n }\n if (queue.length == 0 && state == REJECTED) {\n promise[symbolState] = REJECTED_NO_CATCH;\n try {\n // try to print more readable error log\n throw new Error('Uncaught (in promise): ' + readableObjectToString(value) +\n (value && value.stack ? '\\n' + value.stack : ''));\n }\n catch (err) {\n const error = err;\n error.rejection = value;\n error.promise = promise;\n error.zone = Zone.current;\n error.task = Zone.currentTask;\n _uncaughtPromiseErrors.push(error);\n api.scheduleMicroTask(); // to make sure that it is running\n }\n }\n }\n }\n // Resolving an already resolved promise is a noop.\n return promise;\n }\n const REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler');\n function clearRejectedNoCatch(promise) {\n if (promise[symbolState] === REJECTED_NO_CATCH) {\n // if the promise is rejected no catch status\n // and queue.length > 0, means there is a error handler\n // here to handle the rejected promise, we should trigger\n // windows.rejectionhandled eventHandler or nodejs rejectionHandled\n // eventHandler\n try {\n const handler = Zone[REJECTION_HANDLED_HANDLER];\n if (handler && typeof handler === 'function') {\n handler.call(this, { rejection: promise[symbolValue], promise: promise });\n }\n }\n catch (err) {\n }\n promise[symbolState] = REJECTED;\n for (let i = 0; i < _uncaughtPromiseErrors.length; i++) {\n if (promise === _uncaughtPromiseErrors[i].promise) {\n _uncaughtPromiseErrors.splice(i, 1);\n }\n }\n }\n }\n function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) {\n clearRejectedNoCatch(promise);\n const promiseState = promise[symbolState];\n const delegate = promiseState ?\n (typeof onFulfilled === 'function') ? onFulfilled : forwardResolution :\n (typeof onRejected === 'function') ? onRejected : forwardRejection;\n zone.scheduleMicroTask(source, () => {\n try {\n const parentPromiseValue = promise[symbolValue];\n const isFinallyPromise = chainPromise && symbolFinally === chainPromise[symbolFinally];\n if (isFinallyPromise) {\n // if the promise is generated from finally call, keep parent promise's state and value\n chainPromise[symbolParentPromiseValue] = parentPromiseValue;\n chainPromise[symbolParentPromiseState] = promiseState;\n }\n // should not pass value to finally callback\n const value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ?\n [] :\n [parentPromiseValue]);\n resolvePromise(chainPromise, true, value);\n }\n catch (error) {\n // if error occurs, should always return this error\n resolvePromise(chainPromise, false, error);\n }\n }, chainPromise);\n }\n const ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }';\n class ZoneAwarePromise {\n constructor(executor) {\n const promise = this;\n if (!(promise instanceof ZoneAwarePromise)) {\n throw new Error('Must be an instanceof Promise.');\n }\n promise[symbolState] = UNRESOLVED;\n promise[symbolValue] = []; // queue;\n try {\n executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED));\n }\n catch (error) {\n resolvePromise(promise, false, error);\n }\n }\n static toString() {\n return ZONE_AWARE_PROMISE_TO_STRING;\n }\n static resolve(value) {\n return resolvePromise(new this(null), RESOLVED, value);\n }\n static reject(error) {\n return resolvePromise(new this(null), REJECTED, error);\n }\n static race(values) {\n let resolve;\n let reject;\n let promise = new this((res, rej) => {\n resolve = res;\n reject = rej;\n });\n function onResolve(value) {\n resolve(value);\n }\n function onReject(error) {\n reject(error);\n }\n for (let value of values) {\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n value.then(onResolve, onReject);\n }\n return promise;\n }\n static all(values) {\n let resolve;\n let reject;\n let promise = new this((res, rej) => {\n resolve = res;\n reject = rej;\n });\n // Start at 2 to prevent prematurely resolving if .then is called immediately.\n let unresolvedCount = 2;\n let valueIndex = 0;\n const resolvedValues = [];\n for (let value of values) {\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n const curValueIndex = valueIndex;\n value.then((value) => {\n resolvedValues[curValueIndex] = value;\n unresolvedCount--;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n }, reject);\n unresolvedCount++;\n valueIndex++;\n }\n // Make the unresolvedCount zero-based again.\n unresolvedCount -= 2;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n return promise;\n }\n get [Symbol.toStringTag]() {\n return 'Promise';\n }\n then(onFulfilled, onRejected) {\n const chainPromise = new this.constructor(null);\n const zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected);\n }\n return chainPromise;\n }\n catch(onRejected) {\n return this.then(null, onRejected);\n }\n finally(onFinally) {\n const chainPromise = new this.constructor(null);\n chainPromise[symbolFinally] = symbolFinally;\n const zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFinally, onFinally);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally);\n }\n return chainPromise;\n }\n }\n // Protect against aggressive optimizers dropping seemingly unused properties.\n // E.g. Closure Compiler in advanced mode.\n ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve;\n ZoneAwarePromise['reject'] = ZoneAwarePromise.reject;\n ZoneAwarePromise['race'] = ZoneAwarePromise.race;\n ZoneAwarePromise['all'] = ZoneAwarePromise.all;\n const NativePromise = global[symbolPromise] = global['Promise'];\n const ZONE_AWARE_PROMISE = Zone.__symbol__('ZoneAwarePromise');\n let desc = ObjectGetOwnPropertyDescriptor(global, 'Promise');\n if (!desc || desc.configurable) {\n desc && delete desc.writable;\n desc && delete desc.value;\n if (!desc) {\n desc = { configurable: true, enumerable: true };\n }\n desc.get = function () {\n // if we already set ZoneAwarePromise, use patched one\n // otherwise return native one.\n return global[ZONE_AWARE_PROMISE] ? global[ZONE_AWARE_PROMISE] : global[symbolPromise];\n };\n desc.set = function (NewNativePromise) {\n if (NewNativePromise === ZoneAwarePromise) {\n // if the NewNativePromise is ZoneAwarePromise\n // save to global\n global[ZONE_AWARE_PROMISE] = NewNativePromise;\n }\n else {\n // if the NewNativePromise is not ZoneAwarePromise\n // for example: after load zone.js, some library just\n // set es6-promise to global, if we set it to global\n // directly, assertZonePatched will fail and angular\n // will not loaded, so we just set the NewNativePromise\n // to global[symbolPromise], so the result is just like\n // we load ES6 Promise before zone.js\n global[symbolPromise] = NewNativePromise;\n if (!NewNativePromise.prototype[symbolThen]) {\n patchThen(NewNativePromise);\n }\n api.setNativePromise(NewNativePromise);\n }\n };\n ObjectDefineProperty(global, 'Promise', desc);\n }\n global['Promise'] = ZoneAwarePromise;\n const symbolThenPatched = __symbol__('thenPatched');\n function patchThen(Ctor) {\n const proto = Ctor.prototype;\n const prop = ObjectGetOwnPropertyDescriptor(proto, 'then');\n if (prop && (prop.writable === false || !prop.configurable)) {\n // check Ctor.prototype.then propertyDescriptor is writable or not\n // in meteor env, writable is false, we should ignore such case\n return;\n }\n const originalThen = proto.then;\n // Keep a reference to the original method.\n proto[symbolThen] = originalThen;\n Ctor.prototype.then = function (onResolve, onReject) {\n const wrapped = new ZoneAwarePromise((resolve, reject) => {\n originalThen.call(this, resolve, reject);\n });\n return wrapped.then(onResolve, onReject);\n };\n Ctor[symbolThenPatched] = true;\n }\n api.patchThen = patchThen;\n function zoneify(fn) {\n return function () {\n let resultPromise = fn.apply(this, arguments);\n if (resultPromise instanceof ZoneAwarePromise) {\n return resultPromise;\n }\n let ctor = resultPromise.constructor;\n if (!ctor[symbolThenPatched]) {\n patchThen(ctor);\n }\n return resultPromise;\n };\n }\n if (NativePromise) {\n patchThen(NativePromise);\n const fetch = global['fetch'];\n if (typeof fetch == 'function') {\n global[api.symbol('fetch')] = fetch;\n global['fetch'] = zoneify(fetch);\n }\n }\n // This is not part of public API, but it is useful for tests, so we expose it.\n Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors;\n return ZoneAwarePromise;\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Suppress closure compiler errors about unknown 'Zone' variable\n * @fileoverview\n * @suppress {undefinedVars,globalThis,missingRequire}\n */\n// issue #989, to reduce bundle size, use short name\n/** Object.getOwnPropertyDescriptor */\nconst ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n/** Object.defineProperty */\nconst ObjectDefineProperty = Object.defineProperty;\n/** Object.getPrototypeOf */\nconst ObjectGetPrototypeOf = Object.getPrototypeOf;\n/** Object.create */\nconst ObjectCreate = Object.create;\n/** Array.prototype.slice */\nconst ArraySlice = Array.prototype.slice;\n/** addEventListener string const */\nconst ADD_EVENT_LISTENER_STR = 'addEventListener';\n/** removeEventListener string const */\nconst REMOVE_EVENT_LISTENER_STR = 'removeEventListener';\n/** zoneSymbol addEventListener */\nconst ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR);\n/** zoneSymbol removeEventListener */\nconst ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR);\n/** true string const */\nconst TRUE_STR = 'true';\n/** false string const */\nconst FALSE_STR = 'false';\n/** __zone_symbol__ string const */\nconst ZONE_SYMBOL_PREFIX = '__zone_symbol__';\nfunction wrapWithCurrentZone(callback, source) {\n return Zone.current.wrap(callback, source);\n}\nfunction scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) {\n return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel);\n}\nconst zoneSymbol = Zone.__symbol__;\nconst isWindowExists = typeof window !== 'undefined';\nconst internalWindow = isWindowExists ? window : undefined;\nconst _global = isWindowExists && internalWindow || typeof self === 'object' && self || global;\nconst REMOVE_ATTRIBUTE = 'removeAttribute';\nconst NULL_ON_PROP_VALUE = [null];\nfunction bindArguments(args, source) {\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n args[i] = wrapWithCurrentZone(args[i], source + '_' + i);\n }\n }\n return args;\n}\nfunction patchPrototype(prototype, fnNames) {\n const source = prototype.constructor['name'];\n for (let i = 0; i < fnNames.length; i++) {\n const name = fnNames[i];\n const delegate = prototype[name];\n if (delegate) {\n const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name);\n if (!isPropertyWritable(prototypeDesc)) {\n continue;\n }\n prototype[name] = ((delegate) => {\n const patched = function () {\n return delegate.apply(this, bindArguments(arguments, source + '.' + name));\n };\n attachOriginToPatched(patched, delegate);\n return patched;\n })(delegate);\n }\n }\n}\nfunction isPropertyWritable(propertyDesc) {\n if (!propertyDesc) {\n return true;\n }\n if (propertyDesc.writable === false) {\n return false;\n }\n return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined');\n}\nconst isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope);\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nconst isNode = (!('nw' in _global) && typeof _global.process !== 'undefined' &&\n {}.toString.call(_global.process) === '[object process]');\nconst isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']);\n// we are in electron of nw, so we are both browser and nodejs\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nconst isMix = typeof _global.process !== 'undefined' &&\n {}.toString.call(_global.process) === '[object process]' && !isWebWorker &&\n !!(isWindowExists && internalWindow['HTMLElement']);\nconst zoneSymbolEventNames = {};\nconst wrapFn = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n let eventNameSymbol = zoneSymbolEventNames[event.type];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames[event.type] = zoneSymbol('ON_PROPERTY' + event.type);\n }\n const target = this || event.target || _global;\n const listener = target[eventNameSymbol];\n let result;\n if (isBrowser && target === internalWindow && event.type === 'error') {\n // window.onerror have different signiture\n // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#window.onerror\n // and onerror callback will prevent default when callback return true\n const errorEvent = event;\n result = listener &&\n listener.call(this, errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error);\n if (result === true) {\n event.preventDefault();\n }\n }\n else {\n result = listener && listener.apply(this, arguments);\n if (result != undefined && !result) {\n event.preventDefault();\n }\n }\n return result;\n};\nfunction patchProperty(obj, prop, prototype) {\n let desc = ObjectGetOwnPropertyDescriptor(obj, prop);\n if (!desc && prototype) {\n // when patch window object, use prototype to check prop exist or not\n const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop);\n if (prototypeDesc) {\n desc = { enumerable: true, configurable: true };\n }\n }\n // if the descriptor not exists or is not configurable\n // just return\n if (!desc || !desc.configurable) {\n return;\n }\n const onPropPatchedSymbol = zoneSymbol('on' + prop + 'patched');\n if (obj.hasOwnProperty(onPropPatchedSymbol) && obj[onPropPatchedSymbol]) {\n return;\n }\n // A property descriptor cannot have getter/setter and be writable\n // deleting the writable and value properties avoids this error:\n //\n // TypeError: property descriptors must not specify a value or be writable when a\n // getter or setter has been specified\n delete desc.writable;\n delete desc.value;\n const originalDescGet = desc.get;\n const originalDescSet = desc.set;\n // substr(2) cuz 'onclick' -> 'click', etc\n const eventName = prop.substr(2);\n let eventNameSymbol = zoneSymbolEventNames[eventName];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames[eventName] = zoneSymbol('ON_PROPERTY' + eventName);\n }\n desc.set = function (newValue) {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n let target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return;\n }\n let previousValue = target[eventNameSymbol];\n if (previousValue) {\n target.removeEventListener(eventName, wrapFn);\n }\n // issue #978, when onload handler was added before loading zone.js\n // we should remove it with originalDescSet\n if (originalDescSet) {\n originalDescSet.apply(target, NULL_ON_PROP_VALUE);\n }\n if (typeof newValue === 'function') {\n target[eventNameSymbol] = newValue;\n target.addEventListener(eventName, wrapFn, false);\n }\n else {\n target[eventNameSymbol] = null;\n }\n };\n // The getter would return undefined for unassigned properties but the default value of an\n // unassigned property is null\n desc.get = function () {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n let target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return null;\n }\n const listener = target[eventNameSymbol];\n if (listener) {\n return listener;\n }\n else if (originalDescGet) {\n // result will be null when use inline event attribute,\n // such as \n // because the onclick function is internal raw uncompiled handler\n // the onclick will be evaluated when first time event was triggered or\n // the property is accessed, https://github.com/angular/zone.js/issues/525\n // so we should use original native get to retrieve the handler\n let value = originalDescGet && originalDescGet.call(this);\n if (value) {\n desc.set.call(this, value);\n if (typeof target[REMOVE_ATTRIBUTE] === 'function') {\n target.removeAttribute(prop);\n }\n return value;\n }\n }\n return null;\n };\n ObjectDefineProperty(obj, prop, desc);\n obj[onPropPatchedSymbol] = true;\n}\nfunction patchOnProperties(obj, properties, prototype) {\n if (properties) {\n for (let i = 0; i < properties.length; i++) {\n patchProperty(obj, 'on' + properties[i], prototype);\n }\n }\n else {\n const onProperties = [];\n for (const prop in obj) {\n if (prop.substr(0, 2) == 'on') {\n onProperties.push(prop);\n }\n }\n for (let j = 0; j < onProperties.length; j++) {\n patchProperty(obj, onProperties[j], prototype);\n }\n }\n}\nconst originalInstanceKey = zoneSymbol('originalInstance');\n// wrap some native API on `window`\nfunction patchClass(className) {\n const OriginalClass = _global[className];\n if (!OriginalClass)\n return;\n // keep original class in global\n _global[zoneSymbol(className)] = OriginalClass;\n _global[className] = function () {\n const a = bindArguments(arguments, className);\n switch (a.length) {\n case 0:\n this[originalInstanceKey] = new OriginalClass();\n break;\n case 1:\n this[originalInstanceKey] = new OriginalClass(a[0]);\n break;\n case 2:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1]);\n break;\n case 3:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]);\n break;\n case 4:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]);\n break;\n default:\n throw new Error('Arg list too long.');\n }\n };\n // attach original delegate to patched function\n attachOriginToPatched(_global[className], OriginalClass);\n const instance = new OriginalClass(function () { });\n let prop;\n for (prop in instance) {\n // https://bugs.webkit.org/show_bug.cgi?id=44721\n if (className === 'XMLHttpRequest' && prop === 'responseBlob')\n continue;\n (function (prop) {\n if (typeof instance[prop] === 'function') {\n _global[className].prototype[prop] = function () {\n return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments);\n };\n }\n else {\n ObjectDefineProperty(_global[className].prototype, prop, {\n set: function (fn) {\n if (typeof fn === 'function') {\n this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop);\n // keep callback in wrapped function so we can\n // use it in Function.prototype.toString to return\n // the native one.\n attachOriginToPatched(this[originalInstanceKey][prop], fn);\n }\n else {\n this[originalInstanceKey][prop] = fn;\n }\n },\n get: function () {\n return this[originalInstanceKey][prop];\n }\n });\n }\n }(prop));\n }\n for (prop in OriginalClass) {\n if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) {\n _global[className][prop] = OriginalClass[prop];\n }\n }\n}\nfunction copySymbolProperties(src, dest) {\n if (typeof Object.getOwnPropertySymbols !== 'function') {\n return;\n }\n const symbols = Object.getOwnPropertySymbols(src);\n symbols.forEach((symbol) => {\n const desc = Object.getOwnPropertyDescriptor(src, symbol);\n Object.defineProperty(dest, symbol, {\n get: function () {\n return src[symbol];\n },\n set: function (value) {\n if (desc && (!desc.writable || typeof desc.set !== 'function')) {\n // if src[symbol] is not writable or not have a setter, just return\n return;\n }\n src[symbol] = value;\n },\n enumerable: desc ? desc.enumerable : true,\n configurable: desc ? desc.configurable : true\n });\n });\n}\nlet shouldCopySymbolProperties = false;\n\nfunction patchMethod(target, name, patchFn) {\n let proto = target;\n while (proto && !proto.hasOwnProperty(name)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && target[name]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = target;\n }\n const delegateName = zoneSymbol(name);\n let delegate = null;\n if (proto && !(delegate = proto[delegateName])) {\n delegate = proto[delegateName] = proto[name];\n // check whether proto[name] is writable\n // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob\n const desc = proto && ObjectGetOwnPropertyDescriptor(proto, name);\n if (isPropertyWritable(desc)) {\n const patchDelegate = patchFn(delegate, delegateName, name);\n proto[name] = function () {\n return patchDelegate(this, arguments);\n };\n attachOriginToPatched(proto[name], delegate);\n if (shouldCopySymbolProperties) {\n copySymbolProperties(delegate, proto[name]);\n }\n }\n }\n return delegate;\n}\n// TODO: @JiaLiPassion, support cancel task later if necessary\nfunction patchMacroTask(obj, funcName, metaCreator) {\n let setNative = null;\n function scheduleTask(task) {\n const data = task.data;\n data.args[data.cbIdx] = function () {\n task.invoke.apply(this, arguments);\n };\n setNative.apply(data.target, data.args);\n return task;\n }\n setNative = patchMethod(obj, funcName, (delegate) => function (self, args) {\n const meta = metaCreator(self, args);\n if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') {\n return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask);\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(self, args);\n }\n });\n}\n\nfunction attachOriginToPatched(patched, original) {\n patched[zoneSymbol('OriginalDelegate')] = original;\n}\nlet isDetectedIEOrEdge = false;\nlet ieOrEdge = false;\nfunction isIE() {\n try {\n const ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1) {\n return true;\n }\n }\n catch (error) {\n }\n return false;\n}\nfunction isIEOrEdge() {\n if (isDetectedIEOrEdge) {\n return ieOrEdge;\n }\n isDetectedIEOrEdge = true;\n try {\n const ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) {\n ieOrEdge = true;\n }\n }\n catch (error) {\n }\n return ieOrEdge;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// override Function.prototype.toString to make zone.js patched function\n// look like native function\nZone.__load_patch('toString', (global) => {\n // patch Func.prototype.toString to let them look like native\n const originalFunctionToString = Function.prototype.toString;\n const ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate');\n const PROMISE_SYMBOL = zoneSymbol('Promise');\n const ERROR_SYMBOL = zoneSymbol('Error');\n const newFunctionToString = function toString() {\n if (typeof this === 'function') {\n const originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL];\n if (originalDelegate) {\n if (typeof originalDelegate === 'function') {\n return originalFunctionToString.call(originalDelegate);\n }\n else {\n return Object.prototype.toString.call(originalDelegate);\n }\n }\n if (this === Promise) {\n const nativePromise = global[PROMISE_SYMBOL];\n if (nativePromise) {\n return originalFunctionToString.call(nativePromise);\n }\n }\n if (this === Error) {\n const nativeError = global[ERROR_SYMBOL];\n if (nativeError) {\n return originalFunctionToString.call(nativeError);\n }\n }\n }\n return originalFunctionToString.call(this);\n };\n newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString;\n Function.prototype.toString = newFunctionToString;\n // patch Object.prototype.toString to let them look like native\n const originalObjectToString = Object.prototype.toString;\n const PROMISE_OBJECT_TO_STRING = '[object Promise]';\n Object.prototype.toString = function () {\n if (this instanceof Promise) {\n return PROMISE_OBJECT_TO_STRING;\n }\n return originalObjectToString.call(this);\n };\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nlet passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n const options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n }\n });\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\n// an identifier to tell ZoneTask do not create a new invoke closure\nconst OPTIMIZED_ZONE_EVENT_TASK_DATA = {\n useG: true\n};\nconst zoneSymbolEventNames$1 = {};\nconst globalSources = {};\nconst EVENT_NAME_SYMBOL_REGX = /^__zone_symbol__(\\w+)(true|false)$/;\nconst IMMEDIATE_PROPAGATION_SYMBOL = ('__zone_symbol__propagationStopped');\nfunction patchEventTarget(_global, apis, patchOptions) {\n const ADD_EVENT_LISTENER = (patchOptions && patchOptions.add) || ADD_EVENT_LISTENER_STR;\n const REMOVE_EVENT_LISTENER = (patchOptions && patchOptions.rm) || REMOVE_EVENT_LISTENER_STR;\n const LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.listeners) || 'eventListeners';\n const REMOVE_ALL_LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.rmAll) || 'removeAllListeners';\n const zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER);\n const ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':';\n const PREPEND_EVENT_LISTENER = 'prependListener';\n const PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':';\n const invokeTask = function (task, target, event) {\n // for better performance, check isRemoved which is set\n // by removeEventListener\n if (task.isRemoved) {\n return;\n }\n const delegate = task.callback;\n if (typeof delegate === 'object' && delegate.handleEvent) {\n // create the bind version of handleEvent when invoke\n task.callback = (event) => delegate.handleEvent(event);\n task.originalDelegate = delegate;\n }\n // invoke static task.invoke\n task.invoke(task, target, [event]);\n const options = task.options;\n if (options && typeof options === 'object' && options.once) {\n // if options.once is true, after invoke once remove listener here\n // only browser need to do this, nodejs eventEmitter will cal removeListener\n // inside EventEmitter.once\n const delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n target[REMOVE_EVENT_LISTENER].call(target, event.type, delegate, options);\n }\n };\n // global shared zoneAwareCallback to handle all event callback with capture = false\n const globalZoneAwareCallback = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n const target = this || event.target || _global;\n const tasks = target[zoneSymbolEventNames$1[event.type][FALSE_STR]];\n if (tasks) {\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n invokeTask(tasks[0], target, event);\n }\n else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n const copyTasks = tasks.slice();\n for (let i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n invokeTask(copyTasks[i], target, event);\n }\n }\n }\n };\n // global shared zoneAwareCallback to handle all event callback with capture = true\n const globalZoneAwareCaptureCallback = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n const target = this || event.target || _global;\n const tasks = target[zoneSymbolEventNames$1[event.type][TRUE_STR]];\n if (tasks) {\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n invokeTask(tasks[0], target, event);\n }\n else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n const copyTasks = tasks.slice();\n for (let i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n invokeTask(copyTasks[i], target, event);\n }\n }\n }\n };\n function patchEventTargetMethods(obj, patchOptions) {\n if (!obj) {\n return false;\n }\n let useGlobalCallback = true;\n if (patchOptions && patchOptions.useG !== undefined) {\n useGlobalCallback = patchOptions.useG;\n }\n const validateHandler = patchOptions && patchOptions.vh;\n let checkDuplicate = true;\n if (patchOptions && patchOptions.chkDup !== undefined) {\n checkDuplicate = patchOptions.chkDup;\n }\n let returnTarget = false;\n if (patchOptions && patchOptions.rt !== undefined) {\n returnTarget = patchOptions.rt;\n }\n let proto = obj;\n while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && obj[ADD_EVENT_LISTENER]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = obj;\n }\n if (!proto) {\n return false;\n }\n if (proto[zoneSymbolAddEventListener]) {\n return false;\n }\n const eventNameToString = patchOptions && patchOptions.eventNameToString;\n // a shared global taskData to pass data for scheduleEventTask\n // so we do not need to create a new object just for pass some data\n const taskData = {};\n const nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER];\n const nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] =\n proto[REMOVE_EVENT_LISTENER];\n const nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] =\n proto[LISTENERS_EVENT_LISTENER];\n const nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] =\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER];\n let nativePrependEventListener;\n if (patchOptions && patchOptions.prepend) {\n nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] =\n proto[patchOptions.prepend];\n }\n function checkIsPassive(task) {\n if (!passiveSupported && typeof taskData.options !== 'boolean' &&\n typeof taskData.options !== 'undefined' && taskData.options !== null) {\n // options is a non-null non-undefined object\n // passive is not supported\n // don't pass options as object\n // just pass capture as a boolean\n task.options = !!taskData.options.capture;\n taskData.options = task.options;\n }\n }\n const customScheduleGlobal = function (task) {\n // if there is already a task for the eventName + capture,\n // just return, because we use the shared globalZoneAwareCallback here.\n if (taskData.isExisting) {\n return;\n }\n checkIsPassive(task);\n return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options);\n };\n const customCancelGlobal = function (task) {\n // if task is not marked as isRemoved, this call is directly\n // from Zone.prototype.cancelTask, we should remove the task\n // from tasksList of target first\n if (!task.isRemoved) {\n const symbolEventNames = zoneSymbolEventNames$1[task.eventName];\n let symbolEventName;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR];\n }\n const existingTasks = symbolEventName && task.target[symbolEventName];\n if (existingTasks) {\n for (let i = 0; i < existingTasks.length; i++) {\n const existingTask = existingTasks[i];\n if (existingTask === task) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n task.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n task.allRemoved = true;\n task.target[symbolEventName] = null;\n }\n break;\n }\n }\n }\n }\n // if all tasks for the eventName + capture have gone,\n // we will really remove the global event callback,\n // if not, return\n if (!task.allRemoved) {\n return;\n }\n return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options);\n };\n const customScheduleNonGlobal = function (task) {\n checkIsPassive(task);\n return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n const customSchedulePrepend = function (task) {\n return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n const customCancelNonGlobal = function (task) {\n return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options);\n };\n const customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal;\n const customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal;\n const compareTaskCallbackVsDelegate = function (task, delegate) {\n const typeOfDelegate = typeof delegate;\n return (typeOfDelegate === 'function' && task.callback === delegate) ||\n (typeOfDelegate === 'object' && task.originalDelegate === delegate);\n };\n const compare = (patchOptions && patchOptions.diff) ? patchOptions.diff : compareTaskCallbackVsDelegate;\n const blackListedEvents = Zone[Zone.__symbol__('BLACK_LISTED_EVENTS')];\n const makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget = false, prepend = false) {\n return function () {\n const target = this || _global;\n const eventName = arguments[0];\n let delegate = arguments[1];\n if (!delegate) {\n return nativeListener.apply(this, arguments);\n }\n if (isNode && eventName === 'uncaughtException') {\n // don't patch uncaughtException of nodejs to prevent endless loop\n return nativeListener.apply(this, arguments);\n }\n // don't create the bind delegate function for handleEvent\n // case here to improve addEventListener performance\n // we will create the bind delegate when invoke\n let isHandleEvent = false;\n if (typeof delegate !== 'function') {\n if (!delegate.handleEvent) {\n return nativeListener.apply(this, arguments);\n }\n isHandleEvent = true;\n }\n if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) {\n return;\n }\n const options = arguments[2];\n if (blackListedEvents) {\n // check black list\n for (let i = 0; i < blackListedEvents.length; i++) {\n if (eventName === blackListedEvents[i]) {\n return nativeListener.apply(this, arguments);\n }\n }\n }\n let capture;\n let once = false;\n if (options === undefined) {\n capture = false;\n }\n else if (options === true) {\n capture = true;\n }\n else if (options === false) {\n capture = false;\n }\n else {\n capture = options ? !!options.capture : false;\n once = options ? !!options.once : false;\n }\n const zone = Zone.current;\n const symbolEventNames = zoneSymbolEventNames$1[eventName];\n let symbolEventName;\n if (!symbolEventNames) {\n // the code is duplicate, but I just want to get some better performance\n const falseEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + FALSE_STR;\n const trueEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + TRUE_STR;\n const symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames$1[eventName] = {};\n zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture;\n symbolEventName = capture ? symbolCapture : symbol;\n }\n else {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n let existingTasks = target[symbolEventName];\n let isExisting = false;\n if (existingTasks) {\n // already have task registered\n isExisting = true;\n if (checkDuplicate) {\n for (let i = 0; i < existingTasks.length; i++) {\n if (compare(existingTasks[i], delegate)) {\n // same callback, same capture, same event name, just return\n return;\n }\n }\n }\n }\n else {\n existingTasks = target[symbolEventName] = [];\n }\n let source;\n const constructorName = target.constructor['name'];\n const targetSource = globalSources[constructorName];\n if (targetSource) {\n source = targetSource[eventName];\n }\n if (!source) {\n source = constructorName + addSource +\n (eventNameToString ? eventNameToString(eventName) : eventName);\n }\n // do not create a new object as task.data to pass those things\n // just use the global shared one\n taskData.options = options;\n if (once) {\n // if addEventListener with once options, we don't pass it to\n // native addEventListener, instead we keep the once setting\n // and handle ourselves.\n taskData.options.once = false;\n }\n taskData.target = target;\n taskData.capture = capture;\n taskData.eventName = eventName;\n taskData.isExisting = isExisting;\n const data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : undefined;\n // keep taskData into data to allow onScheduleEventTask to access the task information\n if (data) {\n data.taskData = taskData;\n }\n const task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn);\n // should clear taskData.target to avoid memory leak\n // issue, https://github.com/angular/angular/issues/20442\n taskData.target = null;\n // need to clear up taskData because it is a global object\n if (data) {\n data.taskData = null;\n }\n // have to save those information to task in case\n // application may call task.zone.cancelTask() directly\n if (once) {\n options.once = true;\n }\n if (!(!passiveSupported && typeof task.options === 'boolean')) {\n // if not support passive, and we pass an option object\n // to addEventListener, we should save the options to task\n task.options = options;\n }\n task.target = target;\n task.capture = capture;\n task.eventName = eventName;\n if (isHandleEvent) {\n // save original delegate for compare to check duplicate\n task.originalDelegate = delegate;\n }\n if (!prepend) {\n existingTasks.push(task);\n }\n else {\n existingTasks.unshift(task);\n }\n if (returnTarget) {\n return target;\n }\n };\n };\n proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget);\n if (nativePrependEventListener) {\n proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true);\n }\n proto[REMOVE_EVENT_LISTENER] = function () {\n const target = this || _global;\n const eventName = arguments[0];\n const options = arguments[2];\n let capture;\n if (options === undefined) {\n capture = false;\n }\n else if (options === true) {\n capture = true;\n }\n else if (options === false) {\n capture = false;\n }\n else {\n capture = options ? !!options.capture : false;\n }\n const delegate = arguments[1];\n if (!delegate) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n if (validateHandler &&\n !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) {\n return;\n }\n const symbolEventNames = zoneSymbolEventNames$1[eventName];\n let symbolEventName;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n const existingTasks = symbolEventName && target[symbolEventName];\n if (existingTasks) {\n for (let i = 0; i < existingTasks.length; i++) {\n const existingTask = existingTasks[i];\n if (compare(existingTask, delegate)) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n existingTask.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n existingTask.allRemoved = true;\n target[symbolEventName] = null;\n }\n existingTask.zone.cancelTask(existingTask);\n if (returnTarget) {\n return target;\n }\n return;\n }\n }\n }\n // issue 930, didn't find the event name or callback\n // from zone kept existingTasks, the callback maybe\n // added outside of zone, we need to call native removeEventListener\n // to try to remove it.\n return nativeRemoveEventListener.apply(this, arguments);\n };\n proto[LISTENERS_EVENT_LISTENER] = function () {\n const target = this || _global;\n const eventName = arguments[0];\n const listeners = [];\n const tasks = findEventTasks(target, eventNameToString ? eventNameToString(eventName) : eventName);\n for (let i = 0; i < tasks.length; i++) {\n const task = tasks[i];\n let delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n listeners.push(delegate);\n }\n return listeners;\n };\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () {\n const target = this || _global;\n const eventName = arguments[0];\n if (!eventName) {\n const keys = Object.keys(target);\n for (let i = 0; i < keys.length; i++) {\n const prop = keys[i];\n const match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n let evtName = match && match[1];\n // in nodejs EventEmitter, removeListener event is\n // used for monitoring the removeListener call,\n // so just keep removeListener eventListener until\n // all other eventListeners are removed\n if (evtName && evtName !== 'removeListener') {\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName);\n }\n }\n // remove removeListener listener finally\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener');\n }\n else {\n const symbolEventNames = zoneSymbolEventNames$1[eventName];\n if (symbolEventNames) {\n const symbolEventName = symbolEventNames[FALSE_STR];\n const symbolCaptureEventName = symbolEventNames[TRUE_STR];\n const tasks = target[symbolEventName];\n const captureTasks = target[symbolCaptureEventName];\n if (tasks) {\n const removeTasks = tasks.slice();\n for (let i = 0; i < removeTasks.length; i++) {\n const task = removeTasks[i];\n let delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n if (captureTasks) {\n const removeTasks = captureTasks.slice();\n for (let i = 0; i < removeTasks.length; i++) {\n const task = removeTasks[i];\n let delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n }\n }\n if (returnTarget) {\n return this;\n }\n };\n // for native toString patch\n attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener);\n attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener);\n if (nativeRemoveAllListeners) {\n attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners);\n }\n if (nativeListeners) {\n attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners);\n }\n return true;\n }\n let results = [];\n for (let i = 0; i < apis.length; i++) {\n results[i] = patchEventTargetMethods(apis[i], patchOptions);\n }\n return results;\n}\nfunction findEventTasks(target, eventName) {\n const foundTasks = [];\n for (let prop in target) {\n const match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n let evtName = match && match[1];\n if (evtName && (!eventName || evtName === eventName)) {\n const tasks = target[prop];\n if (tasks) {\n for (let i = 0; i < tasks.length; i++) {\n foundTasks.push(tasks[i]);\n }\n }\n }\n }\n return foundTasks;\n}\nfunction patchEventPrototype(global, api) {\n const Event = global['Event'];\n if (Event && Event.prototype) {\n api.patchMethod(Event.prototype, 'stopImmediatePropagation', (delegate) => function (self, args) {\n self[IMMEDIATE_PROPAGATION_SYMBOL] = true;\n // we need to call the native stopImmediatePropagation\n // in case in some hybrid application, some part of\n // application will be controlled by zone, some are not\n delegate && delegate.apply(self, args);\n });\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction patchCallbacks(api, target, targetName, method, callbacks) {\n const symbol = Zone.__symbol__(method);\n if (target[symbol]) {\n return;\n }\n const nativeDelegate = target[symbol] = target[method];\n target[method] = function (name, opts, options) {\n if (opts && opts.prototype) {\n callbacks.forEach(function (callback) {\n const source = `${targetName}.${method}::` + callback;\n const prototype = opts.prototype;\n if (prototype.hasOwnProperty(callback)) {\n const descriptor = api.ObjectGetOwnPropertyDescriptor(prototype, callback);\n if (descriptor && descriptor.value) {\n descriptor.value = api.wrapWithCurrentZone(descriptor.value, source);\n api._redefineProperty(opts.prototype, callback, descriptor);\n }\n else if (prototype[callback]) {\n prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source);\n }\n }\n else if (prototype[callback]) {\n prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source);\n }\n });\n }\n return nativeDelegate.call(target, name, opts, options);\n };\n api.attachOriginToPatched(target[method], nativeDelegate);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/*\n * This is necessary for Chrome and Chrome mobile, to enable\n * things like redefining `createdCallback` on an element.\n */\nconst zoneSymbol$1 = Zone.__symbol__;\nconst _defineProperty = Object[zoneSymbol$1('defineProperty')] = Object.defineProperty;\nconst _getOwnPropertyDescriptor = Object[zoneSymbol$1('getOwnPropertyDescriptor')] =\n Object.getOwnPropertyDescriptor;\nconst _create = Object.create;\nconst unconfigurablesKey = zoneSymbol$1('unconfigurables');\nfunction propertyPatch() {\n Object.defineProperty = function (obj, prop, desc) {\n if (isUnconfigurable(obj, prop)) {\n throw new TypeError('Cannot assign to read only property \\'' + prop + '\\' of ' + obj);\n }\n const originalConfigurableFlag = desc.configurable;\n if (prop !== 'prototype') {\n desc = rewriteDescriptor(obj, prop, desc);\n }\n return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);\n };\n Object.defineProperties = function (obj, props) {\n Object.keys(props).forEach(function (prop) {\n Object.defineProperty(obj, prop, props[prop]);\n });\n return obj;\n };\n Object.create = function (obj, proto) {\n if (typeof proto === 'object' && !Object.isFrozen(proto)) {\n Object.keys(proto).forEach(function (prop) {\n proto[prop] = rewriteDescriptor(obj, prop, proto[prop]);\n });\n }\n return _create(obj, proto);\n };\n Object.getOwnPropertyDescriptor = function (obj, prop) {\n const desc = _getOwnPropertyDescriptor(obj, prop);\n if (desc && isUnconfigurable(obj, prop)) {\n desc.configurable = false;\n }\n return desc;\n };\n}\nfunction _redefineProperty(obj, prop, desc) {\n const originalConfigurableFlag = desc.configurable;\n desc = rewriteDescriptor(obj, prop, desc);\n return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);\n}\nfunction isUnconfigurable(obj, prop) {\n return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop];\n}\nfunction rewriteDescriptor(obj, prop, desc) {\n // issue-927, if the desc is frozen, don't try to change the desc\n if (!Object.isFrozen(desc)) {\n desc.configurable = true;\n }\n if (!desc.configurable) {\n // issue-927, if the obj is frozen, don't try to set the desc to obj\n if (!obj[unconfigurablesKey] && !Object.isFrozen(obj)) {\n _defineProperty(obj, unconfigurablesKey, { writable: true, value: {} });\n }\n if (obj[unconfigurablesKey]) {\n obj[unconfigurablesKey][prop] = true;\n }\n }\n return desc;\n}\nfunction _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) {\n try {\n return _defineProperty(obj, prop, desc);\n }\n catch (error) {\n if (desc.configurable) {\n // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's\n // retry with the original flag value\n if (typeof originalConfigurableFlag == 'undefined') {\n delete desc.configurable;\n }\n else {\n desc.configurable = originalConfigurableFlag;\n }\n try {\n return _defineProperty(obj, prop, desc);\n }\n catch (error) {\n let descJson = null;\n try {\n descJson = JSON.stringify(desc);\n }\n catch (error) {\n descJson = desc.toString();\n }\n console.log(`Attempting to configure '${prop}' with descriptor '${descJson}' on object '${obj}' and got error, giving up: ${error}`);\n }\n }\n else {\n throw error;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {globalThis}\n */\nconst globalEventHandlersEventNames = [\n 'abort',\n 'animationcancel',\n 'animationend',\n 'animationiteration',\n 'auxclick',\n 'beforeinput',\n 'blur',\n 'cancel',\n 'canplay',\n 'canplaythrough',\n 'change',\n 'compositionstart',\n 'compositionupdate',\n 'compositionend',\n 'cuechange',\n 'click',\n 'close',\n 'contextmenu',\n 'curechange',\n 'dblclick',\n 'drag',\n 'dragend',\n 'dragenter',\n 'dragexit',\n 'dragleave',\n 'dragover',\n 'drop',\n 'durationchange',\n 'emptied',\n 'ended',\n 'error',\n 'focus',\n 'focusin',\n 'focusout',\n 'gotpointercapture',\n 'input',\n 'invalid',\n 'keydown',\n 'keypress',\n 'keyup',\n 'load',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'lostpointercapture',\n 'mousedown',\n 'mouseenter',\n 'mouseleave',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'mousewheel',\n 'orientationchange',\n 'pause',\n 'play',\n 'playing',\n 'pointercancel',\n 'pointerdown',\n 'pointerenter',\n 'pointerleave',\n 'pointerlockchange',\n 'mozpointerlockchange',\n 'webkitpointerlockerchange',\n 'pointerlockerror',\n 'mozpointerlockerror',\n 'webkitpointerlockerror',\n 'pointermove',\n 'pointout',\n 'pointerover',\n 'pointerup',\n 'progress',\n 'ratechange',\n 'reset',\n 'resize',\n 'scroll',\n 'seeked',\n 'seeking',\n 'select',\n 'selectionchange',\n 'selectstart',\n 'show',\n 'sort',\n 'stalled',\n 'submit',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'touchcancel',\n 'touchmove',\n 'touchstart',\n 'touchend',\n 'transitioncancel',\n 'transitionend',\n 'waiting',\n 'wheel'\n];\nconst documentEventNames = [\n 'afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'freeze', 'fullscreenchange',\n 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror',\n 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange',\n 'visibilitychange', 'resume'\n];\nconst windowEventNames = [\n 'absolutedeviceorientation',\n 'afterinput',\n 'afterprint',\n 'appinstalled',\n 'beforeinstallprompt',\n 'beforeprint',\n 'beforeunload',\n 'devicelight',\n 'devicemotion',\n 'deviceorientation',\n 'deviceorientationabsolute',\n 'deviceproximity',\n 'hashchange',\n 'languagechange',\n 'message',\n 'mozbeforepaint',\n 'offline',\n 'online',\n 'paint',\n 'pageshow',\n 'pagehide',\n 'popstate',\n 'rejectionhandled',\n 'storage',\n 'unhandledrejection',\n 'unload',\n 'userproximity',\n 'vrdisplyconnected',\n 'vrdisplaydisconnected',\n 'vrdisplaypresentchange'\n];\nconst htmlElementEventNames = [\n 'beforecopy', 'beforecut', 'beforepaste', 'copy', 'cut', 'paste', 'dragstart', 'loadend',\n 'animationstart', 'search', 'transitionrun', 'transitionstart', 'webkitanimationend',\n 'webkitanimationiteration', 'webkitanimationstart', 'webkittransitionend'\n];\nconst mediaElementEventNames = ['encrypted', 'waitingforkey', 'msneedkey', 'mozinterruptbegin', 'mozinterruptend'];\nconst ieElementEventNames = [\n 'activate',\n 'afterupdate',\n 'ariarequest',\n 'beforeactivate',\n 'beforedeactivate',\n 'beforeeditfocus',\n 'beforeupdate',\n 'cellchange',\n 'controlselect',\n 'dataavailable',\n 'datasetchanged',\n 'datasetcomplete',\n 'errorupdate',\n 'filterchange',\n 'layoutcomplete',\n 'losecapture',\n 'move',\n 'moveend',\n 'movestart',\n 'propertychange',\n 'resizeend',\n 'resizestart',\n 'rowenter',\n 'rowexit',\n 'rowsdelete',\n 'rowsinserted',\n 'command',\n 'compassneedscalibration',\n 'deactivate',\n 'help',\n 'mscontentzoom',\n 'msmanipulationstatechanged',\n 'msgesturechange',\n 'msgesturedoubletap',\n 'msgestureend',\n 'msgesturehold',\n 'msgesturestart',\n 'msgesturetap',\n 'msgotpointercapture',\n 'msinertiastart',\n 'mslostpointercapture',\n 'mspointercancel',\n 'mspointerdown',\n 'mspointerenter',\n 'mspointerhover',\n 'mspointerleave',\n 'mspointermove',\n 'mspointerout',\n 'mspointerover',\n 'mspointerup',\n 'pointerout',\n 'mssitemodejumplistitemremoved',\n 'msthumbnailclick',\n 'stop',\n 'storagecommit'\n];\nconst webglEventNames = ['webglcontextrestored', 'webglcontextlost', 'webglcontextcreationerror'];\nconst formEventNames = ['autocomplete', 'autocompleteerror'];\nconst detailEventNames = ['toggle'];\nconst frameEventNames = ['load'];\nconst frameSetEventNames = ['blur', 'error', 'focus', 'load', 'resize', 'scroll', 'messageerror'];\nconst marqueeEventNames = ['bounce', 'finish', 'start'];\nconst XMLHttpRequestEventNames = [\n 'loadstart', 'progress', 'abort', 'error', 'load', 'progress', 'timeout', 'loadend',\n 'readystatechange'\n];\nconst IDBIndexEventNames = ['upgradeneeded', 'complete', 'abort', 'success', 'error', 'blocked', 'versionchange', 'close'];\nconst websocketEventNames = ['close', 'error', 'open', 'message'];\nconst workerEventNames = ['error', 'message'];\nconst eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames);\nfunction filterProperties(target, onProperties, ignoreProperties) {\n if (!ignoreProperties || ignoreProperties.length === 0) {\n return onProperties;\n }\n const tip = ignoreProperties.filter(ip => ip.target === target);\n if (!tip || tip.length === 0) {\n return onProperties;\n }\n const targetIgnoreProperties = tip[0].ignoreProperties;\n return onProperties.filter(op => targetIgnoreProperties.indexOf(op) === -1);\n}\nfunction patchFilteredProperties(target, onProperties, ignoreProperties, prototype) {\n // check whether target is available, sometimes target will be undefined\n // because different browser or some 3rd party plugin.\n if (!target) {\n return;\n }\n const filteredProperties = filterProperties(target, onProperties, ignoreProperties);\n patchOnProperties(target, filteredProperties, prototype);\n}\nfunction propertyDescriptorPatch(api, _global) {\n if (isNode && !isMix) {\n return;\n }\n if (Zone[api.symbol('patchEvents')]) {\n // events are already been patched by legacy patch.\n return;\n }\n const supportsWebSocket = typeof WebSocket !== 'undefined';\n const ignoreProperties = _global['__Zone_ignore_on_properties'];\n // for browsers that we can patch the descriptor: Chrome & Firefox\n if (isBrowser) {\n const internalWindow = window;\n const ignoreErrorProperties = isIE ? [{ target: internalWindow, ignoreProperties: ['error'] }] : [];\n // in IE/Edge, onProp not exist in window object, but in WindowPrototype\n // so we need to pass WindowPrototype to check onProp exist or not\n patchFilteredProperties(internalWindow, eventNames.concat(['messageerror']), ignoreProperties ? ignoreProperties.concat(ignoreErrorProperties) : ignoreProperties, ObjectGetPrototypeOf(internalWindow));\n patchFilteredProperties(Document.prototype, eventNames, ignoreProperties);\n if (typeof internalWindow['SVGElement'] !== 'undefined') {\n patchFilteredProperties(internalWindow['SVGElement'].prototype, eventNames, ignoreProperties);\n }\n patchFilteredProperties(Element.prototype, eventNames, ignoreProperties);\n patchFilteredProperties(HTMLElement.prototype, eventNames, ignoreProperties);\n patchFilteredProperties(HTMLMediaElement.prototype, mediaElementEventNames, ignoreProperties);\n patchFilteredProperties(HTMLFrameSetElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties);\n patchFilteredProperties(HTMLBodyElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties);\n patchFilteredProperties(HTMLFrameElement.prototype, frameEventNames, ignoreProperties);\n patchFilteredProperties(HTMLIFrameElement.prototype, frameEventNames, ignoreProperties);\n const HTMLMarqueeElement = internalWindow['HTMLMarqueeElement'];\n if (HTMLMarqueeElement) {\n patchFilteredProperties(HTMLMarqueeElement.prototype, marqueeEventNames, ignoreProperties);\n }\n const Worker = internalWindow['Worker'];\n if (Worker) {\n patchFilteredProperties(Worker.prototype, workerEventNames, ignoreProperties);\n }\n }\n const XMLHttpRequest = _global['XMLHttpRequest'];\n if (XMLHttpRequest) {\n // XMLHttpRequest is not available in ServiceWorker, so we need to check here\n patchFilteredProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames, ignoreProperties);\n }\n const XMLHttpRequestEventTarget = _global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget) {\n patchFilteredProperties(XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype, XMLHttpRequestEventNames, ignoreProperties);\n }\n if (typeof IDBIndex !== 'undefined') {\n patchFilteredProperties(IDBIndex.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBRequest.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBOpenDBRequest.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBDatabase.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBTransaction.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBCursor.prototype, IDBIndexEventNames, ignoreProperties);\n }\n if (supportsWebSocket) {\n patchFilteredProperties(WebSocket.prototype, websocketEventNames, ignoreProperties);\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nZone.__load_patch('util', (global, Zone, api) => {\n api.patchOnProperties = patchOnProperties;\n api.patchMethod = patchMethod;\n api.bindArguments = bindArguments;\n api.patchMacroTask = patchMacroTask;\n // In earlier version of zone.js (<0.9.0), we use env name `__zone_symbol__BLACK_LISTED_EVENTS` to\n // define which events will not be patched by `Zone.js`.\n // In newer version (>=0.9.0), we change the env name to `__zone_symbol__UNPATCHED_EVENTS` to keep\n // the name consistent with angular repo.\n // The `__zone_symbol__BLACK_LISTED_EVENTS` is deprecated, but it is still be supported for\n // backwards compatibility.\n const SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS');\n const SYMBOL_UNPATCHED_EVENTS = Zone.__symbol__('UNPATCHED_EVENTS');\n if (global[SYMBOL_UNPATCHED_EVENTS]) {\n global[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_UNPATCHED_EVENTS];\n }\n if (global[SYMBOL_BLACK_LISTED_EVENTS]) {\n Zone[SYMBOL_BLACK_LISTED_EVENTS] = Zone[SYMBOL_UNPATCHED_EVENTS] =\n global[SYMBOL_BLACK_LISTED_EVENTS];\n }\n api.patchEventPrototype = patchEventPrototype;\n api.patchEventTarget = patchEventTarget;\n api.isIEOrEdge = isIEOrEdge;\n api.ObjectDefineProperty = ObjectDefineProperty;\n api.ObjectGetOwnPropertyDescriptor = ObjectGetOwnPropertyDescriptor;\n api.ObjectCreate = ObjectCreate;\n api.ArraySlice = ArraySlice;\n api.patchClass = patchClass;\n api.wrapWithCurrentZone = wrapWithCurrentZone;\n api.filterProperties = filterProperties;\n api.attachOriginToPatched = attachOriginToPatched;\n api._redefineProperty = _redefineProperty;\n api.patchCallbacks = patchCallbacks;\n api.getGlobalObjects = () => ({\n globalSources,\n zoneSymbolEventNames: zoneSymbolEventNames$1,\n eventNames,\n isBrowser,\n isMix,\n isNode,\n TRUE_STR,\n FALSE_STR,\n ZONE_SYMBOL_PREFIX,\n ADD_EVENT_LISTENER_STR,\n REMOVE_EVENT_LISTENER_STR\n });\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nconst taskSymbol = zoneSymbol('zoneTask');\nfunction patchTimer(window, setName, cancelName, nameSuffix) {\n let setNative = null;\n let clearNative = null;\n setName += nameSuffix;\n cancelName += nameSuffix;\n const tasksByHandleId = {};\n function scheduleTask(task) {\n const data = task.data;\n function timer() {\n try {\n task.invoke.apply(this, arguments);\n }\n finally {\n // issue-934, task will be cancelled\n // even it is a periodic task such as\n // setInterval\n if (!(task.data && task.data.isPeriodic)) {\n if (typeof data.handleId === 'number') {\n // in non-nodejs env, we remove timerId\n // from local cache\n delete tasksByHandleId[data.handleId];\n }\n else if (data.handleId) {\n // Node returns complex objects as handleIds\n // we remove task reference from timer object\n data.handleId[taskSymbol] = null;\n }\n }\n }\n }\n data.args[0] = timer;\n data.handleId = setNative.apply(window, data.args);\n return task;\n }\n function clearTask(task) {\n return clearNative(task.data.handleId);\n }\n setNative =\n patchMethod(window, setName, (delegate) => function (self, args) {\n if (typeof args[0] === 'function') {\n const options = {\n isPeriodic: nameSuffix === 'Interval',\n delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 :\n undefined,\n args: args\n };\n const task = scheduleMacroTaskWithCurrentZone(setName, args[0], options, scheduleTask, clearTask);\n if (!task) {\n return task;\n }\n // Node.js must additionally support the ref and unref functions.\n const handle = task.data.handleId;\n if (typeof handle === 'number') {\n // for non nodejs env, we save handleId: task\n // mapping in local cache for clearTimeout\n tasksByHandleId[handle] = task;\n }\n else if (handle) {\n // for nodejs env, we save task\n // reference in timerId Object for clearTimeout\n handle[taskSymbol] = task;\n }\n // check whether handle is null, because some polyfill or browser\n // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame\n if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' &&\n typeof handle.unref === 'function') {\n task.ref = handle.ref.bind(handle);\n task.unref = handle.unref.bind(handle);\n }\n if (typeof handle === 'number' || handle) {\n return handle;\n }\n return task;\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(window, args);\n }\n });\n clearNative =\n patchMethod(window, cancelName, (delegate) => function (self, args) {\n const id = args[0];\n let task;\n if (typeof id === 'number') {\n // non nodejs env.\n task = tasksByHandleId[id];\n }\n else {\n // nodejs env.\n task = id && id[taskSymbol];\n // other environments.\n if (!task) {\n task = id;\n }\n }\n if (task && typeof task.type === 'string') {\n if (task.state !== 'notScheduled' &&\n (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) {\n if (typeof id === 'number') {\n delete tasksByHandleId[id];\n }\n else if (id) {\n id[taskSymbol] = null;\n }\n // Do not cancel already canceled functions\n task.zone.cancelTask(task);\n }\n }\n else {\n // cause an error by calling it directly.\n delegate.apply(window, args);\n }\n });\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction patchCustomElements(_global, api) {\n const { isBrowser, isMix } = api.getGlobalObjects();\n if ((!isBrowser && !isMix) || !_global['customElements'] || !('customElements' in _global)) {\n return;\n }\n const callbacks = ['connectedCallback', 'disconnectedCallback', 'adoptedCallback', 'attributeChangedCallback'];\n api.patchCallbacks(api, _global.customElements, 'customElements', 'define', callbacks);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction eventTargetPatch(_global, api) {\n if (Zone[api.symbol('patchEventTarget')]) {\n // EventTarget is already patched.\n return;\n }\n const { eventNames, zoneSymbolEventNames, TRUE_STR, FALSE_STR, ZONE_SYMBOL_PREFIX } = api.getGlobalObjects();\n // predefine all __zone_symbol__ + eventName + true/false string\n for (let i = 0; i < eventNames.length; i++) {\n const eventName = eventNames[i];\n const falseEventName = eventName + FALSE_STR;\n const trueEventName = eventName + TRUE_STR;\n const symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames[eventName] = {};\n zoneSymbolEventNames[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture;\n }\n const EVENT_TARGET = _global['EventTarget'];\n if (!EVENT_TARGET || !EVENT_TARGET.prototype) {\n return;\n }\n api.patchEventTarget(_global, [EVENT_TARGET && EVENT_TARGET.prototype]);\n return true;\n}\nfunction patchEvent(global, api) {\n api.patchEventPrototype(global, api);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nZone.__load_patch('legacy', (global) => {\n const legacyPatch = global[Zone.__symbol__('legacyPatch')];\n if (legacyPatch) {\n legacyPatch();\n }\n});\nZone.__load_patch('timers', (global) => {\n const set = 'set';\n const clear = 'clear';\n patchTimer(global, set, clear, 'Timeout');\n patchTimer(global, set, clear, 'Interval');\n patchTimer(global, set, clear, 'Immediate');\n});\nZone.__load_patch('requestAnimationFrame', (global) => {\n patchTimer(global, 'request', 'cancel', 'AnimationFrame');\n patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame');\n patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame');\n});\nZone.__load_patch('blocking', (global, Zone) => {\n const blockingMethods = ['alert', 'prompt', 'confirm'];\n for (let i = 0; i < blockingMethods.length; i++) {\n const name = blockingMethods[i];\n patchMethod(global, name, (delegate, symbol, name) => {\n return function (s, args) {\n return Zone.current.run(delegate, global, args, name);\n };\n });\n }\n});\nZone.__load_patch('EventTarget', (global, Zone, api) => {\n patchEvent(global, api);\n eventTargetPatch(global, api);\n // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener\n const XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) {\n api.patchEventTarget(global, [XMLHttpRequestEventTarget.prototype]);\n }\n patchClass('MutationObserver');\n patchClass('WebKitMutationObserver');\n patchClass('IntersectionObserver');\n patchClass('FileReader');\n});\nZone.__load_patch('on_property', (global, Zone, api) => {\n propertyDescriptorPatch(api, global);\n propertyPatch();\n});\nZone.__load_patch('customElements', (global, Zone, api) => {\n patchCustomElements(global, api);\n});\nZone.__load_patch('XHR', (global, Zone) => {\n // Treat XMLHttpRequest as a macrotask.\n patchXHR(global);\n const XHR_TASK = zoneSymbol('xhrTask');\n const XHR_SYNC = zoneSymbol('xhrSync');\n const XHR_LISTENER = zoneSymbol('xhrListener');\n const XHR_SCHEDULED = zoneSymbol('xhrScheduled');\n const XHR_URL = zoneSymbol('xhrURL');\n const XHR_ERROR_BEFORE_SCHEDULED = zoneSymbol('xhrErrorBeforeScheduled');\n function patchXHR(window) {\n const XMLHttpRequest = window['XMLHttpRequest'];\n if (!XMLHttpRequest) {\n // XMLHttpRequest is not available in service worker\n return;\n }\n const XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n function findPendingTask(target) {\n return target[XHR_TASK];\n }\n let oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n let oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n if (!oriAddListener) {\n const XMLHttpRequestEventTarget = window['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget) {\n const XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget.prototype;\n oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n }\n const READY_STATE_CHANGE = 'readystatechange';\n const SCHEDULED = 'scheduled';\n function scheduleTask(task) {\n const data = task.data;\n const target = data.target;\n target[XHR_SCHEDULED] = false;\n target[XHR_ERROR_BEFORE_SCHEDULED] = false;\n // remove existing event listener\n const listener = target[XHR_LISTENER];\n if (!oriAddListener) {\n oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n if (listener) {\n oriRemoveListener.call(target, READY_STATE_CHANGE, listener);\n }\n const newListener = target[XHR_LISTENER] = () => {\n if (target.readyState === target.DONE) {\n // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with\n // readyState=4 multiple times, so we need to check task state here\n if (!data.aborted && target[XHR_SCHEDULED] && task.state === SCHEDULED) {\n // check whether the xhr has registered onload listener\n // if that is the case, the task should invoke after all\n // onload listeners finish.\n const loadTasks = target['__zone_symbol__loadfalse'];\n if (loadTasks && loadTasks.length > 0) {\n const oriInvoke = task.invoke;\n task.invoke = function () {\n // need to load the tasks again, because in other\n // load listener, they may remove themselves\n const loadTasks = target['__zone_symbol__loadfalse'];\n for (let i = 0; i < loadTasks.length; i++) {\n if (loadTasks[i] === task) {\n loadTasks.splice(i, 1);\n }\n }\n if (!data.aborted && task.state === SCHEDULED) {\n oriInvoke.call(task);\n }\n };\n loadTasks.push(task);\n }\n else {\n task.invoke();\n }\n }\n else if (!data.aborted && target[XHR_SCHEDULED] === false) {\n // error occurs when xhr.send()\n target[XHR_ERROR_BEFORE_SCHEDULED] = true;\n }\n }\n };\n oriAddListener.call(target, READY_STATE_CHANGE, newListener);\n const storedTask = target[XHR_TASK];\n if (!storedTask) {\n target[XHR_TASK] = task;\n }\n sendNative.apply(target, data.args);\n target[XHR_SCHEDULED] = true;\n return task;\n }\n function placeholderCallback() { }\n function clearTask(task) {\n const data = task.data;\n // Note - ideally, we would call data.target.removeEventListener here, but it's too late\n // to prevent it from firing. So instead, we store info for the event listener.\n data.aborted = true;\n return abortNative.apply(data.target, data.args);\n }\n const openNative = patchMethod(XMLHttpRequestPrototype, 'open', () => function (self, args) {\n self[XHR_SYNC] = args[2] == false;\n self[XHR_URL] = args[1];\n return openNative.apply(self, args);\n });\n const XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send';\n const fetchTaskAborting = zoneSymbol('fetchTaskAborting');\n const fetchTaskScheduling = zoneSymbol('fetchTaskScheduling');\n const sendNative = patchMethod(XMLHttpRequestPrototype, 'send', () => function (self, args) {\n if (Zone.current[fetchTaskScheduling] === true) {\n // a fetch is scheduling, so we are using xhr to polyfill fetch\n // and because we already schedule macroTask for fetch, we should\n // not schedule a macroTask for xhr again\n return sendNative.apply(self, args);\n }\n if (self[XHR_SYNC]) {\n // if the XHR is sync there is no task to schedule, just execute the code.\n return sendNative.apply(self, args);\n }\n else {\n const options = { target: self, url: self[XHR_URL], isPeriodic: false, args: args, aborted: false };\n const task = scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask);\n if (self && self[XHR_ERROR_BEFORE_SCHEDULED] === true && !options.aborted &&\n task.state === SCHEDULED) {\n // xhr request throw error when send\n // we should invoke task instead of leaving a scheduled\n // pending macroTask\n task.invoke();\n }\n }\n });\n const abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', () => function (self, args) {\n const task = findPendingTask(self);\n if (task && typeof task.type == 'string') {\n // If the XHR has already completed, do nothing.\n // If the XHR has already been aborted, do nothing.\n // Fix #569, call abort multiple times before done will cause\n // macroTask task count be negative number\n if (task.cancelFn == null || (task.data && task.data.aborted)) {\n return;\n }\n task.zone.cancelTask(task);\n }\n else if (Zone.current[fetchTaskAborting] === true) {\n // the abort is called from fetch polyfill, we need to call native abort of XHR.\n return abortNative.apply(self, args);\n }\n // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no\n // task\n // to cancel. Do nothing.\n });\n }\n});\nZone.__load_patch('geolocation', (global) => {\n /// GEO_LOCATION\n if (global['navigator'] && global['navigator'].geolocation) {\n patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']);\n }\n});\nZone.__load_patch('PromiseRejectionEvent', (global, Zone) => {\n // handle unhandled promise rejection\n function findPromiseRejectionHandler(evtName) {\n return function (e) {\n const eventTasks = findEventTasks(global, evtName);\n eventTasks.forEach(eventTask => {\n // windows has added unhandledrejection event listener\n // trigger the event listener\n const PromiseRejectionEvent = global['PromiseRejectionEvent'];\n if (PromiseRejectionEvent) {\n const evt = new PromiseRejectionEvent(evtName, { promise: e.promise, reason: e.rejection });\n eventTask.invoke(evt);\n }\n });\n };\n }\n if (global['PromiseRejectionEvent']) {\n Zone[zoneSymbol('unhandledPromiseRejectionHandler')] =\n findPromiseRejectionHandler('unhandledrejection');\n Zone[zoneSymbol('rejectionHandledHandler')] =\n findPromiseRejectionHandler('rejectionhandled');\n }\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n","/*\r\n * DAA Example\r\n *\r\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\r\n *\r\n * This program is free software: you can redistribute it and/or modify\r\n * it under the terms of the GNU General Public License as published by\r\n * the Free Software Foundation, either version 3 of the License, or\r\n * (at your option) any later version.\r\n *\r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n *\r\n * You should have received a copy of the GNU General Public License\r\n * along with this program. If not, see .\r\n */\r\n\r\n/**\r\n * This file includes polyfills needed by Angular and is loaded before the app.\r\n * You can add your own extra polyfills to this file.\r\n *\r\n * This file is divided into 2 sections:\r\n * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\r\n * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\r\n * file.\r\n *\r\n * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\r\n * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\r\n * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\r\n *\r\n * Learn more in https://angular.io/guide/browser-support\r\n */\r\n\r\n/***************************************************************************************************\r\n * BROWSER POLYFILLS\r\n */\r\n\r\n/** IE9, IE10 and IE11 requires all of the following polyfills. **/\r\n// import 'core-js/es6/symbol';\r\n// import 'core-js/es6/object';\r\n// import 'core-js/es6/function';\r\n// import 'core-js/es6/parse-int';\r\n// import 'core-js/es6/parse-float';\r\n// import 'core-js/es6/number';\r\n// import 'core-js/es6/math';\r\n// import 'core-js/es6/string';\r\n// import 'core-js/es6/date';\r\n// import 'core-js/es6/array';\r\n// import 'core-js/es6/regexp';\r\n// import 'core-js/es6/map';\r\n// import 'core-js/es6/weak-map';\r\n// import 'core-js/es6/set';\r\n\r\n/**\r\n * If the application will be indexed by Google Search, the following is required.\r\n * Googlebot uses a renderer based on Chrome 41.\r\n * https://developers.google.com/search/docs/guides/rendering\r\n **/\r\n// import 'core-js/es6/array';\r\n\r\n/** IE10 and IE11 requires the following for NgClass support on SVG elements */\r\n// import 'classlist.js'; // Run `npm install --save classlist.js`.\r\n\r\n/** IE10 and IE11 requires the following for the Reflect API. */\r\n// import 'core-js/es6/reflect';\r\n\r\n/**\r\n * Web Animations `@angular/platform-browser/animations`\r\n * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.\r\n * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).\r\n **/\r\n// import 'web-animations-js'; // Run `npm install --save web-animations-js`.\r\n\r\n/**\r\n * By default, zone.js will patch all possible macroTask and DomEvents\r\n * user can disable parts of macroTask/DomEvents patch by setting following flags\r\n */\r\n\r\n // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame\r\n // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick\r\n // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames\r\n\r\n /*\r\n * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js\r\n * with the following flag, it will bypass `zone.js` patch for IE/Edge\r\n */\r\n// (window as any).__Zone_enable_cross_context_check = true;\r\n\r\n/***************************************************************************************************\r\n * Zone JS is required by default for Angular itself.\r\n */\r\nimport 'zone.js/dist/zone'; // Included with Angular CLI.\r\n\r\n\r\n/***************************************************************************************************\r\n * APPLICATION IMPORTS\r\n */\r\n"],"sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/polyfills-es5.js b/target/catalina-base/webapps/DAAExample/polyfills-es5.js deleted file mode 100644 index 75e6d4d0bd6ff39fd3717663d52f979a07cfccd0..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/polyfills-es5.js +++ /dev/null @@ -1,20931 +0,0 @@ -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["polyfills-es5"], { - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/date/index.js": - /*!******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/date/index.js ***! - \******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsEsDateIndexJs(module, exports, __webpack_require__) { - __webpack_require__( - /*! ../../modules/es.date.now */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.now.js"); - - __webpack_require__( - /*! ../../modules/es.date.to-json */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-json.js"); - - __webpack_require__( - /*! ../../modules/es.date.to-iso-string */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-iso-string.js"); - - __webpack_require__( - /*! ../../modules/es.date.to-string */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-string.js"); - - __webpack_require__( - /*! ../../modules/es.date.to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-primitive.js"); - - var path = __webpack_require__( - /*! ../../internals/path */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js"); - - module.exports = path.Date; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/math/index.js": - /*!******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/math/index.js ***! - \******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsEsMathIndexJs(module, exports, __webpack_require__) { - __webpack_require__( - /*! ../../modules/es.math.acosh */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.acosh.js"); - - __webpack_require__( - /*! ../../modules/es.math.asinh */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.asinh.js"); - - __webpack_require__( - /*! ../../modules/es.math.atanh */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.atanh.js"); - - __webpack_require__( - /*! ../../modules/es.math.cbrt */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.cbrt.js"); - - __webpack_require__( - /*! ../../modules/es.math.clz32 */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.clz32.js"); - - __webpack_require__( - /*! ../../modules/es.math.cosh */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.cosh.js"); - - __webpack_require__( - /*! ../../modules/es.math.expm1 */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.expm1.js"); - - __webpack_require__( - /*! ../../modules/es.math.fround */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.fround.js"); - - __webpack_require__( - /*! ../../modules/es.math.hypot */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.hypot.js"); - - __webpack_require__( - /*! ../../modules/es.math.imul */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.imul.js"); - - __webpack_require__( - /*! ../../modules/es.math.log10 */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log10.js"); - - __webpack_require__( - /*! ../../modules/es.math.log1p */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log1p.js"); - - __webpack_require__( - /*! ../../modules/es.math.log2 */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log2.js"); - - __webpack_require__( - /*! ../../modules/es.math.sign */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.sign.js"); - - __webpack_require__( - /*! ../../modules/es.math.sinh */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.sinh.js"); - - __webpack_require__( - /*! ../../modules/es.math.tanh */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.tanh.js"); - - __webpack_require__( - /*! ../../modules/es.math.to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.to-string-tag.js"); - - __webpack_require__( - /*! ../../modules/es.math.trunc */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.trunc.js"); - - var path = __webpack_require__( - /*! ../../internals/path */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js"); - - module.exports = path.Math; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/number/index.js": - /*!********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/number/index.js ***! - \********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsEsNumberIndexJs(module, exports, __webpack_require__) { - __webpack_require__( - /*! ../../modules/es.number.constructor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.constructor.js"); - - __webpack_require__( - /*! ../../modules/es.number.epsilon */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.epsilon.js"); - - __webpack_require__( - /*! ../../modules/es.number.is-finite */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-finite.js"); - - __webpack_require__( - /*! ../../modules/es.number.is-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-integer.js"); - - __webpack_require__( - /*! ../../modules/es.number.is-nan */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-nan.js"); - - __webpack_require__( - /*! ../../modules/es.number.is-safe-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-safe-integer.js"); - - __webpack_require__( - /*! ../../modules/es.number.max-safe-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.max-safe-integer.js"); - - __webpack_require__( - /*! ../../modules/es.number.min-safe-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.min-safe-integer.js"); - - __webpack_require__( - /*! ../../modules/es.number.parse-float */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.parse-float.js"); - - __webpack_require__( - /*! ../../modules/es.number.parse-int */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.parse-int.js"); - - __webpack_require__( - /*! ../../modules/es.number.to-fixed */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.to-fixed.js"); - - __webpack_require__( - /*! ../../modules/es.number.to-precision */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.to-precision.js"); - - var path = __webpack_require__( - /*! ../../internals/path */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js"); - - module.exports = path.Number; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/reflect/index.js": - /*!*********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/reflect/index.js ***! - \*********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsEsReflectIndexJs(module, exports, __webpack_require__) { - __webpack_require__( - /*! ../../modules/es.reflect.apply */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.apply.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.construct */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.construct.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.define-property.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.delete-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.delete-property.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.get */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get-prototype-of.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.has.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.is-extensible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.is-extensible.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.own-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.own-keys.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.prevent-extensions */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.prevent-extensions.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.set */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.set.js"); - - __webpack_require__( - /*! ../../modules/es.reflect.set-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.set-prototype-of.js"); - - var path = __webpack_require__( - /*! ../../internals/path */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js"); - - module.exports = path.Reflect; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/symbol/index.js": - /*!********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/symbol/index.js ***! - \********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsEsSymbolIndexJs(module, exports, __webpack_require__) { - __webpack_require__( - /*! ../../modules/es.array.concat */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.concat.js"); - - __webpack_require__( - /*! ../../modules/es.object.to-string */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.to-string.js"); - - __webpack_require__( - /*! ../../modules/es.symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.async-iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.async-iterator.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.description */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.description.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.has-instance */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.has-instance.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.is-concat-spreadable */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.iterator.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.match */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.match.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.match-all */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.match-all.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.replace */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.replace.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.search */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.search.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.species */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.species.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.split */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.split.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.to-primitive.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.to-string-tag.js"); - - __webpack_require__( - /*! ../../modules/es.symbol.unscopables */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.unscopables.js"); - - __webpack_require__( - /*! ../../modules/es.math.to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.to-string-tag.js"); - - __webpack_require__( - /*! ../../modules/es.json.to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.json.to-string-tag.js"); - - var path = __webpack_require__( - /*! ../../internals/path */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js"); - - module.exports = path.Symbol; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsAFunctionJs(module, exports) { - module.exports = function (it) { - if (typeof it != 'function') { - throw TypeError(String(it) + ' is not a function'); - } - - return it; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsAPossiblePrototypeJs(module, exports, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - module.exports = function (it) { - if (!isObject(it) && it !== null) { - throw TypeError("Can't set " + String(it) + ' as a prototype'); - } - - return it; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/add-to-unscopables.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/add-to-unscopables.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsAddToUnscopablesJs(module, exports, __webpack_require__) { - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var create = __webpack_require__( - /*! ../internals/object-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var UNSCOPABLES = wellKnownSymbol('unscopables'); - var ArrayPrototype = Array.prototype; // Array.prototype[@@unscopables] - // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables - - if (ArrayPrototype[UNSCOPABLES] == undefined) { - definePropertyModule.f(ArrayPrototype, UNSCOPABLES, { - configurable: true, - value: create(null) - }); - } // add a key to Array.prototype[@@unscopables] - - - module.exports = function (key) { - ArrayPrototype[UNSCOPABLES][key] = true; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/advance-string-index.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/advance-string-index.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsAdvanceStringIndexJs(module, exports, __webpack_require__) { - "use strict"; - - var charAt = __webpack_require__( - /*! ../internals/string-multibyte */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-multibyte.js").charAt; // `AdvanceStringIndex` abstract operation - // https://tc39.github.io/ecma262/#sec-advancestringindex - - - module.exports = function (S, index, unicode) { - return index + (unicode ? charAt(S, index).length : 1); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsAnInstanceJs(module, exports) { - module.exports = function (it, Constructor, name) { - if (!(it instanceof Constructor)) { - throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation'); - } - - return it; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsAnObjectJs(module, exports, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - module.exports = function (it) { - if (!isObject(it)) { - throw TypeError(String(it) + ' is not an object'); - } - - return it; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-copy-within.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-copy-within.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayCopyWithinJs(module, exports, __webpack_require__) { - "use strict"; - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var toAbsoluteIndex = __webpack_require__( - /*! ../internals/to-absolute-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var min = Math.min; // `Array.prototype.copyWithin` method implementation - // https://tc39.github.io/ecma262/#sec-array.prototype.copywithin - - module.exports = [].copyWithin || function copyWithin(target - /* = 0 */ - , start - /* = 0, end = @length */ - ) { - var O = toObject(this); - var len = toLength(O.length); - var to = toAbsoluteIndex(target, len); - var from = toAbsoluteIndex(start, len); - var end = arguments.length > 2 ? arguments[2] : undefined; - var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); - var inc = 1; - - if (from < to && to < from + count) { - inc = -1; - from += count - 1; - to += count - 1; - } - - while (count-- > 0) { - if (from in O) O[to] = O[from];else delete O[to]; - to += inc; - from += inc; - } - - return O; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-fill.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-fill.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayFillJs(module, exports, __webpack_require__) { - "use strict"; - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var toAbsoluteIndex = __webpack_require__( - /*! ../internals/to-absolute-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); // `Array.prototype.fill` method implementation - // https://tc39.github.io/ecma262/#sec-array.prototype.fill - - - module.exports = function fill(value - /* , start = 0, end = @length */ - ) { - var O = toObject(this); - var length = toLength(O.length); - var argumentsLength = arguments.length; - var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length); - var end = argumentsLength > 2 ? arguments[2] : undefined; - var endPos = end === undefined ? length : toAbsoluteIndex(end, length); - - while (endPos > index) { - O[index++] = value; - } - - return O; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-for-each.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-for-each.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayForEachJs(module, exports, __webpack_require__) { - "use strict"; - - var $forEach = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js").forEach; - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var STRICT_METHOD = arrayMethodIsStrict('forEach'); - var USES_TO_LENGTH = arrayMethodUsesToLength('forEach'); // `Array.prototype.forEach` method implementation - // https://tc39.github.io/ecma262/#sec-array.prototype.foreach - - module.exports = !STRICT_METHOD || !USES_TO_LENGTH ? function forEach(callbackfn - /* , thisArg */ - ) { - return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } : [].forEach; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-from.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-from.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayFromJs(module, exports, __webpack_require__) { - "use strict"; - - var bind = __webpack_require__( - /*! ../internals/function-bind-context */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var callWithSafeIterationClosing = __webpack_require__( - /*! ../internals/call-with-safe-iteration-closing */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js"); - - var isArrayIteratorMethod = __webpack_require__( - /*! ../internals/is-array-iterator-method */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var createProperty = __webpack_require__( - /*! ../internals/create-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property.js"); - - var getIteratorMethod = __webpack_require__( - /*! ../internals/get-iterator-method */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js"); // `Array.from` method implementation - // https://tc39.github.io/ecma262/#sec-array.from - - - module.exports = function from(arrayLike - /* , mapfn = undefined, thisArg = undefined */ - ) { - var O = toObject(arrayLike); - var C = typeof this == 'function' ? this : Array; - var argumentsLength = arguments.length; - var mapfn = argumentsLength > 1 ? arguments[1] : undefined; - var mapping = mapfn !== undefined; - var iteratorMethod = getIteratorMethod(O); - var index = 0; - var length, result, step, iterator, next, value; - if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2); // if the target is not iterable or it's an array with the default iterator - use a simple case - - if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) { - iterator = iteratorMethod.call(O); - next = iterator.next; - result = new C(); - - for (; !(step = next.call(iterator)).done; index++) { - value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value; - createProperty(result, index, value); - } - } else { - length = toLength(O.length); - result = new C(length); - - for (; length > index; index++) { - value = mapping ? mapfn(O[index], index) : O[index]; - createProperty(result, index, value); - } - } - - result.length = index; - return result; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayIncludesJs(module, exports, __webpack_require__) { - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var toAbsoluteIndex = __webpack_require__( - /*! ../internals/to-absolute-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js"); // `Array.prototype.{ indexOf, includes }` methods implementation - - - var createMethod = function createMethod(IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare - - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; // eslint-disable-next-line no-self-compare - - if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not - } else for (; length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; - } - return !IS_INCLUDES && -1; - }; - }; - - module.exports = { - // `Array.prototype.includes` method - // https://tc39.github.io/ecma262/#sec-array.prototype.includes - includes: createMethod(true), - // `Array.prototype.indexOf` method - // https://tc39.github.io/ecma262/#sec-array.prototype.indexof - indexOf: createMethod(false) - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayIterationJs(module, exports, __webpack_require__) { - var bind = __webpack_require__( - /*! ../internals/function-bind-context */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js"); - - var IndexedObject = __webpack_require__( - /*! ../internals/indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var arraySpeciesCreate = __webpack_require__( - /*! ../internals/array-species-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js"); - - var push = [].push; // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation - - var createMethod = function createMethod(TYPE) { - var IS_MAP = TYPE == 1; - var IS_FILTER = TYPE == 2; - var IS_SOME = TYPE == 3; - var IS_EVERY = TYPE == 4; - var IS_FIND_INDEX = TYPE == 6; - var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; - return function ($this, callbackfn, that, specificCreate) { - var O = toObject($this); - var self = IndexedObject(O); - var boundFunction = bind(callbackfn, that, 3); - var length = toLength(self.length); - var index = 0; - var create = specificCreate || arraySpeciesCreate; - var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; - var value, result; - - for (; length > index; index++) { - if (NO_HOLES || index in self) { - value = self[index]; - result = boundFunction(value, index, O); - - if (TYPE) { - if (IS_MAP) target[index] = result; // map - else if (result) switch (TYPE) { - case 3: - return true; - // some - - case 5: - return value; - // find - - case 6: - return index; - // findIndex - - case 2: - push.call(target, value); - // filter - } else if (IS_EVERY) return false; // every - } - } - } - - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; - }; - }; - - module.exports = { - // `Array.prototype.forEach` method - // https://tc39.github.io/ecma262/#sec-array.prototype.foreach - forEach: createMethod(0), - // `Array.prototype.map` method - // https://tc39.github.io/ecma262/#sec-array.prototype.map - map: createMethod(1), - // `Array.prototype.filter` method - // https://tc39.github.io/ecma262/#sec-array.prototype.filter - filter: createMethod(2), - // `Array.prototype.some` method - // https://tc39.github.io/ecma262/#sec-array.prototype.some - some: createMethod(3), - // `Array.prototype.every` method - // https://tc39.github.io/ecma262/#sec-array.prototype.every - every: createMethod(4), - // `Array.prototype.find` method - // https://tc39.github.io/ecma262/#sec-array.prototype.find - find: createMethod(5), - // `Array.prototype.findIndex` method - // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex - findIndex: createMethod(6) - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-last-index-of.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-last-index-of.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayLastIndexOfJs(module, exports, __webpack_require__) { - "use strict"; - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var min = Math.min; - var nativeLastIndexOf = [].lastIndexOf; - var NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0; - var STRICT_METHOD = arrayMethodIsStrict('lastIndexOf'); // For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method - - var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { - ACCESSORS: true, - 1: 0 - }); - var FORCED = NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH; // `Array.prototype.lastIndexOf` method implementation - // https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof - - module.exports = FORCED ? function lastIndexOf(searchElement - /* , fromIndex = @[*-1] */ - ) { - // convert -0 to +0 - if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0; - var O = toIndexedObject(this); - var length = toLength(O.length); - var index = length - 1; - if (arguments.length > 1) index = min(index, toInteger(arguments[1])); - if (index < 0) index = length + index; - - for (; index >= 0; index--) { - if (index in O && O[index] === searchElement) return index || 0; - } - - return -1; - } : nativeLastIndexOf; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-has-species-support.js": - /*!***********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-has-species-support.js ***! - \***********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayMethodHasSpeciesSupportJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var V8_VERSION = __webpack_require__( - /*! ../internals/engine-v8-version */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-v8-version.js"); - - var SPECIES = wellKnownSymbol('species'); - - module.exports = function (METHOD_NAME) { - // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/677 - return V8_VERSION >= 51 || !fails(function () { - var array = []; - var constructor = array.constructor = {}; - - constructor[SPECIES] = function () { - return { - foo: 1 - }; - }; - - return array[METHOD_NAME](Boolean).foo !== 1; - }); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js": - /*!*************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js ***! - \*************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayMethodIsStrictJs(module, exports, __webpack_require__) { - "use strict"; - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - module.exports = function (METHOD_NAME, argument) { - var method = [][METHOD_NAME]; - return !!method && fails(function () { - // eslint-disable-next-line no-useless-call,no-throw-literal - method.call(null, argument || function () { - throw 1; - }, 1); - }); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js": - /*!******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js ***! - \******************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayMethodUsesToLengthJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var defineProperty = Object.defineProperty; - var cache = {}; - - var thrower = function thrower(it) { - throw it; - }; - - module.exports = function (METHOD_NAME, options) { - if (has(cache, METHOD_NAME)) return cache[METHOD_NAME]; - if (!options) options = {}; - var method = [][METHOD_NAME]; - var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false; - var argument0 = has(options, 0) ? options[0] : thrower; - var argument1 = has(options, 1) ? options[1] : undefined; - return cache[METHOD_NAME] = !!method && !fails(function () { - if (ACCESSORS && !DESCRIPTORS) return true; - var O = { - length: -1 - }; - if (ACCESSORS) defineProperty(O, 1, { - enumerable: true, - get: thrower - });else O[1] = 1; - method.call(O, argument0, argument1); - }); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-reduce.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-reduce.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArrayReduceJs(module, exports, __webpack_require__) { - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var IndexedObject = __webpack_require__( - /*! ../internals/indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); // `Array.prototype.{ reduce, reduceRight }` methods implementation - - - var createMethod = function createMethod(IS_RIGHT) { - return function (that, callbackfn, argumentsLength, memo) { - aFunction(callbackfn); - var O = toObject(that); - var self = IndexedObject(O); - var length = toLength(O.length); - var index = IS_RIGHT ? length - 1 : 0; - var i = IS_RIGHT ? -1 : 1; - if (argumentsLength < 2) while (true) { - if (index in self) { - memo = self[index]; - index += i; - break; - } - - index += i; - - if (IS_RIGHT ? index < 0 : length <= index) { - throw TypeError('Reduce of empty array with no initial value'); - } - } - - for (; IS_RIGHT ? index >= 0 : length > index; index += i) { - if (index in self) { - memo = callbackfn(memo, self[index], index, O); - } - } - - return memo; - }; - }; - - module.exports = { - // `Array.prototype.reduce` method - // https://tc39.github.io/ecma262/#sec-array.prototype.reduce - left: createMethod(false), - // `Array.prototype.reduceRight` method - // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright - right: createMethod(true) - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsArraySpeciesCreateJs(module, exports, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var isArray = __webpack_require__( - /*! ../internals/is-array */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var SPECIES = wellKnownSymbol('species'); // `ArraySpeciesCreate` abstract operation - // https://tc39.github.io/ecma262/#sec-arrayspeciescreate - - module.exports = function (originalArray, length) { - var C; - - if (isArray(originalArray)) { - C = originalArray.constructor; // cross-realm fallback - - if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;else if (isObject(C)) { - C = C[SPECIES]; - if (C === null) C = undefined; - } - } - - return new (C === undefined ? Array : C)(length === 0 ? 0 : length); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js": - /*!***********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js ***! - \***********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCallWithSafeIterationClosingJs(module, exports, __webpack_require__) { - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); // call something on iterator step with safe closing on error - - - module.exports = function (iterator, fn, value, ENTRIES) { - try { - return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); // 7.4.6 IteratorClose(iterator, completion) - } catch (error) { - var returnMethod = iterator['return']; - if (returnMethod !== undefined) anObject(returnMethod.call(iterator)); - throw error; - } - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js": - /*!*********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js ***! - \*********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCheckCorrectnessOfIterationJs(module, exports, __webpack_require__) { - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var ITERATOR = wellKnownSymbol('iterator'); - var SAFE_CLOSING = false; - - try { - var called = 0; - var iteratorWithReturn = { - next: function next() { - return { - done: !!called++ - }; - }, - 'return': function _return() { - SAFE_CLOSING = true; - } - }; - - iteratorWithReturn[ITERATOR] = function () { - return this; - }; // eslint-disable-next-line no-throw-literal - - - Array.from(iteratorWithReturn, function () { - throw 2; - }); - } catch (error) { - /* empty */ - } - - module.exports = function (exec, SKIP_CLOSING) { - if (!SKIP_CLOSING && !SAFE_CLOSING) return false; - var ITERATION_SUPPORT = false; - - try { - var object = {}; - - object[ITERATOR] = function () { - return { - next: function next() { - return { - done: ITERATION_SUPPORT = true - }; - } - }; - }; - - exec(object); - } catch (error) { - /* empty */ - } - - return ITERATION_SUPPORT; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsClassofRawJs(module, exports) { - var toString = {}.toString; - - module.exports = function (it) { - return toString.call(it).slice(8, -1); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js": - /*!**********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js ***! - \**********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsClassofJs(module, exports, __webpack_require__) { - var TO_STRING_TAG_SUPPORT = __webpack_require__( - /*! ../internals/to-string-tag-support */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js"); - - var classofRaw = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var TO_STRING_TAG = wellKnownSymbol('toStringTag'); // ES3 wrong here - - var CORRECT_ARGUMENTS = classofRaw(function () { - return arguments; - }()) == 'Arguments'; // fallback for IE11 Script Access Denied error - - var tryGet = function tryGet(it, key) { - try { - return it[key]; - } catch (error) { - /* empty */ - } - }; // getting tag from ES6+ `Object.prototype.toString` - - - module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case - : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag // builtinTag case - : CORRECT_ARGUMENTS ? classofRaw(O) // ES3 arguments fallback - : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCollectionStrongJs(module, exports, __webpack_require__) { - "use strict"; - - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; - - var create = __webpack_require__( - /*! ../internals/object-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); - - var redefineAll = __webpack_require__( - /*! ../internals/redefine-all */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js"); - - var bind = __webpack_require__( - /*! ../internals/function-bind-context */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js"); - - var anInstance = __webpack_require__( - /*! ../internals/an-instance */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js"); - - var iterate = __webpack_require__( - /*! ../internals/iterate */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); - - var defineIterator = __webpack_require__( - /*! ../internals/define-iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js"); - - var setSpecies = __webpack_require__( - /*! ../internals/set-species */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var fastKey = __webpack_require__( - /*! ../internals/internal-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js").fastKey; - - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - - var setInternalState = InternalStateModule.set; - var internalStateGetterFor = InternalStateModule.getterFor; - module.exports = { - getConstructor: function getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { - var C = wrapper(function (that, iterable) { - anInstance(that, C, CONSTRUCTOR_NAME); - setInternalState(that, { - type: CONSTRUCTOR_NAME, - index: create(null), - first: undefined, - last: undefined, - size: 0 - }); - if (!DESCRIPTORS) that.size = 0; - if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); - }); - var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); - - var define = function define(that, key, value) { - var state = getInternalState(that); - var entry = getEntry(that, key); - var previous, index; // change existing entry - - if (entry) { - entry.value = value; // create new entry - } else { - state.last = entry = { - index: index = fastKey(key, true), - key: key, - value: value, - previous: previous = state.last, - next: undefined, - removed: false - }; - if (!state.first) state.first = entry; - if (previous) previous.next = entry; - if (DESCRIPTORS) state.size++;else that.size++; // add to index - - if (index !== 'F') state.index[index] = entry; - } - - return that; - }; - - var getEntry = function getEntry(that, key) { - var state = getInternalState(that); // fast case - - var index = fastKey(key); - var entry; - if (index !== 'F') return state.index[index]; // frozen object case - - for (entry = state.first; entry; entry = entry.next) { - if (entry.key == key) return entry; - } - }; - - redefineAll(C.prototype, { - // 23.1.3.1 Map.prototype.clear() - // 23.2.3.2 Set.prototype.clear() - clear: function clear() { - var that = this; - var state = getInternalState(that); - var data = state.index; - var entry = state.first; - - while (entry) { - entry.removed = true; - if (entry.previous) entry.previous = entry.previous.next = undefined; - delete data[entry.index]; - entry = entry.next; - } - - state.first = state.last = undefined; - if (DESCRIPTORS) state.size = 0;else that.size = 0; - }, - // 23.1.3.3 Map.prototype.delete(key) - // 23.2.3.4 Set.prototype.delete(value) - 'delete': function _delete(key) { - var that = this; - var state = getInternalState(that); - var entry = getEntry(that, key); - - if (entry) { - var next = entry.next; - var prev = entry.previous; - delete state.index[entry.index]; - entry.removed = true; - if (prev) prev.next = next; - if (next) next.previous = prev; - if (state.first == entry) state.first = next; - if (state.last == entry) state.last = prev; - if (DESCRIPTORS) state.size--;else that.size--; - } - - return !!entry; - }, - // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) - // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) - forEach: function forEach(callbackfn - /* , that = undefined */ - ) { - var state = getInternalState(this); - var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); - var entry; - - while (entry = entry ? entry.next : state.first) { - boundFunction(entry.value, entry.key, this); // revert to the last existing entry - - while (entry && entry.removed) { - entry = entry.previous; - } - } - }, - // 23.1.3.7 Map.prototype.has(key) - // 23.2.3.7 Set.prototype.has(value) - has: function has(key) { - return !!getEntry(this, key); - } - }); - redefineAll(C.prototype, IS_MAP ? { - // 23.1.3.6 Map.prototype.get(key) - get: function get(key) { - var entry = getEntry(this, key); - return entry && entry.value; - }, - // 23.1.3.9 Map.prototype.set(key, value) - set: function set(key, value) { - return define(this, key === 0 ? 0 : key, value); - } - } : { - // 23.2.3.1 Set.prototype.add(value) - add: function add(value) { - return define(this, value = value === 0 ? 0 : value, value); - } - }); - if (DESCRIPTORS) defineProperty(C.prototype, 'size', { - get: function get() { - return getInternalState(this).size; - } - }); - return C; - }, - setStrong: function setStrong(C, CONSTRUCTOR_NAME, IS_MAP) { - var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator'; - var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME); - var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME); // add .keys, .values, .entries, [@@iterator] - // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 - - defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) { - setInternalState(this, { - type: ITERATOR_NAME, - target: iterated, - state: getInternalCollectionState(iterated), - kind: kind, - last: undefined - }); - }, function () { - var state = getInternalIteratorState(this); - var kind = state.kind; - var entry = state.last; // revert to the last existing entry - - while (entry && entry.removed) { - entry = entry.previous; - } // get next entry - - - if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) { - // or finish the iteration - state.target = undefined; - return { - value: undefined, - done: true - }; - } // return step by kind - - - if (kind == 'keys') return { - value: entry.key, - done: false - }; - if (kind == 'values') return { - value: entry.value, - done: false - }; - return { - value: [entry.key, entry.value], - done: false - }; - }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); // add [@@species], 23.1.2.2, 23.2.2.2 - - setSpecies(CONSTRUCTOR_NAME); - } - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-weak.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-weak.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCollectionWeakJs(module, exports, __webpack_require__) { - "use strict"; - - var redefineAll = __webpack_require__( - /*! ../internals/redefine-all */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js"); - - var getWeakData = __webpack_require__( - /*! ../internals/internal-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js").getWeakData; - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var anInstance = __webpack_require__( - /*! ../internals/an-instance */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js"); - - var iterate = __webpack_require__( - /*! ../internals/iterate */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); - - var ArrayIterationModule = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js"); - - var $has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - - var setInternalState = InternalStateModule.set; - var internalStateGetterFor = InternalStateModule.getterFor; - var find = ArrayIterationModule.find; - var findIndex = ArrayIterationModule.findIndex; - var id = 0; // fallback for uncaught frozen keys - - var uncaughtFrozenStore = function uncaughtFrozenStore(store) { - return store.frozen || (store.frozen = new UncaughtFrozenStore()); - }; - - var UncaughtFrozenStore = function UncaughtFrozenStore() { - this.entries = []; - }; - - var findUncaughtFrozen = function findUncaughtFrozen(store, key) { - return find(store.entries, function (it) { - return it[0] === key; - }); - }; - - UncaughtFrozenStore.prototype = { - get: function get(key) { - var entry = findUncaughtFrozen(this, key); - if (entry) return entry[1]; - }, - has: function has(key) { - return !!findUncaughtFrozen(this, key); - }, - set: function set(key, value) { - var entry = findUncaughtFrozen(this, key); - if (entry) entry[1] = value;else this.entries.push([key, value]); - }, - 'delete': function _delete(key) { - var index = findIndex(this.entries, function (it) { - return it[0] === key; - }); - if (~index) this.entries.splice(index, 1); - return !!~index; - } - }; - module.exports = { - getConstructor: function getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { - var C = wrapper(function (that, iterable) { - anInstance(that, C, CONSTRUCTOR_NAME); - setInternalState(that, { - type: CONSTRUCTOR_NAME, - id: id++, - frozen: undefined - }); - if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); - }); - var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); - - var define = function define(that, key, value) { - var state = getInternalState(that); - var data = getWeakData(anObject(key), true); - if (data === true) uncaughtFrozenStore(state).set(key, value);else data[state.id] = value; - return that; - }; - - redefineAll(C.prototype, { - // 23.3.3.2 WeakMap.prototype.delete(key) - // 23.4.3.3 WeakSet.prototype.delete(value) - 'delete': function _delete(key) { - var state = getInternalState(this); - if (!isObject(key)) return false; - var data = getWeakData(key); - if (data === true) return uncaughtFrozenStore(state)['delete'](key); - return data && $has(data, state.id) && delete data[state.id]; - }, - // 23.3.3.4 WeakMap.prototype.has(key) - // 23.4.3.4 WeakSet.prototype.has(value) - has: function has(key) { - var state = getInternalState(this); - if (!isObject(key)) return false; - var data = getWeakData(key); - if (data === true) return uncaughtFrozenStore(state).has(key); - return data && $has(data, state.id); - } - }); - redefineAll(C.prototype, IS_MAP ? { - // 23.3.3.3 WeakMap.prototype.get(key) - get: function get(key) { - var state = getInternalState(this); - - if (isObject(key)) { - var data = getWeakData(key); - if (data === true) return uncaughtFrozenStore(state).get(key); - return data ? data[state.id] : undefined; - } - }, - // 23.3.3.5 WeakMap.prototype.set(key, value) - set: function set(key, value) { - return define(this, key, value); - } - } : { - // 23.4.3.1 WeakSet.prototype.add(value) - add: function add(value) { - return define(this, value, true); - } - }); - return C; - } - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCollectionJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var isForced = __webpack_require__( - /*! ../internals/is-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var InternalMetadataModule = __webpack_require__( - /*! ../internals/internal-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js"); - - var iterate = __webpack_require__( - /*! ../internals/iterate */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); - - var anInstance = __webpack_require__( - /*! ../internals/an-instance */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var checkCorrectnessOfIteration = __webpack_require__( - /*! ../internals/check-correctness-of-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js"); - - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); - - var inheritIfRequired = __webpack_require__( - /*! ../internals/inherit-if-required */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js"); - - module.exports = function (CONSTRUCTOR_NAME, wrapper, common) { - var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1; - var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1; - var ADDER = IS_MAP ? 'set' : 'add'; - var NativeConstructor = global[CONSTRUCTOR_NAME]; - var NativePrototype = NativeConstructor && NativeConstructor.prototype; - var Constructor = NativeConstructor; - var exported = {}; - - var fixMethod = function fixMethod(KEY) { - var nativeMethod = NativePrototype[KEY]; - redefine(NativePrototype, KEY, KEY == 'add' ? function add(value) { - nativeMethod.call(this, value === 0 ? 0 : value); - return this; - } : KEY == 'delete' ? function (key) { - return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); - } : KEY == 'get' ? function get(key) { - return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key); - } : KEY == 'has' ? function has(key) { - return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); - } : function set(key, value) { - nativeMethod.call(this, key === 0 ? 0 : key, value); - return this; - }); - }; // eslint-disable-next-line max-len - - - if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () { - new NativeConstructor().entries().next(); - })))) { - // create collection constructor - Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); - InternalMetadataModule.REQUIRED = true; - } else if (isForced(CONSTRUCTOR_NAME, true)) { - var instance = new Constructor(); // early implementations not supports chaining - - var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false - - var THROWS_ON_PRIMITIVES = fails(function () { - instance.has(1); - }); // most early implementations doesn't supports iterables, most modern - not close it correctly - // eslint-disable-next-line no-new - - var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { - new NativeConstructor(iterable); - }); // for early implementations -0 and +0 not the same - - var BUGGY_ZERO = !IS_WEAK && fails(function () { - // V8 ~ Chromium 42- fails only with 5+ elements - var $instance = new NativeConstructor(); - var index = 5; - - while (index--) { - $instance[ADDER](index, index); - } - - return !$instance.has(-0); - }); - - if (!ACCEPT_ITERABLES) { - Constructor = wrapper(function (dummy, iterable) { - anInstance(dummy, Constructor, CONSTRUCTOR_NAME); - var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor); - if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); - return that; - }); - Constructor.prototype = NativePrototype; - NativePrototype.constructor = Constructor; - } - - if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { - fixMethod('delete'); - fixMethod('has'); - IS_MAP && fixMethod('get'); - } - - if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); // weak collections should not contains .clear method - - if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear; - } - - exported[CONSTRUCTOR_NAME] = Constructor; - $({ - global: true, - forced: Constructor != NativeConstructor - }, exported); - setToStringTag(Constructor, CONSTRUCTOR_NAME); - if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); - return Constructor; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js": - /*!******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js ***! - \******************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCopyConstructorPropertiesJs(module, exports, __webpack_require__) { - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var ownKeys = __webpack_require__( - /*! ../internals/own-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js"); - - var getOwnPropertyDescriptorModule = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - module.exports = function (target, source) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-is-regexp-logic.js": - /*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-is-regexp-logic.js ***! - \**************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCorrectIsRegexpLogicJs(module, exports, __webpack_require__) { - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var MATCH = wellKnownSymbol('match'); - - module.exports = function (METHOD_NAME) { - var regexp = /./; - - try { - '/./'[METHOD_NAME](regexp); - } catch (e) { - try { - regexp[MATCH] = false; - return '/./'[METHOD_NAME](regexp); - } catch (f) { - /* empty */ - } - } - - return false; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCorrectPrototypeGetterJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - module.exports = !fails(function () { - function F() { - /* empty */ - } - - F.prototype.constructor = null; - return Object.getPrototypeOf(new F()) !== F.prototype; - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCreateHtmlJs(module, exports, __webpack_require__) { - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var quot = /"/g; // B.2.3.2.1 CreateHTML(string, tag, attribute, value) - // https://tc39.github.io/ecma262/#sec-createhtml - - module.exports = function (string, tag, attribute, value) { - var S = String(requireObjectCoercible(string)); - var p1 = '<' + tag; - if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"'; - return p1 + '>' + S + ''; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-iterator-constructor.js": - /*!******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-iterator-constructor.js ***! - \******************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCreateIteratorConstructorJs(module, exports, __webpack_require__) { - "use strict"; - - var IteratorPrototype = __webpack_require__( - /*! ../internals/iterators-core */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js").IteratorPrototype; - - var create = __webpack_require__( - /*! ../internals/object-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); - - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); - - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); - - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); - - var returnThis = function returnThis() { - return this; - }; - - module.exports = function (IteratorConstructor, NAME, next) { - var TO_STRING_TAG = NAME + ' Iterator'; - IteratorConstructor.prototype = create(IteratorPrototype, { - next: createPropertyDescriptor(1, next) - }); - setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); - Iterators[TO_STRING_TAG] = returnThis; - return IteratorConstructor; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js": - /*!*********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js ***! - \*********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCreateNonEnumerablePropertyJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); - - module.exports = DESCRIPTORS ? function (object, key, value) { - return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); - } : function (object, key, value) { - object[key] = value; - return object; - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js": - /*!*****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js ***! - \*****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCreatePropertyDescriptorJs(module, exports) { - module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsCreatePropertyJs(module, exports, __webpack_require__) { - "use strict"; - - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); - - module.exports = function (object, key, value) { - var propertyKey = toPrimitive(key); - if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));else object[propertyKey] = value; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/date-to-iso-string.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/date-to-iso-string.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsDateToIsoStringJs(module, exports, __webpack_require__) { - "use strict"; - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var padStart = __webpack_require__( - /*! ../internals/string-pad */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-pad.js").start; - - var abs = Math.abs; - var DatePrototype = Date.prototype; - var getTime = DatePrototype.getTime; - var nativeDateToISOString = DatePrototype.toISOString; // `Date.prototype.toISOString` method implementation - // https://tc39.github.io/ecma262/#sec-date.prototype.toisostring - // PhantomJS / old WebKit fails here: - - module.exports = fails(function () { - return nativeDateToISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z'; - }) || !fails(function () { - nativeDateToISOString.call(new Date(NaN)); - }) ? function toISOString() { - if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value'); - var date = this; - var year = date.getUTCFullYear(); - var milliseconds = date.getUTCMilliseconds(); - var sign = year < 0 ? '-' : year > 9999 ? '+' : ''; - return sign + padStart(abs(year), sign ? 6 : 4, 0) + '-' + padStart(date.getUTCMonth() + 1, 2, 0) + '-' + padStart(date.getUTCDate(), 2, 0) + 'T' + padStart(date.getUTCHours(), 2, 0) + ':' + padStart(date.getUTCMinutes(), 2, 0) + ':' + padStart(date.getUTCSeconds(), 2, 0) + '.' + padStart(milliseconds, 3, 0) + 'Z'; - } : nativeDateToISOString; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/date-to-primitive.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/date-to-primitive.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsDateToPrimitiveJs(module, exports, __webpack_require__) { - "use strict"; - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - - module.exports = function (hint) { - if (hint !== 'string' && hint !== 'number' && hint !== 'default') { - throw TypeError('Incorrect hint'); - } - - return toPrimitive(anObject(this), hint !== 'number'); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsDefineIteratorJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createIteratorConstructor = __webpack_require__( - /*! ../internals/create-iterator-constructor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-iterator-constructor.js"); - - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var setPrototypeOf = __webpack_require__( - /*! ../internals/object-set-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js"); - - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); - - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); - - var IteratorsCore = __webpack_require__( - /*! ../internals/iterators-core */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js"); - - var IteratorPrototype = IteratorsCore.IteratorPrototype; - var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; - var ITERATOR = wellKnownSymbol('iterator'); - var KEYS = 'keys'; - var VALUES = 'values'; - var ENTRIES = 'entries'; - - var returnThis = function returnThis() { - return this; - }; - - module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { - createIteratorConstructor(IteratorConstructor, NAME, next); - - var getIterationMethod = function getIterationMethod(KIND) { - if (KIND === DEFAULT && defaultIterator) return defaultIterator; - if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; - - switch (KIND) { - case KEYS: - return function keys() { - return new IteratorConstructor(this, KIND); - }; - - case VALUES: - return function values() { - return new IteratorConstructor(this, KIND); - }; - - case ENTRIES: - return function entries() { - return new IteratorConstructor(this, KIND); - }; - } - - return function () { - return new IteratorConstructor(this); - }; - }; - - var TO_STRING_TAG = NAME + ' Iterator'; - var INCORRECT_VALUES_NAME = false; - var IterablePrototype = Iterable.prototype; - var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype['@@iterator'] || DEFAULT && IterablePrototype[DEFAULT]; - var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); - var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; - var CurrentIteratorPrototype, methods, KEY; // fix native - - if (anyNativeIterator) { - CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); - - if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { - if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { - if (setPrototypeOf) { - setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); - } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') { - createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis); - } - } // Set @@toStringTag to native iterators - - - setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); - if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; - } - } // fix Array#{values, @@iterator}.name in V8 / FF - - - if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { - INCORRECT_VALUES_NAME = true; - - defaultIterator = function values() { - return nativeIterator.call(this); - }; - } // define iterator - - - if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { - createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator); - } - - Iterators[NAME] = defaultIterator; // export additional methods - - if (DEFAULT) { - methods = { - values: getIterationMethod(VALUES), - keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), - entries: getIterationMethod(ENTRIES) - }; - if (FORCED) for (KEY in methods) { - if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { - redefine(IterablePrototype, KEY, methods[KEY]); - } - } else $({ - target: NAME, - proto: true, - forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME - }, methods); - } - - return methods; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsDefineWellKnownSymbolJs(module, exports, __webpack_require__) { - var path = __webpack_require__( - /*! ../internals/path */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var wrappedWellKnownSymbolModule = __webpack_require__( - /*! ../internals/well-known-symbol-wrapped */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol-wrapped.js"); - - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; - - module.exports = function (NAME) { - var Symbol = path.Symbol || (path.Symbol = {}); - if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, { - value: wrappedWellKnownSymbolModule.f(NAME) - }); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsDescriptorsJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); // Thank's IE8 for his funny defineProperty - - - module.exports = !fails(function () { - return Object.defineProperty({}, 1, { - get: function get() { - return 7; - } - })[1] != 7; - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js": - /*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js ***! - \**************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsDocumentCreateElementJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var document = global.document; // typeof document.createElement is 'object' in old IE - - var EXISTS = isObject(document) && isObject(document.createElement); - - module.exports = function (it) { - return EXISTS ? document.createElement(it) : {}; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/dom-iterables.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/dom-iterables.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsDomIterablesJs(module, exports) { - // iterable DOM collections - // flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods - module.exports = { - CSSRuleList: 0, - CSSStyleDeclaration: 0, - CSSValueList: 0, - ClientRectList: 0, - DOMRectList: 0, - DOMStringList: 0, - DOMTokenList: 1, - DataTransferItemList: 0, - FileList: 0, - HTMLAllCollection: 0, - HTMLCollection: 0, - HTMLFormElement: 0, - HTMLSelectElement: 0, - MediaList: 0, - MimeTypeArray: 0, - NamedNodeMap: 0, - NodeList: 1, - PaintRequestList: 0, - Plugin: 0, - PluginArray: 0, - SVGLengthList: 0, - SVGNumberList: 0, - SVGPathSegList: 0, - SVGPointList: 0, - SVGStringList: 0, - SVGTransformList: 0, - SourceBufferList: 0, - StyleSheetList: 0, - TextTrackCueList: 0, - TextTrackList: 0, - TouchList: 0 - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-is-ios.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-is-ios.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsEngineIsIosJs(module, exports, __webpack_require__) { - var userAgent = __webpack_require__( - /*! ../internals/engine-user-agent */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-user-agent.js"); - - module.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-user-agent.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-user-agent.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsEngineUserAgentJs(module, exports, __webpack_require__) { - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - module.exports = getBuiltIn('navigator', 'userAgent') || ''; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-v8-version.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-v8-version.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsEngineV8VersionJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var userAgent = __webpack_require__( - /*! ../internals/engine-user-agent */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-user-agent.js"); - - var process = global.process; - var versions = process && process.versions; - var v8 = versions && versions.v8; - var match, version; - - if (v8) { - match = v8.split('.'); - version = match[0] + match[1]; - } else if (userAgent) { - match = userAgent.match(/Edge\/(\d+)/); - - if (!match || match[1] >= 74) { - match = userAgent.match(/Chrome\/(\d+)/); - if (match) version = match[1]; - } - } - - module.exports = version && +version; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsEnumBugKeysJs(module, exports) { - // IE8- don't enum bug keys - module.exports = ['constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf']; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js": - /*!*********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js ***! - \*********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsExportJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var getOwnPropertyDescriptor = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js").f; - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var setGlobal = __webpack_require__( - /*! ../internals/set-global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js"); - - var copyConstructorProperties = __webpack_require__( - /*! ../internals/copy-constructor-properties */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js"); - - var isForced = __webpack_require__( - /*! ../internals/is-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js"); - /* - options.target - name of the target object - options.global - target is the global object - options.stat - export as static methods of target - options.proto - export as prototype methods of target - options.real - real prototype method for the `pure` version - options.forced - export even if the native feature is available - options.bind - bind methods to the target, required for the `pure` version - options.wrap - wrap constructors to preventing global pollution, required for the `pure` version - options.unsafe - use the simple assignment of property instead of delete + defineProperty - options.sham - add a flag to not completely full polyfills - options.enumerable - export as enumerable property - options.noTargetGet - prevent calling a getter on target - */ - - - module.exports = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - - if (GLOBAL) { - target = global; - } else if (STATIC) { - target = global[TARGET] || setGlobal(TARGET, {}); - } else { - target = (global[TARGET] || {}).prototype; - } - - if (target) for (key in source) { - sourceProperty = source[key]; - - if (options.noTargetGet) { - descriptor = getOwnPropertyDescriptor(target, key); - targetProperty = descriptor && descriptor.value; - } else targetProperty = target[key]; - - FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); // contained in target - - if (!FORCED && targetProperty !== undefined) { - if (typeof sourceProperty === typeof targetProperty) continue; - copyConstructorProperties(sourceProperty, targetProperty); - } // add a flag to not completely full polyfills - - - if (options.sham || targetProperty && targetProperty.sham) { - createNonEnumerableProperty(sourceProperty, 'sham', true); - } // extend global - - - redefine(target, key, sourceProperty, options); - } - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js": - /*!********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js ***! - \********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsFailsJs(module, exports) { - module.exports = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js": - /*!*************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js ***! - \*************************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsFixRegexpWellKnownSymbolLogicJs(module, exports, __webpack_require__) { - "use strict"; // TODO: Remove from `core-js@4` since it's moved to entry points - - __webpack_require__( - /*! ../modules/es.regexp.exec */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.exec.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var regexpExec = __webpack_require__( - /*! ../internals/regexp-exec */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var SPECIES = wellKnownSymbol('species'); - var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { - // #replace needs built-in support for named groups. - // #match works fine because it just return the exec results, even if it has - // a "grops" property. - var re = /./; - - re.exec = function () { - var result = []; - result.groups = { - a: '7' - }; - return result; - }; - - return ''.replace(re, '$') !== '7'; - }); // IE <= 11 replaces $0 with the whole match, as if it was $& - // https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 - - var REPLACE_KEEPS_$0 = function () { - return 'a'.replace(/./, '$0') === '$0'; - }(); - - var REPLACE = wellKnownSymbol('replace'); // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string - - var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = function () { - if (/./[REPLACE]) { - return /./[REPLACE]('a', '$0') === ''; - } - - return false; - }(); // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec - // Weex JS has frozen built-in prototypes, so use try / catch wrapper - - - var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () { - var re = /(?:)/; - var originalExec = re.exec; - - re.exec = function () { - return originalExec.apply(this, arguments); - }; - - var result = 'ab'.split(re); - return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; - }); - - module.exports = function (KEY, length, exec, sham) { - var SYMBOL = wellKnownSymbol(KEY); - var DELEGATES_TO_SYMBOL = !fails(function () { - // String methods call symbol-named RegEp methods - var O = {}; - - O[SYMBOL] = function () { - return 7; - }; - - return ''[KEY](O) != 7; - }); - var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () { - // Symbol-named RegExp methods call .exec - var execCalled = false; - var re = /a/; - - if (KEY === 'split') { - // We can't use real regex here since it causes deoptimization - // and serious performance degradation in V8 - // https://github.com/zloirock/core-js/issues/306 - re = {}; // RegExp[@@split] doesn't call the regex's exec method, but first creates - // a new one. We need to return the patched regex when creating the new one. - - re.constructor = {}; - - re.constructor[SPECIES] = function () { - return re; - }; - - re.flags = ''; - re[SYMBOL] = /./[SYMBOL]; - } - - re.exec = function () { - execCalled = true; - return null; - }; - - re[SYMBOL](''); - return !execCalled; - }); - - if (!DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || KEY === 'replace' && !(REPLACE_SUPPORTS_NAMED_GROUPS && REPLACE_KEEPS_$0 && !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE) || KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) { - var nativeRegExpMethod = /./[SYMBOL]; - var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { - if (regexp.exec === regexpExec) { - if (DELEGATES_TO_SYMBOL && !forceStringMethod) { - // The native String method already delegates to @@method (this - // polyfilled function), leasing to infinite recursion. - // We avoid it by directly calling the native @@method method. - return { - done: true, - value: nativeRegExpMethod.call(regexp, str, arg2) - }; - } - - return { - done: true, - value: nativeMethod.call(str, regexp, arg2) - }; - } - - return { - done: false - }; - }, { - REPLACE_KEEPS_$0: REPLACE_KEEPS_$0, - REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE - }); - var stringMethod = methods[0]; - var regexMethod = methods[1]; - redefine(String.prototype, KEY, stringMethod); - redefine(RegExp.prototype, SYMBOL, length == 2 // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) - // 21.2.5.11 RegExp.prototype[@@split](string, limit) - ? function (string, arg) { - return regexMethod.call(string, this, arg); - } // 21.2.5.6 RegExp.prototype[@@match](string) - // 21.2.5.9 RegExp.prototype[@@search](string) - : function (string) { - return regexMethod.call(string, this); - }); - } - - if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js": - /*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js ***! - \***********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsFreezingJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - module.exports = !fails(function () { - return Object.isExtensible(Object.preventExtensions({})); - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js": - /*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js ***! - \************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsFunctionBindContextJs(module, exports, __webpack_require__) { - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); // optional / simple context binding - - - module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - - switch (length) { - case 0: - return function () { - return fn.call(that); - }; - - case 1: - return function (a) { - return fn.call(that, a); - }; - - case 2: - return function (a, b) { - return fn.call(that, a, b); - }; - - case 3: - return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - - return function () - /* ...args */ - { - return fn.apply(that, arguments); - }; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsFunctionBindJs(module, exports, __webpack_require__) { - "use strict"; - - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var slice = [].slice; - var factories = {}; - - var construct = function construct(C, argsLength, args) { - if (!(argsLength in factories)) { - for (var list = [], i = 0; i < argsLength; i++) { - list[i] = 'a[' + i + ']'; - } // eslint-disable-next-line no-new-func - - - factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')'); - } - - return factories[argsLength](C, args); - }; // `Function.prototype.bind` method implementation - // https://tc39.github.io/ecma262/#sec-function.prototype.bind - - - module.exports = Function.bind || function bind(that - /* , ...args */ - ) { - var fn = aFunction(this); - var partArgs = slice.call(arguments, 1); - - var boundFunction = function bound() - /* args... */ - { - var args = partArgs.concat(slice.call(arguments)); - return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args); - }; - - if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype; - return boundFunction; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsGetBuiltInJs(module, exports, __webpack_require__) { - var path = __webpack_require__( - /*! ../internals/path */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js"); - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var aFunction = function aFunction(variable) { - return typeof variable == 'function' ? variable : undefined; - }; - - module.exports = function (namespace, method) { - return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method]; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsGetIteratorMethodJs(module, exports, __webpack_require__) { - var classof = __webpack_require__( - /*! ../internals/classof */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js"); - - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var ITERATOR = wellKnownSymbol('iterator'); - - module.exports = function (it) { - if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)]; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js": - /*!*********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js ***! - \*********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsGlobalJs(module, exports) { - var check = function check(it) { - return it && it.Math == Math && it; - }; // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 - - - module.exports = // eslint-disable-next-line no-undef - check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || check(typeof self == 'object' && self) || check(typeof global == 'object' && global) || // eslint-disable-next-line no-new-func - Function('return this')(); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js": - /*!******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js ***! - \******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsHasJs(module, exports) { - var hasOwnProperty = {}.hasOwnProperty; - - module.exports = function (it, key) { - return hasOwnProperty.call(it, key); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsHiddenKeysJs(module, exports) { - module.exports = {}; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/host-report-errors.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/host-report-errors.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsHostReportErrorsJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - module.exports = function (a, b) { - var console = global.console; - - if (console && console.error) { - arguments.length === 1 ? console.error(a) : console.error(a, b); - } - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js": - /*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js ***! - \*******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsHtmlJs(module, exports, __webpack_require__) { - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - module.exports = getBuiltIn('document', 'documentElement'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIe8DomDefineJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var createElement = __webpack_require__( - /*! ../internals/document-create-element */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js"); // Thank's IE8 for his funny defineProperty - - - module.exports = !DESCRIPTORS && !fails(function () { - return Object.defineProperty(createElement('div'), 'a', { - get: function get() { - return 7; - } - }).a != 7; - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIndexedObjectJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - - var split = ''.split; // fallback for non-array-like ES3 and non-enumerable old V8 strings - - module.exports = fails(function () { - // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins - return !Object('z').propertyIsEnumerable(0); - }) ? function (it) { - return classof(it) == 'String' ? split.call(it, '') : Object(it); - } : Object; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsInheritIfRequiredJs(module, exports, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var setPrototypeOf = __webpack_require__( - /*! ../internals/object-set-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js"); // makes subclassing work correct for wrapped built-ins - - - module.exports = function ($this, dummy, Wrapper) { - var NewTarget, NewTargetPrototype; - if ( // it can work only with native `setPrototypeOf` - setPrototypeOf && // we haven't completely correct pre-ES6 way for getting `new.target`, so use this - typeof (NewTarget = dummy.constructor) == 'function' && NewTarget !== Wrapper && isObject(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype) setPrototypeOf($this, NewTargetPrototype); - return $this; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsInspectSourceJs(module, exports, __webpack_require__) { - var store = __webpack_require__( - /*! ../internals/shared-store */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js"); - - var functionToString = Function.toString; // this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper - - if (typeof store.inspectSource != 'function') { - store.inspectSource = function (it) { - return functionToString.call(it); - }; - } - - module.exports = store.inspectSource; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsInternalMetadataJs(module, exports, __webpack_require__) { - var hiddenKeys = __webpack_require__( - /*! ../internals/hidden-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; - - var uid = __webpack_require__( - /*! ../internals/uid */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js"); - - var FREEZING = __webpack_require__( - /*! ../internals/freezing */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js"); - - var METADATA = uid('meta'); - var id = 0; - - var isExtensible = Object.isExtensible || function () { - return true; - }; - - var setMetadata = function setMetadata(it) { - defineProperty(it, METADATA, { - value: { - objectID: 'O' + ++id, - // object ID - weakData: {} // weak collections IDs - - } - }); - }; - - var fastKey = function fastKey(it, create) { - // return a primitive with prefix - if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - - if (!has(it, METADATA)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return 'F'; // not necessary to add metadata - - if (!create) return 'E'; // add missing metadata - - setMetadata(it); // return object ID - } - - return it[METADATA].objectID; - }; - - var getWeakData = function getWeakData(it, create) { - if (!has(it, METADATA)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return true; // not necessary to add metadata - - if (!create) return false; // add missing metadata - - setMetadata(it); // return the store of weak collections IDs - } - - return it[METADATA].weakData; - }; // add metadata on freeze-family methods calling - - - var onFreeze = function onFreeze(it) { - if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it); - return it; - }; - - var meta = module.exports = { - REQUIRED: false, - fastKey: fastKey, - getWeakData: getWeakData, - onFreeze: onFreeze - }; - hiddenKeys[METADATA] = true; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsInternalStateJs(module, exports, __webpack_require__) { - var NATIVE_WEAK_MAP = __webpack_require__( - /*! ../internals/native-weak-map */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js"); - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var objectHas = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var sharedKey = __webpack_require__( - /*! ../internals/shared-key */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js"); - - var hiddenKeys = __webpack_require__( - /*! ../internals/hidden-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); - - var WeakMap = global.WeakMap; - var set, get, has; - - var enforce = function enforce(it) { - return has(it) ? get(it) : set(it, {}); - }; - - var getterFor = function getterFor(TYPE) { - return function (it) { - var state; - - if (!isObject(it) || (state = get(it)).type !== TYPE) { - throw TypeError('Incompatible receiver, ' + TYPE + ' required'); - } - - return state; - }; - }; - - if (NATIVE_WEAK_MAP) { - var store = new WeakMap(); - var wmget = store.get; - var wmhas = store.has; - var wmset = store.set; - - set = function set(it, metadata) { - wmset.call(store, it, metadata); - return metadata; - }; - - get = function get(it) { - return wmget.call(store, it) || {}; - }; - - has = function has(it) { - return wmhas.call(store, it); - }; - } else { - var STATE = sharedKey('state'); - hiddenKeys[STATE] = true; - - set = function set(it, metadata) { - createNonEnumerableProperty(it, STATE, metadata); - return metadata; - }; - - get = function get(it) { - return objectHas(it, STATE) ? it[STATE] : {}; - }; - - has = function has(it) { - return objectHas(it, STATE); - }; - } - - module.exports = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIsArrayIteratorMethodJs(module, exports, __webpack_require__) { - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); - - var ITERATOR = wellKnownSymbol('iterator'); - var ArrayPrototype = Array.prototype; // check on default Array iterator - - module.exports = function (it) { - return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js": - /*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js ***! - \***********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIsArrayJs(module, exports, __webpack_require__) { - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); // `IsArray` abstract operation - // https://tc39.github.io/ecma262/#sec-isarray - - - module.exports = Array.isArray || function isArray(arg) { - return classof(arg) == 'Array'; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIsForcedJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var replacement = /#|\.prototype\./; - - var isForced = function isForced(feature, detection) { - var value = data[normalize(feature)]; - return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == 'function' ? fails(detection) : !!detection; - }; - - var normalize = isForced.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); - }; - - var data = isForced.data = {}; - var NATIVE = isForced.NATIVE = 'N'; - var POLYFILL = isForced.POLYFILL = 'P'; - module.exports = isForced; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-integer.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-integer.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIsIntegerJs(module, exports, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var floor = Math.floor; // `Number.isInteger` method implementation - // https://tc39.github.io/ecma262/#sec-number.isinteger - - module.exports = function isInteger(it) { - return !isObject(it) && isFinite(it) && floor(it) === it; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIsObjectJs(module, exports) { - module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js": - /*!**********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js ***! - \**********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIsPureJs(module, exports) { - module.exports = false; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-regexp.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-regexp.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIsRegexpJs(module, exports, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var MATCH = wellKnownSymbol('match'); // `IsRegExp` abstract operation - // https://tc39.github.io/ecma262/#sec-isregexp - - module.exports = function (it) { - var isRegExp; - return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp'); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js": - /*!**********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js ***! - \**********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIterateJs(module, exports, __webpack_require__) { - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var isArrayIteratorMethod = __webpack_require__( - /*! ../internals/is-array-iterator-method */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var bind = __webpack_require__( - /*! ../internals/function-bind-context */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js"); - - var getIteratorMethod = __webpack_require__( - /*! ../internals/get-iterator-method */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js"); - - var callWithSafeIterationClosing = __webpack_require__( - /*! ../internals/call-with-safe-iteration-closing */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js"); - - var Result = function Result(stopped, result) { - this.stopped = stopped; - this.result = result; - }; - - var iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) { - var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1); - var iterator, iterFn, index, length, result, next, step; - - if (IS_ITERATOR) { - iterator = iterable; - } else { - iterFn = getIteratorMethod(iterable); - if (typeof iterFn != 'function') throw TypeError('Target is not iterable'); // optimisation for array iterators - - if (isArrayIteratorMethod(iterFn)) { - for (index = 0, length = toLength(iterable.length); length > index; index++) { - result = AS_ENTRIES ? boundFunction(anObject(step = iterable[index])[0], step[1]) : boundFunction(iterable[index]); - if (result && result instanceof Result) return result; - } - - return new Result(false); - } - - iterator = iterFn.call(iterable); - } - - next = iterator.next; - - while (!(step = next.call(iterator)).done) { - result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES); - if (typeof result == 'object' && result && result instanceof Result) return result; - } - - return new Result(false); - }; - - iterate.stop = function (result) { - return new Result(true, result); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIteratorsCoreJs(module, exports, __webpack_require__) { - "use strict"; - - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); - - var ITERATOR = wellKnownSymbol('iterator'); - var BUGGY_SAFARI_ITERATORS = false; - - var returnThis = function returnThis() { - return this; - }; // `%IteratorPrototype%` object - // https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object - - - var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; - - if ([].keys) { - arrayIterator = [].keys(); // Safari 8 has buggy iterators w/o `next` - - if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;else { - PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); - if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; - } - } - - if (IteratorPrototype == undefined) IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() - - if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) { - createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis); - } - - module.exports = { - IteratorPrototype: IteratorPrototype, - BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsIteratorsJs(module, exports) { - module.exports = {}; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-expm1.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-expm1.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsMathExpm1Js(module, exports) { - var nativeExpm1 = Math.expm1; - var exp = Math.exp; // `Math.expm1` method implementation - // https://tc39.github.io/ecma262/#sec-math.expm1 - - module.exports = !nativeExpm1 // Old FF bug - || nativeExpm1(10) > 22025.465794806719 || nativeExpm1(10) < 22025.4657948067165168 // Tor Browser bug - || nativeExpm1(-2e-17) != -2e-17 ? function expm1(x) { - return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : exp(x) - 1; - } : nativeExpm1; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-fround.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-fround.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsMathFroundJs(module, exports, __webpack_require__) { - var sign = __webpack_require__( - /*! ../internals/math-sign */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-sign.js"); - - var abs = Math.abs; - var pow = Math.pow; - var EPSILON = pow(2, -52); - var EPSILON32 = pow(2, -23); - var MAX32 = pow(2, 127) * (2 - EPSILON32); - var MIN32 = pow(2, -126); - - var roundTiesToEven = function roundTiesToEven(n) { - return n + 1 / EPSILON - 1 / EPSILON; - }; // `Math.fround` method implementation - // https://tc39.github.io/ecma262/#sec-math.fround - - - module.exports = Math.fround || function fround(x) { - var $abs = abs(x); - var $sign = sign(x); - var a, result; - if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32; - a = (1 + EPSILON32 / EPSILON) * $abs; - result = a - (a - $abs); // eslint-disable-next-line no-self-compare - - if (result > MAX32 || result != result) return $sign * Infinity; - return $sign * result; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-log1p.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-log1p.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsMathLog1pJs(module, exports) { - var log = Math.log; // `Math.log1p` method implementation - // https://tc39.github.io/ecma262/#sec-math.log1p - - module.exports = Math.log1p || function log1p(x) { - return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : log(1 + x); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-sign.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-sign.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsMathSignJs(module, exports) { - // `Math.sign` method implementation - // https://tc39.github.io/ecma262/#sec-math.sign - module.exports = Math.sign || function sign(x) { - // eslint-disable-next-line no-self-compare - return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/microtask.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/microtask.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsMicrotaskJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var getOwnPropertyDescriptor = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js").f; - - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - - var macrotask = __webpack_require__( - /*! ../internals/task */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/task.js").set; - - var IS_IOS = __webpack_require__( - /*! ../internals/engine-is-ios */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-is-ios.js"); - - var MutationObserver = global.MutationObserver || global.WebKitMutationObserver; - var process = global.process; - var Promise = global.Promise; - var IS_NODE = classof(process) == 'process'; // Node.js 11 shows ExperimentalWarning on getting `queueMicrotask` - - var queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask'); - var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value; - var flush, head, last, notify, toggle, node, promise, then; // modern engines have queueMicrotask method - - if (!queueMicrotask) { - flush = function flush() { - var parent, fn; - if (IS_NODE && (parent = process.domain)) parent.exit(); - - while (head) { - fn = head.fn; - head = head.next; - - try { - fn(); - } catch (error) { - if (head) notify();else last = undefined; - throw error; - } - } - - last = undefined; - if (parent) parent.enter(); - }; // Node.js - - - if (IS_NODE) { - notify = function notify() { - process.nextTick(flush); - }; // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 - - } else if (MutationObserver && !IS_IOS) { - toggle = true; - node = document.createTextNode(''); - new MutationObserver(flush).observe(node, { - characterData: true - }); - - notify = function notify() { - node.data = toggle = !toggle; - }; // environments with maybe non-completely correct, but existent Promise - - } else if (Promise && Promise.resolve) { - // Promise.resolve without an argument throws an error in LG WebOS 2 - promise = Promise.resolve(undefined); - then = promise.then; - - notify = function notify() { - then.call(promise, flush); - }; // for other environments - macrotask based on: - // - setImmediate - // - MessageChannel - // - window.postMessag - // - onreadystatechange - // - setTimeout - - } else { - notify = function notify() { - // strange IE + webpack dev server bug - use .call(global) - macrotask.call(global, flush); - }; - } - } - - module.exports = queueMicrotask || function (fn) { - var task = { - fn: fn, - next: undefined - }; - if (last) last.next = task; - - if (!head) { - head = task; - notify(); - } - - last = task; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-promise-constructor.js": - /*!*****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-promise-constructor.js ***! - \*****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsNativePromiseConstructorJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - module.exports = global.Promise; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsNativeSymbolJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - module.exports = !!Object.getOwnPropertySymbols && !fails(function () { - // Chrome 38 Symbol has incorrect toString conversion - // eslint-disable-next-line no-undef - return !String(Symbol()); - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsNativeWeakMapJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var inspectSource = __webpack_require__( - /*! ../internals/inspect-source */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js"); - - var WeakMap = global.WeakMap; - module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap)); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/new-promise-capability.js": - /*!*************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/new-promise-capability.js ***! - \*************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsNewPromiseCapabilityJs(module, exports, __webpack_require__) { - "use strict"; - - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - - var PromiseCapability = function PromiseCapability(C) { - var resolve, reject; - this.promise = new C(function ($$resolve, $$reject) { - if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); - resolve = $$resolve; - reject = $$reject; - }); - this.resolve = aFunction(resolve); - this.reject = aFunction(reject); - }; // 25.4.1.5 NewPromiseCapability(C) - - - module.exports.f = function (C) { - return new PromiseCapability(C); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/not-a-regexp.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/not-a-regexp.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsNotARegexpJs(module, exports, __webpack_require__) { - var isRegExp = __webpack_require__( - /*! ../internals/is-regexp */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-regexp.js"); - - module.exports = function (it) { - if (isRegExp(it)) { - throw TypeError("The method doesn't accept regular expressions"); - } - - return it; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-is-finite.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-is-finite.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsNumberIsFiniteJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var globalIsFinite = global.isFinite; // `Number.isFinite` method - // https://tc39.github.io/ecma262/#sec-number.isfinite - - module.exports = Number.isFinite || function isFinite(it) { - return typeof it == 'number' && globalIsFinite(it); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-float.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-float.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsNumberParseFloatJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var trim = __webpack_require__( - /*! ../internals/string-trim */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim.js").trim; - - var whitespaces = __webpack_require__( - /*! ../internals/whitespaces */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/whitespaces.js"); - - var $parseFloat = global.parseFloat; - var FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity; // `parseFloat` method - // https://tc39.github.io/ecma262/#sec-parsefloat-string - - module.exports = FORCED ? function parseFloat(string) { - var trimmedString = trim(String(string)); - var result = $parseFloat(trimmedString); - return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result; - } : $parseFloat; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-int.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-int.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsNumberParseIntJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var trim = __webpack_require__( - /*! ../internals/string-trim */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim.js").trim; - - var whitespaces = __webpack_require__( - /*! ../internals/whitespaces */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/whitespaces.js"); - - var $parseInt = global.parseInt; - var hex = /^[+-]?0[Xx]/; - var FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22; // `parseInt` method - // https://tc39.github.io/ecma262/#sec-parseint-string-radix - - module.exports = FORCED ? function parseInt(string, radix) { - var S = trim(String(string)); - return $parseInt(S, radix >>> 0 || (hex.test(S) ? 16 : 10)); - } : $parseInt; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-assign.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-assign.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectAssignJs(module, exports, __webpack_require__) { - "use strict"; - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var objectKeys = __webpack_require__( - /*! ../internals/object-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js"); - - var getOwnPropertySymbolsModule = __webpack_require__( - /*! ../internals/object-get-own-property-symbols */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js"); - - var propertyIsEnumerableModule = __webpack_require__( - /*! ../internals/object-property-is-enumerable */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var IndexedObject = __webpack_require__( - /*! ../internals/indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js"); - - var nativeAssign = Object.assign; - var defineProperty = Object.defineProperty; // `Object.assign` method - // https://tc39.github.io/ecma262/#sec-object.assign - - module.exports = !nativeAssign || fails(function () { - // should have correct order of operations (Edge bug) - if (DESCRIPTORS && nativeAssign({ - b: 1 - }, nativeAssign(defineProperty({}, 'a', { - enumerable: true, - get: function get() { - defineProperty(this, 'b', { - value: 3, - enumerable: false - }); - } - }), { - b: 2 - })).b !== 1) return true; // should work with symbols and should have deterministic property order (V8 bug) - - var A = {}; - var B = {}; // eslint-disable-next-line no-undef - - var symbol = Symbol(); - var alphabet = 'abcdefghijklmnopqrst'; - A[symbol] = 7; - alphabet.split('').forEach(function (chr) { - B[chr] = chr; - }); - return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet; - }) ? function assign(target, source) { - // eslint-disable-line no-unused-vars - var T = toObject(target); - var argumentsLength = arguments.length; - var index = 1; - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - var propertyIsEnumerable = propertyIsEnumerableModule.f; - - while (argumentsLength > index) { - var S = IndexedObject(arguments[index++]); - var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S); - var length = keys.length; - var j = 0; - var key; - - while (length > j) { - key = keys[j++]; - if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key]; - } - } - - return T; - } : nativeAssign; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectCreateJs(module, exports, __webpack_require__) { - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var defineProperties = __webpack_require__( - /*! ../internals/object-define-properties */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js"); - - var enumBugKeys = __webpack_require__( - /*! ../internals/enum-bug-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js"); - - var hiddenKeys = __webpack_require__( - /*! ../internals/hidden-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); - - var html = __webpack_require__( - /*! ../internals/html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js"); - - var documentCreateElement = __webpack_require__( - /*! ../internals/document-create-element */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js"); - - var sharedKey = __webpack_require__( - /*! ../internals/shared-key */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js"); - - var GT = '>'; - var LT = '<'; - var PROTOTYPE = 'prototype'; - var SCRIPT = 'script'; - var IE_PROTO = sharedKey('IE_PROTO'); - - var EmptyConstructor = function EmptyConstructor() { - /* empty */ - }; - - var scriptTag = function scriptTag(content) { - return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; - }; // Create object with fake `null` prototype: use ActiveX Object with cleared prototype - - - var NullProtoObjectViaActiveX = function NullProtoObjectViaActiveX(activeXDocument) { - activeXDocument.write(scriptTag('')); - activeXDocument.close(); - var temp = activeXDocument.parentWindow.Object; - activeXDocument = null; // avoid memory leak - - return temp; - }; // Create object with fake `null` prototype: use iframe Object with cleared prototype - - - var NullProtoObjectViaIFrame = function NullProtoObjectViaIFrame() { - // Thrash, waste and sodomy: IE GC bug - var iframe = documentCreateElement('iframe'); - var JS = 'java' + SCRIPT + ':'; - var iframeDocument; - iframe.style.display = 'none'; - html.appendChild(iframe); // https://github.com/zloirock/core-js/issues/475 - - iframe.src = String(JS); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(scriptTag('document.F=Object')); - iframeDocument.close(); - return iframeDocument.F; - }; // Check for document.domain and active x support - // No need to use active x approach when document.domain is not set - // see https://github.com/es-shims/es5-shim/issues/150 - // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 - // avoid IE GC bug - - - var activeXDocument; - - var _NullProtoObject = function NullProtoObject() { - try { - /* global ActiveXObject */ - activeXDocument = document.domain && new ActiveXObject('htmlfile'); - } catch (error) { - /* ignore */ - } - - _NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame(); - var length = enumBugKeys.length; - - while (length--) { - delete _NullProtoObject[PROTOTYPE][enumBugKeys[length]]; - } - - return _NullProtoObject(); - }; - - hiddenKeys[IE_PROTO] = true; // `Object.create` method - // https://tc39.github.io/ecma262/#sec-object.create - - module.exports = Object.create || function create(O, Properties) { - var result; - - if (O !== null) { - EmptyConstructor[PROTOTYPE] = anObject(O); - result = new EmptyConstructor(); - EmptyConstructor[PROTOTYPE] = null; // add "__proto__" for Object.getPrototypeOf polyfill - - result[IE_PROTO] = O; - } else result = _NullProtoObject(); - - return Properties === undefined ? result : defineProperties(result, Properties); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectDefinePropertiesJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var objectKeys = __webpack_require__( - /*! ../internals/object-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js"); // `Object.defineProperties` method - // https://tc39.github.io/ecma262/#sec-object.defineproperties - - - module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = objectKeys(Properties); - var length = keys.length; - var index = 0; - var key; - - while (length > index) { - definePropertyModule.f(O, key = keys[index++], Properties[key]); - } - - return O; - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js": - /*!*************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js ***! - \*************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectDefinePropertyJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var IE8_DOM_DEFINE = __webpack_require__( - /*! ../internals/ie8-dom-define */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - - var nativeDefineProperty = Object.defineProperty; // `Object.defineProperty` method - // https://tc39.github.io/ecma262/#sec-object.defineproperty - - exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return nativeDefineProperty(O, P, Attributes); - } catch (error) { - /* empty */ - } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js": - /*!*************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js ***! - \*************************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectGetOwnPropertyDescriptorJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var propertyIsEnumerableModule = __webpack_require__( - /*! ../internals/object-property-is-enumerable */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js"); - - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var IE8_DOM_DEFINE = __webpack_require__( - /*! ../internals/ie8-dom-define */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js"); - - var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method - // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor - - exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return nativeGetOwnPropertyDescriptor(O, P); - } catch (error) { - /* empty */ - } - if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names-external.js": - /*!*****************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names-external.js ***! - \*****************************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectGetOwnPropertyNamesExternalJs(module, exports, __webpack_require__) { - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var nativeGetOwnPropertyNames = __webpack_require__( - /*! ../internals/object-get-own-property-names */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js").f; - - var toString = {}.toString; - var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; - - var getWindowNames = function getWindowNames(it) { - try { - return nativeGetOwnPropertyNames(it); - } catch (error) { - return windowNames.slice(); - } - }; // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window - - - module.exports.f = function getOwnPropertyNames(it) { - return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : nativeGetOwnPropertyNames(toIndexedObject(it)); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js": - /*!********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js ***! - \********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectGetOwnPropertyNamesJs(module, exports, __webpack_require__) { - var internalObjectKeys = __webpack_require__( - /*! ../internals/object-keys-internal */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js"); - - var enumBugKeys = __webpack_require__( - /*! ../internals/enum-bug-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js"); - - var hiddenKeys = enumBugKeys.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method - // https://tc39.github.io/ecma262/#sec-object.getownpropertynames - - exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys(O, hiddenKeys); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js": - /*!**********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js ***! - \**********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectGetOwnPropertySymbolsJs(module, exports) { - exports.f = Object.getOwnPropertySymbols; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js": - /*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js ***! - \**************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectGetPrototypeOfJs(module, exports, __webpack_require__) { - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var sharedKey = __webpack_require__( - /*! ../internals/shared-key */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js"); - - var CORRECT_PROTOTYPE_GETTER = __webpack_require__( - /*! ../internals/correct-prototype-getter */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js"); - - var IE_PROTO = sharedKey('IE_PROTO'); - var ObjectPrototype = Object.prototype; // `Object.getPrototypeOf` method - // https://tc39.github.io/ecma262/#sec-object.getprototypeof - - module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) return O[IE_PROTO]; - - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } - - return O instanceof Object ? ObjectPrototype : null; - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectKeysInternalJs(module, exports, __webpack_require__) { - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var indexOf = __webpack_require__( - /*! ../internals/array-includes */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js").indexOf; - - var hiddenKeys = __webpack_require__( - /*! ../internals/hidden-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); - - module.exports = function (object, names) { - var O = toIndexedObject(object); - var i = 0; - var result = []; - var key; - - for (key in O) { - !has(hiddenKeys, key) && has(O, key) && result.push(key); - } // Don't enum bug & hidden keys - - - while (names.length > i) { - if (has(O, key = names[i++])) { - ~indexOf(result, key) || result.push(key); - } - } - - return result; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectKeysJs(module, exports, __webpack_require__) { - var internalObjectKeys = __webpack_require__( - /*! ../internals/object-keys-internal */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js"); - - var enumBugKeys = __webpack_require__( - /*! ../internals/enum-bug-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js"); // `Object.keys` method - // https://tc39.github.io/ecma262/#sec-object.keys - - - module.exports = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js": - /*!********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js ***! - \********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectPropertyIsEnumerableJs(module, exports, __webpack_require__) { - "use strict"; - - var nativePropertyIsEnumerable = {}.propertyIsEnumerable; - var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // Nashorn ~ JDK8 bug - - var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ - 1: 2 - }, 1); // `Object.prototype.propertyIsEnumerable` method implementation - // https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable - - exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor(this, V); - return !!descriptor && descriptor.enumerable; - } : nativePropertyIsEnumerable; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js": - /*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js ***! - \**************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectSetPrototypeOfJs(module, exports, __webpack_require__) { - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var aPossiblePrototype = __webpack_require__( - /*! ../internals/a-possible-prototype */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js"); // `Object.setPrototypeOf` method - // https://tc39.github.io/ecma262/#sec-object.setprototypeof - // Works with __proto__ only. Old v8 can't work with null proto objects. - - /* eslint-disable no-proto */ - - - module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { - var CORRECT_SETTER = false; - var test = {}; - var setter; - - try { - setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; - setter.call(test, []); - CORRECT_SETTER = test instanceof Array; - } catch (error) { - /* empty */ - } - - return function setPrototypeOf(O, proto) { - anObject(O); - aPossiblePrototype(proto); - if (CORRECT_SETTER) setter.call(O, proto);else O.__proto__ = proto; - return O; - }; - }() : undefined); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-to-string.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-to-string.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsObjectToStringJs(module, exports, __webpack_require__) { - "use strict"; - - var TO_STRING_TAG_SUPPORT = __webpack_require__( - /*! ../internals/to-string-tag-support */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js"); - - var classof = __webpack_require__( - /*! ../internals/classof */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js"); // `Object.prototype.toString` method implementation - // https://tc39.github.io/ecma262/#sec-object.prototype.tostring - - - module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() { - return '[object ' + classof(this) + ']'; - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js": - /*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js ***! - \***********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsOwnKeysJs(module, exports, __webpack_require__) { - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - var getOwnPropertyNamesModule = __webpack_require__( - /*! ../internals/object-get-own-property-names */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js"); - - var getOwnPropertySymbolsModule = __webpack_require__( - /*! ../internals/object-get-own-property-symbols */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); // all object keys, includes non-enumerable and symbols - - - module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js": - /*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js ***! - \*******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsPathJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - module.exports = global; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/perform.js": - /*!**********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/perform.js ***! - \**********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsPerformJs(module, exports) { - module.exports = function (exec) { - try { - return { - error: false, - value: exec() - }; - } catch (error) { - return { - error: true, - value: error - }; - } - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/promise-resolve.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/promise-resolve.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsPromiseResolveJs(module, exports, __webpack_require__) { - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var newPromiseCapability = __webpack_require__( - /*! ../internals/new-promise-capability */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/new-promise-capability.js"); - - module.exports = function (C, x) { - anObject(C); - if (isObject(x) && x.constructor === C) return x; - var promiseCapability = newPromiseCapability.f(C); - var resolve = promiseCapability.resolve; - resolve(x); - return promiseCapability.promise; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsRedefineAllJs(module, exports, __webpack_require__) { - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - module.exports = function (target, src, options) { - for (var key in src) { - redefine(target, key, src[key], options); - } - - return target; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js": - /*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js ***! - \***********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsRedefineJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var setGlobal = __webpack_require__( - /*! ../internals/set-global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js"); - - var inspectSource = __webpack_require__( - /*! ../internals/inspect-source */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js"); - - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - - var getInternalState = InternalStateModule.get; - var enforceInternalState = InternalStateModule.enforce; - var TEMPLATE = String(String).split('String'); - (module.exports = function (O, key, value, options) { - var unsafe = options ? !!options.unsafe : false; - var simple = options ? !!options.enumerable : false; - var noTargetGet = options ? !!options.noTargetGet : false; - - if (typeof value == 'function') { - if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key); - enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); - } - - if (O === global) { - if (simple) O[key] = value;else setGlobal(key, value); - return; - } else if (!unsafe) { - delete O[key]; - } else if (!noTargetGet && O[key]) { - simple = true; - } - - if (simple) O[key] = value;else createNonEnumerableProperty(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative - })(Function.prototype, 'toString', function toString() { - return typeof this == 'function' && getInternalState(this).source || inspectSource(this); - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsReflectMetadataJs(module, exports, __webpack_require__) { - // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` - var Map = __webpack_require__( - /*! ../modules/es.map */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js"); - - var WeakMap = __webpack_require__( - /*! ../modules/es.weak-map */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js"); - - var shared = __webpack_require__( - /*! ../internals/shared */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js"); - - var metadata = shared('metadata'); - var store = metadata.store || (metadata.store = new WeakMap()); - - var getOrCreateMetadataMap = function getOrCreateMetadataMap(target, targetKey, create) { - var targetMetadata = store.get(target); - - if (!targetMetadata) { - if (!create) return; - store.set(target, targetMetadata = new Map()); - } - - var keyMetadata = targetMetadata.get(targetKey); - - if (!keyMetadata) { - if (!create) return; - targetMetadata.set(targetKey, keyMetadata = new Map()); - } - - return keyMetadata; - }; - - var ordinaryHasOwnMetadata = function ordinaryHasOwnMetadata(MetadataKey, O, P) { - var metadataMap = getOrCreateMetadataMap(O, P, false); - return metadataMap === undefined ? false : metadataMap.has(MetadataKey); - }; - - var ordinaryGetOwnMetadata = function ordinaryGetOwnMetadata(MetadataKey, O, P) { - var metadataMap = getOrCreateMetadataMap(O, P, false); - return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey); - }; - - var ordinaryDefineOwnMetadata = function ordinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) { - getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue); - }; - - var ordinaryOwnMetadataKeys = function ordinaryOwnMetadataKeys(target, targetKey) { - var metadataMap = getOrCreateMetadataMap(target, targetKey, false); - var keys = []; - if (metadataMap) metadataMap.forEach(function (_, key) { - keys.push(key); - }); - return keys; - }; - - var toMetadataKey = function toMetadataKey(it) { - return it === undefined || typeof it == 'symbol' ? it : String(it); - }; - - module.exports = { - store: store, - getMap: getOrCreateMetadataMap, - has: ordinaryHasOwnMetadata, - get: ordinaryGetOwnMetadata, - set: ordinaryDefineOwnMetadata, - keys: ordinaryOwnMetadataKeys, - toKey: toMetadataKey - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec-abstract.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec-abstract.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsRegexpExecAbstractJs(module, exports, __webpack_require__) { - var classof = __webpack_require__( - /*! ./classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - - var regexpExec = __webpack_require__( - /*! ./regexp-exec */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec.js"); // `RegExpExec` abstract operation - // https://tc39.github.io/ecma262/#sec-regexpexec - - - module.exports = function (R, S) { - var exec = R.exec; - - if (typeof exec === 'function') { - var result = exec.call(R, S); - - if (typeof result !== 'object') { - throw TypeError('RegExp exec method returned something other than an Object or null'); - } - - return result; - } - - if (classof(R) !== 'RegExp') { - throw TypeError('RegExp#exec called on incompatible receiver'); - } - - return regexpExec.call(R, S); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsRegexpExecJs(module, exports, __webpack_require__) { - "use strict"; - - var regexpFlags = __webpack_require__( - /*! ./regexp-flags */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-flags.js"); - - var stickyHelpers = __webpack_require__( - /*! ./regexp-sticky-helpers */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-sticky-helpers.js"); - - var nativeExec = RegExp.prototype.exec; // This always refers to the native implementation, because the - // String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, - // which loads this file before patching the method. - - var nativeReplace = String.prototype.replace; - var patchedExec = nativeExec; - - var UPDATES_LAST_INDEX_WRONG = function () { - var re1 = /a/; - var re2 = /b*/g; - nativeExec.call(re1, 'a'); - nativeExec.call(re2, 'a'); - return re1.lastIndex !== 0 || re2.lastIndex !== 0; - }(); - - var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET; // nonparticipating capturing group, copied from es5-shim's String#split patch. - - var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; - var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y; - - if (PATCH) { - patchedExec = function exec(str) { - var re = this; - var lastIndex, reCopy, match, i; - var sticky = UNSUPPORTED_Y && re.sticky; - var flags = regexpFlags.call(re); - var source = re.source; - var charsAdded = 0; - var strCopy = str; - - if (sticky) { - flags = flags.replace('y', ''); - - if (flags.indexOf('g') === -1) { - flags += 'g'; - } - - strCopy = String(str).slice(re.lastIndex); // Support anchored sticky behavior. - - if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\n')) { - source = '(?: ' + source + ')'; - strCopy = ' ' + strCopy; - charsAdded++; - } // ^(? + rx + ) is needed, in combination with some str slicing, to - // simulate the 'y' flag. - - - reCopy = new RegExp('^(?:' + source + ')', flags); - } - - if (NPCG_INCLUDED) { - reCopy = new RegExp('^' + source + '$(?!\\s)', flags); - } - - if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; - match = nativeExec.call(sticky ? reCopy : re, strCopy); - - if (sticky) { - if (match) { - match.input = match.input.slice(charsAdded); - match[0] = match[0].slice(charsAdded); - match.index = re.lastIndex; - re.lastIndex += match[0].length; - } else re.lastIndex = 0; - } else if (UPDATES_LAST_INDEX_WRONG && match) { - re.lastIndex = re.global ? match.index + match[0].length : lastIndex; - } - - if (NPCG_INCLUDED && match && match.length > 1) { - // Fix browsers whose `exec` methods don't consistently return `undefined` - // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ - nativeReplace.call(match[0], reCopy, function () { - for (i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === undefined) match[i] = undefined; - } - }); - } - - return match; - }; - } - - module.exports = patchedExec; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-flags.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-flags.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsRegexpFlagsJs(module, exports, __webpack_require__) { - "use strict"; - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); // `RegExp.prototype.flags` getter implementation - // https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags - - - module.exports = function () { - var that = anObject(this); - var result = ''; - if (that.global) result += 'g'; - if (that.ignoreCase) result += 'i'; - if (that.multiline) result += 'm'; - if (that.dotAll) result += 's'; - if (that.unicode) result += 'u'; - if (that.sticky) result += 'y'; - return result; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-sticky-helpers.js": - /*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-sticky-helpers.js ***! - \************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsRegexpStickyHelpersJs(module, exports, __webpack_require__) { - "use strict"; - - var fails = __webpack_require__( - /*! ./fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError, - // so we use an intermediate function. - - - function RE(s, f) { - return RegExp(s, f); - } - - exports.UNSUPPORTED_Y = fails(function () { - // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError - var re = RE('a', 'y'); - re.lastIndex = 2; - return re.exec('abcd') != null; - }); - exports.BROKEN_CARET = fails(function () { - // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 - var re = RE('^r', 'gy'); - re.lastIndex = 2; - return re.exec('str') != null; - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsRequireObjectCoercibleJs(module, exports) { - // `RequireObjectCoercible` abstract operation - // https://tc39.github.io/ecma262/#sec-requireobjectcoercible - module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/same-value.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/same-value.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsSameValueJs(module, exports) { - // `SameValue` abstract operation - // https://tc39.github.io/ecma262/#sec-samevalue - module.exports = Object.is || function is(x, y) { - // eslint-disable-next-line no-self-compare - return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsSetGlobalJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - module.exports = function (key, value) { - try { - createNonEnumerableProperty(global, key, value); - } catch (error) { - global[key] = value; - } - - return value; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsSetSpeciesJs(module, exports, __webpack_require__) { - "use strict"; - - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var SPECIES = wellKnownSymbol('species'); - - module.exports = function (CONSTRUCTOR_NAME) { - var Constructor = getBuiltIn(CONSTRUCTOR_NAME); - var defineProperty = definePropertyModule.f; - - if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { - defineProperty(Constructor, SPECIES, { - configurable: true, - get: function get() { - return this; - } - }); - } - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsSetToStringTagJs(module, exports, __webpack_require__) { - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var TO_STRING_TAG = wellKnownSymbol('toStringTag'); - - module.exports = function (it, TAG, STATIC) { - if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { - defineProperty(it, TO_STRING_TAG, { - configurable: true, - value: TAG - }); - } - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsSharedKeyJs(module, exports, __webpack_require__) { - var shared = __webpack_require__( - /*! ../internals/shared */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js"); - - var uid = __webpack_require__( - /*! ../internals/uid */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js"); - - var keys = shared('keys'); - - module.exports = function (key) { - return keys[key] || (keys[key] = uid(key)); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsSharedStoreJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var setGlobal = __webpack_require__( - /*! ../internals/set-global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js"); - - var SHARED = '__core-js_shared__'; - var store = global[SHARED] || setGlobal(SHARED, {}); - module.exports = store; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js": - /*!*********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js ***! - \*********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsSharedJs(module, exports, __webpack_require__) { - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); - - var store = __webpack_require__( - /*! ../internals/shared-store */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js"); - - (module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); - })('versions', []).push({ - version: '3.6.4', - mode: IS_PURE ? 'pure' : 'global', - copyright: '© 2020 Denis Pushkarev (zloirock.ru)' - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/species-constructor.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/species-constructor.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsSpeciesConstructorJs(module, exports, __webpack_require__) { - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var SPECIES = wellKnownSymbol('species'); // `SpeciesConstructor` abstract operation - // https://tc39.github.io/ecma262/#sec-speciesconstructor - - module.exports = function (O, defaultConstructor) { - var C = anObject(O).constructor; - var S; - return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsStringHtmlForcedJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); // check the existence of a method, lowercase - // of a tag and escaping quotes in arguments - - - module.exports = function (METHOD_NAME) { - return fails(function () { - var test = ''[METHOD_NAME]('"'); - return test !== test.toLowerCase() || test.split('"').length > 3; - }); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-multibyte.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-multibyte.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsStringMultibyteJs(module, exports, __webpack_require__) { - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); // `String.prototype.{ codePointAt, at }` methods implementation - - - var createMethod = function createMethod(CONVERT_TO_STRING) { - return function ($this, pos) { - var S = String(requireObjectCoercible($this)); - var position = toInteger(pos); - var size = S.length; - var first, second; - if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; - first = S.charCodeAt(position); - return first < 0xD800 || first > 0xDBFF || position + 1 === size || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; - }; - }; - - module.exports = { - // `String.prototype.codePointAt` method - // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat - codeAt: createMethod(false), - // `String.prototype.at` method - // https://github.com/mathiasbynens/String.prototype.at - charAt: createMethod(true) - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-pad.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-pad.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsStringPadJs(module, exports, __webpack_require__) { - // https://github.com/tc39/proposal-string-pad-start-end - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var repeat = __webpack_require__( - /*! ../internals/string-repeat */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-repeat.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var ceil = Math.ceil; // `String.prototype.{ padStart, padEnd }` methods implementation - - var createMethod = function createMethod(IS_END) { - return function ($this, maxLength, fillString) { - var S = String(requireObjectCoercible($this)); - var stringLength = S.length; - var fillStr = fillString === undefined ? ' ' : String(fillString); - var intMaxLength = toLength(maxLength); - var fillLen, stringFiller; - if (intMaxLength <= stringLength || fillStr == '') return S; - fillLen = intMaxLength - stringLength; - stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length)); - if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen); - return IS_END ? S + stringFiller : stringFiller + S; - }; - }; - - module.exports = { - // `String.prototype.padStart` method - // https://tc39.github.io/ecma262/#sec-string.prototype.padstart - start: createMethod(false), - // `String.prototype.padEnd` method - // https://tc39.github.io/ecma262/#sec-string.prototype.padend - end: createMethod(true) - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-repeat.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-repeat.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsStringRepeatJs(module, exports, __webpack_require__) { - "use strict"; - - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); // `String.prototype.repeat` method implementation - // https://tc39.github.io/ecma262/#sec-string.prototype.repeat - - - module.exports = ''.repeat || function repeat(count) { - var str = String(requireObjectCoercible(this)); - var result = ''; - var n = toInteger(count); - if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions'); - - for (; n > 0; (n >>>= 1) && (str += str)) { - if (n & 1) result += str; - } - - return result; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim-forced.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim-forced.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsStringTrimForcedJs(module, exports, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var whitespaces = __webpack_require__( - /*! ../internals/whitespaces */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/whitespaces.js"); - - var non = "\u200B\x85\u180E"; // check that a method works with the correct list - // of whitespaces and has a correct name - - module.exports = function (METHOD_NAME) { - return fails(function () { - return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME; - }); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsStringTrimJs(module, exports, __webpack_require__) { - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var whitespaces = __webpack_require__( - /*! ../internals/whitespaces */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/whitespaces.js"); - - var whitespace = '[' + whitespaces + ']'; - var ltrim = RegExp('^' + whitespace + whitespace + '*'); - var rtrim = RegExp(whitespace + whitespace + '*$'); // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation - - var createMethod = function createMethod(TYPE) { - return function ($this) { - var string = String(requireObjectCoercible($this)); - if (TYPE & 1) string = string.replace(ltrim, ''); - if (TYPE & 2) string = string.replace(rtrim, ''); - return string; - }; - }; - - module.exports = { - // `String.prototype.{ trimLeft, trimStart }` methods - // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart - start: createMethod(1), - // `String.prototype.{ trimRight, trimEnd }` methods - // https://tc39.github.io/ecma262/#sec-string.prototype.trimend - end: createMethod(2), - // `String.prototype.trim` method - // https://tc39.github.io/ecma262/#sec-string.prototype.trim - trim: createMethod(3) - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/task.js": - /*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/task.js ***! - \*******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsTaskJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - - var bind = __webpack_require__( - /*! ../internals/function-bind-context */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js"); - - var html = __webpack_require__( - /*! ../internals/html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js"); - - var createElement = __webpack_require__( - /*! ../internals/document-create-element */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js"); - - var IS_IOS = __webpack_require__( - /*! ../internals/engine-is-ios */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-is-ios.js"); - - var location = global.location; - var set = global.setImmediate; - var clear = global.clearImmediate; - var process = global.process; - var MessageChannel = global.MessageChannel; - var Dispatch = global.Dispatch; - var counter = 0; - var queue = {}; - var ONREADYSTATECHANGE = 'onreadystatechange'; - var defer, channel, port; - - var run = function run(id) { - // eslint-disable-next-line no-prototype-builtins - if (queue.hasOwnProperty(id)) { - var fn = queue[id]; - delete queue[id]; - fn(); - } - }; - - var runner = function runner(id) { - return function () { - run(id); - }; - }; - - var listener = function listener(event) { - run(event.data); - }; - - var post = function post(id) { - // old engines have not location.origin - global.postMessage(id + '', location.protocol + '//' + location.host); - }; // Node.js 0.9+ & IE10+ has setImmediate, otherwise: - - - if (!set || !clear) { - set = function setImmediate(fn) { - var args = []; - var i = 1; - - while (arguments.length > i) { - args.push(arguments[i++]); - } - - queue[++counter] = function () { - // eslint-disable-next-line no-new-func - (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args); - }; - - defer(counter); - return counter; - }; - - clear = function clearImmediate(id) { - delete queue[id]; - }; // Node.js 0.8- - - - if (classof(process) == 'process') { - defer = function defer(id) { - process.nextTick(runner(id)); - }; // Sphere (JS game engine) Dispatch API - - } else if (Dispatch && Dispatch.now) { - defer = function defer(id) { - Dispatch.now(runner(id)); - }; // Browsers with MessageChannel, includes WebWorkers - // except iOS - https://github.com/zloirock/core-js/issues/624 - - } else if (MessageChannel && !IS_IOS) { - channel = new MessageChannel(); - port = channel.port2; - channel.port1.onmessage = listener; - defer = bind(port.postMessage, port, 1); // Browsers with postMessage, skip WebWorkers - // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' - } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts && !fails(post)) { - defer = post; - global.addEventListener('message', listener, false); // IE8- - } else if (ONREADYSTATECHANGE in createElement('script')) { - defer = function defer(id) { - html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () { - html.removeChild(this); - run(id); - }; - }; // Rest old browsers - - } else { - defer = function defer(id) { - setTimeout(runner(id), 0); - }; - } - } - - module.exports = { - set: set, - clear: clear - }; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/this-number-value.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/this-number-value.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsThisNumberValueJs(module, exports, __webpack_require__) { - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); // `thisNumberValue` abstract operation - // https://tc39.github.io/ecma262/#sec-thisnumbervalue - - - module.exports = function (value) { - if (typeof value != 'number' && classof(value) != 'Number') { - throw TypeError('Incorrect invocation'); - } - - return +value; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsToAbsoluteIndexJs(module, exports, __webpack_require__) { - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - - var max = Math.max; - var min = Math.min; // Helper for a popular repeating case of the spec: - // Let integer be ? ToInteger(index). - // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). - - module.exports = function (index, length) { - var integer = toInteger(index); - return integer < 0 ? max(integer + length, 0) : min(integer, length); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsToIndexedObjectJs(module, exports, __webpack_require__) { - // toObject with fallback for non-array-like ES3 strings - var IndexedObject = __webpack_require__( - /*! ../internals/indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - module.exports = function (it) { - return IndexedObject(requireObjectCoercible(it)); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsToIntegerJs(module, exports) { - var ceil = Math.ceil; - var floor = Math.floor; // `ToInteger` abstract operation - // https://tc39.github.io/ecma262/#sec-tointeger - - module.exports = function (argument) { - return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsToLengthJs(module, exports, __webpack_require__) { - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - - var min = Math.min; // `ToLength` abstract operation - // https://tc39.github.io/ecma262/#sec-tolength - - module.exports = function (argument) { - return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsToObjectJs(module, exports, __webpack_require__) { - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); // `ToObject` abstract operation - // https://tc39.github.io/ecma262/#sec-toobject - - - module.exports = function (argument) { - return Object(requireObjectCoercible(argument)); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsToPrimitiveJs(module, exports, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); // `ToPrimitive` abstract operation - // https://tc39.github.io/ecma262/#sec-toprimitive - // instead of the ES6 spec version, we didn't implement @@toPrimitive case - // and the second argument - flag - preferred type is a string - - - module.exports = function (input, PREFERRED_STRING) { - if (!isObject(input)) return input; - var fn, val; - if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; - if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; - if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; - throw TypeError("Can't convert object to primitive value"); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js": - /*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js ***! - \************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsToStringTagSupportJs(module, exports, __webpack_require__) { - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var TO_STRING_TAG = wellKnownSymbol('toStringTag'); - var test = {}; - test[TO_STRING_TAG] = 'z'; - module.exports = String(test) === '[object z]'; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js": - /*!******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js ***! - \******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsUidJs(module, exports) { - var id = 0; - var postfix = Math.random(); - - module.exports = function (key) { - return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsUseSymbolAsUidJs(module, exports, __webpack_require__) { - var NATIVE_SYMBOL = __webpack_require__( - /*! ../internals/native-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js"); - - module.exports = NATIVE_SYMBOL // eslint-disable-next-line no-undef - && !Symbol.sham // eslint-disable-next-line no-undef - && typeof Symbol.iterator == 'symbol'; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol-wrapped.js": - /*!****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol-wrapped.js ***! - \****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsWellKnownSymbolWrappedJs(module, exports, __webpack_require__) { - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - exports.f = wellKnownSymbol; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsWellKnownSymbolJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var shared = __webpack_require__( - /*! ../internals/shared */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var uid = __webpack_require__( - /*! ../internals/uid */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js"); - - var NATIVE_SYMBOL = __webpack_require__( - /*! ../internals/native-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js"); - - var USE_SYMBOL_AS_UID = __webpack_require__( - /*! ../internals/use-symbol-as-uid */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js"); - - var WellKnownSymbolsStore = shared('wks'); - var Symbol = global.Symbol; - var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid; - - module.exports = function (name) { - if (!has(WellKnownSymbolsStore, name)) { - if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name); - } - - return WellKnownSymbolsStore[name]; - }; - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/whitespaces.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/whitespaces.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsInternalsWhitespacesJs(module, exports) { - // a string of all valid unicode whitespaces - // eslint-disable-next-line max-len - module.exports = "\t\n\x0B\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF"; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.concat.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.concat.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayConcatJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var isArray = __webpack_require__( - /*! ../internals/is-array */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var createProperty = __webpack_require__( - /*! ../internals/create-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property.js"); - - var arraySpeciesCreate = __webpack_require__( - /*! ../internals/array-species-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js"); - - var arrayMethodHasSpeciesSupport = __webpack_require__( - /*! ../internals/array-method-has-species-support */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-has-species-support.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var V8_VERSION = __webpack_require__( - /*! ../internals/engine-v8-version */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-v8-version.js"); - - var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable'); - var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; - var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded'; // We can't use this feature detection in V8 since it causes - // deoptimization and serious performance degradation - // https://github.com/zloirock/core-js/issues/679 - - var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () { - var array = []; - array[IS_CONCAT_SPREADABLE] = false; - return array.concat()[0] !== array; - }); - var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat'); - - var isConcatSpreadable = function isConcatSpreadable(O) { - if (!isObject(O)) return false; - var spreadable = O[IS_CONCAT_SPREADABLE]; - return spreadable !== undefined ? !!spreadable : isArray(O); - }; - - var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT; // `Array.prototype.concat` method - // https://tc39.github.io/ecma262/#sec-array.prototype.concat - // with adding support of @@isConcatSpreadable and @@species - - $({ - target: 'Array', - proto: true, - forced: FORCED - }, { - concat: function concat(arg) { - // eslint-disable-line no-unused-vars - var O = toObject(this); - var A = arraySpeciesCreate(O, 0); - var n = 0; - var i, k, length, len, E; - - for (i = -1, length = arguments.length; i < length; i++) { - E = i === -1 ? O : arguments[i]; - - if (isConcatSpreadable(E)) { - len = toLength(E.length); - if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); - - for (k = 0; k < len; k++, n++) { - if (k in E) createProperty(A, n, E[k]); - } - } else { - if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); - createProperty(A, n++, E); - } - } - - A.length = n; - return A; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.copy-within.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.copy-within.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayCopyWithinJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var copyWithin = __webpack_require__( - /*! ../internals/array-copy-within */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-copy-within.js"); - - var addToUnscopables = __webpack_require__( - /*! ../internals/add-to-unscopables */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/add-to-unscopables.js"); // `Array.prototype.copyWithin` method - // https://tc39.github.io/ecma262/#sec-array.prototype.copywithin - - - $({ - target: 'Array', - proto: true - }, { - copyWithin: copyWithin - }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables - - addToUnscopables('copyWithin'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.every.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.every.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayEveryJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $every = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js").every; - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var STRICT_METHOD = arrayMethodIsStrict('every'); - var USES_TO_LENGTH = arrayMethodUsesToLength('every'); // `Array.prototype.every` method - // https://tc39.github.io/ecma262/#sec-array.prototype.every - - $({ - target: 'Array', - proto: true, - forced: !STRICT_METHOD || !USES_TO_LENGTH - }, { - every: function every(callbackfn - /* , thisArg */ - ) { - return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.fill.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.fill.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayFillJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fill = __webpack_require__( - /*! ../internals/array-fill */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-fill.js"); - - var addToUnscopables = __webpack_require__( - /*! ../internals/add-to-unscopables */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/add-to-unscopables.js"); // `Array.prototype.fill` method - // https://tc39.github.io/ecma262/#sec-array.prototype.fill - - - $({ - target: 'Array', - proto: true - }, { - fill: fill - }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables - - addToUnscopables('fill'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.filter.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.filter.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayFilterJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $filter = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js").filter; - - var arrayMethodHasSpeciesSupport = __webpack_require__( - /*! ../internals/array-method-has-species-support */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-has-species-support.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter'); // Edge 14- issue - - var USES_TO_LENGTH = arrayMethodUsesToLength('filter'); // `Array.prototype.filter` method - // https://tc39.github.io/ecma262/#sec-array.prototype.filter - // with adding support of @@species - - $({ - target: 'Array', - proto: true, - forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH - }, { - filter: function filter(callbackfn - /* , thisArg */ - ) { - return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.find-index.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.find-index.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayFindIndexJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $findIndex = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js").findIndex; - - var addToUnscopables = __webpack_require__( - /*! ../internals/add-to-unscopables */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/add-to-unscopables.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var FIND_INDEX = 'findIndex'; - var SKIPS_HOLES = true; - var USES_TO_LENGTH = arrayMethodUsesToLength(FIND_INDEX); // Shouldn't skip holes - - if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { - SKIPS_HOLES = false; - }); // `Array.prototype.findIndex` method - // https://tc39.github.io/ecma262/#sec-array.prototype.findindex - - $({ - target: 'Array', - proto: true, - forced: SKIPS_HOLES || !USES_TO_LENGTH - }, { - findIndex: function findIndex(callbackfn - /* , that = undefined */ - ) { - return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables - - addToUnscopables(FIND_INDEX); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.find.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.find.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayFindJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $find = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js").find; - - var addToUnscopables = __webpack_require__( - /*! ../internals/add-to-unscopables */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/add-to-unscopables.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var FIND = 'find'; - var SKIPS_HOLES = true; - var USES_TO_LENGTH = arrayMethodUsesToLength(FIND); // Shouldn't skip holes - - if (FIND in []) Array(1)[FIND](function () { - SKIPS_HOLES = false; - }); // `Array.prototype.find` method - // https://tc39.github.io/ecma262/#sec-array.prototype.find - - $({ - target: 'Array', - proto: true, - forced: SKIPS_HOLES || !USES_TO_LENGTH - }, { - find: function find(callbackfn - /* , that = undefined */ - ) { - return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables - - addToUnscopables(FIND); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.for-each.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.for-each.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayForEachJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var forEach = __webpack_require__( - /*! ../internals/array-for-each */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-for-each.js"); // `Array.prototype.forEach` method - // https://tc39.github.io/ecma262/#sec-array.prototype.foreach - - - $({ - target: 'Array', - proto: true, - forced: [].forEach != forEach - }, { - forEach: forEach - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.from.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.from.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayFromJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var from = __webpack_require__( - /*! ../internals/array-from */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-from.js"); - - var checkCorrectnessOfIteration = __webpack_require__( - /*! ../internals/check-correctness-of-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js"); - - var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) { - Array.from(iterable); - }); // `Array.from` method - // https://tc39.github.io/ecma262/#sec-array.from - - $({ - target: 'Array', - stat: true, - forced: INCORRECT_ITERATION - }, { - from: from - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.index-of.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.index-of.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayIndexOfJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $indexOf = __webpack_require__( - /*! ../internals/array-includes */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js").indexOf; - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var nativeIndexOf = [].indexOf; - var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0; - var STRICT_METHOD = arrayMethodIsStrict('indexOf'); - var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { - ACCESSORS: true, - 1: 0 - }); // `Array.prototype.indexOf` method - // https://tc39.github.io/ecma262/#sec-array.prototype.indexof - - $({ - target: 'Array', - proto: true, - forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH - }, { - indexOf: function indexOf(searchElement - /* , fromIndex = 0 */ - ) { - return NEGATIVE_ZERO // convert -0 to +0 - ? nativeIndexOf.apply(this, arguments) || 0 : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.is-array.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.is-array.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayIsArrayJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var isArray = __webpack_require__( - /*! ../internals/is-array */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js"); // `Array.isArray` method - // https://tc39.github.io/ecma262/#sec-array.isarray - - - $({ - target: 'Array', - stat: true - }, { - isArray: isArray - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.iterator.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.iterator.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayIteratorJs(module, exports, __webpack_require__) { - "use strict"; - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var addToUnscopables = __webpack_require__( - /*! ../internals/add-to-unscopables */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/add-to-unscopables.js"); - - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js"); - - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - - var defineIterator = __webpack_require__( - /*! ../internals/define-iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js"); - - var ARRAY_ITERATOR = 'Array Iterator'; - var setInternalState = InternalStateModule.set; - var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); // `Array.prototype.entries` method - // https://tc39.github.io/ecma262/#sec-array.prototype.entries - // `Array.prototype.keys` method - // https://tc39.github.io/ecma262/#sec-array.prototype.keys - // `Array.prototype.values` method - // https://tc39.github.io/ecma262/#sec-array.prototype.values - // `Array.prototype[@@iterator]` method - // https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator - // `CreateArrayIterator` internal method - // https://tc39.github.io/ecma262/#sec-createarrayiterator - - module.exports = defineIterator(Array, 'Array', function (iterated, kind) { - setInternalState(this, { - type: ARRAY_ITERATOR, - target: toIndexedObject(iterated), - // target - index: 0, - // next index - kind: kind // kind - - }); // `%ArrayIteratorPrototype%.next` method - // https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next - }, function () { - var state = getInternalState(this); - var target = state.target; - var kind = state.kind; - var index = state.index++; - - if (!target || index >= target.length) { - state.target = undefined; - return { - value: undefined, - done: true - }; - } - - if (kind == 'keys') return { - value: index, - done: false - }; - if (kind == 'values') return { - value: target[index], - done: false - }; - return { - value: [index, target[index]], - done: false - }; - }, 'values'); // argumentsList[@@iterator] is %ArrayProto_values% - // https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject - // https://tc39.github.io/ecma262/#sec-createmappedargumentsobject - - Iterators.Arguments = Iterators.Array; // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables - - addToUnscopables('keys'); - addToUnscopables('values'); - addToUnscopables('entries'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.join.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.join.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayJoinJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var IndexedObject = __webpack_require__( - /*! ../internals/indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js"); - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var nativeJoin = [].join; - var ES3_STRINGS = IndexedObject != Object; - var STRICT_METHOD = arrayMethodIsStrict('join', ','); // `Array.prototype.join` method - // https://tc39.github.io/ecma262/#sec-array.prototype.join - - $({ - target: 'Array', - proto: true, - forced: ES3_STRINGS || !STRICT_METHOD - }, { - join: function join(separator) { - return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.last-index-of.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.last-index-of.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayLastIndexOfJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var lastIndexOf = __webpack_require__( - /*! ../internals/array-last-index-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-last-index-of.js"); // `Array.prototype.lastIndexOf` method - // https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof - - - $({ - target: 'Array', - proto: true, - forced: lastIndexOf !== [].lastIndexOf - }, { - lastIndexOf: lastIndexOf - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.map.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.map.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayMapJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $map = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js").map; - - var arrayMethodHasSpeciesSupport = __webpack_require__( - /*! ../internals/array-method-has-species-support */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-has-species-support.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map'); // FF49- issue - - var USES_TO_LENGTH = arrayMethodUsesToLength('map'); // `Array.prototype.map` method - // https://tc39.github.io/ecma262/#sec-array.prototype.map - // with adding support of @@species - - $({ - target: 'Array', - proto: true, - forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH - }, { - map: function map(callbackfn - /* , thisArg */ - ) { - return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.of.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.of.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayOfJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var createProperty = __webpack_require__( - /*! ../internals/create-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property.js"); - - var ISNT_GENERIC = fails(function () { - function F() { - /* empty */ - } - - return !(Array.of.call(F) instanceof F); - }); // `Array.of` method - // https://tc39.github.io/ecma262/#sec-array.of - // WebKit Array.of isn't generic - - $({ - target: 'Array', - stat: true, - forced: ISNT_GENERIC - }, { - of: function of() - /* ...args */ - { - var index = 0; - var argumentsLength = arguments.length; - var result = new (typeof this == 'function' ? this : Array)(argumentsLength); - - while (argumentsLength > index) { - createProperty(result, index, arguments[index++]); - } - - result.length = argumentsLength; - return result; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.reduce-right.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.reduce-right.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayReduceRightJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $reduceRight = __webpack_require__( - /*! ../internals/array-reduce */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-reduce.js").right; - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var STRICT_METHOD = arrayMethodIsStrict('reduceRight'); // For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method - - var USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { - 1: 0 - }); // `Array.prototype.reduceRight` method - // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright - - $({ - target: 'Array', - proto: true, - forced: !STRICT_METHOD || !USES_TO_LENGTH - }, { - reduceRight: function reduceRight(callbackfn - /* , initialValue */ - ) { - return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.reduce.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.reduce.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArrayReduceJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $reduce = __webpack_require__( - /*! ../internals/array-reduce */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-reduce.js").left; - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var STRICT_METHOD = arrayMethodIsStrict('reduce'); - var USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { - 1: 0 - }); // `Array.prototype.reduce` method - // https://tc39.github.io/ecma262/#sec-array.prototype.reduce - - $({ - target: 'Array', - proto: true, - forced: !STRICT_METHOD || !USES_TO_LENGTH - }, { - reduce: function reduce(callbackfn - /* , initialValue */ - ) { - return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.slice.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.slice.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArraySliceJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var isArray = __webpack_require__( - /*! ../internals/is-array */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js"); - - var toAbsoluteIndex = __webpack_require__( - /*! ../internals/to-absolute-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var createProperty = __webpack_require__( - /*! ../internals/create-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var arrayMethodHasSpeciesSupport = __webpack_require__( - /*! ../internals/array-method-has-species-support */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-has-species-support.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice'); - var USES_TO_LENGTH = arrayMethodUsesToLength('slice', { - ACCESSORS: true, - 0: 0, - 1: 2 - }); - var SPECIES = wellKnownSymbol('species'); - var nativeSlice = [].slice; - var max = Math.max; // `Array.prototype.slice` method - // https://tc39.github.io/ecma262/#sec-array.prototype.slice - // fallback for not array-like ES3 strings and DOM objects - - $({ - target: 'Array', - proto: true, - forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH - }, { - slice: function slice(start, end) { - var O = toIndexedObject(this); - var length = toLength(O.length); - var k = toAbsoluteIndex(start, length); - var fin = toAbsoluteIndex(end === undefined ? length : end, length); // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible - - var Constructor, result, n; - - if (isArray(O)) { - Constructor = O.constructor; // cross-realm fallback - - if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) { - Constructor = undefined; - } else if (isObject(Constructor)) { - Constructor = Constructor[SPECIES]; - if (Constructor === null) Constructor = undefined; - } - - if (Constructor === Array || Constructor === undefined) { - return nativeSlice.call(O, k, fin); - } - } - - result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0)); - - for (n = 0; k < fin; k++, n++) { - if (k in O) createProperty(result, n, O[k]); - } - - result.length = n; - return result; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.some.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.some.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArraySomeJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $some = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js").some; - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var STRICT_METHOD = arrayMethodIsStrict('some'); - var USES_TO_LENGTH = arrayMethodUsesToLength('some'); // `Array.prototype.some` method - // https://tc39.github.io/ecma262/#sec-array.prototype.some - - $({ - target: 'Array', - proto: true, - forced: !STRICT_METHOD || !USES_TO_LENGTH - }, { - some: function some(callbackfn - /* , thisArg */ - ) { - return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.sort.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.sort.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArraySortJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var arrayMethodIsStrict = __webpack_require__( - /*! ../internals/array-method-is-strict */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js"); - - var test = []; - var nativeSort = test.sort; // IE8- - - var FAILS_ON_UNDEFINED = fails(function () { - test.sort(undefined); - }); // V8 bug - - var FAILS_ON_NULL = fails(function () { - test.sort(null); - }); // Old WebKit - - var STRICT_METHOD = arrayMethodIsStrict('sort'); - var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD; // `Array.prototype.sort` method - // https://tc39.github.io/ecma262/#sec-array.prototype.sort - - $({ - target: 'Array', - proto: true, - forced: FORCED - }, { - sort: function sort(comparefn) { - return comparefn === undefined ? nativeSort.call(toObject(this)) : nativeSort.call(toObject(this), aFunction(comparefn)); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.splice.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.splice.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsArraySpliceJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var toAbsoluteIndex = __webpack_require__( - /*! ../internals/to-absolute-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js"); - - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var arraySpeciesCreate = __webpack_require__( - /*! ../internals/array-species-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js"); - - var createProperty = __webpack_require__( - /*! ../internals/create-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property.js"); - - var arrayMethodHasSpeciesSupport = __webpack_require__( - /*! ../internals/array-method-has-species-support */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-has-species-support.js"); - - var arrayMethodUsesToLength = __webpack_require__( - /*! ../internals/array-method-uses-to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js"); - - var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice'); - var USES_TO_LENGTH = arrayMethodUsesToLength('splice', { - ACCESSORS: true, - 0: 0, - 1: 2 - }); - var max = Math.max; - var min = Math.min; - var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; - var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded'; // `Array.prototype.splice` method - // https://tc39.github.io/ecma262/#sec-array.prototype.splice - // with adding support of @@species - - $({ - target: 'Array', - proto: true, - forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH - }, { - splice: function splice(start, deleteCount - /* , ...items */ - ) { - var O = toObject(this); - var len = toLength(O.length); - var actualStart = toAbsoluteIndex(start, len); - var argumentsLength = arguments.length; - var insertCount, actualDeleteCount, A, k, from, to; - - if (argumentsLength === 0) { - insertCount = actualDeleteCount = 0; - } else if (argumentsLength === 1) { - insertCount = 0; - actualDeleteCount = len - actualStart; - } else { - insertCount = argumentsLength - 2; - actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart); - } - - if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) { - throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED); - } - - A = arraySpeciesCreate(O, actualDeleteCount); - - for (k = 0; k < actualDeleteCount; k++) { - from = actualStart + k; - if (from in O) createProperty(A, k, O[from]); - } - - A.length = actualDeleteCount; - - if (insertCount < actualDeleteCount) { - for (k = actualStart; k < len - actualDeleteCount; k++) { - from = k + actualDeleteCount; - to = k + insertCount; - if (from in O) O[to] = O[from];else delete O[to]; - } - - for (k = len; k > len - actualDeleteCount + insertCount; k--) { - delete O[k - 1]; - } - } else if (insertCount > actualDeleteCount) { - for (k = len - actualDeleteCount; k > actualStart; k--) { - from = k + actualDeleteCount - 1; - to = k + insertCount - 1; - if (from in O) O[to] = O[from];else delete O[to]; - } - } - - for (k = 0; k < insertCount; k++) { - O[k + actualStart] = arguments[k + 2]; - } - - O.length = len - actualDeleteCount + insertCount; - return A; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.now.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.now.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsDateNowJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); // `Date.now` method - // https://tc39.github.io/ecma262/#sec-date.now - - - $({ - target: 'Date', - stat: true - }, { - now: function now() { - return new Date().getTime(); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-iso-string.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-iso-string.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsDateToIsoStringJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var toISOString = __webpack_require__( - /*! ../internals/date-to-iso-string */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/date-to-iso-string.js"); // `Date.prototype.toISOString` method - // https://tc39.github.io/ecma262/#sec-date.prototype.toisostring - // PhantomJS / old WebKit has a broken implementations - - - $({ - target: 'Date', - proto: true, - forced: Date.prototype.toISOString !== toISOString - }, { - toISOString: toISOString - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-json.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-json.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsDateToJsonJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - - var FORCED = fails(function () { - return new Date(NaN).toJSON() !== null || Date.prototype.toJSON.call({ - toISOString: function toISOString() { - return 1; - } - }) !== 1; - }); // `Date.prototype.toJSON` method - // https://tc39.github.io/ecma262/#sec-date.prototype.tojson - - $({ - target: 'Date', - proto: true, - forced: FORCED - }, { - // eslint-disable-next-line no-unused-vars - toJSON: function toJSON(key) { - var O = toObject(this); - var pv = toPrimitive(O); - return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString(); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-primitive.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-primitive.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsDateToPrimitiveJs(module, exports, __webpack_require__) { - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var dateToPrimitive = __webpack_require__( - /*! ../internals/date-to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/date-to-primitive.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); - var DatePrototype = Date.prototype; // `Date.prototype[@@toPrimitive]` method - // https://tc39.github.io/ecma262/#sec-date.prototype-@@toprimitive - - if (!(TO_PRIMITIVE in DatePrototype)) { - createNonEnumerableProperty(DatePrototype, TO_PRIMITIVE, dateToPrimitive); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-string.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-string.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsDateToStringJs(module, exports, __webpack_require__) { - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var DatePrototype = Date.prototype; - var INVALID_DATE = 'Invalid Date'; - var TO_STRING = 'toString'; - var nativeDateToString = DatePrototype[TO_STRING]; - var getTime = DatePrototype.getTime; // `Date.prototype.toString` method - // https://tc39.github.io/ecma262/#sec-date.prototype.tostring - - if (new Date(NaN) + '' != INVALID_DATE) { - redefine(DatePrototype, TO_STRING, function toString() { - var value = getTime.call(this); // eslint-disable-next-line no-self-compare - - return value === value ? nativeDateToString.call(this) : INVALID_DATE; - }); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.bind.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.bind.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsFunctionBindJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var bind = __webpack_require__( - /*! ../internals/function-bind */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind.js"); // `Function.prototype.bind` method - // https://tc39.github.io/ecma262/#sec-function.prototype.bind - - - $({ - target: 'Function', - proto: true - }, { - bind: bind - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.has-instance.js": - /*!*************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.has-instance.js ***! - \*************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsFunctionHasInstanceJs(module, exports, __webpack_require__) { - "use strict"; - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var HAS_INSTANCE = wellKnownSymbol('hasInstance'); - var FunctionPrototype = Function.prototype; // `Function.prototype[@@hasInstance]` method - // https://tc39.github.io/ecma262/#sec-function.prototype-@@hasinstance - - if (!(HAS_INSTANCE in FunctionPrototype)) { - definePropertyModule.f(FunctionPrototype, HAS_INSTANCE, { - value: function value(O) { - if (typeof this != 'function' || !isObject(O)) return false; - if (!isObject(this.prototype)) return O instanceof this; // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this: - - while (O = getPrototypeOf(O)) { - if (this.prototype === O) return true; - } - - return false; - } - }); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.name.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.name.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsFunctionNameJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; - - var FunctionPrototype = Function.prototype; - var FunctionPrototypeToString = FunctionPrototype.toString; - var nameRE = /^\s*function ([^ (]*)/; - var NAME = 'name'; // Function instances `.name` property - // https://tc39.github.io/ecma262/#sec-function-instances-name - - if (DESCRIPTORS && !(NAME in FunctionPrototype)) { - defineProperty(FunctionPrototype, NAME, { - configurable: true, - get: function get() { - try { - return FunctionPrototypeToString.call(this).match(nameRE)[1]; - } catch (error) { - return ''; - } - } - }); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.json.to-string-tag.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.json.to-string-tag.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsJsonToStringTagJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); // JSON[@@toStringTag] property - // https://tc39.github.io/ecma262/#sec-json-@@tostringtag - - - setToStringTag(global.JSON, 'JSON', true); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js": - /*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js ***! - \*******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMapJs(module, exports, __webpack_require__) { - "use strict"; - - var collection = __webpack_require__( - /*! ../internals/collection */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js"); - - var collectionStrong = __webpack_require__( - /*! ../internals/collection-strong */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js"); // `Map` constructor - // https://tc39.github.io/ecma262/#sec-map-objects - - - module.exports = collection('Map', function (init) { - return function Map() { - return init(this, arguments.length ? arguments[0] : undefined); - }; - }, collectionStrong); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.acosh.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.acosh.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathAcoshJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var log1p = __webpack_require__( - /*! ../internals/math-log1p */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-log1p.js"); - - var nativeAcosh = Math.acosh; - var log = Math.log; - var sqrt = Math.sqrt; - var LN2 = Math.LN2; - var FORCED = !nativeAcosh // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509 - || Math.floor(nativeAcosh(Number.MAX_VALUE)) != 710 // Tor Browser bug: Math.acosh(Infinity) -> NaN - || nativeAcosh(Infinity) != Infinity; // `Math.acosh` method - // https://tc39.github.io/ecma262/#sec-math.acosh - - $({ - target: 'Math', - stat: true, - forced: FORCED - }, { - acosh: function acosh(x) { - return (x = +x) < 1 ? NaN : x > 94906265.62425156 ? log(x) + LN2 : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1)); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.asinh.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.asinh.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathAsinhJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var nativeAsinh = Math.asinh; - var log = Math.log; - var sqrt = Math.sqrt; - - function asinh(x) { - return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : log(x + sqrt(x * x + 1)); - } // `Math.asinh` method - // https://tc39.github.io/ecma262/#sec-math.asinh - // Tor Browser bug: Math.asinh(0) -> -0 - - - $({ - target: 'Math', - stat: true, - forced: !(nativeAsinh && 1 / nativeAsinh(0) > 0) - }, { - asinh: asinh - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.atanh.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.atanh.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathAtanhJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var nativeAtanh = Math.atanh; - var log = Math.log; // `Math.atanh` method - // https://tc39.github.io/ecma262/#sec-math.atanh - // Tor Browser bug: Math.atanh(-0) -> 0 - - $({ - target: 'Math', - stat: true, - forced: !(nativeAtanh && 1 / nativeAtanh(-0) < 0) - }, { - atanh: function atanh(x) { - return (x = +x) == 0 ? x : log((1 + x) / (1 - x)) / 2; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.cbrt.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.cbrt.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathCbrtJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var sign = __webpack_require__( - /*! ../internals/math-sign */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-sign.js"); - - var abs = Math.abs; - var pow = Math.pow; // `Math.cbrt` method - // https://tc39.github.io/ecma262/#sec-math.cbrt - - $({ - target: 'Math', - stat: true - }, { - cbrt: function cbrt(x) { - return sign(x = +x) * pow(abs(x), 1 / 3); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.clz32.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.clz32.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathClz32Js(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var floor = Math.floor; - var log = Math.log; - var LOG2E = Math.LOG2E; // `Math.clz32` method - // https://tc39.github.io/ecma262/#sec-math.clz32 - - $({ - target: 'Math', - stat: true - }, { - clz32: function clz32(x) { - return (x >>>= 0) ? 31 - floor(log(x + 0.5) * LOG2E) : 32; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.cosh.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.cosh.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathCoshJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var expm1 = __webpack_require__( - /*! ../internals/math-expm1 */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-expm1.js"); - - var nativeCosh = Math.cosh; - var abs = Math.abs; - var E = Math.E; // `Math.cosh` method - // https://tc39.github.io/ecma262/#sec-math.cosh - - $({ - target: 'Math', - stat: true, - forced: !nativeCosh || nativeCosh(710) === Infinity - }, { - cosh: function cosh(x) { - var t = expm1(abs(x) - 1) + 1; - return (t + 1 / (t * E * E)) * (E / 2); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.expm1.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.expm1.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathExpm1Js(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var expm1 = __webpack_require__( - /*! ../internals/math-expm1 */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-expm1.js"); // `Math.expm1` method - // https://tc39.github.io/ecma262/#sec-math.expm1 - - - $({ - target: 'Math', - stat: true, - forced: expm1 != Math.expm1 - }, { - expm1: expm1 - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.fround.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.fround.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathFroundJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fround = __webpack_require__( - /*! ../internals/math-fround */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-fround.js"); // `Math.fround` method - // https://tc39.github.io/ecma262/#sec-math.fround - - - $({ - target: 'Math', - stat: true - }, { - fround: fround - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.hypot.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.hypot.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathHypotJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $hypot = Math.hypot; - var abs = Math.abs; - var sqrt = Math.sqrt; // Chrome 77 bug - // https://bugs.chromium.org/p/v8/issues/detail?id=9546 - - var BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity; // `Math.hypot` method - // https://tc39.github.io/ecma262/#sec-math.hypot - - $({ - target: 'Math', - stat: true, - forced: BUGGY - }, { - hypot: function hypot(value1, value2) { - // eslint-disable-line no-unused-vars - var sum = 0; - var i = 0; - var aLen = arguments.length; - var larg = 0; - var arg, div; - - while (i < aLen) { - arg = abs(arguments[i++]); - - if (larg < arg) { - div = larg / arg; - sum = sum * div * div + 1; - larg = arg; - } else if (arg > 0) { - div = arg / larg; - sum += div * div; - } else sum += arg; - } - - return larg === Infinity ? Infinity : larg * sqrt(sum); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.imul.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.imul.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathImulJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var nativeImul = Math.imul; - var FORCED = fails(function () { - return nativeImul(0xFFFFFFFF, 5) != -5 || nativeImul.length != 2; - }); // `Math.imul` method - // https://tc39.github.io/ecma262/#sec-math.imul - // some WebKit versions fails with big numbers, some has wrong arity - - $({ - target: 'Math', - stat: true, - forced: FORCED - }, { - imul: function imul(x, y) { - var UINT16 = 0xFFFF; - var xn = +x; - var yn = +y; - var xl = UINT16 & xn; - var yl = UINT16 & yn; - return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log10.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log10.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathLog10Js(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var log = Math.log; - var LOG10E = Math.LOG10E; // `Math.log10` method - // https://tc39.github.io/ecma262/#sec-math.log10 - - $({ - target: 'Math', - stat: true - }, { - log10: function log10(x) { - return log(x) * LOG10E; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log1p.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log1p.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathLog1pJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var log1p = __webpack_require__( - /*! ../internals/math-log1p */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-log1p.js"); // `Math.log1p` method - // https://tc39.github.io/ecma262/#sec-math.log1p - - - $({ - target: 'Math', - stat: true - }, { - log1p: log1p - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log2.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log2.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathLog2Js(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var log = Math.log; - var LN2 = Math.LN2; // `Math.log2` method - // https://tc39.github.io/ecma262/#sec-math.log2 - - $({ - target: 'Math', - stat: true - }, { - log2: function log2(x) { - return log(x) / LN2; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.sign.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.sign.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathSignJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var sign = __webpack_require__( - /*! ../internals/math-sign */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-sign.js"); // `Math.sign` method - // https://tc39.github.io/ecma262/#sec-math.sign - - - $({ - target: 'Math', - stat: true - }, { - sign: sign - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.sinh.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.sinh.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathSinhJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var expm1 = __webpack_require__( - /*! ../internals/math-expm1 */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-expm1.js"); - - var abs = Math.abs; - var exp = Math.exp; - var E = Math.E; - var FORCED = fails(function () { - return Math.sinh(-2e-17) != -2e-17; - }); // `Math.sinh` method - // https://tc39.github.io/ecma262/#sec-math.sinh - // V8 near Chromium 38 has a problem with very small numbers - - $({ - target: 'Math', - stat: true, - forced: FORCED - }, { - sinh: function sinh(x) { - return abs(x = +x) < 1 ? (expm1(x) - expm1(-x)) / 2 : (exp(x - 1) - exp(-x - 1)) * (E / 2); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.tanh.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.tanh.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathTanhJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var expm1 = __webpack_require__( - /*! ../internals/math-expm1 */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-expm1.js"); - - var exp = Math.exp; // `Math.tanh` method - // https://tc39.github.io/ecma262/#sec-math.tanh - - $({ - target: 'Math', - stat: true - }, { - tanh: function tanh(x) { - var a = expm1(x = +x); - var b = expm1(-x); - return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x)); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.to-string-tag.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.to-string-tag.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathToStringTagJs(module, exports, __webpack_require__) { - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); // Math[@@toStringTag] property - // https://tc39.github.io/ecma262/#sec-math-@@tostringtag - - - setToStringTag(Math, 'Math', true); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.trunc.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.trunc.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsMathTruncJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ceil = Math.ceil; - var floor = Math.floor; // `Math.trunc` method - // https://tc39.github.io/ecma262/#sec-math.trunc - - $({ - target: 'Math', - stat: true - }, { - trunc: function trunc(it) { - return (it > 0 ? floor : ceil)(it); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.constructor.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.constructor.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberConstructorJs(module, exports, __webpack_require__) { - "use strict"; - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var isForced = __webpack_require__( - /*! ../internals/is-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - - var inheritIfRequired = __webpack_require__( - /*! ../internals/inherit-if-required */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js"); - - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var create = __webpack_require__( - /*! ../internals/object-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); - - var getOwnPropertyNames = __webpack_require__( - /*! ../internals/object-get-own-property-names */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js").f; - - var getOwnPropertyDescriptor = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js").f; - - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; - - var trim = __webpack_require__( - /*! ../internals/string-trim */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim.js").trim; - - var NUMBER = 'Number'; - var NativeNumber = global[NUMBER]; - var NumberPrototype = NativeNumber.prototype; // Opera ~12 has broken Object#toString - - var BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER; // `ToNumber` abstract operation - // https://tc39.github.io/ecma262/#sec-tonumber - - var toNumber = function toNumber(argument) { - var it = toPrimitive(argument, false); - var first, third, radix, maxCode, digits, length, index, code; - - if (typeof it == 'string' && it.length > 2) { - it = trim(it); - first = it.charCodeAt(0); - - if (first === 43 || first === 45) { - third = it.charCodeAt(2); - if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix - } else if (first === 48) { - switch (it.charCodeAt(1)) { - case 66: - case 98: - radix = 2; - maxCode = 49; - break; - // fast equal of /^0b[01]+$/i - - case 79: - case 111: - radix = 8; - maxCode = 55; - break; - // fast equal of /^0o[0-7]+$/i - - default: - return +it; - } - - digits = it.slice(2); - length = digits.length; - - for (index = 0; index < length; index++) { - code = digits.charCodeAt(index); // parseInt parses a string to a first unavailable symbol - // but ToNumber should return NaN if a string contains unavailable symbols - - if (code < 48 || code > maxCode) return NaN; - } - - return parseInt(digits, radix); - } - } - - return +it; - }; // `Number` constructor - // https://tc39.github.io/ecma262/#sec-number-constructor - - - if (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) { - var NumberWrapper = function Number(value) { - var it = arguments.length < 1 ? 0 : value; - var dummy = this; - return dummy instanceof NumberWrapper // check on 1..constructor(foo) case - && (BROKEN_CLASSOF ? fails(function () { - NumberPrototype.valueOf.call(dummy); - }) : classof(dummy) != NUMBER) ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it); - }; - - for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : ( // ES3: - 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + // ES2015 (in case, if modules with ES2015 Number statics required before): - 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' + 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger').split(','), j = 0, key; keys.length > j; j++) { - if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) { - defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key)); - } - } - - NumberWrapper.prototype = NumberPrototype; - NumberPrototype.constructor = NumberWrapper; - redefine(global, NUMBER, NumberWrapper); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.epsilon.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.epsilon.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberEpsilonJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); // `Number.EPSILON` constant - // https://tc39.github.io/ecma262/#sec-number.epsilon - - - $({ - target: 'Number', - stat: true - }, { - EPSILON: Math.pow(2, -52) - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-finite.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-finite.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberIsFiniteJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var numberIsFinite = __webpack_require__( - /*! ../internals/number-is-finite */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-is-finite.js"); // `Number.isFinite` method - // https://tc39.github.io/ecma262/#sec-number.isfinite - - - $({ - target: 'Number', - stat: true - }, { - isFinite: numberIsFinite - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-integer.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-integer.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberIsIntegerJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var isInteger = __webpack_require__( - /*! ../internals/is-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-integer.js"); // `Number.isInteger` method - // https://tc39.github.io/ecma262/#sec-number.isinteger - - - $({ - target: 'Number', - stat: true - }, { - isInteger: isInteger - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-nan.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-nan.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberIsNanJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); // `Number.isNaN` method - // https://tc39.github.io/ecma262/#sec-number.isnan - - - $({ - target: 'Number', - stat: true - }, { - isNaN: function isNaN(number) { - // eslint-disable-next-line no-self-compare - return number != number; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-safe-integer.js": - /*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-safe-integer.js ***! - \**************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberIsSafeIntegerJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var isInteger = __webpack_require__( - /*! ../internals/is-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-integer.js"); - - var abs = Math.abs; // `Number.isSafeInteger` method - // https://tc39.github.io/ecma262/#sec-number.issafeinteger - - $({ - target: 'Number', - stat: true - }, { - isSafeInteger: function isSafeInteger(number) { - return isInteger(number) && abs(number) <= 0x1FFFFFFFFFFFFF; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.max-safe-integer.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.max-safe-integer.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberMaxSafeIntegerJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); // `Number.MAX_SAFE_INTEGER` constant - // https://tc39.github.io/ecma262/#sec-number.max_safe_integer - - - $({ - target: 'Number', - stat: true - }, { - MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.min-safe-integer.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.min-safe-integer.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberMinSafeIntegerJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); // `Number.MIN_SAFE_INTEGER` constant - // https://tc39.github.io/ecma262/#sec-number.min_safe_integer - - - $({ - target: 'Number', - stat: true - }, { - MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.parse-float.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.parse-float.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberParseFloatJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var parseFloat = __webpack_require__( - /*! ../internals/number-parse-float */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-float.js"); // `Number.parseFloat` method - // https://tc39.github.io/ecma262/#sec-number.parseFloat - - - $({ - target: 'Number', - stat: true, - forced: Number.parseFloat != parseFloat - }, { - parseFloat: parseFloat - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.parse-int.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.parse-int.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberParseIntJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var parseInt = __webpack_require__( - /*! ../internals/number-parse-int */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-int.js"); // `Number.parseInt` method - // https://tc39.github.io/ecma262/#sec-number.parseint - - - $({ - target: 'Number', - stat: true, - forced: Number.parseInt != parseInt - }, { - parseInt: parseInt - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.to-fixed.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.to-fixed.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberToFixedJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - - var thisNumberValue = __webpack_require__( - /*! ../internals/this-number-value */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/this-number-value.js"); - - var repeat = __webpack_require__( - /*! ../internals/string-repeat */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-repeat.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var nativeToFixed = 1.0.toFixed; - var floor = Math.floor; - - var pow = function pow(x, n, acc) { - return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc); - }; - - var log = function log(x) { - var n = 0; - var x2 = x; - - while (x2 >= 4096) { - n += 12; - x2 /= 4096; - } - - while (x2 >= 2) { - n += 1; - x2 /= 2; - } - - return n; - }; - - var FORCED = nativeToFixed && (0.00008.toFixed(3) !== '0.000' || 0.9.toFixed(0) !== '1' || 1.255.toFixed(2) !== '1.25' || 1000000000000000128.0.toFixed(0) !== '1000000000000000128') || !fails(function () { - // V8 ~ Android 4.3- - nativeToFixed.call({}); - }); // `Number.prototype.toFixed` method - // https://tc39.github.io/ecma262/#sec-number.prototype.tofixed - - $({ - target: 'Number', - proto: true, - forced: FORCED - }, { - // eslint-disable-next-line max-statements - toFixed: function toFixed(fractionDigits) { - var number = thisNumberValue(this); - var fractDigits = toInteger(fractionDigits); - var data = [0, 0, 0, 0, 0, 0]; - var sign = ''; - var result = '0'; - var e, z, j, k; - - var multiply = function multiply(n, c) { - var index = -1; - var c2 = c; - - while (++index < 6) { - c2 += n * data[index]; - data[index] = c2 % 1e7; - c2 = floor(c2 / 1e7); - } - }; - - var divide = function divide(n) { - var index = 6; - var c = 0; - - while (--index >= 0) { - c += data[index]; - data[index] = floor(c / n); - c = c % n * 1e7; - } - }; - - var dataToString = function dataToString() { - var index = 6; - var s = ''; - - while (--index >= 0) { - if (s !== '' || index === 0 || data[index] !== 0) { - var t = String(data[index]); - s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t; - } - } - - return s; - }; - - if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits'); // eslint-disable-next-line no-self-compare - - if (number != number) return 'NaN'; - if (number <= -1e21 || number >= 1e21) return String(number); - - if (number < 0) { - sign = '-'; - number = -number; - } - - if (number > 1e-21) { - e = log(number * pow(2, 69, 1)) - 69; - z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1); - z *= 0x10000000000000; - e = 52 - e; - - if (e > 0) { - multiply(0, z); - j = fractDigits; - - while (j >= 7) { - multiply(1e7, 0); - j -= 7; - } - - multiply(pow(10, j, 1), 0); - j = e - 1; - - while (j >= 23) { - divide(1 << 23); - j -= 23; - } - - divide(1 << j); - multiply(1, 1); - divide(2); - result = dataToString(); - } else { - multiply(0, z); - multiply(1 << -e, 0); - result = dataToString() + repeat.call('0', fractDigits); - } - } - - if (fractDigits > 0) { - k = result.length; - result = sign + (k <= fractDigits ? '0.' + repeat.call('0', fractDigits - k) + result : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits)); - } else { - result = sign + result; - } - - return result; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.to-precision.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.to-precision.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsNumberToPrecisionJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var thisNumberValue = __webpack_require__( - /*! ../internals/this-number-value */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/this-number-value.js"); - - var nativeToPrecision = 1.0.toPrecision; - var FORCED = fails(function () { - // IE7- - return nativeToPrecision.call(1, undefined) !== '1'; - }) || !fails(function () { - // V8 ~ Android 4.3- - nativeToPrecision.call({}); - }); // `Number.prototype.toPrecision` method - // https://tc39.github.io/ecma262/#sec-number.prototype.toprecision - - $({ - target: 'Number', - proto: true, - forced: FORCED - }, { - toPrecision: function toPrecision(precision) { - return precision === undefined ? nativeToPrecision.call(thisNumberValue(this)) : nativeToPrecision.call(thisNumberValue(this), precision); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.assign.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.assign.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectAssignJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var assign = __webpack_require__( - /*! ../internals/object-assign */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-assign.js"); // `Object.assign` method - // https://tc39.github.io/ecma262/#sec-object.assign - - - $({ - target: 'Object', - stat: true, - forced: Object.assign !== assign - }, { - assign: assign - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.create.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.create.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectCreateJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var create = __webpack_require__( - /*! ../internals/object-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); // `Object.create` method - // https://tc39.github.io/ecma262/#sec-object.create - - - $({ - target: 'Object', - stat: true, - sham: !DESCRIPTORS - }, { - create: create - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.define-properties.js": - /*!****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.define-properties.js ***! - \****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectDefinePropertiesJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var defineProperties = __webpack_require__( - /*! ../internals/object-define-properties */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js"); // `Object.defineProperties` method - // https://tc39.github.io/ecma262/#sec-object.defineproperties - - - $({ - target: 'Object', - stat: true, - forced: !DESCRIPTORS, - sham: !DESCRIPTORS - }, { - defineProperties: defineProperties - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.define-property.js": - /*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.define-property.js ***! - \**************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectDefinePropertyJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var objectDefinePropertyModile = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); // `Object.defineProperty` method - // https://tc39.github.io/ecma262/#sec-object.defineproperty - - - $({ - target: 'Object', - stat: true, - forced: !DESCRIPTORS, - sham: !DESCRIPTORS - }, { - defineProperty: objectDefinePropertyModile.f - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.freeze.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.freeze.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectFreezeJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var FREEZING = __webpack_require__( - /*! ../internals/freezing */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var onFreeze = __webpack_require__( - /*! ../internals/internal-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js").onFreeze; - - var nativeFreeze = Object.freeze; - var FAILS_ON_PRIMITIVES = fails(function () { - nativeFreeze(1); - }); // `Object.freeze` method - // https://tc39.github.io/ecma262/#sec-object.freeze - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES, - sham: !FREEZING - }, { - freeze: function freeze(it) { - return nativeFreeze && isObject(it) ? nativeFreeze(onFreeze(it)) : it; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-own-property-descriptor.js": - /*!**************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-own-property-descriptor.js ***! - \**************************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectGetOwnPropertyDescriptorJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var nativeGetOwnPropertyDescriptor = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js").f; - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var FAILS_ON_PRIMITIVES = fails(function () { - nativeGetOwnPropertyDescriptor(1); - }); - var FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES; // `Object.getOwnPropertyDescriptor` method - // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor - - $({ - target: 'Object', - stat: true, - forced: FORCED, - sham: !DESCRIPTORS - }, { - getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) { - return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-own-property-names.js": - /*!*********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-own-property-names.js ***! - \*********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectGetOwnPropertyNamesJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var nativeGetOwnPropertyNames = __webpack_require__( - /*! ../internals/object-get-own-property-names-external */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names-external.js").f; - - var FAILS_ON_PRIMITIVES = fails(function () { - return !Object.getOwnPropertyNames(1); - }); // `Object.getOwnPropertyNames` method - // https://tc39.github.io/ecma262/#sec-object.getownpropertynames - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES - }, { - getOwnPropertyNames: nativeGetOwnPropertyNames - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-prototype-of.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-prototype-of.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectGetPrototypeOfJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var nativeGetPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var CORRECT_PROTOTYPE_GETTER = __webpack_require__( - /*! ../internals/correct-prototype-getter */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js"); - - var FAILS_ON_PRIMITIVES = fails(function () { - nativeGetPrototypeOf(1); - }); // `Object.getPrototypeOf` method - // https://tc39.github.io/ecma262/#sec-object.getprototypeof - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES, - sham: !CORRECT_PROTOTYPE_GETTER - }, { - getPrototypeOf: function getPrototypeOf(it) { - return nativeGetPrototypeOf(toObject(it)); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-extensible.js": - /*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-extensible.js ***! - \************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectIsExtensibleJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var nativeIsExtensible = Object.isExtensible; - var FAILS_ON_PRIMITIVES = fails(function () { - nativeIsExtensible(1); - }); // `Object.isExtensible` method - // https://tc39.github.io/ecma262/#sec-object.isextensible - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES - }, { - isExtensible: function isExtensible(it) { - return isObject(it) ? nativeIsExtensible ? nativeIsExtensible(it) : true : false; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-frozen.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-frozen.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectIsFrozenJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var nativeIsFrozen = Object.isFrozen; - var FAILS_ON_PRIMITIVES = fails(function () { - nativeIsFrozen(1); - }); // `Object.isFrozen` method - // https://tc39.github.io/ecma262/#sec-object.isfrozen - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES - }, { - isFrozen: function isFrozen(it) { - return isObject(it) ? nativeIsFrozen ? nativeIsFrozen(it) : false : true; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-sealed.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-sealed.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectIsSealedJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var nativeIsSealed = Object.isSealed; - var FAILS_ON_PRIMITIVES = fails(function () { - nativeIsSealed(1); - }); // `Object.isSealed` method - // https://tc39.github.io/ecma262/#sec-object.issealed - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES - }, { - isSealed: function isSealed(it) { - return isObject(it) ? nativeIsSealed ? nativeIsSealed(it) : false : true; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectIsJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var is = __webpack_require__( - /*! ../internals/same-value */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/same-value.js"); // `Object.is` method - // https://tc39.github.io/ecma262/#sec-object.is - - - $({ - target: 'Object', - stat: true - }, { - is: is - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.keys.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.keys.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectKeysJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var nativeKeys = __webpack_require__( - /*! ../internals/object-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var FAILS_ON_PRIMITIVES = fails(function () { - nativeKeys(1); - }); // `Object.keys` method - // https://tc39.github.io/ecma262/#sec-object.keys - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES - }, { - keys: function keys(it) { - return nativeKeys(toObject(it)); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.prevent-extensions.js": - /*!*****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.prevent-extensions.js ***! - \*****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectPreventExtensionsJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var onFreeze = __webpack_require__( - /*! ../internals/internal-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js").onFreeze; - - var FREEZING = __webpack_require__( - /*! ../internals/freezing */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var nativePreventExtensions = Object.preventExtensions; - var FAILS_ON_PRIMITIVES = fails(function () { - nativePreventExtensions(1); - }); // `Object.preventExtensions` method - // https://tc39.github.io/ecma262/#sec-object.preventextensions - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES, - sham: !FREEZING - }, { - preventExtensions: function preventExtensions(it) { - return nativePreventExtensions && isObject(it) ? nativePreventExtensions(onFreeze(it)) : it; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.seal.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.seal.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectSealJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var onFreeze = __webpack_require__( - /*! ../internals/internal-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js").onFreeze; - - var FREEZING = __webpack_require__( - /*! ../internals/freezing */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var nativeSeal = Object.seal; - var FAILS_ON_PRIMITIVES = fails(function () { - nativeSeal(1); - }); // `Object.seal` method - // https://tc39.github.io/ecma262/#sec-object.seal - - $({ - target: 'Object', - stat: true, - forced: FAILS_ON_PRIMITIVES, - sham: !FREEZING - }, { - seal: function seal(it) { - return nativeSeal && isObject(it) ? nativeSeal(onFreeze(it)) : it; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.set-prototype-of.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.set-prototype-of.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectSetPrototypeOfJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var setPrototypeOf = __webpack_require__( - /*! ../internals/object-set-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js"); // `Object.setPrototypeOf` method - // https://tc39.github.io/ecma262/#sec-object.setprototypeof - - - $({ - target: 'Object', - stat: true - }, { - setPrototypeOf: setPrototypeOf - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.to-string.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.to-string.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsObjectToStringJs(module, exports, __webpack_require__) { - var TO_STRING_TAG_SUPPORT = __webpack_require__( - /*! ../internals/to-string-tag-support */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var toString = __webpack_require__( - /*! ../internals/object-to-string */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-to-string.js"); // `Object.prototype.toString` method - // https://tc39.github.io/ecma262/#sec-object.prototype.tostring - - - if (!TO_STRING_TAG_SUPPORT) { - redefine(Object.prototype, 'toString', toString, { - unsafe: true - }); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.parse-float.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.parse-float.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsParseFloatJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var parseFloatImplementation = __webpack_require__( - /*! ../internals/number-parse-float */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-float.js"); // `parseFloat` method - // https://tc39.github.io/ecma262/#sec-parsefloat-string - - - $({ - global: true, - forced: parseFloat != parseFloatImplementation - }, { - parseFloat: parseFloatImplementation - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.parse-int.js": - /*!*************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.parse-int.js ***! - \*************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsParseIntJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var parseIntImplementation = __webpack_require__( - /*! ../internals/number-parse-int */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-int.js"); // `parseInt` method - // https://tc39.github.io/ecma262/#sec-parseint-string-radix - - - $({ - global: true, - forced: parseInt != parseIntImplementation - }, { - parseInt: parseIntImplementation - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.promise.js": - /*!***********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.promise.js ***! - \***********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsPromiseJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - var NativePromise = __webpack_require__( - /*! ../internals/native-promise-constructor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-promise-constructor.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var redefineAll = __webpack_require__( - /*! ../internals/redefine-all */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js"); - - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); - - var setSpecies = __webpack_require__( - /*! ../internals/set-species */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - - var anInstance = __webpack_require__( - /*! ../internals/an-instance */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js"); - - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js"); - - var inspectSource = __webpack_require__( - /*! ../internals/inspect-source */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js"); - - var iterate = __webpack_require__( - /*! ../internals/iterate */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); - - var checkCorrectnessOfIteration = __webpack_require__( - /*! ../internals/check-correctness-of-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js"); - - var speciesConstructor = __webpack_require__( - /*! ../internals/species-constructor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/species-constructor.js"); - - var task = __webpack_require__( - /*! ../internals/task */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/task.js").set; - - var microtask = __webpack_require__( - /*! ../internals/microtask */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/microtask.js"); - - var promiseResolve = __webpack_require__( - /*! ../internals/promise-resolve */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/promise-resolve.js"); - - var hostReportErrors = __webpack_require__( - /*! ../internals/host-report-errors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/host-report-errors.js"); - - var newPromiseCapabilityModule = __webpack_require__( - /*! ../internals/new-promise-capability */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/new-promise-capability.js"); - - var perform = __webpack_require__( - /*! ../internals/perform */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/perform.js"); - - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - - var isForced = __webpack_require__( - /*! ../internals/is-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var V8_VERSION = __webpack_require__( - /*! ../internals/engine-v8-version */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-v8-version.js"); - - var SPECIES = wellKnownSymbol('species'); - var PROMISE = 'Promise'; - var getInternalState = InternalStateModule.get; - var setInternalState = InternalStateModule.set; - var getInternalPromiseState = InternalStateModule.getterFor(PROMISE); - var PromiseConstructor = NativePromise; - var TypeError = global.TypeError; - var document = global.document; - var process = global.process; - var $fetch = getBuiltIn('fetch'); - var newPromiseCapability = newPromiseCapabilityModule.f; - var newGenericPromiseCapability = newPromiseCapability; - var IS_NODE = classof(process) == 'process'; - var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent); - var UNHANDLED_REJECTION = 'unhandledrejection'; - var REJECTION_HANDLED = 'rejectionhandled'; - var PENDING = 0; - var FULFILLED = 1; - var REJECTED = 2; - var HANDLED = 1; - var UNHANDLED = 2; - var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; - var FORCED = isForced(PROMISE, function () { - var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor); - - if (!GLOBAL_CORE_JS_PROMISE) { - // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables - // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 - // We can't detect it synchronously, so just check versions - if (V8_VERSION === 66) return true; // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test - - if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true; - } // We need Promise#finally in the pure version for preventing prototype pollution - - - if (IS_PURE && !PromiseConstructor.prototype['finally']) return true; // We can't use @@species feature detection in V8 since it causes - // deoptimization and performance degradation - // https://github.com/zloirock/core-js/issues/679 - - if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false; // Detect correctness of subclassing with @@species support - - var promise = PromiseConstructor.resolve(1); - - var FakePromise = function FakePromise(exec) { - exec(function () { - /* empty */ - }, function () { - /* empty */ - }); - }; - - var constructor = promise.constructor = {}; - constructor[SPECIES] = FakePromise; - return !(promise.then(function () { - /* empty */ - }) instanceof FakePromise); - }); - var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) { - PromiseConstructor.all(iterable)['catch'](function () { - /* empty */ - }); - }); // helpers - - var isThenable = function isThenable(it) { - var then; - return isObject(it) && typeof (then = it.then) == 'function' ? then : false; - }; - - var notify = function notify(promise, state, isReject) { - if (state.notified) return; - state.notified = true; - var chain = state.reactions; - microtask(function () { - var value = state.value; - var ok = state.state == FULFILLED; - var index = 0; // variable length - can't use forEach - - while (chain.length > index) { - var reaction = chain[index++]; - var handler = ok ? reaction.ok : reaction.fail; - var resolve = reaction.resolve; - var reject = reaction.reject; - var domain = reaction.domain; - var result, then, exited; - - try { - if (handler) { - if (!ok) { - if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state); - state.rejection = HANDLED; - } - - if (handler === true) result = value;else { - if (domain) domain.enter(); - result = handler(value); // can throw - - if (domain) { - domain.exit(); - exited = true; - } - } - - if (result === reaction.promise) { - reject(TypeError('Promise-chain cycle')); - } else if (then = isThenable(result)) { - then.call(result, resolve, reject); - } else resolve(result); - } else reject(value); - } catch (error) { - if (domain && !exited) domain.exit(); - reject(error); - } - } - - state.reactions = []; - state.notified = false; - if (isReject && !state.rejection) onUnhandled(promise, state); - }); - }; - - var dispatchEvent = function dispatchEvent(name, promise, reason) { - var event, handler; - - if (DISPATCH_EVENT) { - event = document.createEvent('Event'); - event.promise = promise; - event.reason = reason; - event.initEvent(name, false, true); - global.dispatchEvent(event); - } else event = { - promise: promise, - reason: reason - }; - - if (handler = global['on' + name]) handler(event);else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason); - }; - - var onUnhandled = function onUnhandled(promise, state) { - task.call(global, function () { - var value = state.value; - var IS_UNHANDLED = isUnhandled(state); - var result; - - if (IS_UNHANDLED) { - result = perform(function () { - if (IS_NODE) { - process.emit('unhandledRejection', value, promise); - } else dispatchEvent(UNHANDLED_REJECTION, promise, value); - }); // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should - - state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED; - if (result.error) throw result.value; - } - }); - }; - - var isUnhandled = function isUnhandled(state) { - return state.rejection !== HANDLED && !state.parent; - }; - - var onHandleUnhandled = function onHandleUnhandled(promise, state) { - task.call(global, function () { - if (IS_NODE) { - process.emit('rejectionHandled', promise); - } else dispatchEvent(REJECTION_HANDLED, promise, state.value); - }); - }; - - var bind = function bind(fn, promise, state, unwrap) { - return function (value) { - fn(promise, state, value, unwrap); - }; - }; - - var internalReject = function internalReject(promise, state, value, unwrap) { - if (state.done) return; - state.done = true; - if (unwrap) state = unwrap; - state.value = value; - state.state = REJECTED; - notify(promise, state, true); - }; - - var internalResolve = function internalResolve(promise, state, value, unwrap) { - if (state.done) return; - state.done = true; - if (unwrap) state = unwrap; - - try { - if (promise === value) throw TypeError("Promise can't be resolved itself"); - var then = isThenable(value); - - if (then) { - microtask(function () { - var wrapper = { - done: false - }; - - try { - then.call(value, bind(internalResolve, promise, wrapper, state), bind(internalReject, promise, wrapper, state)); - } catch (error) { - internalReject(promise, wrapper, error, state); - } - }); - } else { - state.value = value; - state.state = FULFILLED; - notify(promise, state, false); - } - } catch (error) { - internalReject(promise, { - done: false - }, error, state); - } - }; // constructor polyfill - - - if (FORCED) { - // 25.4.3.1 Promise(executor) - PromiseConstructor = function Promise(executor) { - anInstance(this, PromiseConstructor, PROMISE); - aFunction(executor); - Internal.call(this); - var state = getInternalState(this); - - try { - executor(bind(internalResolve, this, state), bind(internalReject, this, state)); - } catch (error) { - internalReject(this, state, error); - } - }; // eslint-disable-next-line no-unused-vars - - - Internal = function Promise(executor) { - setInternalState(this, { - type: PROMISE, - done: false, - notified: false, - parent: false, - reactions: [], - rejection: false, - state: PENDING, - value: undefined - }); - }; - - Internal.prototype = redefineAll(PromiseConstructor.prototype, { - // `Promise.prototype.then` method - // https://tc39.github.io/ecma262/#sec-promise.prototype.then - then: function then(onFulfilled, onRejected) { - var state = getInternalPromiseState(this); - var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor)); - reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; - reaction.fail = typeof onRejected == 'function' && onRejected; - reaction.domain = IS_NODE ? process.domain : undefined; - state.parent = true; - state.reactions.push(reaction); - if (state.state != PENDING) notify(this, state, false); - return reaction.promise; - }, - // `Promise.prototype.catch` method - // https://tc39.github.io/ecma262/#sec-promise.prototype.catch - 'catch': function _catch(onRejected) { - return this.then(undefined, onRejected); - } - }); - - OwnPromiseCapability = function OwnPromiseCapability() { - var promise = new Internal(); - var state = getInternalState(promise); - this.promise = promise; - this.resolve = bind(internalResolve, promise, state); - this.reject = bind(internalReject, promise, state); - }; - - newPromiseCapabilityModule.f = newPromiseCapability = function newPromiseCapability(C) { - return C === PromiseConstructor || C === PromiseWrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C); - }; - - if (!IS_PURE && typeof NativePromise == 'function') { - nativeThen = NativePromise.prototype.then; // wrap native Promise#then for native async functions - - redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) { - var that = this; - return new PromiseConstructor(function (resolve, reject) { - nativeThen.call(that, resolve, reject); - }).then(onFulfilled, onRejected); // https://github.com/zloirock/core-js/issues/640 - }, { - unsafe: true - }); // wrap fetch result - - if (typeof $fetch == 'function') $({ - global: true, - enumerable: true, - forced: true - }, { - // eslint-disable-next-line no-unused-vars - fetch: function fetch(input - /* , init */ - ) { - return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments)); - } - }); - } - } - - $({ - global: true, - wrap: true, - forced: FORCED - }, { - Promise: PromiseConstructor - }); - setToStringTag(PromiseConstructor, PROMISE, false, true); - setSpecies(PROMISE); - PromiseWrapper = getBuiltIn(PROMISE); // statics - - $({ - target: PROMISE, - stat: true, - forced: FORCED - }, { - // `Promise.reject` method - // https://tc39.github.io/ecma262/#sec-promise.reject - reject: function reject(r) { - var capability = newPromiseCapability(this); - capability.reject.call(undefined, r); - return capability.promise; - } - }); - $({ - target: PROMISE, - stat: true, - forced: IS_PURE || FORCED - }, { - // `Promise.resolve` method - // https://tc39.github.io/ecma262/#sec-promise.resolve - resolve: function resolve(x) { - return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x); - } - }); - $({ - target: PROMISE, - stat: true, - forced: INCORRECT_ITERATION - }, { - // `Promise.all` method - // https://tc39.github.io/ecma262/#sec-promise.all - all: function all(iterable) { - var C = this; - var capability = newPromiseCapability(C); - var resolve = capability.resolve; - var reject = capability.reject; - var result = perform(function () { - var $promiseResolve = aFunction(C.resolve); - var values = []; - var counter = 0; - var remaining = 1; - iterate(iterable, function (promise) { - var index = counter++; - var alreadyCalled = false; - values.push(undefined); - remaining++; - $promiseResolve.call(C, promise).then(function (value) { - if (alreadyCalled) return; - alreadyCalled = true; - values[index] = value; - --remaining || resolve(values); - }, reject); - }); - --remaining || resolve(values); - }); - if (result.error) reject(result.value); - return capability.promise; - }, - // `Promise.race` method - // https://tc39.github.io/ecma262/#sec-promise.race - race: function race(iterable) { - var C = this; - var capability = newPromiseCapability(C); - var reject = capability.reject; - var result = perform(function () { - var $promiseResolve = aFunction(C.resolve); - iterate(iterable, function (promise) { - $promiseResolve.call(C, promise).then(capability.resolve, reject); - }); - }); - if (result.error) reject(result.value); - return capability.promise; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.apply.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.apply.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectApplyJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var nativeApply = getBuiltIn('Reflect', 'apply'); - var functionApply = Function.apply; // MS Edge argumentsList argument is optional - - var OPTIONAL_ARGUMENTS_LIST = !fails(function () { - nativeApply(function () { - /* empty */ - }); - }); // `Reflect.apply` method - // https://tc39.github.io/ecma262/#sec-reflect.apply - - $({ - target: 'Reflect', - stat: true, - forced: OPTIONAL_ARGUMENTS_LIST - }, { - apply: function apply(target, thisArgument, argumentsList) { - aFunction(target); - anObject(argumentsList); - return nativeApply ? nativeApply(target, thisArgument, argumentsList) : functionApply.call(target, thisArgument, argumentsList); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.construct.js": - /*!*********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.construct.js ***! - \*********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectConstructJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var create = __webpack_require__( - /*! ../internals/object-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); - - var bind = __webpack_require__( - /*! ../internals/function-bind */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var nativeConstruct = getBuiltIn('Reflect', 'construct'); // `Reflect.construct` method - // https://tc39.github.io/ecma262/#sec-reflect.construct - // MS Edge supports only 2 arguments and argumentsList argument is optional - // FF Nightly sets third argument as `new.target`, but does not create `this` from it - - var NEW_TARGET_BUG = fails(function () { - function F() { - /* empty */ - } - - return !(nativeConstruct(function () { - /* empty */ - }, [], F) instanceof F); - }); - var ARGS_BUG = !fails(function () { - nativeConstruct(function () { - /* empty */ - }); - }); - var FORCED = NEW_TARGET_BUG || ARGS_BUG; - $({ - target: 'Reflect', - stat: true, - forced: FORCED, - sham: FORCED - }, { - construct: function construct(Target, args - /* , newTarget */ - ) { - aFunction(Target); - anObject(args); - var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]); - if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget); - - if (Target == newTarget) { - // w/o altered newTarget, optimization for 0-4 arguments - switch (args.length) { - case 0: - return new Target(); - - case 1: - return new Target(args[0]); - - case 2: - return new Target(args[0], args[1]); - - case 3: - return new Target(args[0], args[1], args[2]); - - case 4: - return new Target(args[0], args[1], args[2], args[3]); - } // w/o altered newTarget, lot of arguments case - - - var $args = [null]; - $args.push.apply($args, args); - return new (bind.apply(Target, $args))(); - } // with altered newTarget, not support built-in constructors - - - var proto = newTarget.prototype; - var instance = create(isObject(proto) ? proto : Object.prototype); - var result = Function.apply.call(Target, instance, args); - return isObject(result) ? result : instance; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.define-property.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.define-property.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectDefinePropertyJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); // MS Edge has broken Reflect.defineProperty - throwing instead of returning false - - - var ERROR_INSTEAD_OF_FALSE = fails(function () { - // eslint-disable-next-line no-undef - Reflect.defineProperty(definePropertyModule.f({}, 1, { - value: 1 - }), 1, { - value: 2 - }); - }); // `Reflect.defineProperty` method - // https://tc39.github.io/ecma262/#sec-reflect.defineproperty - - $({ - target: 'Reflect', - stat: true, - forced: ERROR_INSTEAD_OF_FALSE, - sham: !DESCRIPTORS - }, { - defineProperty: function defineProperty(target, propertyKey, attributes) { - anObject(target); - var key = toPrimitive(propertyKey, true); - anObject(attributes); - - try { - definePropertyModule.f(target, key, attributes); - return true; - } catch (error) { - return false; - } - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.delete-property.js": - /*!***************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.delete-property.js ***! - \***************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectDeletePropertyJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var getOwnPropertyDescriptor = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js").f; // `Reflect.deleteProperty` method - // https://tc39.github.io/ecma262/#sec-reflect.deleteproperty - - - $({ - target: 'Reflect', - stat: true - }, { - deleteProperty: function deleteProperty(target, propertyKey) { - var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey); - return descriptor && !descriptor.configurable ? false : delete target[propertyKey]; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js": - /*!***************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js ***! - \***************************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectGetOwnPropertyDescriptorJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var getOwnPropertyDescriptorModule = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js"); // `Reflect.getOwnPropertyDescriptor` method - // https://tc39.github.io/ecma262/#sec-reflect.getownpropertydescriptor - - - $({ - target: 'Reflect', - stat: true, - sham: !DESCRIPTORS - }, { - getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) { - return getOwnPropertyDescriptorModule.f(anObject(target), propertyKey); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get-prototype-of.js": - /*!****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get-prototype-of.js ***! - \****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectGetPrototypeOfJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var objectGetPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var CORRECT_PROTOTYPE_GETTER = __webpack_require__( - /*! ../internals/correct-prototype-getter */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js"); // `Reflect.getPrototypeOf` method - // https://tc39.github.io/ecma262/#sec-reflect.getprototypeof - - - $({ - target: 'Reflect', - stat: true, - sham: !CORRECT_PROTOTYPE_GETTER - }, { - getPrototypeOf: function getPrototypeOf(target) { - return objectGetPrototypeOf(anObject(target)); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectGetJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var getOwnPropertyDescriptorModule = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js"); - - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); // `Reflect.get` method - // https://tc39.github.io/ecma262/#sec-reflect.get - - - function get(target, propertyKey - /* , receiver */ - ) { - var receiver = arguments.length < 3 ? target : arguments[2]; - var descriptor, prototype; - if (anObject(target) === receiver) return target[propertyKey]; - if (descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey)) return has(descriptor, 'value') ? descriptor.value : descriptor.get === undefined ? undefined : descriptor.get.call(receiver); - if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver); - } - - $({ - target: 'Reflect', - stat: true - }, { - get: get - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.has.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.has.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectHasJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); // `Reflect.has` method - // https://tc39.github.io/ecma262/#sec-reflect.has - - - $({ - target: 'Reflect', - stat: true - }, { - has: function has(target, propertyKey) { - return propertyKey in target; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.is-extensible.js": - /*!*************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.is-extensible.js ***! - \*************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectIsExtensibleJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var objectIsExtensible = Object.isExtensible; // `Reflect.isExtensible` method - // https://tc39.github.io/ecma262/#sec-reflect.isextensible - - $({ - target: 'Reflect', - stat: true - }, { - isExtensible: function isExtensible(target) { - anObject(target); - return objectIsExtensible ? objectIsExtensible(target) : true; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.own-keys.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.own-keys.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectOwnKeysJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ownKeys = __webpack_require__( - /*! ../internals/own-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js"); // `Reflect.ownKeys` method - // https://tc39.github.io/ecma262/#sec-reflect.ownkeys - - - $({ - target: 'Reflect', - stat: true - }, { - ownKeys: ownKeys - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.prevent-extensions.js": - /*!******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.prevent-extensions.js ***! - \******************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectPreventExtensionsJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var FREEZING = __webpack_require__( - /*! ../internals/freezing */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js"); // `Reflect.preventExtensions` method - // https://tc39.github.io/ecma262/#sec-reflect.preventextensions - - - $({ - target: 'Reflect', - stat: true, - sham: !FREEZING - }, { - preventExtensions: function preventExtensions(target) { - anObject(target); - - try { - var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions'); - if (objectPreventExtensions) objectPreventExtensions(target); - return true; - } catch (error) { - return false; - } - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.set-prototype-of.js": - /*!****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.set-prototype-of.js ***! - \****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectSetPrototypeOfJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var aPossiblePrototype = __webpack_require__( - /*! ../internals/a-possible-prototype */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js"); - - var objectSetPrototypeOf = __webpack_require__( - /*! ../internals/object-set-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js"); // `Reflect.setPrototypeOf` method - // https://tc39.github.io/ecma262/#sec-reflect.setprototypeof - - - if (objectSetPrototypeOf) $({ - target: 'Reflect', - stat: true - }, { - setPrototypeOf: function setPrototypeOf(target, proto) { - anObject(target); - aPossiblePrototype(proto); - - try { - objectSetPrototypeOf(target, proto); - return true; - } catch (error) { - return false; - } - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.set.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.set.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsReflectSetJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var getOwnPropertyDescriptorModule = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js"); - - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); // `Reflect.set` method - // https://tc39.github.io/ecma262/#sec-reflect.set - - - function set(target, propertyKey, V - /* , receiver */ - ) { - var receiver = arguments.length < 4 ? target : arguments[3]; - var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey); - var existingDescriptor, prototype; - - if (!ownDescriptor) { - if (isObject(prototype = getPrototypeOf(target))) { - return set(prototype, propertyKey, V, receiver); - } - - ownDescriptor = createPropertyDescriptor(0); - } - - if (has(ownDescriptor, 'value')) { - if (ownDescriptor.writable === false || !isObject(receiver)) return false; - - if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) { - if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false; - existingDescriptor.value = V; - definePropertyModule.f(receiver, propertyKey, existingDescriptor); - } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V)); - - return true; - } - - return ownDescriptor.set === undefined ? false : (ownDescriptor.set.call(receiver, V), true); - } // MS Edge 17-18 Reflect.set allows setting the property to object - // with non-writable property on the prototype - - - var MS_EDGE_BUG = fails(function () { - var object = definePropertyModule.f({}, 'a', { - configurable: true - }); // eslint-disable-next-line no-undef - - return Reflect.set(getPrototypeOf(object), 'a', 1, object) !== false; - }); - $({ - target: 'Reflect', - stat: true, - forced: MS_EDGE_BUG - }, { - set: set - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.constructor.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.constructor.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsRegexpConstructorJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var isForced = __webpack_require__( - /*! ../internals/is-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js"); - - var inheritIfRequired = __webpack_require__( - /*! ../internals/inherit-if-required */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js"); - - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; - - var getOwnPropertyNames = __webpack_require__( - /*! ../internals/object-get-own-property-names */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js").f; - - var isRegExp = __webpack_require__( - /*! ../internals/is-regexp */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-regexp.js"); - - var getFlags = __webpack_require__( - /*! ../internals/regexp-flags */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-flags.js"); - - var stickyHelpers = __webpack_require__( - /*! ../internals/regexp-sticky-helpers */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-sticky-helpers.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var setInternalState = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js").set; - - var setSpecies = __webpack_require__( - /*! ../internals/set-species */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var MATCH = wellKnownSymbol('match'); - var NativeRegExp = global.RegExp; - var RegExpPrototype = NativeRegExp.prototype; - var re1 = /a/g; - var re2 = /a/g; // "new" should create a new object, old webkit bug - - var CORRECT_NEW = new NativeRegExp(re1) !== re1; - var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y; - var FORCED = DESCRIPTORS && isForced('RegExp', !CORRECT_NEW || UNSUPPORTED_Y || fails(function () { - re2[MATCH] = false; // RegExp constructor can alter flags and IsRegExp works correct with @@match - - return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i'; - })); // `RegExp` constructor - // https://tc39.github.io/ecma262/#sec-regexp-constructor - - if (FORCED) { - var RegExpWrapper = function RegExp(pattern, flags) { - var thisIsRegExp = this instanceof RegExpWrapper; - var patternIsRegExp = isRegExp(pattern); - var flagsAreUndefined = flags === undefined; - var sticky; - - if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) { - return pattern; - } - - if (CORRECT_NEW) { - if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source; - } else if (pattern instanceof RegExpWrapper) { - if (flagsAreUndefined) flags = getFlags.call(pattern); - pattern = pattern.source; - } - - if (UNSUPPORTED_Y) { - sticky = !!flags && flags.indexOf('y') > -1; - if (sticky) flags = flags.replace(/y/g, ''); - } - - var result = inheritIfRequired(CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper); - if (UNSUPPORTED_Y && sticky) setInternalState(result, { - sticky: sticky - }); - return result; - }; - - var proxy = function proxy(key) { - key in RegExpWrapper || defineProperty(RegExpWrapper, key, { - configurable: true, - get: function get() { - return NativeRegExp[key]; - }, - set: function set(it) { - NativeRegExp[key] = it; - } - }); - }; - - var keys = getOwnPropertyNames(NativeRegExp); - var index = 0; - - while (keys.length > index) { - proxy(keys[index++]); - } - - RegExpPrototype.constructor = RegExpWrapper; - RegExpWrapper.prototype = RegExpPrototype; - redefine(global, 'RegExp', RegExpWrapper); - } // https://tc39.github.io/ecma262/#sec-get-regexp-@@species - - - setSpecies('RegExp'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.exec.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.exec.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsRegexpExecJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var exec = __webpack_require__( - /*! ../internals/regexp-exec */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec.js"); - - $({ - target: 'RegExp', - proto: true, - forced: /./.exec !== exec - }, { - exec: exec - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.flags.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.flags.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsRegexpFlagsJs(module, exports, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var objectDefinePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var regExpFlags = __webpack_require__( - /*! ../internals/regexp-flags */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-flags.js"); - - var UNSUPPORTED_Y = __webpack_require__( - /*! ../internals/regexp-sticky-helpers */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-sticky-helpers.js").UNSUPPORTED_Y; // `RegExp.prototype.flags` getter - // https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags - - - if (DESCRIPTORS && (/./g.flags != 'g' || UNSUPPORTED_Y)) { - objectDefinePropertyModule.f(RegExp.prototype, 'flags', { - configurable: true, - get: regExpFlags - }); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.to-string.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.to-string.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsRegexpToStringJs(module, exports, __webpack_require__) { - "use strict"; - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var flags = __webpack_require__( - /*! ../internals/regexp-flags */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-flags.js"); - - var TO_STRING = 'toString'; - var RegExpPrototype = RegExp.prototype; - var nativeToString = RegExpPrototype[TO_STRING]; - var NOT_GENERIC = fails(function () { - return nativeToString.call({ - source: 'a', - flags: 'b' - }) != '/a/b'; - }); // FF44- RegExp#toString has a wrong name - - var INCORRECT_NAME = nativeToString.name != TO_STRING; // `RegExp.prototype.toString` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring - - if (NOT_GENERIC || INCORRECT_NAME) { - redefine(RegExp.prototype, TO_STRING, function toString() { - var R = anObject(this); - var p = String(R.source); - var rf = R.flags; - var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf); - return '/' + p + '/' + f; - }, { - unsafe: true - }); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js": - /*!*******************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js ***! - \*******************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSetJs(module, exports, __webpack_require__) { - "use strict"; - - var collection = __webpack_require__( - /*! ../internals/collection */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js"); - - var collectionStrong = __webpack_require__( - /*! ../internals/collection-strong */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js"); // `Set` constructor - // https://tc39.github.io/ecma262/#sec-set-objects - - - module.exports = collection('Set', function (init) { - return function Set() { - return init(this, arguments.length ? arguments[0] : undefined); - }; - }, collectionStrong); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.anchor.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.anchor.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringAnchorJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.anchor` method - // https://tc39.github.io/ecma262/#sec-string.prototype.anchor - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('anchor') - }, { - anchor: function anchor(name) { - return createHTML(this, 'a', 'name', name); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.big.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.big.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringBigJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.big` method - // https://tc39.github.io/ecma262/#sec-string.prototype.big - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('big') - }, { - big: function big() { - return createHTML(this, 'big', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.blink.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.blink.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringBlinkJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.blink` method - // https://tc39.github.io/ecma262/#sec-string.prototype.blink - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('blink') - }, { - blink: function blink() { - return createHTML(this, 'blink', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.bold.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.bold.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringBoldJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.bold` method - // https://tc39.github.io/ecma262/#sec-string.prototype.bold - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('bold') - }, { - bold: function bold() { - return createHTML(this, 'b', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.code-point-at.js": - /*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.code-point-at.js ***! - \************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringCodePointAtJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var codeAt = __webpack_require__( - /*! ../internals/string-multibyte */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-multibyte.js").codeAt; // `String.prototype.codePointAt` method - // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat - - - $({ - target: 'String', - proto: true - }, { - codePointAt: function codePointAt(pos) { - return codeAt(this, pos); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.ends-with.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.ends-with.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringEndsWithJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var getOwnPropertyDescriptor = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js").f; - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var notARegExp = __webpack_require__( - /*! ../internals/not-a-regexp */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/not-a-regexp.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var correctIsRegExpLogic = __webpack_require__( - /*! ../internals/correct-is-regexp-logic */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-is-regexp-logic.js"); - - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); - - var nativeEndsWith = ''.endsWith; - var min = Math.min; - var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith'); // https://github.com/zloirock/core-js/pull/702 - - var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () { - var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith'); - return descriptor && !descriptor.writable; - }(); // `String.prototype.endsWith` method - // https://tc39.github.io/ecma262/#sec-string.prototype.endswith - - $({ - target: 'String', - proto: true, - forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC - }, { - endsWith: function endsWith(searchString - /* , endPosition = @length */ - ) { - var that = String(requireObjectCoercible(this)); - notARegExp(searchString); - var endPosition = arguments.length > 1 ? arguments[1] : undefined; - var len = toLength(that.length); - var end = endPosition === undefined ? len : min(toLength(endPosition), len); - var search = String(searchString); - return nativeEndsWith ? nativeEndsWith.call(that, search, end) : that.slice(end - search.length, end) === search; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fixed.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fixed.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringFixedJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.fixed` method - // https://tc39.github.io/ecma262/#sec-string.prototype.fixed - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('fixed') - }, { - fixed: function fixed() { - return createHTML(this, 'tt', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fontcolor.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fontcolor.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringFontcolorJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.fontcolor` method - // https://tc39.github.io/ecma262/#sec-string.prototype.fontcolor - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('fontcolor') - }, { - fontcolor: function fontcolor(color) { - return createHTML(this, 'font', 'color', color); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fontsize.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fontsize.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringFontsizeJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.fontsize` method - // https://tc39.github.io/ecma262/#sec-string.prototype.fontsize - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('fontsize') - }, { - fontsize: function fontsize(size) { - return createHTML(this, 'font', 'size', size); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.from-code-point.js": - /*!**************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.from-code-point.js ***! - \**************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringFromCodePointJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var toAbsoluteIndex = __webpack_require__( - /*! ../internals/to-absolute-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js"); - - var fromCharCode = String.fromCharCode; - var nativeFromCodePoint = String.fromCodePoint; // length should be 1, old FF problem - - var INCORRECT_LENGTH = !!nativeFromCodePoint && nativeFromCodePoint.length != 1; // `String.fromCodePoint` method - // https://tc39.github.io/ecma262/#sec-string.fromcodepoint - - $({ - target: 'String', - stat: true, - forced: INCORRECT_LENGTH - }, { - fromCodePoint: function fromCodePoint(x) { - // eslint-disable-line no-unused-vars - var elements = []; - var length = arguments.length; - var i = 0; - var code; - - while (length > i) { - code = +arguments[i++]; - if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point'); - elements.push(code < 0x10000 ? fromCharCode(code) : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00)); - } - - return elements.join(''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.includes.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.includes.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringIncludesJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var notARegExp = __webpack_require__( - /*! ../internals/not-a-regexp */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/not-a-regexp.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var correctIsRegExpLogic = __webpack_require__( - /*! ../internals/correct-is-regexp-logic */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-is-regexp-logic.js"); // `String.prototype.includes` method - // https://tc39.github.io/ecma262/#sec-string.prototype.includes - - - $({ - target: 'String', - proto: true, - forced: !correctIsRegExpLogic('includes') - }, { - includes: function includes(searchString - /* , position = 0 */ - ) { - return !!~String(requireObjectCoercible(this)).indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.italics.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.italics.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringItalicsJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.italics` method - // https://tc39.github.io/ecma262/#sec-string.prototype.italics - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('italics') - }, { - italics: function italics() { - return createHTML(this, 'i', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.iterator.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.iterator.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringIteratorJs(module, exports, __webpack_require__) { - "use strict"; - - var charAt = __webpack_require__( - /*! ../internals/string-multibyte */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-multibyte.js").charAt; - - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - - var defineIterator = __webpack_require__( - /*! ../internals/define-iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js"); - - var STRING_ITERATOR = 'String Iterator'; - var setInternalState = InternalStateModule.set; - var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); // `String.prototype[@@iterator]` method - // https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator - - defineIterator(String, 'String', function (iterated) { - setInternalState(this, { - type: STRING_ITERATOR, - string: String(iterated), - index: 0 - }); // `%StringIteratorPrototype%.next` method - // https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next - }, function next() { - var state = getInternalState(this); - var string = state.string; - var index = state.index; - var point; - if (index >= string.length) return { - value: undefined, - done: true - }; - point = charAt(string, index); - state.index += point.length; - return { - value: point, - done: false - }; - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.link.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.link.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringLinkJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.link` method - // https://tc39.github.io/ecma262/#sec-string.prototype.link - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('link') - }, { - link: function link(url) { - return createHTML(this, 'a', 'href', url); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.match.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.match.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringMatchJs(module, exports, __webpack_require__) { - "use strict"; - - var fixRegExpWellKnownSymbolLogic = __webpack_require__( - /*! ../internals/fix-regexp-well-known-symbol-logic */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var advanceStringIndex = __webpack_require__( - /*! ../internals/advance-string-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/advance-string-index.js"); - - var regExpExec = __webpack_require__( - /*! ../internals/regexp-exec-abstract */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec-abstract.js"); // @@match logic - - - fixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) { - return [// `String.prototype.match` method - // https://tc39.github.io/ecma262/#sec-string.prototype.match - function match(regexp) { - var O = requireObjectCoercible(this); - var matcher = regexp == undefined ? undefined : regexp[MATCH]; - return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); - }, // `RegExp.prototype[@@match]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match - function (regexp) { - var res = maybeCallNative(nativeMatch, regexp, this); - if (res.done) return res.value; - var rx = anObject(regexp); - var S = String(this); - if (!rx.global) return regExpExec(rx, S); - var fullUnicode = rx.unicode; - rx.lastIndex = 0; - var A = []; - var n = 0; - var result; - - while ((result = regExpExec(rx, S)) !== null) { - var matchStr = String(result[0]); - A[n] = matchStr; - if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); - n++; - } - - return n === 0 ? null : A; - }]; - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.raw.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.raw.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringRawJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); // `String.raw` method - // https://tc39.github.io/ecma262/#sec-string.raw - - - $({ - target: 'String', - stat: true - }, { - raw: function raw(template) { - var rawTemplate = toIndexedObject(template.raw); - var literalSegments = toLength(rawTemplate.length); - var argumentsLength = arguments.length; - var elements = []; - var i = 0; - - while (literalSegments > i) { - elements.push(String(rawTemplate[i++])); - if (i < argumentsLength) elements.push(String(arguments[i])); - } - - return elements.join(''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.repeat.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.repeat.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringRepeatJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var repeat = __webpack_require__( - /*! ../internals/string-repeat */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-repeat.js"); // `String.prototype.repeat` method - // https://tc39.github.io/ecma262/#sec-string.prototype.repeat - - - $({ - target: 'String', - proto: true - }, { - repeat: repeat - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.replace.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.replace.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringReplaceJs(module, exports, __webpack_require__) { - "use strict"; - - var fixRegExpWellKnownSymbolLogic = __webpack_require__( - /*! ../internals/fix-regexp-well-known-symbol-logic */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var advanceStringIndex = __webpack_require__( - /*! ../internals/advance-string-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/advance-string-index.js"); - - var regExpExec = __webpack_require__( - /*! ../internals/regexp-exec-abstract */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec-abstract.js"); - - var max = Math.max; - var min = Math.min; - var floor = Math.floor; - var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g; - var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g; - - var maybeToString = function maybeToString(it) { - return it === undefined ? it : String(it); - }; // @@replace logic - - - fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) { - var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE; - var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0; - var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; - return [// `String.prototype.replace` method - // https://tc39.github.io/ecma262/#sec-string.prototype.replace - function replace(searchValue, replaceValue) { - var O = requireObjectCoercible(this); - var replacer = searchValue == undefined ? undefined : searchValue[REPLACE]; - return replacer !== undefined ? replacer.call(searchValue, O, replaceValue) : nativeReplace.call(String(O), searchValue, replaceValue); - }, // `RegExp.prototype[@@replace]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace - function (regexp, replaceValue) { - if (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0 || typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1) { - var res = maybeCallNative(nativeReplace, regexp, this, replaceValue); - if (res.done) return res.value; - } - - var rx = anObject(regexp); - var S = String(this); - var functionalReplace = typeof replaceValue === 'function'; - if (!functionalReplace) replaceValue = String(replaceValue); - var global = rx.global; - - if (global) { - var fullUnicode = rx.unicode; - rx.lastIndex = 0; - } - - var results = []; - - while (true) { - var result = regExpExec(rx, S); - if (result === null) break; - results.push(result); - if (!global) break; - var matchStr = String(result[0]); - if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); - } - - var accumulatedResult = ''; - var nextSourcePosition = 0; - - for (var i = 0; i < results.length; i++) { - result = results[i]; - var matched = String(result[0]); - var position = max(min(toInteger(result.index), S.length), 0); - var captures = []; // NOTE: This is equivalent to - // captures = result.slice(1).map(maybeToString) - // but for some reason `nativeSlice.call(result, 1, result.length)` (called in - // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and - // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. - - for (var j = 1; j < result.length; j++) { - captures.push(maybeToString(result[j])); - } - - var namedCaptures = result.groups; - - if (functionalReplace) { - var replacerArgs = [matched].concat(captures, position, S); - if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); - var replacement = String(replaceValue.apply(undefined, replacerArgs)); - } else { - replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); - } - - if (position >= nextSourcePosition) { - accumulatedResult += S.slice(nextSourcePosition, position) + replacement; - nextSourcePosition = position + matched.length; - } - } - - return accumulatedResult + S.slice(nextSourcePosition); - }]; // https://tc39.github.io/ecma262/#sec-getsubstitution - - function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { - var tailPos = position + matched.length; - var m = captures.length; - var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; - - if (namedCaptures !== undefined) { - namedCaptures = toObject(namedCaptures); - symbols = SUBSTITUTION_SYMBOLS; - } - - return nativeReplace.call(replacement, symbols, function (match, ch) { - var capture; - - switch (ch.charAt(0)) { - case '$': - return '$'; - - case '&': - return matched; - - case '`': - return str.slice(0, position); - - case "'": - return str.slice(tailPos); - - case '<': - capture = namedCaptures[ch.slice(1, -1)]; - break; - - default: - // \d\d? - var n = +ch; - if (n === 0) return match; - - if (n > m) { - var f = floor(n / 10); - if (f === 0) return match; - if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); - return match; - } - - capture = captures[n - 1]; - } - - return capture === undefined ? '' : capture; - }); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.search.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.search.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringSearchJs(module, exports, __webpack_require__) { - "use strict"; - - var fixRegExpWellKnownSymbolLogic = __webpack_require__( - /*! ../internals/fix-regexp-well-known-symbol-logic */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var sameValue = __webpack_require__( - /*! ../internals/same-value */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/same-value.js"); - - var regExpExec = __webpack_require__( - /*! ../internals/regexp-exec-abstract */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec-abstract.js"); // @@search logic - - - fixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) { - return [// `String.prototype.search` method - // https://tc39.github.io/ecma262/#sec-string.prototype.search - function search(regexp) { - var O = requireObjectCoercible(this); - var searcher = regexp == undefined ? undefined : regexp[SEARCH]; - return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O)); - }, // `RegExp.prototype[@@search]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search - function (regexp) { - var res = maybeCallNative(nativeSearch, regexp, this); - if (res.done) return res.value; - var rx = anObject(regexp); - var S = String(this); - var previousLastIndex = rx.lastIndex; - if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; - var result = regExpExec(rx, S); - if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; - return result === null ? -1 : result.index; - }]; - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.small.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.small.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringSmallJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.small` method - // https://tc39.github.io/ecma262/#sec-string.prototype.small - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('small') - }, { - small: function small() { - return createHTML(this, 'small', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.split.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.split.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringSplitJs(module, exports, __webpack_require__) { - "use strict"; - - var fixRegExpWellKnownSymbolLogic = __webpack_require__( - /*! ../internals/fix-regexp-well-known-symbol-logic */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); - - var isRegExp = __webpack_require__( - /*! ../internals/is-regexp */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-regexp.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var speciesConstructor = __webpack_require__( - /*! ../internals/species-constructor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/species-constructor.js"); - - var advanceStringIndex = __webpack_require__( - /*! ../internals/advance-string-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/advance-string-index.js"); - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var callRegExpExec = __webpack_require__( - /*! ../internals/regexp-exec-abstract */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec-abstract.js"); - - var regexpExec = __webpack_require__( - /*! ../internals/regexp-exec */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var arrayPush = [].push; - var min = Math.min; - var MAX_UINT32 = 0xFFFFFFFF; // babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError - - var SUPPORTS_Y = !fails(function () { - return !RegExp(MAX_UINT32, 'y'); - }); // @@split logic - - fixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) { - var internalSplit; - - if ('abbc'.split(/(b)*/)[1] == 'c' || 'test'.split(/(?:)/, -1).length != 4 || 'ab'.split(/(?:ab)*/).length != 2 || '.'.split(/(.?)(.?)/).length != 4 || '.'.split(/()()/).length > 1 || ''.split(/.?/).length) { - // based on es5-shim implementation, need to rework it - internalSplit = function internalSplit(separator, limit) { - var string = String(requireObjectCoercible(this)); - var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; - if (lim === 0) return []; - if (separator === undefined) return [string]; // If `separator` is not a regex, use native split - - if (!isRegExp(separator)) { - return nativeSplit.call(string, separator, lim); - } - - var output = []; - var flags = (separator.ignoreCase ? 'i' : '') + (separator.multiline ? 'm' : '') + (separator.unicode ? 'u' : '') + (separator.sticky ? 'y' : ''); - var lastLastIndex = 0; // Make `global` and avoid `lastIndex` issues by working with a copy - - var separatorCopy = new RegExp(separator.source, flags + 'g'); - var match, lastIndex, lastLength; - - while (match = regexpExec.call(separatorCopy, string)) { - lastIndex = separatorCopy.lastIndex; - - if (lastIndex > lastLastIndex) { - output.push(string.slice(lastLastIndex, match.index)); - if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1)); - lastLength = match[0].length; - lastLastIndex = lastIndex; - if (output.length >= lim) break; - } - - if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop - } - - if (lastLastIndex === string.length) { - if (lastLength || !separatorCopy.test('')) output.push(''); - } else output.push(string.slice(lastLastIndex)); - - return output.length > lim ? output.slice(0, lim) : output; - }; // Chakra, V8 - - } else if ('0'.split(undefined, 0).length) { - internalSplit = function internalSplit(separator, limit) { - return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit); - }; - } else internalSplit = nativeSplit; - - return [// `String.prototype.split` method - // https://tc39.github.io/ecma262/#sec-string.prototype.split - function split(separator, limit) { - var O = requireObjectCoercible(this); - var splitter = separator == undefined ? undefined : separator[SPLIT]; - return splitter !== undefined ? splitter.call(separator, O, limit) : internalSplit.call(String(O), separator, limit); - }, // `RegExp.prototype[@@split]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split - // - // NOTE: This cannot be properly polyfilled in engines that don't support - // the 'y' flag. - function (regexp, limit) { - var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit); - if (res.done) return res.value; - var rx = anObject(regexp); - var S = String(this); - var C = speciesConstructor(rx, RegExp); - var unicodeMatching = rx.unicode; - var flags = (rx.ignoreCase ? 'i' : '') + (rx.multiline ? 'm' : '') + (rx.unicode ? 'u' : '') + (SUPPORTS_Y ? 'y' : 'g'); // ^(? + rx + ) is needed, in combination with some S slicing, to - // simulate the 'y' flag. - - var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); - var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; - if (lim === 0) return []; - if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; - var p = 0; - var q = 0; - var A = []; - - while (q < S.length) { - splitter.lastIndex = SUPPORTS_Y ? q : 0; - var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q)); - var e; - - if (z === null || (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p) { - q = advanceStringIndex(S, q, unicodeMatching); - } else { - A.push(S.slice(p, q)); - if (A.length === lim) return A; - - for (var i = 1; i <= z.length - 1; i++) { - A.push(z[i]); - if (A.length === lim) return A; - } - - q = p = e; - } - } - - A.push(S.slice(p)); - return A; - }]; - }, !SUPPORTS_Y); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.starts-with.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.starts-with.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringStartsWithJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var getOwnPropertyDescriptor = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js").f; - - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js"); - - var notARegExp = __webpack_require__( - /*! ../internals/not-a-regexp */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/not-a-regexp.js"); - - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js"); - - var correctIsRegExpLogic = __webpack_require__( - /*! ../internals/correct-is-regexp-logic */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-is-regexp-logic.js"); - - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); - - var nativeStartsWith = ''.startsWith; - var min = Math.min; - var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith'); // https://github.com/zloirock/core-js/pull/702 - - var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () { - var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith'); - return descriptor && !descriptor.writable; - }(); // `String.prototype.startsWith` method - // https://tc39.github.io/ecma262/#sec-string.prototype.startswith - - $({ - target: 'String', - proto: true, - forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC - }, { - startsWith: function startsWith(searchString - /* , position = 0 */ - ) { - var that = String(requireObjectCoercible(this)); - notARegExp(searchString); - var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length)); - var search = String(searchString); - return nativeStartsWith ? nativeStartsWith.call(that, search, index) : that.slice(index, index + search.length) === search; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.strike.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.strike.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringStrikeJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.strike` method - // https://tc39.github.io/ecma262/#sec-string.prototype.strike - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('strike') - }, { - strike: function strike() { - return createHTML(this, 'strike', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.sub.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.sub.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringSubJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.sub` method - // https://tc39.github.io/ecma262/#sec-string.prototype.sub - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('sub') - }, { - sub: function sub() { - return createHTML(this, 'sub', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.sup.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.sup.js ***! - \**************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringSupJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var createHTML = __webpack_require__( - /*! ../internals/create-html */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js"); - - var forcedStringHTMLMethod = __webpack_require__( - /*! ../internals/string-html-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js"); // `String.prototype.sup` method - // https://tc39.github.io/ecma262/#sec-string.prototype.sup - - - $({ - target: 'String', - proto: true, - forced: forcedStringHTMLMethod('sup') - }, { - sup: function sup() { - return createHTML(this, 'sup', '', ''); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.trim.js": - /*!***************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.trim.js ***! - \***************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsStringTrimJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var $trim = __webpack_require__( - /*! ../internals/string-trim */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim.js").trim; - - var forcedStringTrimMethod = __webpack_require__( - /*! ../internals/string-trim-forced */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim-forced.js"); // `String.prototype.trim` method - // https://tc39.github.io/ecma262/#sec-string.prototype.trim - - - $({ - target: 'String', - proto: true, - forced: forcedStringTrimMethod('trim') - }, { - trim: function trim() { - return $trim(this); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.async-iterator.js": - /*!*************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.async-iterator.js ***! - \*************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolAsyncIteratorJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.asyncIterator` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.asynciterator - - - defineWellKnownSymbol('asyncIterator'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.description.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.description.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolDescriptionJs(module, exports, __webpack_require__) { - "use strict"; // `Symbol.prototype.description` getter - // https://tc39.github.io/ecma262/#sec-symbol.prototype.description - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js").f; - - var copyConstructorProperties = __webpack_require__( - /*! ../internals/copy-constructor-properties */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js"); - - var NativeSymbol = global.Symbol; - - if (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) || // Safari 12 bug - NativeSymbol().description !== undefined)) { - var EmptyStringDescriptionStore = {}; // wrap Symbol constructor for correct work with undefined description - - var SymbolWrapper = function Symbol() { - var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]); - var result = this instanceof SymbolWrapper ? new NativeSymbol(description) // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)' - : description === undefined ? NativeSymbol() : NativeSymbol(description); - if (description === '') EmptyStringDescriptionStore[result] = true; - return result; - }; - - copyConstructorProperties(SymbolWrapper, NativeSymbol); - var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype; - symbolPrototype.constructor = SymbolWrapper; - var symbolToString = symbolPrototype.toString; - var native = String(NativeSymbol('test')) == 'Symbol(test)'; - var regexp = /^Symbol\((.*)\)[^)]+$/; - defineProperty(symbolPrototype, 'description', { - configurable: true, - get: function description() { - var symbol = isObject(this) ? this.valueOf() : this; - var string = symbolToString.call(symbol); - if (has(EmptyStringDescriptionStore, symbol)) return ''; - var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1'); - return desc === '' ? undefined : desc; - } - }); - $({ - global: true, - forced: true - }, { - Symbol: SymbolWrapper - }); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.has-instance.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.has-instance.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolHasInstanceJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.hasInstance` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.hasinstance - - - defineWellKnownSymbol('hasInstance'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js": - /*!*******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js ***! - \*******************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolIsConcatSpreadableJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.isConcatSpreadable` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.isconcatspreadable - - - defineWellKnownSymbol('isConcatSpreadable'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.iterator.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.iterator.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolIteratorJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.iterator` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.iterator - - - defineWellKnownSymbol('iterator'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.js": - /*!**********************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.js ***! - \**********************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolJs(module, exports, __webpack_require__) { - "use strict"; - - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var getBuiltIn = __webpack_require__( - /*! ../internals/get-built-in */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js"); - - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js"); - - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js"); - - var NATIVE_SYMBOL = __webpack_require__( - /*! ../internals/native-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js"); - - var USE_SYMBOL_AS_UID = __webpack_require__( - /*! ../internals/use-symbol-as-uid */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js"); - - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js"); - - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js"); - - var isArray = __webpack_require__( - /*! ../internals/is-array */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js"); - - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js"); - - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js"); - - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js"); - - var nativeObjectCreate = __webpack_require__( - /*! ../internals/object-create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js"); - - var objectKeys = __webpack_require__( - /*! ../internals/object-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js"); - - var getOwnPropertyNamesModule = __webpack_require__( - /*! ../internals/object-get-own-property-names */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js"); - - var getOwnPropertyNamesExternal = __webpack_require__( - /*! ../internals/object-get-own-property-names-external */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names-external.js"); - - var getOwnPropertySymbolsModule = __webpack_require__( - /*! ../internals/object-get-own-property-symbols */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js"); - - var getOwnPropertyDescriptorModule = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js"); - - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js"); - - var propertyIsEnumerableModule = __webpack_require__( - /*! ../internals/object-property-is-enumerable */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js"); - - var shared = __webpack_require__( - /*! ../internals/shared */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js"); - - var sharedKey = __webpack_require__( - /*! ../internals/shared-key */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js"); - - var hiddenKeys = __webpack_require__( - /*! ../internals/hidden-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js"); - - var uid = __webpack_require__( - /*! ../internals/uid */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var wrappedWellKnownSymbolModule = __webpack_require__( - /*! ../internals/well-known-symbol-wrapped */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol-wrapped.js"); - - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); - - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js"); - - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js"); - - var $forEach = __webpack_require__( - /*! ../internals/array-iteration */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js").forEach; - - var HIDDEN = sharedKey('hidden'); - var SYMBOL = 'Symbol'; - var PROTOTYPE = 'prototype'; - var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); - var setInternalState = InternalStateModule.set; - var getInternalState = InternalStateModule.getterFor(SYMBOL); - var ObjectPrototype = Object[PROTOTYPE]; - var $Symbol = global.Symbol; - var $stringify = getBuiltIn('JSON', 'stringify'); - var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - var nativeDefineProperty = definePropertyModule.f; - var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f; - var nativePropertyIsEnumerable = propertyIsEnumerableModule.f; - var AllSymbols = shared('symbols'); - var ObjectPrototypeSymbols = shared('op-symbols'); - var StringToSymbolRegistry = shared('string-to-symbol-registry'); - var SymbolToStringRegistry = shared('symbol-to-string-registry'); - var WellKnownSymbolsStore = shared('wks'); - var QObject = global.QObject; // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 - - var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 - - var setSymbolDescriptor = DESCRIPTORS && fails(function () { - return nativeObjectCreate(nativeDefineProperty({}, 'a', { - get: function get() { - return nativeDefineProperty(this, 'a', { - value: 7 - }).a; - } - })).a != 7; - }) ? function (O, P, Attributes) { - var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P); - if (ObjectPrototypeDescriptor) delete ObjectPrototype[P]; - nativeDefineProperty(O, P, Attributes); - - if (ObjectPrototypeDescriptor && O !== ObjectPrototype) { - nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor); - } - } : nativeDefineProperty; - - var wrap = function wrap(tag, description) { - var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]); - setInternalState(symbol, { - type: SYMBOL, - tag: tag, - description: description - }); - if (!DESCRIPTORS) symbol.description = description; - return symbol; - }; - - var isSymbol = USE_SYMBOL_AS_UID ? function (it) { - return typeof it == 'symbol'; - } : function (it) { - return Object(it) instanceof $Symbol; - }; - - var $defineProperty = function defineProperty(O, P, Attributes) { - if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes); - anObject(O); - var key = toPrimitive(P, true); - anObject(Attributes); - - if (has(AllSymbols, key)) { - if (!Attributes.enumerable) { - if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {})); - O[HIDDEN][key] = true; - } else { - if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false; - Attributes = nativeObjectCreate(Attributes, { - enumerable: createPropertyDescriptor(0, false) - }); - } - - return setSymbolDescriptor(O, key, Attributes); - } - - return nativeDefineProperty(O, key, Attributes); - }; - - var $defineProperties = function defineProperties(O, Properties) { - anObject(O); - var properties = toIndexedObject(Properties); - var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties)); - $forEach(keys, function (key) { - if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]); - }); - return O; - }; - - var $create = function create(O, Properties) { - return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties); - }; - - var $propertyIsEnumerable = function propertyIsEnumerable(V) { - var P = toPrimitive(V, true); - var enumerable = nativePropertyIsEnumerable.call(this, P); - if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false; - return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true; - }; - - var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) { - var it = toIndexedObject(O); - var key = toPrimitive(P, true); - if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return; - var descriptor = nativeGetOwnPropertyDescriptor(it, key); - - if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) { - descriptor.enumerable = true; - } - - return descriptor; - }; - - var $getOwnPropertyNames = function getOwnPropertyNames(O) { - var names = nativeGetOwnPropertyNames(toIndexedObject(O)); - var result = []; - $forEach(names, function (key) { - if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key); - }); - return result; - }; - - var $getOwnPropertySymbols = function getOwnPropertySymbols(O) { - var IS_OBJECT_PROTOTYPE = O === ObjectPrototype; - var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O)); - var result = []; - $forEach(names, function (key) { - if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) { - result.push(AllSymbols[key]); - } - }); - return result; - }; // `Symbol` constructor - // https://tc39.github.io/ecma262/#sec-symbol-constructor - - - if (!NATIVE_SYMBOL) { - $Symbol = function Symbol() { - if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor'); - var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]); - var tag = uid(description); - - var setter = function setter(value) { - if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value); - if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; - setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value)); - }; - - if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { - configurable: true, - set: setter - }); - return wrap(tag, description); - }; - - redefine($Symbol[PROTOTYPE], 'toString', function toString() { - return getInternalState(this).tag; - }); - redefine($Symbol, 'withoutSetter', function (description) { - return wrap(uid(description), description); - }); - propertyIsEnumerableModule.f = $propertyIsEnumerable; - definePropertyModule.f = $defineProperty; - getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor; - getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames; - getOwnPropertySymbolsModule.f = $getOwnPropertySymbols; - - wrappedWellKnownSymbolModule.f = function (name) { - return wrap(wellKnownSymbol(name), name); - }; - - if (DESCRIPTORS) { - // https://github.com/tc39/proposal-Symbol-description - nativeDefineProperty($Symbol[PROTOTYPE], 'description', { - configurable: true, - get: function description() { - return getInternalState(this).description; - } - }); - - if (!IS_PURE) { - redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { - unsafe: true - }); - } - } - } - - $({ - global: true, - wrap: true, - forced: !NATIVE_SYMBOL, - sham: !NATIVE_SYMBOL - }, { - Symbol: $Symbol - }); - $forEach(objectKeys(WellKnownSymbolsStore), function (name) { - defineWellKnownSymbol(name); - }); - $({ - target: SYMBOL, - stat: true, - forced: !NATIVE_SYMBOL - }, { - // `Symbol.for` method - // https://tc39.github.io/ecma262/#sec-symbol.for - 'for': function _for(key) { - var string = String(key); - if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string]; - var symbol = $Symbol(string); - StringToSymbolRegistry[string] = symbol; - SymbolToStringRegistry[symbol] = string; - return symbol; - }, - // `Symbol.keyFor` method - // https://tc39.github.io/ecma262/#sec-symbol.keyfor - keyFor: function keyFor(sym) { - if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol'); - if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym]; - }, - useSetter: function useSetter() { - USE_SETTER = true; - }, - useSimple: function useSimple() { - USE_SETTER = false; - } - }); - $({ - target: 'Object', - stat: true, - forced: !NATIVE_SYMBOL, - sham: !DESCRIPTORS - }, { - // `Object.create` method - // https://tc39.github.io/ecma262/#sec-object.create - create: $create, - // `Object.defineProperty` method - // https://tc39.github.io/ecma262/#sec-object.defineproperty - defineProperty: $defineProperty, - // `Object.defineProperties` method - // https://tc39.github.io/ecma262/#sec-object.defineproperties - defineProperties: $defineProperties, - // `Object.getOwnPropertyDescriptor` method - // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors - getOwnPropertyDescriptor: $getOwnPropertyDescriptor - }); - $({ - target: 'Object', - stat: true, - forced: !NATIVE_SYMBOL - }, { - // `Object.getOwnPropertyNames` method - // https://tc39.github.io/ecma262/#sec-object.getownpropertynames - getOwnPropertyNames: $getOwnPropertyNames, - // `Object.getOwnPropertySymbols` method - // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols - getOwnPropertySymbols: $getOwnPropertySymbols - }); // Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives - // https://bugs.chromium.org/p/v8/issues/detail?id=3443 - - $({ - target: 'Object', - stat: true, - forced: fails(function () { - getOwnPropertySymbolsModule.f(1); - }) - }, { - getOwnPropertySymbols: function getOwnPropertySymbols(it) { - return getOwnPropertySymbolsModule.f(toObject(it)); - } - }); // `JSON.stringify` method behavior with symbols - // https://tc39.github.io/ecma262/#sec-json.stringify - - if ($stringify) { - var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () { - var symbol = $Symbol(); // MS Edge converts symbol values to JSON as {} - - return $stringify([symbol]) != '[null]' // WebKit converts symbol values to JSON as null - || $stringify({ - a: symbol - }) != '{}' // V8 throws on boxed symbols - || $stringify(Object(symbol)) != '{}'; - }); - $({ - target: 'JSON', - stat: true, - forced: FORCED_JSON_STRINGIFY - }, { - // eslint-disable-next-line no-unused-vars - stringify: function stringify(it, replacer, space) { - var args = [it]; - var index = 1; - var $replacer; - - while (arguments.length > index) { - args.push(arguments[index++]); - } - - $replacer = replacer; - if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined - - if (!isArray(replacer)) replacer = function replacer(key, value) { - if (typeof $replacer == 'function') value = $replacer.call(this, key, value); - if (!isSymbol(value)) return value; - }; - args[1] = replacer; - return $stringify.apply(null, args); - } - }); - } // `Symbol.prototype[@@toPrimitive]` method - // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive - - - if (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) { - createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); - } // `Symbol.prototype[@@toStringTag]` property - // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag - - - setToStringTag($Symbol, SYMBOL); - hiddenKeys[HIDDEN] = true; - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.match-all.js": - /*!********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.match-all.js ***! - \********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolMatchAllJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.matchAll` well-known symbol - - - defineWellKnownSymbol('matchAll'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.match.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.match.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolMatchJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.match` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.match - - - defineWellKnownSymbol('match'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.replace.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.replace.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolReplaceJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.replace` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.replace - - - defineWellKnownSymbol('replace'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.search.js": - /*!*****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.search.js ***! - \*****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolSearchJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.search` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.search - - - defineWellKnownSymbol('search'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.species.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.species.js ***! - \******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolSpeciesJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.species` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.species - - - defineWellKnownSymbol('species'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.split.js": - /*!****************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.split.js ***! - \****************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolSplitJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.split` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.split - - - defineWellKnownSymbol('split'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.to-primitive.js": - /*!***********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.to-primitive.js ***! - \***********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolToPrimitiveJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.toPrimitive` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.toprimitive - - - defineWellKnownSymbol('toPrimitive'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.to-string-tag.js": - /*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.to-string-tag.js ***! - \************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolToStringTagJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.toStringTag` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.tostringtag - - - defineWellKnownSymbol('toStringTag'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.unscopables.js": - /*!**********************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.unscopables.js ***! - \**********************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsSymbolUnscopablesJs(module, exports, __webpack_require__) { - var defineWellKnownSymbol = __webpack_require__( - /*! ../internals/define-well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.unscopables` well-known symbol - // https://tc39.github.io/ecma262/#sec-symbol.unscopables - - - defineWellKnownSymbol('unscopables'); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js": - /*!************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js ***! - \************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsWeakMapJs(module, exports, __webpack_require__) { - "use strict"; - - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var redefineAll = __webpack_require__( - /*! ../internals/redefine-all */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js"); - - var InternalMetadataModule = __webpack_require__( - /*! ../internals/internal-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js"); - - var collection = __webpack_require__( - /*! ../internals/collection */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js"); - - var collectionWeak = __webpack_require__( - /*! ../internals/collection-weak */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-weak.js"); - - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js"); - - var enforceIternalState = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js").enforce; - - var NATIVE_WEAK_MAP = __webpack_require__( - /*! ../internals/native-weak-map */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js"); - - var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global; - var isExtensible = Object.isExtensible; - var InternalWeakMap; - - var wrapper = function wrapper(init) { - return function WeakMap() { - return init(this, arguments.length ? arguments[0] : undefined); - }; - }; // `WeakMap` constructor - // https://tc39.github.io/ecma262/#sec-weakmap-constructor - - - var $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak); // IE11 WeakMap frozen keys fix - // We can't use feature detection because it crash some old IE builds - // https://github.com/zloirock/core-js/issues/485 - - if (NATIVE_WEAK_MAP && IS_IE11) { - InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true); - InternalMetadataModule.REQUIRED = true; - var WeakMapPrototype = $WeakMap.prototype; - var nativeDelete = WeakMapPrototype['delete']; - var nativeHas = WeakMapPrototype.has; - var nativeGet = WeakMapPrototype.get; - var nativeSet = WeakMapPrototype.set; - redefineAll(WeakMapPrototype, { - 'delete': function _delete(key) { - if (isObject(key) && !isExtensible(key)) { - var state = enforceIternalState(this); - if (!state.frozen) state.frozen = new InternalWeakMap(); - return nativeDelete.call(this, key) || state.frozen['delete'](key); - } - - return nativeDelete.call(this, key); - }, - has: function has(key) { - if (isObject(key) && !isExtensible(key)) { - var state = enforceIternalState(this); - if (!state.frozen) state.frozen = new InternalWeakMap(); - return nativeHas.call(this, key) || state.frozen.has(key); - } - - return nativeHas.call(this, key); - }, - get: function get(key) { - if (isObject(key) && !isExtensible(key)) { - var state = enforceIternalState(this); - if (!state.frozen) state.frozen = new InternalWeakMap(); - return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key); - } - - return nativeGet.call(this, key); - }, - set: function set(key, value) { - if (isObject(key) && !isExtensible(key)) { - var state = enforceIternalState(this); - if (!state.frozen) state.frozen = new InternalWeakMap(); - nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value); - } else nativeSet.call(this, key, value); - - return this; - } - }); - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.define-metadata.js": - /*!*******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.define-metadata.js ***! - \*******************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectDefineMetadataJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toMetadataKey = ReflectMetadataModule.toKey; - var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; // `Reflect.defineMetadata` method - // https://github.com/rbuckton/reflect-metadata - - $({ - target: 'Reflect', - stat: true - }, { - defineMetadata: function defineMetadata(metadataKey, metadataValue, target - /* , targetKey */ - ) { - var targetKey = arguments.length < 4 ? undefined : toMetadataKey(arguments[3]); - ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), targetKey); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.delete-metadata.js": - /*!*******************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.delete-metadata.js ***! - \*******************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectDeleteMetadataJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toMetadataKey = ReflectMetadataModule.toKey; - var getOrCreateMetadataMap = ReflectMetadataModule.getMap; - var store = ReflectMetadataModule.store; // `Reflect.deleteMetadata` method - // https://github.com/rbuckton/reflect-metadata - - $({ - target: 'Reflect', - stat: true - }, { - deleteMetadata: function deleteMetadata(metadataKey, target - /* , targetKey */ - ) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false); - if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false; - if (metadataMap.size) return true; - var targetMetadata = store.get(target); - targetMetadata['delete'](targetKey); - return !!targetMetadata.size || store['delete'](target); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js": - /*!*********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js ***! - \*********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectGetMetadataKeysJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` - - - var Set = __webpack_require__( - /*! ../modules/es.set */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var iterate = __webpack_require__( - /*! ../internals/iterate */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js"); - - var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; - var toMetadataKey = ReflectMetadataModule.toKey; - - var from = function from(iter) { - var result = []; - iterate(iter, result.push, result); - return result; - }; - - var ordinaryMetadataKeys = function ordinaryMetadataKeys(O, P) { - var oKeys = ordinaryOwnMetadataKeys(O, P); - var parent = getPrototypeOf(O); - if (parent === null) return oKeys; - var pKeys = ordinaryMetadataKeys(parent, P); - return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys; - }; // `Reflect.getMetadataKeys` method - // https://github.com/rbuckton/reflect-metadata - - - $({ - target: 'Reflect', - stat: true - }, { - getMetadataKeys: function getMetadataKeys(target - /* , targetKey */ - ) { - var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); - return ordinaryMetadataKeys(anObject(target), targetKey); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata.js": - /*!****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata.js ***! - \****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectGetMetadataJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var ordinaryHasOwnMetadata = ReflectMetadataModule.has; - var ordinaryGetOwnMetadata = ReflectMetadataModule.get; - var toMetadataKey = ReflectMetadataModule.toKey; - - var ordinaryGetMetadata = function ordinaryGetMetadata(MetadataKey, O, P) { - var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); - if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P); - var parent = getPrototypeOf(O); - return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined; - }; // `Reflect.getMetadata` method - // https://github.com/rbuckton/reflect-metadata - - - $({ - target: 'Reflect', - stat: true - }, { - getMetadata: function getMetadata(metadataKey, target - /* , targetKey */ - ) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - return ordinaryGetMetadata(metadataKey, anObject(target), targetKey); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js": - /*!*************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js ***! - \*************************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectGetOwnMetadataKeysJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; - var toMetadataKey = ReflectMetadataModule.toKey; // `Reflect.getOwnMetadataKeys` method - // https://github.com/rbuckton/reflect-metadata - - $({ - target: 'Reflect', - stat: true - }, { - getOwnMetadataKeys: function getOwnMetadataKeys(target - /* , targetKey */ - ) { - var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); - return ordinaryOwnMetadataKeys(anObject(target), targetKey); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js": - /*!********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js ***! - \********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectGetOwnMetadataJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var ordinaryGetOwnMetadata = ReflectMetadataModule.get; - var toMetadataKey = ReflectMetadataModule.toKey; // `Reflect.getOwnMetadata` method - // https://github.com/rbuckton/reflect-metadata - - $({ - target: 'Reflect', - stat: true - }, { - getOwnMetadata: function getOwnMetadata(metadataKey, target - /* , targetKey */ - ) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - return ordinaryGetOwnMetadata(metadataKey, anObject(target), targetKey); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-metadata.js": - /*!****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-metadata.js ***! - \****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectHasMetadataJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js"); - - var ordinaryHasOwnMetadata = ReflectMetadataModule.has; - var toMetadataKey = ReflectMetadataModule.toKey; - - var ordinaryHasMetadata = function ordinaryHasMetadata(MetadataKey, O, P) { - var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); - if (hasOwn) return true; - var parent = getPrototypeOf(O); - return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false; - }; // `Reflect.hasMetadata` method - // https://github.com/rbuckton/reflect-metadata - - - $({ - target: 'Reflect', - stat: true - }, { - hasMetadata: function hasMetadata(metadataKey, target - /* , targetKey */ - ) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - return ordinaryHasMetadata(metadataKey, anObject(target), targetKey); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js": - /*!********************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js ***! - \********************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectHasOwnMetadataJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var ordinaryHasOwnMetadata = ReflectMetadataModule.has; - var toMetadataKey = ReflectMetadataModule.toKey; // `Reflect.hasOwnMetadata` method - // https://github.com/rbuckton/reflect-metadata - - $({ - target: 'Reflect', - stat: true - }, { - hasOwnMetadata: function hasOwnMetadata(metadataKey, target - /* , targetKey */ - ) { - var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); - return ordinaryHasOwnMetadata(metadataKey, anObject(target), targetKey); - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.metadata.js": - /*!************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.metadata.js ***! - \************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesEsnextReflectMetadataJs(module, exports, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js"); - - var ReflectMetadataModule = __webpack_require__( - /*! ../internals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js"); - - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js"); - - var toMetadataKey = ReflectMetadataModule.toKey; - var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; // `Reflect.metadata` method - // https://github.com/rbuckton/reflect-metadata - - $({ - target: 'Reflect', - stat: true - }, { - metadata: function metadata(metadataKey, metadataValue) { - return function decorator(target, key) { - ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetadataKey(key)); - }; - } - }); - /***/ - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/web.dom-collections.for-each.js": - /*!*****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/web.dom-collections.for-each.js ***! - \*****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesWebDomCollectionsForEachJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var DOMIterables = __webpack_require__( - /*! ../internals/dom-iterables */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/dom-iterables.js"); - - var forEach = __webpack_require__( - /*! ../internals/array-for-each */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-for-each.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - for (var COLLECTION_NAME in DOMIterables) { - var Collection = global[COLLECTION_NAME]; - var CollectionPrototype = Collection && Collection.prototype; // some Chrome versions have non-configurable methods on DOMTokenList - - if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try { - createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach); - } catch (error) { - CollectionPrototype.forEach = forEach; - } - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/web.dom-collections.iterator.js": - /*!*****************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/web.dom-collections.iterator.js ***! - \*****************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsModulesWebDomCollectionsIteratorJs(module, exports, __webpack_require__) { - var global = __webpack_require__( - /*! ../internals/global */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js"); - - var DOMIterables = __webpack_require__( - /*! ../internals/dom-iterables */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/dom-iterables.js"); - - var ArrayIteratorMethods = __webpack_require__( - /*! ../modules/es.array.iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.iterator.js"); - - var createNonEnumerableProperty = __webpack_require__( - /*! ../internals/create-non-enumerable-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js"); - - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js"); - - var ITERATOR = wellKnownSymbol('iterator'); - var TO_STRING_TAG = wellKnownSymbol('toStringTag'); - var ArrayValues = ArrayIteratorMethods.values; - - for (var COLLECTION_NAME in DOMIterables) { - var Collection = global[COLLECTION_NAME]; - var CollectionPrototype = Collection && Collection.prototype; - - if (CollectionPrototype) { - // some Chrome versions have non-configurable methods on DOMTokenList - if (CollectionPrototype[ITERATOR] !== ArrayValues) try { - createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues); - } catch (error) { - CollectionPrototype[ITERATOR] = ArrayValues; - } - - if (!CollectionPrototype[TO_STRING_TAG]) { - createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME); - } - - if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) { - // some Chrome versions have non-configurable methods on DOMTokenList - if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try { - createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]); - } catch (error) { - CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME]; - } - } - } - } - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata.js": - /*!*******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata.js ***! - \*******************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesAngularDevkitBuildAngularNode_modulesCoreJsProposalsReflectMetadataJs(module, exports, __webpack_require__) { - __webpack_require__( - /*! ../modules/esnext.reflect.define-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.define-metadata.js"); - - __webpack_require__( - /*! ../modules/esnext.reflect.delete-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.delete-metadata.js"); - - __webpack_require__( - /*! ../modules/esnext.reflect.get-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata.js"); - - __webpack_require__( - /*! ../modules/esnext.reflect.get-metadata-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js"); - - __webpack_require__( - /*! ../modules/esnext.reflect.get-own-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js"); - - __webpack_require__( - /*! ../modules/esnext.reflect.get-own-metadata-keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js"); - - __webpack_require__( - /*! ../modules/esnext.reflect.has-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-metadata.js"); - - __webpack_require__( - /*! ../modules/esnext.reflect.has-own-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js"); - - __webpack_require__( - /*! ../modules/esnext.reflect.metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.metadata.js"); - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-jit-polyfills.js": - /*!******************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-jit-polyfills.js ***! - \******************************************************************************************************/ - - /*! no exports provided */ - - /***/ - function node_modulesAngularDevkitBuildAngularSrcAngularCliFilesModelsEs5JitPolyfillsJs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony import */ - - - var core_js_es_reflect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! core-js/es/reflect */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/reflect/index.js"); - /* harmony import */ - - - var core_js_es_reflect__WEBPACK_IMPORTED_MODULE_0___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_es_reflect__WEBPACK_IMPORTED_MODULE_0__); - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-polyfills.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-polyfills.js ***! - \**************************************************************************************************/ - - /*! no exports provided */ - - /***/ - function node_modulesAngularDevkitBuildAngularSrcAngularCliFilesModelsEs5PolyfillsJs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony import */ - - - var core_js_es_symbol__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! core-js/es/symbol */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/symbol/index.js"); - /* harmony import */ - - - var core_js_es_symbol__WEBPACK_IMPORTED_MODULE_0___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_es_symbol__WEBPACK_IMPORTED_MODULE_0__); - /* harmony import */ - - - var core_js_modules_es_function_bind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! core-js/modules/es.function.bind */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.bind.js"); - /* harmony import */ - - - var core_js_modules_es_function_bind__WEBPACK_IMPORTED_MODULE_1___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_function_bind__WEBPACK_IMPORTED_MODULE_1__); - /* harmony import */ - - - var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( - /*! core-js/modules/es.function.name */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.name.js"); - /* harmony import */ - - - var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2__); - /* harmony import */ - - - var core_js_modules_es_function_has_instance__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( - /*! core-js/modules/es.function.has-instance */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.has-instance.js"); - /* harmony import */ - - - var core_js_modules_es_function_has_instance__WEBPACK_IMPORTED_MODULE_3___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_function_has_instance__WEBPACK_IMPORTED_MODULE_3__); - /* harmony import */ - - - var core_js_modules_es_object_create__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( - /*! core-js/modules/es.object.create */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.create.js"); - /* harmony import */ - - - var core_js_modules_es_object_create__WEBPACK_IMPORTED_MODULE_4___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_create__WEBPACK_IMPORTED_MODULE_4__); - /* harmony import */ - - - var core_js_modules_es_object_define_property__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( - /*! core-js/modules/es.object.define-property */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.define-property.js"); - /* harmony import */ - - - var core_js_modules_es_object_define_property__WEBPACK_IMPORTED_MODULE_5___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_define_property__WEBPACK_IMPORTED_MODULE_5__); - /* harmony import */ - - - var core_js_modules_es_object_define_properties__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( - /*! core-js/modules/es.object.define-properties */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.define-properties.js"); - /* harmony import */ - - - var core_js_modules_es_object_define_properties__WEBPACK_IMPORTED_MODULE_6___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_define_properties__WEBPACK_IMPORTED_MODULE_6__); - /* harmony import */ - - - var core_js_modules_es_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__( - /*! core-js/modules/es.object.get-own-property-descriptor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-own-property-descriptor.js"); - /* harmony import */ - - - var core_js_modules_es_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7__); - /* harmony import */ - - - var core_js_modules_es_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__( - /*! core-js/modules/es.object.get-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-prototype-of.js"); - /* harmony import */ - - - var core_js_modules_es_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_8___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_8__); - /* harmony import */ - - - var core_js_modules_es_object_keys__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__( - /*! core-js/modules/es.object.keys */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.keys.js"); - /* harmony import */ - - - var core_js_modules_es_object_keys__WEBPACK_IMPORTED_MODULE_9___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_keys__WEBPACK_IMPORTED_MODULE_9__); - /* harmony import */ - - - var core_js_modules_es_object_get_own_property_names__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__( - /*! core-js/modules/es.object.get-own-property-names */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-own-property-names.js"); - /* harmony import */ - - - var core_js_modules_es_object_get_own_property_names__WEBPACK_IMPORTED_MODULE_10___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_get_own_property_names__WEBPACK_IMPORTED_MODULE_10__); - /* harmony import */ - - - var core_js_modules_es_object_freeze__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__( - /*! core-js/modules/es.object.freeze */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.freeze.js"); - /* harmony import */ - - - var core_js_modules_es_object_freeze__WEBPACK_IMPORTED_MODULE_11___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_freeze__WEBPACK_IMPORTED_MODULE_11__); - /* harmony import */ - - - var core_js_modules_es_object_seal__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__( - /*! core-js/modules/es.object.seal */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.seal.js"); - /* harmony import */ - - - var core_js_modules_es_object_seal__WEBPACK_IMPORTED_MODULE_12___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_seal__WEBPACK_IMPORTED_MODULE_12__); - /* harmony import */ - - - var core_js_modules_es_object_prevent_extensions__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__( - /*! core-js/modules/es.object.prevent-extensions */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.prevent-extensions.js"); - /* harmony import */ - - - var core_js_modules_es_object_prevent_extensions__WEBPACK_IMPORTED_MODULE_13___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_prevent_extensions__WEBPACK_IMPORTED_MODULE_13__); - /* harmony import */ - - - var core_js_modules_es_object_is_frozen__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__( - /*! core-js/modules/es.object.is-frozen */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-frozen.js"); - /* harmony import */ - - - var core_js_modules_es_object_is_frozen__WEBPACK_IMPORTED_MODULE_14___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_is_frozen__WEBPACK_IMPORTED_MODULE_14__); - /* harmony import */ - - - var core_js_modules_es_object_is_sealed__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__( - /*! core-js/modules/es.object.is-sealed */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-sealed.js"); - /* harmony import */ - - - var core_js_modules_es_object_is_sealed__WEBPACK_IMPORTED_MODULE_15___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_is_sealed__WEBPACK_IMPORTED_MODULE_15__); - /* harmony import */ - - - var core_js_modules_es_object_is_extensible__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__( - /*! core-js/modules/es.object.is-extensible */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-extensible.js"); - /* harmony import */ - - - var core_js_modules_es_object_is_extensible__WEBPACK_IMPORTED_MODULE_16___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_is_extensible__WEBPACK_IMPORTED_MODULE_16__); - /* harmony import */ - - - var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__( - /*! core-js/modules/es.object.assign */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.assign.js"); - /* harmony import */ - - - var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_17___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_17__); - /* harmony import */ - - - var core_js_modules_es_object_is__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__( - /*! core-js/modules/es.object.is */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is.js"); - /* harmony import */ - - - var core_js_modules_es_object_is__WEBPACK_IMPORTED_MODULE_18___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_is__WEBPACK_IMPORTED_MODULE_18__); - /* harmony import */ - - - var core_js_modules_es_object_set_prototype_of__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__( - /*! core-js/modules/es.object.set-prototype-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.set-prototype-of.js"); - /* harmony import */ - - - var core_js_modules_es_object_set_prototype_of__WEBPACK_IMPORTED_MODULE_19___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_set_prototype_of__WEBPACK_IMPORTED_MODULE_19__); - /* harmony import */ - - - var core_js_modules_es_object_to_string__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__( - /*! core-js/modules/es.object.to-string */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.to-string.js"); - /* harmony import */ - - - var core_js_modules_es_object_to_string__WEBPACK_IMPORTED_MODULE_20___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_object_to_string__WEBPACK_IMPORTED_MODULE_20__); - /* harmony import */ - - - var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__( - /*! core-js/modules/es.array.concat */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.concat.js"); - /* harmony import */ - - - var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_21___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_21__); - /* harmony import */ - - - var core_js_modules_es_array_is_array__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__( - /*! core-js/modules/es.array.is-array */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.is-array.js"); - /* harmony import */ - - - var core_js_modules_es_array_is_array__WEBPACK_IMPORTED_MODULE_22___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_is_array__WEBPACK_IMPORTED_MODULE_22__); - /* harmony import */ - - - var core_js_modules_es_array_from__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__( - /*! core-js/modules/es.array.from */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.from.js"); - /* harmony import */ - - - var core_js_modules_es_array_from__WEBPACK_IMPORTED_MODULE_23___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_from__WEBPACK_IMPORTED_MODULE_23__); - /* harmony import */ - - - var core_js_modules_es_array_of__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__( - /*! core-js/modules/es.array.of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.of.js"); - /* harmony import */ - - - var core_js_modules_es_array_of__WEBPACK_IMPORTED_MODULE_24___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_of__WEBPACK_IMPORTED_MODULE_24__); - /* harmony import */ - - - var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__( - /*! core-js/modules/es.array.join */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.join.js"); - /* harmony import */ - - - var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_25___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_25__); - /* harmony import */ - - - var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__( - /*! core-js/modules/es.array.slice */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.slice.js"); - /* harmony import */ - - - var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_26___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_26__); - /* harmony import */ - - - var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__( - /*! core-js/modules/es.array.splice */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.splice.js"); - /* harmony import */ - - - var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_27___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_27__); - /* harmony import */ - - - var core_js_modules_es_array_sort__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__( - /*! core-js/modules/es.array.sort */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.sort.js"); - /* harmony import */ - - - var core_js_modules_es_array_sort__WEBPACK_IMPORTED_MODULE_28___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_sort__WEBPACK_IMPORTED_MODULE_28__); - /* harmony import */ - - - var core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__( - /*! core-js/modules/es.array.for-each */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.for-each.js"); - /* harmony import */ - - - var core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_29___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_29__); - /* harmony import */ - - - var core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__( - /*! core-js/modules/es.array.map */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.map.js"); - /* harmony import */ - - - var core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_30___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_30__); - /* harmony import */ - - - var core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__( - /*! core-js/modules/es.array.filter */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.filter.js"); - /* harmony import */ - - - var core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_31___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_31__); - /* harmony import */ - - - var core_js_modules_es_array_some__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__( - /*! core-js/modules/es.array.some */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.some.js"); - /* harmony import */ - - - var core_js_modules_es_array_some__WEBPACK_IMPORTED_MODULE_32___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_some__WEBPACK_IMPORTED_MODULE_32__); - /* harmony import */ - - - var core_js_modules_es_array_every__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__( - /*! core-js/modules/es.array.every */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.every.js"); - /* harmony import */ - - - var core_js_modules_es_array_every__WEBPACK_IMPORTED_MODULE_33___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_every__WEBPACK_IMPORTED_MODULE_33__); - /* harmony import */ - - - var core_js_modules_es_array_reduce__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__( - /*! core-js/modules/es.array.reduce */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.reduce.js"); - /* harmony import */ - - - var core_js_modules_es_array_reduce__WEBPACK_IMPORTED_MODULE_34___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_reduce__WEBPACK_IMPORTED_MODULE_34__); - /* harmony import */ - - - var core_js_modules_es_array_reduce_right__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__( - /*! core-js/modules/es.array.reduce-right */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.reduce-right.js"); - /* harmony import */ - - - var core_js_modules_es_array_reduce_right__WEBPACK_IMPORTED_MODULE_35___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_reduce_right__WEBPACK_IMPORTED_MODULE_35__); - /* harmony import */ - - - var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__( - /*! core-js/modules/es.array.index-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.index-of.js"); - /* harmony import */ - - - var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_36___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_36__); - /* harmony import */ - - - var core_js_modules_es_array_last_index_of__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__( - /*! core-js/modules/es.array.last-index-of */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.last-index-of.js"); - /* harmony import */ - - - var core_js_modules_es_array_last_index_of__WEBPACK_IMPORTED_MODULE_37___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_last_index_of__WEBPACK_IMPORTED_MODULE_37__); - /* harmony import */ - - - var core_js_modules_es_array_copy_within__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__( - /*! core-js/modules/es.array.copy-within */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.copy-within.js"); - /* harmony import */ - - - var core_js_modules_es_array_copy_within__WEBPACK_IMPORTED_MODULE_38___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_copy_within__WEBPACK_IMPORTED_MODULE_38__); - /* harmony import */ - - - var core_js_modules_es_array_fill__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__( - /*! core-js/modules/es.array.fill */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.fill.js"); - /* harmony import */ - - - var core_js_modules_es_array_fill__WEBPACK_IMPORTED_MODULE_39___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_fill__WEBPACK_IMPORTED_MODULE_39__); - /* harmony import */ - - - var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__( - /*! core-js/modules/es.array.find */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.find.js"); - /* harmony import */ - - - var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_40___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_40__); - /* harmony import */ - - - var core_js_modules_es_array_find_index__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__( - /*! core-js/modules/es.array.find-index */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.find-index.js"); - /* harmony import */ - - - var core_js_modules_es_array_find_index__WEBPACK_IMPORTED_MODULE_41___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_find_index__WEBPACK_IMPORTED_MODULE_41__); - /* harmony import */ - - - var core_js_modules_es_array_iterator__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__( - /*! core-js/modules/es.array.iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.iterator.js"); - /* harmony import */ - - - var core_js_modules_es_array_iterator__WEBPACK_IMPORTED_MODULE_42___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_array_iterator__WEBPACK_IMPORTED_MODULE_42__); - /* harmony import */ - - - var core_js_modules_es_string_from_code_point__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__( - /*! core-js/modules/es.string.from-code-point */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.from-code-point.js"); - /* harmony import */ - - - var core_js_modules_es_string_from_code_point__WEBPACK_IMPORTED_MODULE_43___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_from_code_point__WEBPACK_IMPORTED_MODULE_43__); - /* harmony import */ - - - var core_js_modules_es_string_raw__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__( - /*! core-js/modules/es.string.raw */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.raw.js"); - /* harmony import */ - - - var core_js_modules_es_string_raw__WEBPACK_IMPORTED_MODULE_44___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_raw__WEBPACK_IMPORTED_MODULE_44__); - /* harmony import */ - - - var core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__( - /*! core-js/modules/es.string.trim */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.trim.js"); - /* harmony import */ - - - var core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_45___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_45__); - /* harmony import */ - - - var core_js_modules_es_string_iterator__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__( - /*! core-js/modules/es.string.iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.iterator.js"); - /* harmony import */ - - - var core_js_modules_es_string_iterator__WEBPACK_IMPORTED_MODULE_46___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_iterator__WEBPACK_IMPORTED_MODULE_46__); - /* harmony import */ - - - var core_js_modules_es_string_code_point_at__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__( - /*! core-js/modules/es.string.code-point-at */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.code-point-at.js"); - /* harmony import */ - - - var core_js_modules_es_string_code_point_at__WEBPACK_IMPORTED_MODULE_47___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_code_point_at__WEBPACK_IMPORTED_MODULE_47__); - /* harmony import */ - - - var core_js_modules_es_string_ends_with__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__( - /*! core-js/modules/es.string.ends-with */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.ends-with.js"); - /* harmony import */ - - - var core_js_modules_es_string_ends_with__WEBPACK_IMPORTED_MODULE_48___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_ends_with__WEBPACK_IMPORTED_MODULE_48__); - /* harmony import */ - - - var core_js_modules_es_string_includes__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__( - /*! core-js/modules/es.string.includes */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.includes.js"); - /* harmony import */ - - - var core_js_modules_es_string_includes__WEBPACK_IMPORTED_MODULE_49___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_includes__WEBPACK_IMPORTED_MODULE_49__); - /* harmony import */ - - - var core_js_modules_es_string_repeat__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__( - /*! core-js/modules/es.string.repeat */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.repeat.js"); - /* harmony import */ - - - var core_js_modules_es_string_repeat__WEBPACK_IMPORTED_MODULE_50___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_repeat__WEBPACK_IMPORTED_MODULE_50__); - /* harmony import */ - - - var core_js_modules_es_string_starts_with__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__( - /*! core-js/modules/es.string.starts-with */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.starts-with.js"); - /* harmony import */ - - - var core_js_modules_es_string_starts_with__WEBPACK_IMPORTED_MODULE_51___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_starts_with__WEBPACK_IMPORTED_MODULE_51__); - /* harmony import */ - - - var core_js_modules_es_string_anchor__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__( - /*! core-js/modules/es.string.anchor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.anchor.js"); - /* harmony import */ - - - var core_js_modules_es_string_anchor__WEBPACK_IMPORTED_MODULE_52___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_anchor__WEBPACK_IMPORTED_MODULE_52__); - /* harmony import */ - - - var core_js_modules_es_string_big__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__( - /*! core-js/modules/es.string.big */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.big.js"); - /* harmony import */ - - - var core_js_modules_es_string_big__WEBPACK_IMPORTED_MODULE_53___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_big__WEBPACK_IMPORTED_MODULE_53__); - /* harmony import */ - - - var core_js_modules_es_string_blink__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__( - /*! core-js/modules/es.string.blink */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.blink.js"); - /* harmony import */ - - - var core_js_modules_es_string_blink__WEBPACK_IMPORTED_MODULE_54___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_blink__WEBPACK_IMPORTED_MODULE_54__); - /* harmony import */ - - - var core_js_modules_es_string_bold__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__( - /*! core-js/modules/es.string.bold */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.bold.js"); - /* harmony import */ - - - var core_js_modules_es_string_bold__WEBPACK_IMPORTED_MODULE_55___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_bold__WEBPACK_IMPORTED_MODULE_55__); - /* harmony import */ - - - var core_js_modules_es_string_fixed__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__( - /*! core-js/modules/es.string.fixed */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fixed.js"); - /* harmony import */ - - - var core_js_modules_es_string_fixed__WEBPACK_IMPORTED_MODULE_56___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_fixed__WEBPACK_IMPORTED_MODULE_56__); - /* harmony import */ - - - var core_js_modules_es_string_fontcolor__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__( - /*! core-js/modules/es.string.fontcolor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fontcolor.js"); - /* harmony import */ - - - var core_js_modules_es_string_fontcolor__WEBPACK_IMPORTED_MODULE_57___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_fontcolor__WEBPACK_IMPORTED_MODULE_57__); - /* harmony import */ - - - var core_js_modules_es_string_fontsize__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__( - /*! core-js/modules/es.string.fontsize */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fontsize.js"); - /* harmony import */ - - - var core_js_modules_es_string_fontsize__WEBPACK_IMPORTED_MODULE_58___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_fontsize__WEBPACK_IMPORTED_MODULE_58__); - /* harmony import */ - - - var core_js_modules_es_string_italics__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__( - /*! core-js/modules/es.string.italics */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.italics.js"); - /* harmony import */ - - - var core_js_modules_es_string_italics__WEBPACK_IMPORTED_MODULE_59___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_italics__WEBPACK_IMPORTED_MODULE_59__); - /* harmony import */ - - - var core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__( - /*! core-js/modules/es.string.link */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.link.js"); - /* harmony import */ - - - var core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_60___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_60__); - /* harmony import */ - - - var core_js_modules_es_string_small__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__( - /*! core-js/modules/es.string.small */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.small.js"); - /* harmony import */ - - - var core_js_modules_es_string_small__WEBPACK_IMPORTED_MODULE_61___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_small__WEBPACK_IMPORTED_MODULE_61__); - /* harmony import */ - - - var core_js_modules_es_string_strike__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__( - /*! core-js/modules/es.string.strike */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.strike.js"); - /* harmony import */ - - - var core_js_modules_es_string_strike__WEBPACK_IMPORTED_MODULE_62___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_strike__WEBPACK_IMPORTED_MODULE_62__); - /* harmony import */ - - - var core_js_modules_es_string_sub__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__( - /*! core-js/modules/es.string.sub */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.sub.js"); - /* harmony import */ - - - var core_js_modules_es_string_sub__WEBPACK_IMPORTED_MODULE_63___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_sub__WEBPACK_IMPORTED_MODULE_63__); - /* harmony import */ - - - var core_js_modules_es_string_sup__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__( - /*! core-js/modules/es.string.sup */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.sup.js"); - /* harmony import */ - - - var core_js_modules_es_string_sup__WEBPACK_IMPORTED_MODULE_64___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_sup__WEBPACK_IMPORTED_MODULE_64__); - /* harmony import */ - - - var core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__( - /*! core-js/modules/es.string.match */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.match.js"); - /* harmony import */ - - - var core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_65___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_65__); - /* harmony import */ - - - var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__( - /*! core-js/modules/es.string.replace */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.replace.js"); - /* harmony import */ - - - var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_66___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_66__); - /* harmony import */ - - - var core_js_modules_es_string_search__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__( - /*! core-js/modules/es.string.search */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.search.js"); - /* harmony import */ - - - var core_js_modules_es_string_search__WEBPACK_IMPORTED_MODULE_67___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_search__WEBPACK_IMPORTED_MODULE_67__); - /* harmony import */ - - - var core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__( - /*! core-js/modules/es.string.split */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.split.js"); - /* harmony import */ - - - var core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_68___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_68__); - /* harmony import */ - - - var core_js_modules_es_parse_int__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__( - /*! core-js/modules/es.parse-int */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.parse-int.js"); - /* harmony import */ - - - var core_js_modules_es_parse_int__WEBPACK_IMPORTED_MODULE_69___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_parse_int__WEBPACK_IMPORTED_MODULE_69__); - /* harmony import */ - - - var core_js_modules_es_parse_float__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__( - /*! core-js/modules/es.parse-float */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.parse-float.js"); - /* harmony import */ - - - var core_js_modules_es_parse_float__WEBPACK_IMPORTED_MODULE_70___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_parse_float__WEBPACK_IMPORTED_MODULE_70__); - /* harmony import */ - - - var core_js_es_number__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__( - /*! core-js/es/number */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/number/index.js"); - /* harmony import */ - - - var core_js_es_number__WEBPACK_IMPORTED_MODULE_71___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_es_number__WEBPACK_IMPORTED_MODULE_71__); - /* harmony import */ - - - var core_js_es_math__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__( - /*! core-js/es/math */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/math/index.js"); - /* harmony import */ - - - var core_js_es_math__WEBPACK_IMPORTED_MODULE_72___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_es_math__WEBPACK_IMPORTED_MODULE_72__); - /* harmony import */ - - - var core_js_es_date__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__( - /*! core-js/es/date */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/es/date/index.js"); - /* harmony import */ - - - var core_js_es_date__WEBPACK_IMPORTED_MODULE_73___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_es_date__WEBPACK_IMPORTED_MODULE_73__); - /* harmony import */ - - - var core_js_modules_es_regexp_constructor__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__( - /*! core-js/modules/es.regexp.constructor */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.constructor.js"); - /* harmony import */ - - - var core_js_modules_es_regexp_constructor__WEBPACK_IMPORTED_MODULE_74___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_regexp_constructor__WEBPACK_IMPORTED_MODULE_74__); - /* harmony import */ - - - var core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__( - /*! core-js/modules/es.regexp.to-string */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.to-string.js"); - /* harmony import */ - - - var core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_75___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_75__); - /* harmony import */ - - - var core_js_modules_es_regexp_flags__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__( - /*! core-js/modules/es.regexp.flags */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.flags.js"); - /* harmony import */ - - - var core_js_modules_es_regexp_flags__WEBPACK_IMPORTED_MODULE_76___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_regexp_flags__WEBPACK_IMPORTED_MODULE_76__); - /* harmony import */ - - - var core_js_modules_es_map__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__( - /*! core-js/modules/es.map */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js"); - /* harmony import */ - - - var core_js_modules_es_map__WEBPACK_IMPORTED_MODULE_77___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_map__WEBPACK_IMPORTED_MODULE_77__); - /* harmony import */ - - - var core_js_modules_es_weak_map__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__( - /*! core-js/modules/es.weak-map */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js"); - /* harmony import */ - - - var core_js_modules_es_weak_map__WEBPACK_IMPORTED_MODULE_78___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_weak_map__WEBPACK_IMPORTED_MODULE_78__); - /* harmony import */ - - - var core_js_modules_es_set__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__( - /*! core-js/modules/es.set */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js"); - /* harmony import */ - - - var core_js_modules_es_set__WEBPACK_IMPORTED_MODULE_79___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_set__WEBPACK_IMPORTED_MODULE_79__); - /* harmony import */ - - - var core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__( - /*! core-js/modules/web.dom-collections.for-each */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/web.dom-collections.for-each.js"); - /* harmony import */ - - - var core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_80___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_80__); - /* harmony import */ - - - var core_js_modules_web_dom_collections_iterator__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__( - /*! core-js/modules/web.dom-collections.iterator */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/web.dom-collections.iterator.js"); - /* harmony import */ - - - var core_js_modules_web_dom_collections_iterator__WEBPACK_IMPORTED_MODULE_81___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_web_dom_collections_iterator__WEBPACK_IMPORTED_MODULE_81__); - /* harmony import */ - - - var core_js_modules_es_promise__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__( - /*! core-js/modules/es.promise */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.promise.js"); - /* harmony import */ - - - var core_js_modules_es_promise__WEBPACK_IMPORTED_MODULE_82___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_promise__WEBPACK_IMPORTED_MODULE_82__); - /* harmony import */ - - - var core_js_modules_es_json_to_string_tag__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__( - /*! core-js/modules/es.json.to-string-tag */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.json.to-string-tag.js"); - /* harmony import */ - - - var core_js_modules_es_json_to_string_tag__WEBPACK_IMPORTED_MODULE_83___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_modules_es_json_to_string_tag__WEBPACK_IMPORTED_MODULE_83__); - /* harmony import */ - - - var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__( - /*! regenerator-runtime/runtime */ - "./node_modules/regenerator-runtime/runtime.js"); - /* harmony import */ - - - var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_84___default = - /*#__PURE__*/ - __webpack_require__.n(regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_84__); - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - // ES2015 symbol capabilities - // ES2015 function capabilities - // ES2015 object capabilities - // ES2015 array capabilities - // ES2015 string capabilities - - /***/ - - }, - - /***/ - "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js": - /*!**************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js ***! - \**************************************************************************************************/ - - /*! no exports provided */ - - /***/ - function node_modulesAngularDevkitBuildAngularSrcAngularCliFilesModelsJitPolyfillsJs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony import */ - - - var core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! core-js/proposals/reflect-metadata */ - "./node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata.js"); - /* harmony import */ - - - var core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0___default = - /*#__PURE__*/ - __webpack_require__.n(core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0__); - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /***/ - - }, - - /***/ - "./node_modules/regenerator-runtime/runtime.js": - /*!*****************************************************!*\ - !*** ./node_modules/regenerator-runtime/runtime.js ***! - \*****************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesRegeneratorRuntimeRuntimeJs(module, exports, __webpack_require__) { - /** - * Copyright (c) 2014-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - var runtime = function (exports) { - "use strict"; - - var Op = Object.prototype; - var hasOwn = Op.hasOwnProperty; - var undefined; // More compressible than void 0. - - var $Symbol = typeof Symbol === "function" ? Symbol : {}; - var iteratorSymbol = $Symbol.iterator || "@@iterator"; - var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; - var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; - - function wrap(innerFn, outerFn, self, tryLocsList) { - // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. - var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; - var generator = Object.create(protoGenerator.prototype); - var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next, - // .throw, and .return methods. - - generator._invoke = makeInvokeMethod(innerFn, self, context); - return generator; - } - - exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion - // record like context.tryEntries[i].completion. This interface could - // have been (and was previously) designed to take a closure to be - // invoked without arguments, but in all the cases we care about we - // already have an existing method we want to call, so there's no need - // to create a new function object. We can even get away with assuming - // the method takes exactly one argument, since that happens to be true - // in every case, so we don't have to touch the arguments object. The - // only additional allocation required is the completion record, which - // has a stable shape and so hopefully should be cheap to allocate. - - function tryCatch(fn, obj, arg) { - try { - return { - type: "normal", - arg: fn.call(obj, arg) - }; - } catch (err) { - return { - type: "throw", - arg: err - }; - } - } - - var GenStateSuspendedStart = "suspendedStart"; - var GenStateSuspendedYield = "suspendedYield"; - var GenStateExecuting = "executing"; - var GenStateCompleted = "completed"; // Returning this object from the innerFn has the same effect as - // breaking out of the dispatch switch statement. - - var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and - // .constructor.prototype properties for functions that return Generator - // objects. For full spec compliance, you may wish to configure your - // minifier not to mangle the names of these two functions. - - function Generator() {} - - function GeneratorFunction() {} - - function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that - // don't natively support it. - - - var IteratorPrototype = {}; - - IteratorPrototype[iteratorSymbol] = function () { - return this; - }; - - var getProto = Object.getPrototypeOf; - var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); - - if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { - // This environment has a native %IteratorPrototype%; use it instead - // of the polyfill. - IteratorPrototype = NativeIteratorPrototype; - } - - var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); - GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; - GeneratorFunctionPrototype.constructor = GeneratorFunction; - GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction"; // Helper for defining the .next, .throw, and .return methods of the - // Iterator interface in terms of a single ._invoke method. - - function defineIteratorMethods(prototype) { - ["next", "throw", "return"].forEach(function (method) { - prototype[method] = function (arg) { - return this._invoke(method, arg); - }; - }); - } - - exports.isGeneratorFunction = function (genFun) { - var ctor = typeof genFun === "function" && genFun.constructor; - return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can - // do is to check its .name property. - (ctor.displayName || ctor.name) === "GeneratorFunction" : false; - }; - - exports.mark = function (genFun) { - if (Object.setPrototypeOf) { - Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); - } else { - genFun.__proto__ = GeneratorFunctionPrototype; - - if (!(toStringTagSymbol in genFun)) { - genFun[toStringTagSymbol] = "GeneratorFunction"; - } - } - - genFun.prototype = Object.create(Gp); - return genFun; - }; // Within the body of any async function, `await x` is transformed to - // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test - // `hasOwn.call(value, "__await")` to determine if the yielded value is - // meant to be awaited. - - - exports.awrap = function (arg) { - return { - __await: arg - }; - }; - - function AsyncIterator(generator) { - function invoke(method, arg, resolve, reject) { - var record = tryCatch(generator[method], generator, arg); - - if (record.type === "throw") { - reject(record.arg); - } else { - var result = record.arg; - var value = result.value; - - if (value && typeof value === "object" && hasOwn.call(value, "__await")) { - return Promise.resolve(value.__await).then(function (value) { - invoke("next", value, resolve, reject); - }, function (err) { - invoke("throw", err, resolve, reject); - }); - } - - return Promise.resolve(value).then(function (unwrapped) { - // When a yielded Promise is resolved, its final value becomes - // the .value of the Promise<{value,done}> result for the - // current iteration. - result.value = unwrapped; - resolve(result); - }, function (error) { - // If a rejected Promise was yielded, throw the rejection back - // into the async generator function so it can be handled there. - return invoke("throw", error, resolve, reject); - }); - } - } - - var previousPromise; - - function enqueue(method, arg) { - function callInvokeWithMethodAndArg() { - return new Promise(function (resolve, reject) { - invoke(method, arg, resolve, reject); - }); - } - - return previousPromise = // If enqueue has been called before, then we want to wait until - // all previous Promises have been resolved before calling invoke, - // so that results are always delivered in the correct order. If - // enqueue has not been called before, then it is important to - // call invoke immediately, without waiting on a callback to fire, - // so that the async generator function has the opportunity to do - // any necessary setup in a predictable way. This predictability - // is why the Promise constructor synchronously invokes its - // executor callback, and why async functions synchronously - // execute code before the first await. Since we implement simple - // async functions in terms of async generators, it is especially - // important to get this right, even though it requires care. - previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later - // invocations of the iterator. - callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); - } // Define the unified helper method that is used to implement .next, - // .throw, and .return (see defineIteratorMethods). - - - this._invoke = enqueue; - } - - defineIteratorMethods(AsyncIterator.prototype); - - AsyncIterator.prototype[asyncIteratorSymbol] = function () { - return this; - }; - - exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of - // AsyncIterator objects; they just return a Promise for the value of - // the final result produced by the iterator. - - exports.async = function (innerFn, outerFn, self, tryLocsList) { - var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList)); - return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator. - : iter.next().then(function (result) { - return result.done ? result.value : iter.next(); - }); - }; - - function makeInvokeMethod(innerFn, self, context) { - var state = GenStateSuspendedStart; - return function invoke(method, arg) { - if (state === GenStateExecuting) { - throw new Error("Generator is already running"); - } - - if (state === GenStateCompleted) { - if (method === "throw") { - throw arg; - } // Be forgiving, per 25.3.3.3.3 of the spec: - // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume - - - return doneResult(); - } - - context.method = method; - context.arg = arg; - - while (true) { - var delegate = context.delegate; - - if (delegate) { - var delegateResult = maybeInvokeDelegate(delegate, context); - - if (delegateResult) { - if (delegateResult === ContinueSentinel) continue; - return delegateResult; - } - } - - if (context.method === "next") { - // Setting context._sent for legacy support of Babel's - // function.sent implementation. - context.sent = context._sent = context.arg; - } else if (context.method === "throw") { - if (state === GenStateSuspendedStart) { - state = GenStateCompleted; - throw context.arg; - } - - context.dispatchException(context.arg); - } else if (context.method === "return") { - context.abrupt("return", context.arg); - } - - state = GenStateExecuting; - var record = tryCatch(innerFn, self, context); - - if (record.type === "normal") { - // If an exception is thrown from innerFn, we leave state === - // GenStateExecuting and loop back for another invocation. - state = context.done ? GenStateCompleted : GenStateSuspendedYield; - - if (record.arg === ContinueSentinel) { - continue; - } - - return { - value: record.arg, - done: context.done - }; - } else if (record.type === "throw") { - state = GenStateCompleted; // Dispatch the exception by looping back around to the - // context.dispatchException(context.arg) call above. - - context.method = "throw"; - context.arg = record.arg; - } - } - }; - } // Call delegate.iterator[context.method](context.arg) and handle the - // result, either by returning a { value, done } result from the - // delegate iterator, or by modifying context.method and context.arg, - // setting context.delegate to null, and returning the ContinueSentinel. - - - function maybeInvokeDelegate(delegate, context) { - var method = delegate.iterator[context.method]; - - if (method === undefined) { - // A .throw or .return when the delegate iterator has no .throw - // method always terminates the yield* loop. - context.delegate = null; - - if (context.method === "throw") { - // Note: ["return"] must be used for ES3 parsing compatibility. - if (delegate.iterator["return"]) { - // If the delegate iterator has a return method, give it a - // chance to clean up. - context.method = "return"; - context.arg = undefined; - maybeInvokeDelegate(delegate, context); - - if (context.method === "throw") { - // If maybeInvokeDelegate(context) changed context.method from - // "return" to "throw", let that override the TypeError below. - return ContinueSentinel; - } - } - - context.method = "throw"; - context.arg = new TypeError("The iterator does not provide a 'throw' method"); - } - - return ContinueSentinel; - } - - var record = tryCatch(method, delegate.iterator, context.arg); - - if (record.type === "throw") { - context.method = "throw"; - context.arg = record.arg; - context.delegate = null; - return ContinueSentinel; - } - - var info = record.arg; - - if (!info) { - context.method = "throw"; - context.arg = new TypeError("iterator result is not an object"); - context.delegate = null; - return ContinueSentinel; - } - - if (info.done) { - // Assign the result of the finished delegate to the temporary - // variable specified by delegate.resultName (see delegateYield). - context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield). - - context.next = delegate.nextLoc; // If context.method was "throw" but the delegate handled the - // exception, let the outer generator proceed normally. If - // context.method was "next", forget context.arg since it has been - // "consumed" by the delegate iterator. If context.method was - // "return", allow the original .return call to continue in the - // outer generator. - - if (context.method !== "return") { - context.method = "next"; - context.arg = undefined; - } - } else { - // Re-yield the result returned by the delegate method. - return info; - } // The delegate iterator is finished, so forget it and continue with - // the outer generator. - - - context.delegate = null; - return ContinueSentinel; - } // Define Generator.prototype.{next,throw,return} in terms of the - // unified ._invoke helper method. - - - defineIteratorMethods(Gp); - Gp[toStringTagSymbol] = "Generator"; // A Generator should always return itself as the iterator object when the - // @@iterator function is called on it. Some browsers' implementations of the - // iterator prototype chain incorrectly implement this, causing the Generator - // object to not be returned from this call. This ensures that doesn't happen. - // See https://github.com/facebook/regenerator/issues/274 for more details. - - Gp[iteratorSymbol] = function () { - return this; - }; - - Gp.toString = function () { - return "[object Generator]"; - }; - - function pushTryEntry(locs) { - var entry = { - tryLoc: locs[0] - }; - - if (1 in locs) { - entry.catchLoc = locs[1]; - } - - if (2 in locs) { - entry.finallyLoc = locs[2]; - entry.afterLoc = locs[3]; - } - - this.tryEntries.push(entry); - } - - function resetTryEntry(entry) { - var record = entry.completion || {}; - record.type = "normal"; - delete record.arg; - entry.completion = record; - } - - function Context(tryLocsList) { - // The root entry object (effectively a try statement without a catch - // or a finally block) gives us a place to store values thrown from - // locations where there is no enclosing try statement. - this.tryEntries = [{ - tryLoc: "root" - }]; - tryLocsList.forEach(pushTryEntry, this); - this.reset(true); - } - - exports.keys = function (object) { - var keys = []; - - for (var key in object) { - keys.push(key); - } - - keys.reverse(); // Rather than returning an object with a next method, we keep - // things simple and return the next function itself. - - return function next() { - while (keys.length) { - var key = keys.pop(); - - if (key in object) { - next.value = key; - next.done = false; - return next; - } - } // To avoid creating an additional object, we just hang the .value - // and .done properties off the next function object itself. This - // also ensures that the minifier will not anonymize the function. - - - next.done = true; - return next; - }; - }; - - function values(iterable) { - if (iterable) { - var iteratorMethod = iterable[iteratorSymbol]; - - if (iteratorMethod) { - return iteratorMethod.call(iterable); - } - - if (typeof iterable.next === "function") { - return iterable; - } - - if (!isNaN(iterable.length)) { - var i = -1, - next = function next() { - while (++i < iterable.length) { - if (hasOwn.call(iterable, i)) { - next.value = iterable[i]; - next.done = false; - return next; - } - } - - next.value = undefined; - next.done = true; - return next; - }; - - return next.next = next; - } - } // Return an iterator with no values. - - - return { - next: doneResult - }; - } - - exports.values = values; - - function doneResult() { - return { - value: undefined, - done: true - }; - } - - Context.prototype = { - constructor: Context, - reset: function reset(skipTempReset) { - this.prev = 0; - this.next = 0; // Resetting context._sent for legacy support of Babel's - // function.sent implementation. - - this.sent = this._sent = undefined; - this.done = false; - this.delegate = null; - this.method = "next"; - this.arg = undefined; - this.tryEntries.forEach(resetTryEntry); - - if (!skipTempReset) { - for (var name in this) { - // Not sure about the optimal order of these conditions: - if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) { - this[name] = undefined; - } - } - } - }, - stop: function stop() { - this.done = true; - var rootEntry = this.tryEntries[0]; - var rootRecord = rootEntry.completion; - - if (rootRecord.type === "throw") { - throw rootRecord.arg; - } - - return this.rval; - }, - dispatchException: function dispatchException(exception) { - if (this.done) { - throw exception; - } - - var context = this; - - function handle(loc, caught) { - record.type = "throw"; - record.arg = exception; - context.next = loc; - - if (caught) { - // If the dispatched exception was caught by a catch block, - // then let that catch block handle the exception normally. - context.method = "next"; - context.arg = undefined; - } - - return !!caught; - } - - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - var record = entry.completion; - - if (entry.tryLoc === "root") { - // Exception thrown outside of any try block that could handle - // it, so set the completion value of the entire function to - // throw the exception. - return handle("end"); - } - - if (entry.tryLoc <= this.prev) { - var hasCatch = hasOwn.call(entry, "catchLoc"); - var hasFinally = hasOwn.call(entry, "finallyLoc"); - - if (hasCatch && hasFinally) { - if (this.prev < entry.catchLoc) { - return handle(entry.catchLoc, true); - } else if (this.prev < entry.finallyLoc) { - return handle(entry.finallyLoc); - } - } else if (hasCatch) { - if (this.prev < entry.catchLoc) { - return handle(entry.catchLoc, true); - } - } else if (hasFinally) { - if (this.prev < entry.finallyLoc) { - return handle(entry.finallyLoc); - } - } else { - throw new Error("try statement without catch or finally"); - } - } - } - }, - abrupt: function abrupt(type, arg) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { - var finallyEntry = entry; - break; - } - } - - if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) { - // Ignore the finally entry if control is not jumping to a - // location outside the try/catch block. - finallyEntry = null; - } - - var record = finallyEntry ? finallyEntry.completion : {}; - record.type = type; - record.arg = arg; - - if (finallyEntry) { - this.method = "next"; - this.next = finallyEntry.finallyLoc; - return ContinueSentinel; - } - - return this.complete(record); - }, - complete: function complete(record, afterLoc) { - if (record.type === "throw") { - throw record.arg; - } - - if (record.type === "break" || record.type === "continue") { - this.next = record.arg; - } else if (record.type === "return") { - this.rval = this.arg = record.arg; - this.method = "return"; - this.next = "end"; - } else if (record.type === "normal" && afterLoc) { - this.next = afterLoc; - } - - return ContinueSentinel; - }, - finish: function finish(finallyLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.finallyLoc === finallyLoc) { - this.complete(entry.completion, entry.afterLoc); - resetTryEntry(entry); - return ContinueSentinel; - } - } - }, - "catch": function _catch(tryLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - - if (entry.tryLoc === tryLoc) { - var record = entry.completion; - - if (record.type === "throw") { - var thrown = record.arg; - resetTryEntry(entry); - } - - return thrown; - } - } // The context.catch method must only be called with a location - // argument that corresponds to a known catch block. - - - throw new Error("illegal catch attempt"); - }, - delegateYield: function delegateYield(iterable, resultName, nextLoc) { - this.delegate = { - iterator: values(iterable), - resultName: resultName, - nextLoc: nextLoc - }; - - if (this.method === "next") { - // Deliberately forget the last sent value so that we don't - // accidentally pass it on to the delegate. - this.arg = undefined; - } - - return ContinueSentinel; - } - }; // Regardless of whether this script is executing as a CommonJS module - // or not, return the runtime object so that we can declare the variable - // regeneratorRuntime in the outer scope, which allows this module to be - // injected easily by `bin/regenerator --include-runtime script.js`. - - return exports; - }( // If this script is executing as a CommonJS module, use module.exports - // as the regeneratorRuntime namespace. Otherwise create a new empty - // object. Either way, the resulting object will be used to initialize - // the regeneratorRuntime variable at the top of this file. - true ? module.exports : undefined); - - try { - regeneratorRuntime = runtime; - } catch (accidentalStrictMode) { - // This module should not be running in strict mode, so the above - // assignment should always work unless something is misconfigured. Just - // in case runtime.js accidentally runs in strict mode, we can escape - // strict mode using a global Function call. This could conceivably fail - // if a Content Security Policy forbids using Function, but in that case - // the proper solution is to fix the accidental strict mode problem. If - // you've misconfigured your bundler to force strict mode and applied a - // CSP to forbid Function, and you're not willing to fix either of those - // problems, please detail your unique predicament in a GitHub issue. - Function("r", "regeneratorRuntime = r")(runtime); - } - /***/ - - }, - - /***/ - "./node_modules/tslib/tslib.es6.js": - /*!*****************************************!*\ - !*** ./node_modules/tslib/tslib.es6.js ***! - \*****************************************/ - - /*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */ - - /***/ - function node_modulesTslibTslibEs6Js(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__extends", function () { - return __extends; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__assign", function () { - return _assign; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__rest", function () { - return __rest; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__decorate", function () { - return __decorate; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__param", function () { - return __param; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__metadata", function () { - return __metadata; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__awaiter", function () { - return __awaiter; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__generator", function () { - return __generator; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__exportStar", function () { - return __exportStar; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__values", function () { - return __values; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__read", function () { - return __read; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__spread", function () { - return __spread; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__await", function () { - return __await; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function () { - return __asyncGenerator; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function () { - return __asyncDelegator; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__asyncValues", function () { - return __asyncValues; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function () { - return __makeTemplateObject; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__importStar", function () { - return __importStar; - }); - /* harmony export (binding) */ - - - __webpack_require__.d(__webpack_exports__, "__importDefault", function () { - return __importDefault; - }); - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - - /* global Reflect, Promise */ - - - var _extendStatics = function extendStatics(d, b) { - _extendStatics = Object.setPrototypeOf || { - __proto__: [] - } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) { - if (b.hasOwnProperty(p)) d[p] = b[p]; - } - }; - - return _extendStatics(d, b); - }; - - function __extends(d, b) { - _extendStatics(d, b); - - function __() { - this.constructor = d; - } - - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var _assign = function __assign() { - _assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - - for (var p in s) { - if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - } - - return t; - }; - - return _assign.apply(this, arguments); - }; - - function __rest(s, e) { - var t = {}; - - for (var p in s) { - if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; - } - - if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]]; - } - return t; - } - - function __decorate(decorators, target, key, desc) { - var c = arguments.length, - r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, - d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) { - if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - } - return c > 3 && r && Object.defineProperty(target, key, r), r; - } - - function __param(paramIndex, decorator) { - return function (target, key) { - decorator(target, key, paramIndex); - }; - } - - function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); - } - - function __awaiter(thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - - function step(result) { - result.done ? resolve(result.value) : new P(function (resolve) { - resolve(result.value); - }).then(fulfilled, rejected); - } - - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - } - - function __generator(thisArg, body) { - var _ = { - label: 0, - sent: function sent() { - if (t[0] & 1) throw t[1]; - return t[1]; - }, - trys: [], - ops: [] - }, - f, - y, - t, - g; - return g = { - next: verb(0), - "throw": verb(1), - "return": verb(2) - }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { - return this; - }), g; - - function verb(n) { - return function (v) { - return step([n, v]); - }; - } - - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - - while (_) { - try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - - switch (op[0]) { - case 0: - case 1: - t = op; - break; - - case 4: - _.label++; - return { - value: op[1], - done: false - }; - - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - - case 7: - op = _.ops.pop(); - - _.trys.pop(); - - continue; - - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _ = 0; - continue; - } - - if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { - _.label = op[1]; - break; - } - - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - - if (t && _.label < t[2]) { - _.label = t[2]; - - _.ops.push(op); - - break; - } - - if (t[2]) _.ops.pop(); - - _.trys.pop(); - - continue; - } - - op = body.call(thisArg, _); - } catch (e) { - op = [6, e]; - y = 0; - } finally { - f = t = 0; - } - } - - if (op[0] & 5) throw op[1]; - return { - value: op[0] ? op[1] : void 0, - done: true - }; - } - } - - function __exportStar(m, exports) { - for (var p in m) { - if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - } - - function __values(o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], - i = 0; - if (m) return m.call(o); - return { - next: function next() { - if (o && i >= o.length) o = void 0; - return { - value: o && o[i++], - done: !o - }; - } - }; - } - - function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), - r, - ar = [], - e; - - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { - ar.push(r.value); - } - } catch (error) { - e = { - error: error - }; - } finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } finally { - if (e) throw e.error; - } - } - - return ar; - } - - function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) { - ar = ar.concat(__read(arguments[i])); - } - - return ar; - } - - function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); - } - - function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), - i, - q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i; - - function verb(n) { - if (g[n]) i[n] = function (v) { - return new Promise(function (a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - - function fulfill(value) { - resume("next", value); - } - - function reject(value) { - resume("throw", value); - } - - function settle(f, v) { - if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); - } - } - - function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { - throw e; - }), verb("return"), i[Symbol.iterator] = function () { - return this; - }, i; - - function verb(n, f) { - i[n] = o[n] ? function (v) { - return (p = !p) ? { - value: __await(o[n](v)), - done: n === "return" - } : f ? f(v) : v; - } : f; - } - } - - function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], - i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i); - - function verb(n) { - i[n] = o[n] && function (v) { - return new Promise(function (resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function (v) { - resolve({ - value: v, - done: d - }); - }, reject); - } - } - - function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { - Object.defineProperty(cooked, "raw", { - value: raw - }); - } else { - cooked.raw = raw; - } - - return cooked; - } - - ; - - function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) { - if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - } - result.default = mod; - return result; - } - - function __importDefault(mod) { - return mod && mod.__esModule ? mod : { - default: mod - }; - } - /***/ - - }, - - /***/ - "./node_modules/zone.js/dist/zone-evergreen.js": - /*!*****************************************************!*\ - !*** ./node_modules/zone.js/dist/zone-evergreen.js ***! - \*****************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesZoneJsDistZoneEvergreenJs(module, exports) { - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - var Zone$1 = function (global) { - var performance = global['performance']; - - function mark(name) { - performance && performance['mark'] && performance['mark'](name); - } - - function performanceMeasure(name, label) { - performance && performance['measure'] && performance['measure'](name, label); - } - - mark('Zone'); - var checkDuplicate = global['__zone_symbol__forceDuplicateZoneCheck'] === true; - - if (global['Zone']) { - // if global['Zone'] already exists (maybe zone.js was already loaded or - // some other lib also registered a global object named Zone), we may need - // to throw an error, but sometimes user may not want this error. - // For example, - // we have two web pages, page1 includes zone.js, page2 doesn't. - // and the 1st time user load page1 and page2, everything work fine, - // but when user load page2 again, error occurs because global['Zone'] already exists. - // so we add a flag to let user choose whether to throw this error or not. - // By default, if existing Zone is from zone.js, we will not throw the error. - if (checkDuplicate || typeof global['Zone'].__symbol__ !== 'function') { - throw new Error('Zone already loaded.'); - } else { - return global['Zone']; - } - } - - var Zone = - /*#__PURE__*/ - function () { - function Zone(parent, zoneSpec) { - _classCallCheck(this, Zone); - - this._parent = parent; - this._name = zoneSpec ? zoneSpec.name || 'unnamed' : ''; - this._properties = zoneSpec && zoneSpec.properties || {}; - this._zoneDelegate = new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec); - } - - _createClass(Zone, [{ - key: "get", - value: function get(key) { - var zone = this.getZoneWith(key); - if (zone) return zone._properties[key]; - } - }, { - key: "getZoneWith", - value: function getZoneWith(key) { - var current = this; - - while (current) { - if (current._properties.hasOwnProperty(key)) { - return current; - } - - current = current._parent; - } - - return null; - } - }, { - key: "fork", - value: function fork(zoneSpec) { - if (!zoneSpec) throw new Error('ZoneSpec required!'); - return this._zoneDelegate.fork(this, zoneSpec); - } - }, { - key: "wrap", - value: function wrap(callback, source) { - if (typeof callback !== 'function') { - throw new Error('Expecting function got: ' + callback); - } - - var _callback = this._zoneDelegate.intercept(this, callback, source); - - var zone = this; - return function () { - return zone.runGuarded(_callback, this, arguments, source); - }; - } - }, { - key: "run", - value: function run(callback, applyThis, applyArgs, source) { - _currentZoneFrame = { - parent: _currentZoneFrame, - zone: this - }; - - try { - return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); - } finally { - _currentZoneFrame = _currentZoneFrame.parent; - } - } - }, { - key: "runGuarded", - value: function runGuarded(callback) { - var applyThis = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - var applyArgs = arguments.length > 2 ? arguments[2] : undefined; - var source = arguments.length > 3 ? arguments[3] : undefined; - _currentZoneFrame = { - parent: _currentZoneFrame, - zone: this - }; - - try { - try { - return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); - } catch (error) { - if (this._zoneDelegate.handleError(this, error)) { - throw error; - } - } - } finally { - _currentZoneFrame = _currentZoneFrame.parent; - } - } - }, { - key: "runTask", - value: function runTask(task, applyThis, applyArgs) { - if (task.zone != this) { - throw new Error('A task can only be run in the zone of creation! (Creation: ' + (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')'); - } // https://github.com/angular/zone.js/issues/778, sometimes eventTask - // will run in notScheduled(canceled) state, we should not try to - // run such kind of task but just return - - - if (task.state === notScheduled && (task.type === eventTask || task.type === macroTask)) { - return; - } - - var reEntryGuard = task.state != running; - reEntryGuard && task._transitionTo(running, scheduled); - task.runCount++; - var previousTask = _currentTask; - _currentTask = task; - _currentZoneFrame = { - parent: _currentZoneFrame, - zone: this - }; - - try { - if (task.type == macroTask && task.data && !task.data.isPeriodic) { - task.cancelFn = undefined; - } - - try { - return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs); - } catch (error) { - if (this._zoneDelegate.handleError(this, error)) { - throw error; - } - } - } finally { - // if the task's state is notScheduled or unknown, then it has already been cancelled - // we should not reset the state to scheduled - if (task.state !== notScheduled && task.state !== unknown) { - if (task.type == eventTask || task.data && task.data.isPeriodic) { - reEntryGuard && task._transitionTo(scheduled, running); - } else { - task.runCount = 0; - - this._updateTaskCount(task, -1); - - reEntryGuard && task._transitionTo(notScheduled, running, notScheduled); - } - } - - _currentZoneFrame = _currentZoneFrame.parent; - _currentTask = previousTask; - } - } - }, { - key: "scheduleTask", - value: function scheduleTask(task) { - if (task.zone && task.zone !== this) { - // check if the task was rescheduled, the newZone - // should not be the children of the original zone - var newZone = this; - - while (newZone) { - if (newZone === task.zone) { - throw Error("can not reschedule task to ".concat(this.name, " which is descendants of the original zone ").concat(task.zone.name)); - } - - newZone = newZone.parent; - } - } - - task._transitionTo(scheduling, notScheduled); - - var zoneDelegates = []; - task._zoneDelegates = zoneDelegates; - task._zone = this; - - try { - task = this._zoneDelegate.scheduleTask(this, task); - } catch (err) { - // should set task's state to unknown when scheduleTask throw error - // because the err may from reschedule, so the fromState maybe notScheduled - task._transitionTo(unknown, scheduling, notScheduled); // TODO: @JiaLiPassion, should we check the result from handleError? - - - this._zoneDelegate.handleError(this, err); - - throw err; - } - - if (task._zoneDelegates === zoneDelegates) { - // we have to check because internally the delegate can reschedule the task. - this._updateTaskCount(task, 1); - } - - if (task.state == scheduling) { - task._transitionTo(scheduled, scheduling); - } - - return task; - } - }, { - key: "scheduleMicroTask", - value: function scheduleMicroTask(source, callback, data, customSchedule) { - return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, undefined)); - } - }, { - key: "scheduleMacroTask", - value: function scheduleMacroTask(source, callback, data, customSchedule, customCancel) { - return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel)); - } - }, { - key: "scheduleEventTask", - value: function scheduleEventTask(source, callback, data, customSchedule, customCancel) { - return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel)); - } - }, { - key: "cancelTask", - value: function cancelTask(task) { - if (task.zone != this) throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' + (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')'); - - task._transitionTo(canceling, scheduled, running); - - try { - this._zoneDelegate.cancelTask(this, task); - } catch (err) { - // if error occurs when cancelTask, transit the state to unknown - task._transitionTo(unknown, canceling); - - this._zoneDelegate.handleError(this, err); - - throw err; - } - - this._updateTaskCount(task, -1); - - task._transitionTo(notScheduled, canceling); - - task.runCount = 0; - return task; - } - }, { - key: "_updateTaskCount", - value: function _updateTaskCount(task, count) { - var zoneDelegates = task._zoneDelegates; - - if (count == -1) { - task._zoneDelegates = null; - } - - for (var i = 0; i < zoneDelegates.length; i++) { - zoneDelegates[i]._updateTaskCount(task.type, count); - } - } - }, { - key: "parent", - get: function get() { - return this._parent; - } - }, { - key: "name", - get: function get() { - return this._name; - } - }], [{ - key: "assertZonePatched", - value: function assertZonePatched() { - if (global['Promise'] !== patches['ZoneAwarePromise']) { - throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' + 'has been overwritten.\n' + 'Most likely cause is that a Promise polyfill has been loaded ' + 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' + 'If you must load one, do so before loading zone.js.)'); - } - } - }, { - key: "__load_patch", - value: function __load_patch(name, fn) { - if (patches.hasOwnProperty(name)) { - if (checkDuplicate) { - throw Error('Already loaded patch: ' + name); - } - } else if (!global['__Zone_disable_' + name]) { - var perfName = 'Zone:' + name; - mark(perfName); - patches[name] = fn(global, Zone, _api); - performanceMeasure(perfName, perfName); - } - } - }, { - key: "root", - get: function get() { - var zone = Zone.current; - - while (zone.parent) { - zone = zone.parent; - } - - return zone; - } - }, { - key: "current", - get: function get() { - return _currentZoneFrame.zone; - } - }, { - key: "currentTask", - get: function get() { - return _currentTask; - } - }]); - - return Zone; - }(); - - Zone.__symbol__ = __symbol__; - var DELEGATE_ZS = { - name: '', - onHasTask: function onHasTask(delegate, _, target, hasTaskState) { - return delegate.hasTask(target, hasTaskState); - }, - onScheduleTask: function onScheduleTask(delegate, _, target, task) { - return delegate.scheduleTask(target, task); - }, - onInvokeTask: function onInvokeTask(delegate, _, target, task, applyThis, applyArgs) { - return delegate.invokeTask(target, task, applyThis, applyArgs); - }, - onCancelTask: function onCancelTask(delegate, _, target, task) { - return delegate.cancelTask(target, task); - } - }; - - var ZoneDelegate = - /*#__PURE__*/ - function () { - function ZoneDelegate(zone, parentDelegate, zoneSpec) { - _classCallCheck(this, ZoneDelegate); - - this._taskCounts = { - 'microTask': 0, - 'macroTask': 0, - 'eventTask': 0 - }; - this.zone = zone; - this._parentDelegate = parentDelegate; - this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS); - this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt); - this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone); - this._interceptZS = zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS); - this._interceptDlgt = zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt); - this._interceptCurrZone = zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone); - this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS); - this._invokeDlgt = zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt); - this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone); - this._handleErrorZS = zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS); - this._handleErrorDlgt = zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt); - this._handleErrorCurrZone = zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone); - this._scheduleTaskZS = zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS); - this._scheduleTaskDlgt = zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt); - this._scheduleTaskCurrZone = zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone); - this._invokeTaskZS = zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS); - this._invokeTaskDlgt = zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt); - this._invokeTaskCurrZone = zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone); - this._cancelTaskZS = zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS); - this._cancelTaskDlgt = zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt); - this._cancelTaskCurrZone = zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone); - this._hasTaskZS = null; - this._hasTaskDlgt = null; - this._hasTaskDlgtOwner = null; - this._hasTaskCurrZone = null; - var zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask; - var parentHasTask = parentDelegate && parentDelegate._hasTaskZS; - - if (zoneSpecHasTask || parentHasTask) { - // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such - // a case all task related interceptors must go through this ZD. We can't short circuit it. - this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS; - this._hasTaskDlgt = parentDelegate; - this._hasTaskDlgtOwner = this; - this._hasTaskCurrZone = zone; - - if (!zoneSpec.onScheduleTask) { - this._scheduleTaskZS = DELEGATE_ZS; - this._scheduleTaskDlgt = parentDelegate; - this._scheduleTaskCurrZone = this.zone; - } - - if (!zoneSpec.onInvokeTask) { - this._invokeTaskZS = DELEGATE_ZS; - this._invokeTaskDlgt = parentDelegate; - this._invokeTaskCurrZone = this.zone; - } - - if (!zoneSpec.onCancelTask) { - this._cancelTaskZS = DELEGATE_ZS; - this._cancelTaskDlgt = parentDelegate; - this._cancelTaskCurrZone = this.zone; - } - } - } - - _createClass(ZoneDelegate, [{ - key: "fork", - value: function fork(targetZone, zoneSpec) { - return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) : new Zone(targetZone, zoneSpec); - } - }, { - key: "intercept", - value: function intercept(targetZone, callback, source) { - return this._interceptZS ? this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) : callback; - } - }, { - key: "invoke", - value: function invoke(targetZone, callback, applyThis, applyArgs, source) { - return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) : callback.apply(applyThis, applyArgs); - } - }, { - key: "handleError", - value: function handleError(targetZone, error) { - return this._handleErrorZS ? this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) : true; - } - }, { - key: "scheduleTask", - value: function scheduleTask(targetZone, task) { - var returnTask = task; - - if (this._scheduleTaskZS) { - if (this._hasTaskZS) { - returnTask._zoneDelegates.push(this._hasTaskDlgtOwner); - } - - returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task); - if (!returnTask) returnTask = task; - } else { - if (task.scheduleFn) { - task.scheduleFn(task); - } else if (task.type == microTask) { - scheduleMicroTask(task); - } else { - throw new Error('Task is missing scheduleFn.'); - } - } - - return returnTask; - } - }, { - key: "invokeTask", - value: function invokeTask(targetZone, task, applyThis, applyArgs) { - return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) : task.callback.apply(applyThis, applyArgs); - } - }, { - key: "cancelTask", - value: function cancelTask(targetZone, task) { - var value; - - if (this._cancelTaskZS) { - value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task); - } else { - if (!task.cancelFn) { - throw Error('Task is not cancelable'); - } - - value = task.cancelFn(task); - } - - return value; - } - }, { - key: "hasTask", - value: function hasTask(targetZone, isEmpty) { - // hasTask should not throw error so other ZoneDelegate - // can still trigger hasTask callback - try { - this._hasTaskZS && this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty); - } catch (err) { - this.handleError(targetZone, err); - } - } - }, { - key: "_updateTaskCount", - value: function _updateTaskCount(type, count) { - var counts = this._taskCounts; - var prev = counts[type]; - var next = counts[type] = prev + count; - - if (next < 0) { - throw new Error('More tasks executed then were scheduled.'); - } - - if (prev == 0 || next == 0) { - var isEmpty = { - microTask: counts['microTask'] > 0, - macroTask: counts['macroTask'] > 0, - eventTask: counts['eventTask'] > 0, - change: type - }; - this.hasTask(this.zone, isEmpty); - } - } - }]); - - return ZoneDelegate; - }(); - - var ZoneTask = - /*#__PURE__*/ - function () { - function ZoneTask(type, source, callback, options, scheduleFn, cancelFn) { - _classCallCheck(this, ZoneTask); - - this._zone = null; - this.runCount = 0; - this._zoneDelegates = null; - this._state = 'notScheduled'; - this.type = type; - this.source = source; - this.data = options; - this.scheduleFn = scheduleFn; - this.cancelFn = cancelFn; - this.callback = callback; - var self = this; // TODO: @JiaLiPassion options should have interface - - if (type === eventTask && options && options.useG) { - this.invoke = ZoneTask.invokeTask; - } else { - this.invoke = function () { - return ZoneTask.invokeTask.call(global, self, this, arguments); - }; - } - } - - _createClass(ZoneTask, [{ - key: "cancelScheduleRequest", - value: function cancelScheduleRequest() { - this._transitionTo(notScheduled, scheduling); - } - }, { - key: "_transitionTo", - value: function _transitionTo(toState, fromState1, fromState2) { - if (this._state === fromState1 || this._state === fromState2) { - this._state = toState; - - if (toState == notScheduled) { - this._zoneDelegates = null; - } - } else { - throw new Error("".concat(this.type, " '").concat(this.source, "': can not transition to '").concat(toState, "', expecting state '").concat(fromState1, "'").concat(fromState2 ? ' or \'' + fromState2 + '\'' : '', ", was '").concat(this._state, "'.")); - } - } - }, { - key: "toString", - value: function toString() { - if (this.data && typeof this.data.handleId !== 'undefined') { - return this.data.handleId.toString(); - } else { - return Object.prototype.toString.call(this); - } - } // add toJSON method to prevent cyclic error when - // call JSON.stringify(zoneTask) - - }, { - key: "toJSON", - value: function toJSON() { - return { - type: this.type, - state: this.state, - source: this.source, - zone: this.zone.name, - runCount: this.runCount - }; - } - }, { - key: "zone", - get: function get() { - return this._zone; - } - }, { - key: "state", - get: function get() { - return this._state; - } - }], [{ - key: "invokeTask", - value: function invokeTask(task, target, args) { - if (!task) { - task = this; - } - - _numberOfNestedTaskFrames++; - - try { - task.runCount++; - return task.zone.runTask(task, target, args); - } finally { - if (_numberOfNestedTaskFrames == 1) { - drainMicroTaskQueue(); - } - - _numberOfNestedTaskFrames--; - } - } - }]); - - return ZoneTask; - }(); ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - /// MICROTASK QUEUE - ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - - - var symbolSetTimeout = __symbol__('setTimeout'); - - var symbolPromise = __symbol__('Promise'); - - var symbolThen = __symbol__('then'); - - var _microTaskQueue = []; - var _isDrainingMicrotaskQueue = false; - var nativeMicroTaskQueuePromise; - - function scheduleMicroTask(task) { - // if we are not running in any task, and there has not been anything scheduled - // we must bootstrap the initial task creation by manually scheduling the drain - if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) { - // We are not running in Task, so we need to kickstart the microtask queue. - if (!nativeMicroTaskQueuePromise) { - if (global[symbolPromise]) { - nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0); - } - } - - if (nativeMicroTaskQueuePromise) { - var nativeThen = nativeMicroTaskQueuePromise[symbolThen]; - - if (!nativeThen) { - // native Promise is not patchable, we need to use `then` directly - // issue 1078 - nativeThen = nativeMicroTaskQueuePromise['then']; - } - - nativeThen.call(nativeMicroTaskQueuePromise, drainMicroTaskQueue); - } else { - global[symbolSetTimeout](drainMicroTaskQueue, 0); - } - } - - task && _microTaskQueue.push(task); - } - - function drainMicroTaskQueue() { - if (!_isDrainingMicrotaskQueue) { - _isDrainingMicrotaskQueue = true; - - while (_microTaskQueue.length) { - var queue = _microTaskQueue; - _microTaskQueue = []; - - for (var i = 0; i < queue.length; i++) { - var task = queue[i]; - - try { - task.zone.runTask(task, null, null); - } catch (error) { - _api.onUnhandledError(error); - } - } - } - - _api.microtaskDrainDone(); - - _isDrainingMicrotaskQueue = false; - } - } ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - /// BOOTSTRAP - ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - - - var NO_ZONE = { - name: 'NO ZONE' - }; - var notScheduled = 'notScheduled', - scheduling = 'scheduling', - scheduled = 'scheduled', - running = 'running', - canceling = 'canceling', - unknown = 'unknown'; - var microTask = 'microTask', - macroTask = 'macroTask', - eventTask = 'eventTask'; - var patches = {}; - var _api = { - symbol: __symbol__, - currentZoneFrame: function currentZoneFrame() { - return _currentZoneFrame; - }, - onUnhandledError: noop, - microtaskDrainDone: noop, - scheduleMicroTask: scheduleMicroTask, - showUncaughtError: function showUncaughtError() { - return !Zone[__symbol__('ignoreConsoleErrorUncaughtError')]; - }, - patchEventTarget: function patchEventTarget() { - return []; - }, - patchOnProperties: noop, - patchMethod: function patchMethod() { - return noop; - }, - bindArguments: function bindArguments() { - return []; - }, - patchThen: function patchThen() { - return noop; - }, - patchMacroTask: function patchMacroTask() { - return noop; - }, - setNativePromise: function setNativePromise(NativePromise) { - // sometimes NativePromise.resolve static function - // is not ready yet, (such as core-js/es6.promise) - // so we need to check here. - if (NativePromise && typeof NativePromise.resolve === 'function') { - nativeMicroTaskQueuePromise = NativePromise.resolve(0); - } - }, - patchEventPrototype: function patchEventPrototype() { - return noop; - }, - isIEOrEdge: function isIEOrEdge() { - return false; - }, - getGlobalObjects: function getGlobalObjects() { - return undefined; - }, - ObjectDefineProperty: function ObjectDefineProperty() { - return noop; - }, - ObjectGetOwnPropertyDescriptor: function ObjectGetOwnPropertyDescriptor() { - return undefined; - }, - ObjectCreate: function ObjectCreate() { - return undefined; - }, - ArraySlice: function ArraySlice() { - return []; - }, - patchClass: function patchClass() { - return noop; - }, - wrapWithCurrentZone: function wrapWithCurrentZone() { - return noop; - }, - filterProperties: function filterProperties() { - return []; - }, - attachOriginToPatched: function attachOriginToPatched() { - return noop; - }, - _redefineProperty: function _redefineProperty() { - return noop; - }, - patchCallbacks: function patchCallbacks() { - return noop; - } - }; - var _currentZoneFrame = { - parent: null, - zone: new Zone(null, null) - }; - var _currentTask = null; - var _numberOfNestedTaskFrames = 0; - - function noop() {} - - function __symbol__(name) { - return '__zone_symbol__' + name; - } - - performanceMeasure('Zone', 'Zone'); - return global['Zone'] = Zone; - }(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global); - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - - Zone.__load_patch('ZoneAwarePromise', function (global, Zone, api) { - var ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var ObjectDefineProperty = Object.defineProperty; - - function readableObjectToString(obj) { - if (obj && obj.toString === Object.prototype.toString) { - var className = obj.constructor && obj.constructor.name; - return (className ? className : '') + ': ' + JSON.stringify(obj); - } - - return obj ? obj.toString() : Object.prototype.toString.call(obj); - } - - var __symbol__ = api.symbol; - var _uncaughtPromiseErrors = []; - - var symbolPromise = __symbol__('Promise'); - - var symbolThen = __symbol__('then'); - - var creationTrace = '__creationTrace__'; - - api.onUnhandledError = function (e) { - if (api.showUncaughtError()) { - var rejection = e && e.rejection; - - if (rejection) { - console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined); - } else { - console.error(e); - } - } - }; - - api.microtaskDrainDone = function () { - while (_uncaughtPromiseErrors.length) { - var _loop = function _loop() { - var uncaughtPromiseError = _uncaughtPromiseErrors.shift(); - - try { - uncaughtPromiseError.zone.runGuarded(function () { - throw uncaughtPromiseError; - }); - } catch (error) { - handleUnhandledRejection(error); - } - }; - - while (_uncaughtPromiseErrors.length) { - _loop(); - } - } - }; - - var UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler'); - - function handleUnhandledRejection(e) { - api.onUnhandledError(e); - - try { - var handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL]; - - if (handler && typeof handler === 'function') { - handler.call(this, e); - } - } catch (err) {} - } - - function isThenable(value) { - return value && value.then; - } - - function forwardResolution(value) { - return value; - } - - function forwardRejection(rejection) { - return ZoneAwarePromise.reject(rejection); - } - - var symbolState = __symbol__('state'); - - var symbolValue = __symbol__('value'); - - var symbolFinally = __symbol__('finally'); - - var symbolParentPromiseValue = __symbol__('parentPromiseValue'); - - var symbolParentPromiseState = __symbol__('parentPromiseState'); - - var source = 'Promise.then'; - var UNRESOLVED = null; - var RESOLVED = true; - var REJECTED = false; - var REJECTED_NO_CATCH = 0; - - function makeResolver(promise, state) { - return function (v) { - try { - resolvePromise(promise, state, v); - } catch (err) { - resolvePromise(promise, false, err); - } // Do not return value or you will break the Promise spec. - - }; - } - - var once = function once() { - var wasCalled = false; - return function wrapper(wrappedFunction) { - return function () { - if (wasCalled) { - return; - } - - wasCalled = true; - wrappedFunction.apply(null, arguments); - }; - }; - }; - - var TYPE_ERROR = 'Promise resolved with itself'; - - var CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace'); // Promise Resolution - - - function resolvePromise(promise, state, value) { - var onceWrapper = once(); - - if (promise === value) { - throw new TypeError(TYPE_ERROR); - } - - if (promise[symbolState] === UNRESOLVED) { - // should only get value.then once based on promise spec. - var then = null; - - try { - if (typeof value === 'object' || typeof value === 'function') { - then = value && value.then; - } - } catch (err) { - onceWrapper(function () { - resolvePromise(promise, false, err); - })(); - return promise; - } // if (value instanceof ZoneAwarePromise) { - - - if (state !== REJECTED && value instanceof ZoneAwarePromise && value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) && value[symbolState] !== UNRESOLVED) { - clearRejectedNoCatch(value); - resolvePromise(promise, value[symbolState], value[symbolValue]); - } else if (state !== REJECTED && typeof then === 'function') { - try { - then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false))); - } catch (err) { - onceWrapper(function () { - resolvePromise(promise, false, err); - })(); - } - } else { - promise[symbolState] = state; - var queue = promise[symbolValue]; - promise[symbolValue] = value; - - if (promise[symbolFinally] === symbolFinally) { - // the promise is generated by Promise.prototype.finally - if (state === RESOLVED) { - // the state is resolved, should ignore the value - // and use parent promise value - promise[symbolState] = promise[symbolParentPromiseState]; - promise[symbolValue] = promise[symbolParentPromiseValue]; - } - } // record task information in value when error occurs, so we can - // do some additional work such as render longStackTrace - - - if (state === REJECTED && value instanceof Error) { - // check if longStackTraceZone is here - var trace = Zone.currentTask && Zone.currentTask.data && Zone.currentTask.data[creationTrace]; - - if (trace) { - // only keep the long stack trace into error when in longStackTraceZone - ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { - configurable: true, - enumerable: false, - writable: true, - value: trace - }); - } - } - - for (var i = 0; i < queue.length;) { - scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]); - } - - if (queue.length == 0 && state == REJECTED) { - promise[symbolState] = REJECTED_NO_CATCH; - - try { - // try to print more readable error log - throw new Error('Uncaught (in promise): ' + readableObjectToString(value) + (value && value.stack ? '\n' + value.stack : '')); - } catch (err) { - var error = err; - error.rejection = value; - error.promise = promise; - error.zone = Zone.current; - error.task = Zone.currentTask; - - _uncaughtPromiseErrors.push(error); - - api.scheduleMicroTask(); // to make sure that it is running - } - } - } - } // Resolving an already resolved promise is a noop. - - - return promise; - } - - var REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler'); - - function clearRejectedNoCatch(promise) { - if (promise[symbolState] === REJECTED_NO_CATCH) { - // if the promise is rejected no catch status - // and queue.length > 0, means there is a error handler - // here to handle the rejected promise, we should trigger - // windows.rejectionhandled eventHandler or nodejs rejectionHandled - // eventHandler - try { - var handler = Zone[REJECTION_HANDLED_HANDLER]; - - if (handler && typeof handler === 'function') { - handler.call(this, { - rejection: promise[symbolValue], - promise: promise - }); - } - } catch (err) {} - - promise[symbolState] = REJECTED; - - for (var i = 0; i < _uncaughtPromiseErrors.length; i++) { - if (promise === _uncaughtPromiseErrors[i].promise) { - _uncaughtPromiseErrors.splice(i, 1); - } - } - } - } - - function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) { - clearRejectedNoCatch(promise); - var promiseState = promise[symbolState]; - var delegate = promiseState ? typeof onFulfilled === 'function' ? onFulfilled : forwardResolution : typeof onRejected === 'function' ? onRejected : forwardRejection; - zone.scheduleMicroTask(source, function () { - try { - var parentPromiseValue = promise[symbolValue]; - var isFinallyPromise = chainPromise && symbolFinally === chainPromise[symbolFinally]; - - if (isFinallyPromise) { - // if the promise is generated from finally call, keep parent promise's state and value - chainPromise[symbolParentPromiseValue] = parentPromiseValue; - chainPromise[symbolParentPromiseState] = promiseState; - } // should not pass value to finally callback - - - var value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ? [] : [parentPromiseValue]); - resolvePromise(chainPromise, true, value); - } catch (error) { - // if error occurs, should always return this error - resolvePromise(chainPromise, false, error); - } - }, chainPromise); - } - - var ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }'; - - var ZoneAwarePromise = - /*#__PURE__*/ - function () { - function ZoneAwarePromise(executor) { - _classCallCheck(this, ZoneAwarePromise); - - var promise = this; - - if (!(promise instanceof ZoneAwarePromise)) { - throw new Error('Must be an instanceof Promise.'); - } - - promise[symbolState] = UNRESOLVED; - promise[symbolValue] = []; // queue; - - try { - executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED)); - } catch (error) { - resolvePromise(promise, false, error); - } - } - - _createClass(ZoneAwarePromise, [{ - key: "then", - value: function then(onFulfilled, onRejected) { - var chainPromise = new this.constructor(null); - var zone = Zone.current; - - if (this[symbolState] == UNRESOLVED) { - this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected); - } else { - scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected); - } - - return chainPromise; - } - }, { - key: "catch", - value: function _catch(onRejected) { - return this.then(null, onRejected); - } - }, { - key: "finally", - value: function _finally(onFinally) { - var chainPromise = new this.constructor(null); - chainPromise[symbolFinally] = symbolFinally; - var zone = Zone.current; - - if (this[symbolState] == UNRESOLVED) { - this[symbolValue].push(zone, chainPromise, onFinally, onFinally); - } else { - scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally); - } - - return chainPromise; - } - }, { - key: Symbol.toStringTag, - get: function get() { - return 'Promise'; - } - }], [{ - key: "toString", - value: function toString() { - return ZONE_AWARE_PROMISE_TO_STRING; - } - }, { - key: "resolve", - value: function resolve(value) { - return resolvePromise(new this(null), RESOLVED, value); - } - }, { - key: "reject", - value: function reject(error) { - return resolvePromise(new this(null), REJECTED, error); - } - }, { - key: "race", - value: function race(values) { - var resolve; - var reject; - var promise = new this(function (res, rej) { - resolve = res; - reject = rej; - }); - - function onResolve(value) { - resolve(value); - } - - function onReject(error) { - reject(error); - } - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var value = _step.value; - - if (!isThenable(value)) { - value = this.resolve(value); - } - - value.then(onResolve, onReject); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return != null) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - return promise; - } - }, { - key: "all", - value: function all(values) { - var _this = this; - - var resolve; - var reject; - var promise = new this(function (res, rej) { - resolve = res; - reject = rej; - }); // Start at 2 to prevent prematurely resolving if .then is called immediately. - - var unresolvedCount = 2; - var valueIndex = 0; - var resolvedValues = []; - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - var _loop2 = function _loop2() { - var value = _step2.value; - - if (!isThenable(value)) { - value = _this.resolve(value); - } - - var curValueIndex = valueIndex; - value.then(function (value) { - resolvedValues[curValueIndex] = value; - unresolvedCount--; - - if (unresolvedCount === 0) { - resolve(resolvedValues); - } - }, reject); - unresolvedCount++; - valueIndex++; - }; - - for (var _iterator2 = values[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - _loop2(); - } // Make the unresolvedCount zero-based again. - - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return != null) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - unresolvedCount -= 2; - - if (unresolvedCount === 0) { - resolve(resolvedValues); - } - - return promise; - } - }]); - - return ZoneAwarePromise; - }(); // Protect against aggressive optimizers dropping seemingly unused properties. - // E.g. Closure Compiler in advanced mode. - - - ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve; - ZoneAwarePromise['reject'] = ZoneAwarePromise.reject; - ZoneAwarePromise['race'] = ZoneAwarePromise.race; - ZoneAwarePromise['all'] = ZoneAwarePromise.all; - var NativePromise = global[symbolPromise] = global['Promise']; - - var ZONE_AWARE_PROMISE = Zone.__symbol__('ZoneAwarePromise'); - - var desc = ObjectGetOwnPropertyDescriptor(global, 'Promise'); - - if (!desc || desc.configurable) { - desc && delete desc.writable; - desc && delete desc.value; - - if (!desc) { - desc = { - configurable: true, - enumerable: true - }; - } - - desc.get = function () { - // if we already set ZoneAwarePromise, use patched one - // otherwise return native one. - return global[ZONE_AWARE_PROMISE] ? global[ZONE_AWARE_PROMISE] : global[symbolPromise]; - }; - - desc.set = function (NewNativePromise) { - if (NewNativePromise === ZoneAwarePromise) { - // if the NewNativePromise is ZoneAwarePromise - // save to global - global[ZONE_AWARE_PROMISE] = NewNativePromise; - } else { - // if the NewNativePromise is not ZoneAwarePromise - // for example: after load zone.js, some library just - // set es6-promise to global, if we set it to global - // directly, assertZonePatched will fail and angular - // will not loaded, so we just set the NewNativePromise - // to global[symbolPromise], so the result is just like - // we load ES6 Promise before zone.js - global[symbolPromise] = NewNativePromise; - - if (!NewNativePromise.prototype[symbolThen]) { - patchThen(NewNativePromise); - } - - api.setNativePromise(NewNativePromise); - } - }; - - ObjectDefineProperty(global, 'Promise', desc); - } - - global['Promise'] = ZoneAwarePromise; - - var symbolThenPatched = __symbol__('thenPatched'); - - function patchThen(Ctor) { - var proto = Ctor.prototype; - var prop = ObjectGetOwnPropertyDescriptor(proto, 'then'); - - if (prop && (prop.writable === false || !prop.configurable)) { - // check Ctor.prototype.then propertyDescriptor is writable or not - // in meteor env, writable is false, we should ignore such case - return; - } - - var originalThen = proto.then; // Keep a reference to the original method. - - proto[symbolThen] = originalThen; - - Ctor.prototype.then = function (onResolve, onReject) { - var _this2 = this; - - var wrapped = new ZoneAwarePromise(function (resolve, reject) { - originalThen.call(_this2, resolve, reject); - }); - return wrapped.then(onResolve, onReject); - }; - - Ctor[symbolThenPatched] = true; - } - - api.patchThen = patchThen; - - function zoneify(fn) { - return function () { - var resultPromise = fn.apply(this, arguments); - - if (resultPromise instanceof ZoneAwarePromise) { - return resultPromise; - } - - var ctor = resultPromise.constructor; - - if (!ctor[symbolThenPatched]) { - patchThen(ctor); - } - - return resultPromise; - }; - } - - if (NativePromise) { - patchThen(NativePromise); - var fetch = global['fetch']; - - if (typeof fetch == 'function') { - global[api.symbol('fetch')] = fetch; - global['fetch'] = zoneify(fetch); - } - } // This is not part of public API, but it is useful for tests, so we expose it. - - - Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors; - return ZoneAwarePromise; - }); - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * Suppress closure compiler errors about unknown 'Zone' variable - * @fileoverview - * @suppress {undefinedVars,globalThis,missingRequire} - */ - // issue #989, to reduce bundle size, use short name - - /** Object.getOwnPropertyDescriptor */ - - - var ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - /** Object.defineProperty */ - - var ObjectDefineProperty = Object.defineProperty; - /** Object.getPrototypeOf */ - - var ObjectGetPrototypeOf = Object.getPrototypeOf; - /** Object.create */ - - var ObjectCreate = Object.create; - /** Array.prototype.slice */ - - var ArraySlice = Array.prototype.slice; - /** addEventListener string const */ - - var ADD_EVENT_LISTENER_STR = 'addEventListener'; - /** removeEventListener string const */ - - var REMOVE_EVENT_LISTENER_STR = 'removeEventListener'; - /** zoneSymbol addEventListener */ - - var ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR); - /** zoneSymbol removeEventListener */ - - - var ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR); - /** true string const */ - - - var TRUE_STR = 'true'; - /** false string const */ - - var FALSE_STR = 'false'; - /** __zone_symbol__ string const */ - - var ZONE_SYMBOL_PREFIX = '__zone_symbol__'; - - function wrapWithCurrentZone(callback, source) { - return Zone.current.wrap(callback, source); - } - - function scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) { - return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel); - } - - var zoneSymbol = Zone.__symbol__; - var isWindowExists = typeof window !== 'undefined'; - var internalWindow = isWindowExists ? window : undefined; - - var _global = isWindowExists && internalWindow || typeof self === 'object' && self || global; - - var REMOVE_ATTRIBUTE = 'removeAttribute'; - var NULL_ON_PROP_VALUE = [null]; - - function bindArguments(args, source) { - for (var i = args.length - 1; i >= 0; i--) { - if (typeof args[i] === 'function') { - args[i] = wrapWithCurrentZone(args[i], source + '_' + i); - } - } - - return args; - } - - function patchPrototype(prototype, fnNames) { - var source = prototype.constructor['name']; - - var _loop3 = function _loop3(i) { - var name = fnNames[i]; - var delegate = prototype[name]; - - if (delegate) { - var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name); - - if (!isPropertyWritable(prototypeDesc)) { - return "continue"; - } - - prototype[name] = function (delegate) { - var patched = function patched() { - return delegate.apply(this, bindArguments(arguments, source + '.' + name)); - }; - - attachOriginToPatched(patched, delegate); - return patched; - }(delegate); - } - }; - - for (var i = 0; i < fnNames.length; i++) { - var _ret = _loop3(i); - - if (_ret === "continue") continue; - } - } - - function isPropertyWritable(propertyDesc) { - if (!propertyDesc) { - return true; - } - - if (propertyDesc.writable === false) { - return false; - } - - return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined'); - } - - var isWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope; // Make sure to access `process` through `_global` so that WebPack does not accidentally browserify - // this code. - - var isNode = !('nw' in _global) && typeof _global.process !== 'undefined' && {}.toString.call(_global.process) === '[object process]'; - var isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']); // we are in electron of nw, so we are both browser and nodejs - // Make sure to access `process` through `_global` so that WebPack does not accidentally browserify - // this code. - - var isMix = typeof _global.process !== 'undefined' && {}.toString.call(_global.process) === '[object process]' && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']); - var zoneSymbolEventNames = {}; - - var wrapFn = function wrapFn(event) { - // https://github.com/angular/zone.js/issues/911, in IE, sometimes - // event will be undefined, so we need to use window.event - event = event || _global.event; - - if (!event) { - return; - } - - var eventNameSymbol = zoneSymbolEventNames[event.type]; - - if (!eventNameSymbol) { - eventNameSymbol = zoneSymbolEventNames[event.type] = zoneSymbol('ON_PROPERTY' + event.type); - } - - var target = this || event.target || _global; - var listener = target[eventNameSymbol]; - var result; - - if (isBrowser && target === internalWindow && event.type === 'error') { - // window.onerror have different signiture - // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#window.onerror - // and onerror callback will prevent default when callback return true - var errorEvent = event; - result = listener && listener.call(this, errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error); - - if (result === true) { - event.preventDefault(); - } - } else { - result = listener && listener.apply(this, arguments); - - if (result != undefined && !result) { - event.preventDefault(); - } - } - - return result; - }; - - function patchProperty(obj, prop, prototype) { - var desc = ObjectGetOwnPropertyDescriptor(obj, prop); - - if (!desc && prototype) { - // when patch window object, use prototype to check prop exist or not - var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop); - - if (prototypeDesc) { - desc = { - enumerable: true, - configurable: true - }; - } - } // if the descriptor not exists or is not configurable - // just return - - - if (!desc || !desc.configurable) { - return; - } - - var onPropPatchedSymbol = zoneSymbol('on' + prop + 'patched'); - - if (obj.hasOwnProperty(onPropPatchedSymbol) && obj[onPropPatchedSymbol]) { - return; - } // A property descriptor cannot have getter/setter and be writable - // deleting the writable and value properties avoids this error: - // - // TypeError: property descriptors must not specify a value or be writable when a - // getter or setter has been specified - - - delete desc.writable; - delete desc.value; - var originalDescGet = desc.get; - var originalDescSet = desc.set; // substr(2) cuz 'onclick' -> 'click', etc - - var eventName = prop.substr(2); - var eventNameSymbol = zoneSymbolEventNames[eventName]; - - if (!eventNameSymbol) { - eventNameSymbol = zoneSymbolEventNames[eventName] = zoneSymbol('ON_PROPERTY' + eventName); - } - - desc.set = function (newValue) { - // in some of windows's onproperty callback, this is undefined - // so we need to check it - var target = this; - - if (!target && obj === _global) { - target = _global; - } - - if (!target) { - return; - } - - var previousValue = target[eventNameSymbol]; - - if (previousValue) { - target.removeEventListener(eventName, wrapFn); - } // issue #978, when onload handler was added before loading zone.js - // we should remove it with originalDescSet - - - if (originalDescSet) { - originalDescSet.apply(target, NULL_ON_PROP_VALUE); - } - - if (typeof newValue === 'function') { - target[eventNameSymbol] = newValue; - target.addEventListener(eventName, wrapFn, false); - } else { - target[eventNameSymbol] = null; - } - }; // The getter would return undefined for unassigned properties but the default value of an - // unassigned property is null - - - desc.get = function () { - // in some of windows's onproperty callback, this is undefined - // so we need to check it - var target = this; - - if (!target && obj === _global) { - target = _global; - } - - if (!target) { - return null; - } - - var listener = target[eventNameSymbol]; - - if (listener) { - return listener; - } else if (originalDescGet) { - // result will be null when use inline event attribute, - // such as - // because the onclick function is internal raw uncompiled handler - // the onclick will be evaluated when first time event was triggered or - // the property is accessed, https://github.com/angular/zone.js/issues/525 - // so we should use original native get to retrieve the handler - var value = originalDescGet && originalDescGet.call(this); - - if (value) { - desc.set.call(this, value); - - if (typeof target[REMOVE_ATTRIBUTE] === 'function') { - target.removeAttribute(prop); - } - - return value; - } - } - - return null; - }; - - ObjectDefineProperty(obj, prop, desc); - obj[onPropPatchedSymbol] = true; - } - - function patchOnProperties(obj, properties, prototype) { - if (properties) { - for (var i = 0; i < properties.length; i++) { - patchProperty(obj, 'on' + properties[i], prototype); - } - } else { - var onProperties = []; - - for (var prop in obj) { - if (prop.substr(0, 2) == 'on') { - onProperties.push(prop); - } - } - - for (var j = 0; j < onProperties.length; j++) { - patchProperty(obj, onProperties[j], prototype); - } - } - } - - var originalInstanceKey = zoneSymbol('originalInstance'); // wrap some native API on `window` - - function patchClass(className) { - var OriginalClass = _global[className]; - if (!OriginalClass) return; // keep original class in global - - _global[zoneSymbol(className)] = OriginalClass; - - _global[className] = function () { - var a = bindArguments(arguments, className); - - switch (a.length) { - case 0: - this[originalInstanceKey] = new OriginalClass(); - break; - - case 1: - this[originalInstanceKey] = new OriginalClass(a[0]); - break; - - case 2: - this[originalInstanceKey] = new OriginalClass(a[0], a[1]); - break; - - case 3: - this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]); - break; - - case 4: - this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]); - break; - - default: - throw new Error('Arg list too long.'); - } - }; // attach original delegate to patched function - - - attachOriginToPatched(_global[className], OriginalClass); - var instance = new OriginalClass(function () {}); - var prop; - - for (prop in instance) { - // https://bugs.webkit.org/show_bug.cgi?id=44721 - if (className === 'XMLHttpRequest' && prop === 'responseBlob') continue; - - (function (prop) { - if (typeof instance[prop] === 'function') { - _global[className].prototype[prop] = function () { - return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments); - }; - } else { - ObjectDefineProperty(_global[className].prototype, prop, { - set: function set(fn) { - if (typeof fn === 'function') { - this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop); // keep callback in wrapped function so we can - // use it in Function.prototype.toString to return - // the native one. - - attachOriginToPatched(this[originalInstanceKey][prop], fn); - } else { - this[originalInstanceKey][prop] = fn; - } - }, - get: function get() { - return this[originalInstanceKey][prop]; - } - }); - } - })(prop); - } - - for (prop in OriginalClass) { - if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) { - _global[className][prop] = OriginalClass[prop]; - } - } - } - - function copySymbolProperties(src, dest) { - if (typeof Object.getOwnPropertySymbols !== 'function') { - return; - } - - var symbols = Object.getOwnPropertySymbols(src); - symbols.forEach(function (symbol) { - var desc = Object.getOwnPropertyDescriptor(src, symbol); - Object.defineProperty(dest, symbol, { - get: function get() { - return src[symbol]; - }, - set: function set(value) { - if (desc && (!desc.writable || typeof desc.set !== 'function')) { - // if src[symbol] is not writable or not have a setter, just return - return; - } - - src[symbol] = value; - }, - enumerable: desc ? desc.enumerable : true, - configurable: desc ? desc.configurable : true - }); - }); - } - - var shouldCopySymbolProperties = false; - - function patchMethod(target, name, patchFn) { - var proto = target; - - while (proto && !proto.hasOwnProperty(name)) { - proto = ObjectGetPrototypeOf(proto); - } - - if (!proto && target[name]) { - // somehow we did not find it, but we can see it. This happens on IE for Window properties. - proto = target; - } - - var delegateName = zoneSymbol(name); - var delegate = null; - - if (proto && !(delegate = proto[delegateName])) { - delegate = proto[delegateName] = proto[name]; // check whether proto[name] is writable - // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob - - var desc = proto && ObjectGetOwnPropertyDescriptor(proto, name); - - if (isPropertyWritable(desc)) { - var patchDelegate = patchFn(delegate, delegateName, name); - - proto[name] = function () { - return patchDelegate(this, arguments); - }; - - attachOriginToPatched(proto[name], delegate); - - if (shouldCopySymbolProperties) { - copySymbolProperties(delegate, proto[name]); - } - } - } - - return delegate; - } // TODO: @JiaLiPassion, support cancel task later if necessary - - - function patchMacroTask(obj, funcName, metaCreator) { - var setNative = null; - - function scheduleTask(task) { - var data = task.data; - - data.args[data.cbIdx] = function () { - task.invoke.apply(this, arguments); - }; - - setNative.apply(data.target, data.args); - return task; - } - - setNative = patchMethod(obj, funcName, function (delegate) { - return function (self, args) { - var meta = metaCreator(self, args); - - if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') { - return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask); - } else { - // cause an error by calling it directly. - return delegate.apply(self, args); - } - }; - }); - } - - function attachOriginToPatched(patched, original) { - patched[zoneSymbol('OriginalDelegate')] = original; - } - - var isDetectedIEOrEdge = false; - var ieOrEdge = false; - - function isIE() { - try { - var ua = internalWindow.navigator.userAgent; - - if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1) { - return true; - } - } catch (error) {} - - return false; - } - - function isIEOrEdge() { - if (isDetectedIEOrEdge) { - return ieOrEdge; - } - - isDetectedIEOrEdge = true; - - try { - var ua = internalWindow.navigator.userAgent; - - if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) { - ieOrEdge = true; - } - } catch (error) {} - - return ieOrEdge; - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - // override Function.prototype.toString to make zone.js patched function - // look like native function - - - Zone.__load_patch('toString', function (global) { - // patch Func.prototype.toString to let them look like native - var originalFunctionToString = Function.prototype.toString; - var ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate'); - var PROMISE_SYMBOL = zoneSymbol('Promise'); - var ERROR_SYMBOL = zoneSymbol('Error'); - - var newFunctionToString = function toString() { - if (typeof this === 'function') { - var originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL]; - - if (originalDelegate) { - if (typeof originalDelegate === 'function') { - return originalFunctionToString.call(originalDelegate); - } else { - return Object.prototype.toString.call(originalDelegate); - } - } - - if (this === Promise) { - var nativePromise = global[PROMISE_SYMBOL]; - - if (nativePromise) { - return originalFunctionToString.call(nativePromise); - } - } - - if (this === Error) { - var nativeError = global[ERROR_SYMBOL]; - - if (nativeError) { - return originalFunctionToString.call(nativeError); - } - } - } - - return originalFunctionToString.call(this); - }; - - newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString; - Function.prototype.toString = newFunctionToString; // patch Object.prototype.toString to let them look like native - - var originalObjectToString = Object.prototype.toString; - var PROMISE_OBJECT_TO_STRING = '[object Promise]'; - - Object.prototype.toString = function () { - if (this instanceof Promise) { - return PROMISE_OBJECT_TO_STRING; - } - - return originalObjectToString.call(this); - }; - }); - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * @fileoverview - * @suppress {missingRequire} - */ - - - var passiveSupported = false; - - if (typeof window !== 'undefined') { - try { - var options = Object.defineProperty({}, 'passive', { - get: function get() { - passiveSupported = true; - } - }); - window.addEventListener('test', options, options); - window.removeEventListener('test', options, options); - } catch (err) { - passiveSupported = false; - } - } // an identifier to tell ZoneTask do not create a new invoke closure - - - var OPTIMIZED_ZONE_EVENT_TASK_DATA = { - useG: true - }; - var zoneSymbolEventNames$1 = {}; - var globalSources = {}; - var EVENT_NAME_SYMBOL_REGX = /^__zone_symbol__(\w+)(true|false)$/; - var IMMEDIATE_PROPAGATION_SYMBOL = '__zone_symbol__propagationStopped'; - - function patchEventTarget(_global, apis, patchOptions) { - var ADD_EVENT_LISTENER = patchOptions && patchOptions.add || ADD_EVENT_LISTENER_STR; - var REMOVE_EVENT_LISTENER = patchOptions && patchOptions.rm || REMOVE_EVENT_LISTENER_STR; - var LISTENERS_EVENT_LISTENER = patchOptions && patchOptions.listeners || 'eventListeners'; - var REMOVE_ALL_LISTENERS_EVENT_LISTENER = patchOptions && patchOptions.rmAll || 'removeAllListeners'; - var zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER); - var ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':'; - var PREPEND_EVENT_LISTENER = 'prependListener'; - var PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':'; - - var invokeTask = function invokeTask(task, target, event) { - // for better performance, check isRemoved which is set - // by removeEventListener - if (task.isRemoved) { - return; - } - - var delegate = task.callback; - - if (typeof delegate === 'object' && delegate.handleEvent) { - // create the bind version of handleEvent when invoke - task.callback = function (event) { - return delegate.handleEvent(event); - }; - - task.originalDelegate = delegate; - } // invoke static task.invoke - - - task.invoke(task, target, [event]); - var options = task.options; - - if (options && typeof options === 'object' && options.once) { - // if options.once is true, after invoke once remove listener here - // only browser need to do this, nodejs eventEmitter will cal removeListener - // inside EventEmitter.once - var _delegate = task.originalDelegate ? task.originalDelegate : task.callback; - - target[REMOVE_EVENT_LISTENER].call(target, event.type, _delegate, options); - } - }; // global shared zoneAwareCallback to handle all event callback with capture = false - - - var globalZoneAwareCallback = function globalZoneAwareCallback(event) { - // https://github.com/angular/zone.js/issues/911, in IE, sometimes - // event will be undefined, so we need to use window.event - event = event || _global.event; - - if (!event) { - return; - } // event.target is needed for Samsung TV and SourceBuffer - // || global is needed https://github.com/angular/zone.js/issues/190 - - - var target = this || event.target || _global; - var tasks = target[zoneSymbolEventNames$1[event.type][FALSE_STR]]; - - if (tasks) { - // invoke all tasks which attached to current target with given event.type and capture = false - // for performance concern, if task.length === 1, just invoke - if (tasks.length === 1) { - invokeTask(tasks[0], target, event); - } else { - // https://github.com/angular/zone.js/issues/836 - // copy the tasks array before invoke, to avoid - // the callback will remove itself or other listener - var copyTasks = tasks.slice(); - - for (var i = 0; i < copyTasks.length; i++) { - if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) { - break; - } - - invokeTask(copyTasks[i], target, event); - } - } - } - }; // global shared zoneAwareCallback to handle all event callback with capture = true - - - var globalZoneAwareCaptureCallback = function globalZoneAwareCaptureCallback(event) { - // https://github.com/angular/zone.js/issues/911, in IE, sometimes - // event will be undefined, so we need to use window.event - event = event || _global.event; - - if (!event) { - return; - } // event.target is needed for Samsung TV and SourceBuffer - // || global is needed https://github.com/angular/zone.js/issues/190 - - - var target = this || event.target || _global; - var tasks = target[zoneSymbolEventNames$1[event.type][TRUE_STR]]; - - if (tasks) { - // invoke all tasks which attached to current target with given event.type and capture = false - // for performance concern, if task.length === 1, just invoke - if (tasks.length === 1) { - invokeTask(tasks[0], target, event); - } else { - // https://github.com/angular/zone.js/issues/836 - // copy the tasks array before invoke, to avoid - // the callback will remove itself or other listener - var copyTasks = tasks.slice(); - - for (var i = 0; i < copyTasks.length; i++) { - if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) { - break; - } - - invokeTask(copyTasks[i], target, event); - } - } - } - }; - - function patchEventTargetMethods(obj, patchOptions) { - if (!obj) { - return false; - } - - var useGlobalCallback = true; - - if (patchOptions && patchOptions.useG !== undefined) { - useGlobalCallback = patchOptions.useG; - } - - var validateHandler = patchOptions && patchOptions.vh; - var checkDuplicate = true; - - if (patchOptions && patchOptions.chkDup !== undefined) { - checkDuplicate = patchOptions.chkDup; - } - - var returnTarget = false; - - if (patchOptions && patchOptions.rt !== undefined) { - returnTarget = patchOptions.rt; - } - - var proto = obj; - - while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) { - proto = ObjectGetPrototypeOf(proto); - } - - if (!proto && obj[ADD_EVENT_LISTENER]) { - // somehow we did not find it, but we can see it. This happens on IE for Window properties. - proto = obj; - } - - if (!proto) { - return false; - } - - if (proto[zoneSymbolAddEventListener]) { - return false; - } - - var eventNameToString = patchOptions && patchOptions.eventNameToString; // a shared global taskData to pass data for scheduleEventTask - // so we do not need to create a new object just for pass some data - - var taskData = {}; - var nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER]; - var nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] = proto[REMOVE_EVENT_LISTENER]; - var nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] = proto[LISTENERS_EVENT_LISTENER]; - var nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] = proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER]; - var nativePrependEventListener; - - if (patchOptions && patchOptions.prepend) { - nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] = proto[patchOptions.prepend]; - } - - function checkIsPassive(task) { - if (!passiveSupported && typeof taskData.options !== 'boolean' && typeof taskData.options !== 'undefined' && taskData.options !== null) { - // options is a non-null non-undefined object - // passive is not supported - // don't pass options as object - // just pass capture as a boolean - task.options = !!taskData.options.capture; - taskData.options = task.options; - } - } - - var customScheduleGlobal = function customScheduleGlobal(task) { - // if there is already a task for the eventName + capture, - // just return, because we use the shared globalZoneAwareCallback here. - if (taskData.isExisting) { - return; - } - - checkIsPassive(task); - return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options); - }; - - var customCancelGlobal = function customCancelGlobal(task) { - // if task is not marked as isRemoved, this call is directly - // from Zone.prototype.cancelTask, we should remove the task - // from tasksList of target first - if (!task.isRemoved) { - var symbolEventNames = zoneSymbolEventNames$1[task.eventName]; - var symbolEventName; - - if (symbolEventNames) { - symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR]; - } - - var existingTasks = symbolEventName && task.target[symbolEventName]; - - if (existingTasks) { - for (var i = 0; i < existingTasks.length; i++) { - var existingTask = existingTasks[i]; - - if (existingTask === task) { - existingTasks.splice(i, 1); // set isRemoved to data for faster invokeTask check - - task.isRemoved = true; - - if (existingTasks.length === 0) { - // all tasks for the eventName + capture have gone, - // remove globalZoneAwareCallback and remove the task cache from target - task.allRemoved = true; - task.target[symbolEventName] = null; - } - - break; - } - } - } - } // if all tasks for the eventName + capture have gone, - // we will really remove the global event callback, - // if not, return - - - if (!task.allRemoved) { - return; - } - - return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options); - }; - - var customScheduleNonGlobal = function customScheduleNonGlobal(task) { - checkIsPassive(task); - return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options); - }; - - var customSchedulePrepend = function customSchedulePrepend(task) { - return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options); - }; - - var customCancelNonGlobal = function customCancelNonGlobal(task) { - return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options); - }; - - var customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal; - var customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal; - - var compareTaskCallbackVsDelegate = function compareTaskCallbackVsDelegate(task, delegate) { - var typeOfDelegate = typeof delegate; - return typeOfDelegate === 'function' && task.callback === delegate || typeOfDelegate === 'object' && task.originalDelegate === delegate; - }; - - var compare = patchOptions && patchOptions.diff ? patchOptions.diff : compareTaskCallbackVsDelegate; - - var blackListedEvents = Zone[Zone.__symbol__('BLACK_LISTED_EVENTS')]; - - var makeAddListener = function makeAddListener(nativeListener, addSource, customScheduleFn, customCancelFn) { - var returnTarget = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; - var prepend = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false; - return function () { - var target = this || _global; - var eventName = arguments[0]; - var delegate = arguments[1]; - - if (!delegate) { - return nativeListener.apply(this, arguments); - } - - if (isNode && eventName === 'uncaughtException') { - // don't patch uncaughtException of nodejs to prevent endless loop - return nativeListener.apply(this, arguments); - } // don't create the bind delegate function for handleEvent - // case here to improve addEventListener performance - // we will create the bind delegate when invoke - - - var isHandleEvent = false; - - if (typeof delegate !== 'function') { - if (!delegate.handleEvent) { - return nativeListener.apply(this, arguments); - } - - isHandleEvent = true; - } - - if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) { - return; - } - - var options = arguments[2]; - - if (blackListedEvents) { - // check black list - for (var i = 0; i < blackListedEvents.length; i++) { - if (eventName === blackListedEvents[i]) { - return nativeListener.apply(this, arguments); - } - } - } - - var capture; - var once = false; - - if (options === undefined) { - capture = false; - } else if (options === true) { - capture = true; - } else if (options === false) { - capture = false; - } else { - capture = options ? !!options.capture : false; - once = options ? !!options.once : false; - } - - var zone = Zone.current; - var symbolEventNames = zoneSymbolEventNames$1[eventName]; - var symbolEventName; - - if (!symbolEventNames) { - // the code is duplicate, but I just want to get some better performance - var falseEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + FALSE_STR; - var trueEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + TRUE_STR; - var symbol = ZONE_SYMBOL_PREFIX + falseEventName; - var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; - zoneSymbolEventNames$1[eventName] = {}; - zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol; - zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture; - symbolEventName = capture ? symbolCapture : symbol; - } else { - symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR]; - } - - var existingTasks = target[symbolEventName]; - var isExisting = false; - - if (existingTasks) { - // already have task registered - isExisting = true; - - if (checkDuplicate) { - for (var _i = 0; _i < existingTasks.length; _i++) { - if (compare(existingTasks[_i], delegate)) { - // same callback, same capture, same event name, just return - return; - } - } - } - } else { - existingTasks = target[symbolEventName] = []; - } - - var source; - var constructorName = target.constructor['name']; - var targetSource = globalSources[constructorName]; - - if (targetSource) { - source = targetSource[eventName]; - } - - if (!source) { - source = constructorName + addSource + (eventNameToString ? eventNameToString(eventName) : eventName); - } // do not create a new object as task.data to pass those things - // just use the global shared one - - - taskData.options = options; - - if (once) { - // if addEventListener with once options, we don't pass it to - // native addEventListener, instead we keep the once setting - // and handle ourselves. - taskData.options.once = false; - } - - taskData.target = target; - taskData.capture = capture; - taskData.eventName = eventName; - taskData.isExisting = isExisting; - var data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : undefined; // keep taskData into data to allow onScheduleEventTask to access the task information - - if (data) { - data.taskData = taskData; - } - - var task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn); // should clear taskData.target to avoid memory leak - // issue, https://github.com/angular/angular/issues/20442 - - taskData.target = null; // need to clear up taskData because it is a global object - - if (data) { - data.taskData = null; - } // have to save those information to task in case - // application may call task.zone.cancelTask() directly - - - if (once) { - options.once = true; - } - - if (!(!passiveSupported && typeof task.options === 'boolean')) { - // if not support passive, and we pass an option object - // to addEventListener, we should save the options to task - task.options = options; - } - - task.target = target; - task.capture = capture; - task.eventName = eventName; - - if (isHandleEvent) { - // save original delegate for compare to check duplicate - task.originalDelegate = delegate; - } - - if (!prepend) { - existingTasks.push(task); - } else { - existingTasks.unshift(task); - } - - if (returnTarget) { - return target; - } - }; - }; - - proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget); - - if (nativePrependEventListener) { - proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true); - } - - proto[REMOVE_EVENT_LISTENER] = function () { - var target = this || _global; - var eventName = arguments[0]; - var options = arguments[2]; - var capture; - - if (options === undefined) { - capture = false; - } else if (options === true) { - capture = true; - } else if (options === false) { - capture = false; - } else { - capture = options ? !!options.capture : false; - } - - var delegate = arguments[1]; - - if (!delegate) { - return nativeRemoveEventListener.apply(this, arguments); - } - - if (validateHandler && !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) { - return; - } - - var symbolEventNames = zoneSymbolEventNames$1[eventName]; - var symbolEventName; - - if (symbolEventNames) { - symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR]; - } - - var existingTasks = symbolEventName && target[symbolEventName]; - - if (existingTasks) { - for (var i = 0; i < existingTasks.length; i++) { - var existingTask = existingTasks[i]; - - if (compare(existingTask, delegate)) { - existingTasks.splice(i, 1); // set isRemoved to data for faster invokeTask check - - existingTask.isRemoved = true; - - if (existingTasks.length === 0) { - // all tasks for the eventName + capture have gone, - // remove globalZoneAwareCallback and remove the task cache from target - existingTask.allRemoved = true; - target[symbolEventName] = null; - } - - existingTask.zone.cancelTask(existingTask); - - if (returnTarget) { - return target; - } - - return; - } - } - } // issue 930, didn't find the event name or callback - // from zone kept existingTasks, the callback maybe - // added outside of zone, we need to call native removeEventListener - // to try to remove it. - - - return nativeRemoveEventListener.apply(this, arguments); - }; - - proto[LISTENERS_EVENT_LISTENER] = function () { - var target = this || _global; - var eventName = arguments[0]; - var listeners = []; - var tasks = findEventTasks(target, eventNameToString ? eventNameToString(eventName) : eventName); - - for (var i = 0; i < tasks.length; i++) { - var task = tasks[i]; - var delegate = task.originalDelegate ? task.originalDelegate : task.callback; - listeners.push(delegate); - } - - return listeners; - }; - - proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () { - var target = this || _global; - var eventName = arguments[0]; - - if (!eventName) { - var keys = Object.keys(target); - - for (var i = 0; i < keys.length; i++) { - var prop = keys[i]; - var match = EVENT_NAME_SYMBOL_REGX.exec(prop); - var evtName = match && match[1]; // in nodejs EventEmitter, removeListener event is - // used for monitoring the removeListener call, - // so just keep removeListener eventListener until - // all other eventListeners are removed - - if (evtName && evtName !== 'removeListener') { - this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName); - } - } // remove removeListener listener finally - - - this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener'); - } else { - var symbolEventNames = zoneSymbolEventNames$1[eventName]; - - if (symbolEventNames) { - var symbolEventName = symbolEventNames[FALSE_STR]; - var symbolCaptureEventName = symbolEventNames[TRUE_STR]; - var tasks = target[symbolEventName]; - var captureTasks = target[symbolCaptureEventName]; - - if (tasks) { - var removeTasks = tasks.slice(); - - for (var _i2 = 0; _i2 < removeTasks.length; _i2++) { - var task = removeTasks[_i2]; - var delegate = task.originalDelegate ? task.originalDelegate : task.callback; - this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options); - } - } - - if (captureTasks) { - var _removeTasks = captureTasks.slice(); - - for (var _i3 = 0; _i3 < _removeTasks.length; _i3++) { - var _task = _removeTasks[_i3]; - - var _delegate2 = _task.originalDelegate ? _task.originalDelegate : _task.callback; - - this[REMOVE_EVENT_LISTENER].call(this, eventName, _delegate2, _task.options); - } - } - } - } - - if (returnTarget) { - return this; - } - }; // for native toString patch - - - attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener); - attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener); - - if (nativeRemoveAllListeners) { - attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners); - } - - if (nativeListeners) { - attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners); - } - - return true; - } - - var results = []; - - for (var i = 0; i < apis.length; i++) { - results[i] = patchEventTargetMethods(apis[i], patchOptions); - } - - return results; - } - - function findEventTasks(target, eventName) { - var foundTasks = []; - - for (var prop in target) { - var match = EVENT_NAME_SYMBOL_REGX.exec(prop); - var evtName = match && match[1]; - - if (evtName && (!eventName || evtName === eventName)) { - var tasks = target[prop]; - - if (tasks) { - for (var i = 0; i < tasks.length; i++) { - foundTasks.push(tasks[i]); - } - } - } - } - - return foundTasks; - } - - function patchEventPrototype(global, api) { - var Event = global['Event']; - - if (Event && Event.prototype) { - api.patchMethod(Event.prototype, 'stopImmediatePropagation', function (delegate) { - return function (self, args) { - self[IMMEDIATE_PROPAGATION_SYMBOL] = true; // we need to call the native stopImmediatePropagation - // in case in some hybrid application, some part of - // application will be controlled by zone, some are not - - delegate && delegate.apply(self, args); - }; - }); - } - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - - function patchCallbacks(api, target, targetName, method, callbacks) { - var symbol = Zone.__symbol__(method); - - if (target[symbol]) { - return; - } - - var nativeDelegate = target[symbol] = target[method]; - - target[method] = function (name, opts, options) { - if (opts && opts.prototype) { - callbacks.forEach(function (callback) { - var source = "".concat(targetName, ".").concat(method, "::") + callback; - var prototype = opts.prototype; - - if (prototype.hasOwnProperty(callback)) { - var descriptor = api.ObjectGetOwnPropertyDescriptor(prototype, callback); - - if (descriptor && descriptor.value) { - descriptor.value = api.wrapWithCurrentZone(descriptor.value, source); - - api._redefineProperty(opts.prototype, callback, descriptor); - } else if (prototype[callback]) { - prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source); - } - } else if (prototype[callback]) { - prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source); - } - }); - } - - return nativeDelegate.call(target, name, opts, options); - }; - - api.attachOriginToPatched(target[method], nativeDelegate); - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /* - * This is necessary for Chrome and Chrome mobile, to enable - * things like redefining `createdCallback` on an element. - */ - - - var zoneSymbol$1 = Zone.__symbol__; - - var _defineProperty = Object[zoneSymbol$1('defineProperty')] = Object.defineProperty; - - var _getOwnPropertyDescriptor = Object[zoneSymbol$1('getOwnPropertyDescriptor')] = Object.getOwnPropertyDescriptor; - - var _create = Object.create; - var unconfigurablesKey = zoneSymbol$1('unconfigurables'); - - function propertyPatch() { - Object.defineProperty = function (obj, prop, desc) { - if (isUnconfigurable(obj, prop)) { - throw new TypeError('Cannot assign to read only property \'' + prop + '\' of ' + obj); - } - - var originalConfigurableFlag = desc.configurable; - - if (prop !== 'prototype') { - desc = rewriteDescriptor(obj, prop, desc); - } - - return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); - }; - - Object.defineProperties = function (obj, props) { - Object.keys(props).forEach(function (prop) { - Object.defineProperty(obj, prop, props[prop]); - }); - return obj; - }; - - Object.create = function (obj, proto) { - if (typeof proto === 'object' && !Object.isFrozen(proto)) { - Object.keys(proto).forEach(function (prop) { - proto[prop] = rewriteDescriptor(obj, prop, proto[prop]); - }); - } - - return _create(obj, proto); - }; - - Object.getOwnPropertyDescriptor = function (obj, prop) { - var desc = _getOwnPropertyDescriptor(obj, prop); - - if (desc && isUnconfigurable(obj, prop)) { - desc.configurable = false; - } - - return desc; - }; - } - - function _redefineProperty(obj, prop, desc) { - var originalConfigurableFlag = desc.configurable; - desc = rewriteDescriptor(obj, prop, desc); - return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); - } - - function isUnconfigurable(obj, prop) { - return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop]; - } - - function rewriteDescriptor(obj, prop, desc) { - // issue-927, if the desc is frozen, don't try to change the desc - if (!Object.isFrozen(desc)) { - desc.configurable = true; - } - - if (!desc.configurable) { - // issue-927, if the obj is frozen, don't try to set the desc to obj - if (!obj[unconfigurablesKey] && !Object.isFrozen(obj)) { - _defineProperty(obj, unconfigurablesKey, { - writable: true, - value: {} - }); - } - - if (obj[unconfigurablesKey]) { - obj[unconfigurablesKey][prop] = true; - } - } - - return desc; - } - - function _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) { - try { - return _defineProperty(obj, prop, desc); - } catch (error) { - if (desc.configurable) { - // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's - // retry with the original flag value - if (typeof originalConfigurableFlag == 'undefined') { - delete desc.configurable; - } else { - desc.configurable = originalConfigurableFlag; - } - - try { - return _defineProperty(obj, prop, desc); - } catch (error) { - var descJson = null; - - try { - descJson = JSON.stringify(desc); - } catch (error) { - descJson = desc.toString(); - } - - console.log("Attempting to configure '".concat(prop, "' with descriptor '").concat(descJson, "' on object '").concat(obj, "' and got error, giving up: ").concat(error)); - } - } else { - throw error; - } - } - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * @fileoverview - * @suppress {globalThis} - */ - - - var globalEventHandlersEventNames = ['abort', 'animationcancel', 'animationend', 'animationiteration', 'auxclick', 'beforeinput', 'blur', 'cancel', 'canplay', 'canplaythrough', 'change', 'compositionstart', 'compositionupdate', 'compositionend', 'cuechange', 'click', 'close', 'contextmenu', 'curechange', 'dblclick', 'drag', 'dragend', 'dragenter', 'dragexit', 'dragleave', 'dragover', 'drop', 'durationchange', 'emptied', 'ended', 'error', 'focus', 'focusin', 'focusout', 'gotpointercapture', 'input', 'invalid', 'keydown', 'keypress', 'keyup', 'load', 'loadstart', 'loadeddata', 'loadedmetadata', 'lostpointercapture', 'mousedown', 'mouseenter', 'mouseleave', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'mousewheel', 'orientationchange', 'pause', 'play', 'playing', 'pointercancel', 'pointerdown', 'pointerenter', 'pointerleave', 'pointerlockchange', 'mozpointerlockchange', 'webkitpointerlockerchange', 'pointerlockerror', 'mozpointerlockerror', 'webkitpointerlockerror', 'pointermove', 'pointout', 'pointerover', 'pointerup', 'progress', 'ratechange', 'reset', 'resize', 'scroll', 'seeked', 'seeking', 'select', 'selectionchange', 'selectstart', 'show', 'sort', 'stalled', 'submit', 'suspend', 'timeupdate', 'volumechange', 'touchcancel', 'touchmove', 'touchstart', 'touchend', 'transitioncancel', 'transitionend', 'waiting', 'wheel']; - var documentEventNames = ['afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'freeze', 'fullscreenchange', 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror', 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange', 'visibilitychange', 'resume']; - var windowEventNames = ['absolutedeviceorientation', 'afterinput', 'afterprint', 'appinstalled', 'beforeinstallprompt', 'beforeprint', 'beforeunload', 'devicelight', 'devicemotion', 'deviceorientation', 'deviceorientationabsolute', 'deviceproximity', 'hashchange', 'languagechange', 'message', 'mozbeforepaint', 'offline', 'online', 'paint', 'pageshow', 'pagehide', 'popstate', 'rejectionhandled', 'storage', 'unhandledrejection', 'unload', 'userproximity', 'vrdisplyconnected', 'vrdisplaydisconnected', 'vrdisplaypresentchange']; - var htmlElementEventNames = ['beforecopy', 'beforecut', 'beforepaste', 'copy', 'cut', 'paste', 'dragstart', 'loadend', 'animationstart', 'search', 'transitionrun', 'transitionstart', 'webkitanimationend', 'webkitanimationiteration', 'webkitanimationstart', 'webkittransitionend']; - var mediaElementEventNames = ['encrypted', 'waitingforkey', 'msneedkey', 'mozinterruptbegin', 'mozinterruptend']; - var ieElementEventNames = ['activate', 'afterupdate', 'ariarequest', 'beforeactivate', 'beforedeactivate', 'beforeeditfocus', 'beforeupdate', 'cellchange', 'controlselect', 'dataavailable', 'datasetchanged', 'datasetcomplete', 'errorupdate', 'filterchange', 'layoutcomplete', 'losecapture', 'move', 'moveend', 'movestart', 'propertychange', 'resizeend', 'resizestart', 'rowenter', 'rowexit', 'rowsdelete', 'rowsinserted', 'command', 'compassneedscalibration', 'deactivate', 'help', 'mscontentzoom', 'msmanipulationstatechanged', 'msgesturechange', 'msgesturedoubletap', 'msgestureend', 'msgesturehold', 'msgesturestart', 'msgesturetap', 'msgotpointercapture', 'msinertiastart', 'mslostpointercapture', 'mspointercancel', 'mspointerdown', 'mspointerenter', 'mspointerhover', 'mspointerleave', 'mspointermove', 'mspointerout', 'mspointerover', 'mspointerup', 'pointerout', 'mssitemodejumplistitemremoved', 'msthumbnailclick', 'stop', 'storagecommit']; - var webglEventNames = ['webglcontextrestored', 'webglcontextlost', 'webglcontextcreationerror']; - var formEventNames = ['autocomplete', 'autocompleteerror']; - var detailEventNames = ['toggle']; - var frameEventNames = ['load']; - var frameSetEventNames = ['blur', 'error', 'focus', 'load', 'resize', 'scroll', 'messageerror']; - var marqueeEventNames = ['bounce', 'finish', 'start']; - var XMLHttpRequestEventNames = ['loadstart', 'progress', 'abort', 'error', 'load', 'progress', 'timeout', 'loadend', 'readystatechange']; - var IDBIndexEventNames = ['upgradeneeded', 'complete', 'abort', 'success', 'error', 'blocked', 'versionchange', 'close']; - var websocketEventNames = ['close', 'error', 'open', 'message']; - var workerEventNames = ['error', 'message']; - var eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames); - - function filterProperties(target, onProperties, ignoreProperties) { - if (!ignoreProperties || ignoreProperties.length === 0) { - return onProperties; - } - - var tip = ignoreProperties.filter(function (ip) { - return ip.target === target; - }); - - if (!tip || tip.length === 0) { - return onProperties; - } - - var targetIgnoreProperties = tip[0].ignoreProperties; - return onProperties.filter(function (op) { - return targetIgnoreProperties.indexOf(op) === -1; - }); - } - - function patchFilteredProperties(target, onProperties, ignoreProperties, prototype) { - // check whether target is available, sometimes target will be undefined - // because different browser or some 3rd party plugin. - if (!target) { - return; - } - - var filteredProperties = filterProperties(target, onProperties, ignoreProperties); - patchOnProperties(target, filteredProperties, prototype); - } - - function propertyDescriptorPatch(api, _global) { - if (isNode && !isMix) { - return; - } - - if (Zone[api.symbol('patchEvents')]) { - // events are already been patched by legacy patch. - return; - } - - var supportsWebSocket = typeof WebSocket !== 'undefined'; - var ignoreProperties = _global['__Zone_ignore_on_properties']; // for browsers that we can patch the descriptor: Chrome & Firefox - - if (isBrowser) { - var _internalWindow = window; - var ignoreErrorProperties = isIE ? [{ - target: _internalWindow, - ignoreProperties: ['error'] - }] : []; // in IE/Edge, onProp not exist in window object, but in WindowPrototype - // so we need to pass WindowPrototype to check onProp exist or not - - patchFilteredProperties(_internalWindow, eventNames.concat(['messageerror']), ignoreProperties ? ignoreProperties.concat(ignoreErrorProperties) : ignoreProperties, ObjectGetPrototypeOf(_internalWindow)); - patchFilteredProperties(Document.prototype, eventNames, ignoreProperties); - - if (typeof _internalWindow['SVGElement'] !== 'undefined') { - patchFilteredProperties(_internalWindow['SVGElement'].prototype, eventNames, ignoreProperties); - } - - patchFilteredProperties(Element.prototype, eventNames, ignoreProperties); - patchFilteredProperties(HTMLElement.prototype, eventNames, ignoreProperties); - patchFilteredProperties(HTMLMediaElement.prototype, mediaElementEventNames, ignoreProperties); - patchFilteredProperties(HTMLFrameSetElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties); - patchFilteredProperties(HTMLBodyElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties); - patchFilteredProperties(HTMLFrameElement.prototype, frameEventNames, ignoreProperties); - patchFilteredProperties(HTMLIFrameElement.prototype, frameEventNames, ignoreProperties); - var HTMLMarqueeElement = _internalWindow['HTMLMarqueeElement']; - - if (HTMLMarqueeElement) { - patchFilteredProperties(HTMLMarqueeElement.prototype, marqueeEventNames, ignoreProperties); - } - - var Worker = _internalWindow['Worker']; - - if (Worker) { - patchFilteredProperties(Worker.prototype, workerEventNames, ignoreProperties); - } - } - - var XMLHttpRequest = _global['XMLHttpRequest']; - - if (XMLHttpRequest) { - // XMLHttpRequest is not available in ServiceWorker, so we need to check here - patchFilteredProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames, ignoreProperties); - } - - var XMLHttpRequestEventTarget = _global['XMLHttpRequestEventTarget']; - - if (XMLHttpRequestEventTarget) { - patchFilteredProperties(XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype, XMLHttpRequestEventNames, ignoreProperties); - } - - if (typeof IDBIndex !== 'undefined') { - patchFilteredProperties(IDBIndex.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBRequest.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBOpenDBRequest.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBDatabase.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBTransaction.prototype, IDBIndexEventNames, ignoreProperties); - patchFilteredProperties(IDBCursor.prototype, IDBIndexEventNames, ignoreProperties); - } - - if (supportsWebSocket) { - patchFilteredProperties(WebSocket.prototype, websocketEventNames, ignoreProperties); - } - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - - Zone.__load_patch('util', function (global, Zone, api) { - api.patchOnProperties = patchOnProperties; - api.patchMethod = patchMethod; - api.bindArguments = bindArguments; - api.patchMacroTask = patchMacroTask; // In earlier version of zone.js (<0.9.0), we use env name `__zone_symbol__BLACK_LISTED_EVENTS` to - // define which events will not be patched by `Zone.js`. - // In newer version (>=0.9.0), we change the env name to `__zone_symbol__UNPATCHED_EVENTS` to keep - // the name consistent with angular repo. - // The `__zone_symbol__BLACK_LISTED_EVENTS` is deprecated, but it is still be supported for - // backwards compatibility. - - var SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS'); - - var SYMBOL_UNPATCHED_EVENTS = Zone.__symbol__('UNPATCHED_EVENTS'); - - if (global[SYMBOL_UNPATCHED_EVENTS]) { - global[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_UNPATCHED_EVENTS]; - } - - if (global[SYMBOL_BLACK_LISTED_EVENTS]) { - Zone[SYMBOL_BLACK_LISTED_EVENTS] = Zone[SYMBOL_UNPATCHED_EVENTS] = global[SYMBOL_BLACK_LISTED_EVENTS]; - } - - api.patchEventPrototype = patchEventPrototype; - api.patchEventTarget = patchEventTarget; - api.isIEOrEdge = isIEOrEdge; - api.ObjectDefineProperty = ObjectDefineProperty; - api.ObjectGetOwnPropertyDescriptor = ObjectGetOwnPropertyDescriptor; - api.ObjectCreate = ObjectCreate; - api.ArraySlice = ArraySlice; - api.patchClass = patchClass; - api.wrapWithCurrentZone = wrapWithCurrentZone; - api.filterProperties = filterProperties; - api.attachOriginToPatched = attachOriginToPatched; - api._redefineProperty = _redefineProperty; - api.patchCallbacks = patchCallbacks; - - api.getGlobalObjects = function () { - return { - globalSources: globalSources, - zoneSymbolEventNames: zoneSymbolEventNames$1, - eventNames: eventNames, - isBrowser: isBrowser, - isMix: isMix, - isNode: isNode, - TRUE_STR: TRUE_STR, - FALSE_STR: FALSE_STR, - ZONE_SYMBOL_PREFIX: ZONE_SYMBOL_PREFIX, - ADD_EVENT_LISTENER_STR: ADD_EVENT_LISTENER_STR, - REMOVE_EVENT_LISTENER_STR: REMOVE_EVENT_LISTENER_STR - }; - }; - }); - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * @fileoverview - * @suppress {missingRequire} - */ - - - var taskSymbol = zoneSymbol('zoneTask'); - - function patchTimer(window, setName, cancelName, nameSuffix) { - var setNative = null; - var clearNative = null; - setName += nameSuffix; - cancelName += nameSuffix; - var tasksByHandleId = {}; - - function scheduleTask(task) { - var data = task.data; - - function timer() { - try { - task.invoke.apply(this, arguments); - } finally { - // issue-934, task will be cancelled - // even it is a periodic task such as - // setInterval - if (!(task.data && task.data.isPeriodic)) { - if (typeof data.handleId === 'number') { - // in non-nodejs env, we remove timerId - // from local cache - delete tasksByHandleId[data.handleId]; - } else if (data.handleId) { - // Node returns complex objects as handleIds - // we remove task reference from timer object - data.handleId[taskSymbol] = null; - } - } - } - } - - data.args[0] = timer; - data.handleId = setNative.apply(window, data.args); - return task; - } - - function clearTask(task) { - return clearNative(task.data.handleId); - } - - setNative = patchMethod(window, setName, function (delegate) { - return function (self, args) { - if (typeof args[0] === 'function') { - var _options = { - isPeriodic: nameSuffix === 'Interval', - delay: nameSuffix === 'Timeout' || nameSuffix === 'Interval' ? args[1] || 0 : undefined, - args: args - }; - var task = scheduleMacroTaskWithCurrentZone(setName, args[0], _options, scheduleTask, clearTask); - - if (!task) { - return task; - } // Node.js must additionally support the ref and unref functions. - - - var handle = task.data.handleId; - - if (typeof handle === 'number') { - // for non nodejs env, we save handleId: task - // mapping in local cache for clearTimeout - tasksByHandleId[handle] = task; - } else if (handle) { - // for nodejs env, we save task - // reference in timerId Object for clearTimeout - handle[taskSymbol] = task; - } // check whether handle is null, because some polyfill or browser - // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame - - - if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' && typeof handle.unref === 'function') { - task.ref = handle.ref.bind(handle); - task.unref = handle.unref.bind(handle); - } - - if (typeof handle === 'number' || handle) { - return handle; - } - - return task; - } else { - // cause an error by calling it directly. - return delegate.apply(window, args); - } - }; - }); - clearNative = patchMethod(window, cancelName, function (delegate) { - return function (self, args) { - var id = args[0]; - var task; - - if (typeof id === 'number') { - // non nodejs env. - task = tasksByHandleId[id]; - } else { - // nodejs env. - task = id && id[taskSymbol]; // other environments. - - if (!task) { - task = id; - } - } - - if (task && typeof task.type === 'string') { - if (task.state !== 'notScheduled' && (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) { - if (typeof id === 'number') { - delete tasksByHandleId[id]; - } else if (id) { - id[taskSymbol] = null; - } // Do not cancel already canceled functions - - - task.zone.cancelTask(task); - } - } else { - // cause an error by calling it directly. - delegate.apply(window, args); - } - }; - }); - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - - function patchCustomElements(_global, api) { - var _api$getGlobalObjects = api.getGlobalObjects(), - isBrowser = _api$getGlobalObjects.isBrowser, - isMix = _api$getGlobalObjects.isMix; - - if (!isBrowser && !isMix || !_global['customElements'] || !('customElements' in _global)) { - return; - } - - var callbacks = ['connectedCallback', 'disconnectedCallback', 'adoptedCallback', 'attributeChangedCallback']; - api.patchCallbacks(api, _global.customElements, 'customElements', 'define', callbacks); - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - - function eventTargetPatch(_global, api) { - if (Zone[api.symbol('patchEventTarget')]) { - // EventTarget is already patched. - return; - } - - var _api$getGlobalObjects2 = api.getGlobalObjects(), - eventNames = _api$getGlobalObjects2.eventNames, - zoneSymbolEventNames = _api$getGlobalObjects2.zoneSymbolEventNames, - TRUE_STR = _api$getGlobalObjects2.TRUE_STR, - FALSE_STR = _api$getGlobalObjects2.FALSE_STR, - ZONE_SYMBOL_PREFIX = _api$getGlobalObjects2.ZONE_SYMBOL_PREFIX; // predefine all __zone_symbol__ + eventName + true/false string - - - for (var i = 0; i < eventNames.length; i++) { - var eventName = eventNames[i]; - var falseEventName = eventName + FALSE_STR; - var trueEventName = eventName + TRUE_STR; - var symbol = ZONE_SYMBOL_PREFIX + falseEventName; - var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; - zoneSymbolEventNames[eventName] = {}; - zoneSymbolEventNames[eventName][FALSE_STR] = symbol; - zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture; - } - - var EVENT_TARGET = _global['EventTarget']; - - if (!EVENT_TARGET || !EVENT_TARGET.prototype) { - return; - } - - api.patchEventTarget(_global, [EVENT_TARGET && EVENT_TARGET.prototype]); - return true; - } - - function patchEvent(global, api) { - api.patchEventPrototype(global, api); - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * @fileoverview - * @suppress {missingRequire} - */ - - - Zone.__load_patch('legacy', function (global) { - var legacyPatch = global[Zone.__symbol__('legacyPatch')]; - - if (legacyPatch) { - legacyPatch(); - } - }); - - Zone.__load_patch('timers', function (global) { - var set = 'set'; - var clear = 'clear'; - patchTimer(global, set, clear, 'Timeout'); - patchTimer(global, set, clear, 'Interval'); - patchTimer(global, set, clear, 'Immediate'); - }); - - Zone.__load_patch('requestAnimationFrame', function (global) { - patchTimer(global, 'request', 'cancel', 'AnimationFrame'); - patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame'); - patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame'); - }); - - Zone.__load_patch('blocking', function (global, Zone) { - var blockingMethods = ['alert', 'prompt', 'confirm']; - - for (var i = 0; i < blockingMethods.length; i++) { - var name = blockingMethods[i]; - patchMethod(global, name, function (delegate, symbol, name) { - return function (s, args) { - return Zone.current.run(delegate, global, args, name); - }; - }); - } - }); - - Zone.__load_patch('EventTarget', function (global, Zone, api) { - patchEvent(global, api); - eventTargetPatch(global, api); // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener - - var XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget']; - - if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) { - api.patchEventTarget(global, [XMLHttpRequestEventTarget.prototype]); - } - - patchClass('MutationObserver'); - patchClass('WebKitMutationObserver'); - patchClass('IntersectionObserver'); - patchClass('FileReader'); - }); - - Zone.__load_patch('on_property', function (global, Zone, api) { - propertyDescriptorPatch(api, global); - propertyPatch(); - }); - - Zone.__load_patch('customElements', function (global, Zone, api) { - patchCustomElements(global, api); - }); - - Zone.__load_patch('XHR', function (global, Zone) { - // Treat XMLHttpRequest as a macrotask. - patchXHR(global); - var XHR_TASK = zoneSymbol('xhrTask'); - var XHR_SYNC = zoneSymbol('xhrSync'); - var XHR_LISTENER = zoneSymbol('xhrListener'); - var XHR_SCHEDULED = zoneSymbol('xhrScheduled'); - var XHR_URL = zoneSymbol('xhrURL'); - var XHR_ERROR_BEFORE_SCHEDULED = zoneSymbol('xhrErrorBeforeScheduled'); - - function patchXHR(window) { - var XMLHttpRequest = window['XMLHttpRequest']; - - if (!XMLHttpRequest) { - // XMLHttpRequest is not available in service worker - return; - } - - var XMLHttpRequestPrototype = XMLHttpRequest.prototype; - - function findPendingTask(target) { - return target[XHR_TASK]; - } - - var oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER]; - var oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; - - if (!oriAddListener) { - var XMLHttpRequestEventTarget = window['XMLHttpRequestEventTarget']; - - if (XMLHttpRequestEventTarget) { - var XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget.prototype; - oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER]; - oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; - } - } - - var READY_STATE_CHANGE = 'readystatechange'; - var SCHEDULED = 'scheduled'; - - function scheduleTask(task) { - var data = task.data; - var target = data.target; - target[XHR_SCHEDULED] = false; - target[XHR_ERROR_BEFORE_SCHEDULED] = false; // remove existing event listener - - var listener = target[XHR_LISTENER]; - - if (!oriAddListener) { - oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER]; - oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; - } - - if (listener) { - oriRemoveListener.call(target, READY_STATE_CHANGE, listener); - } - - var newListener = target[XHR_LISTENER] = function () { - if (target.readyState === target.DONE) { - // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with - // readyState=4 multiple times, so we need to check task state here - if (!data.aborted && target[XHR_SCHEDULED] && task.state === SCHEDULED) { - // check whether the xhr has registered onload listener - // if that is the case, the task should invoke after all - // onload listeners finish. - var loadTasks = target['__zone_symbol__loadfalse']; - - if (loadTasks && loadTasks.length > 0) { - var oriInvoke = task.invoke; - - task.invoke = function () { - // need to load the tasks again, because in other - // load listener, they may remove themselves - var loadTasks = target['__zone_symbol__loadfalse']; - - for (var i = 0; i < loadTasks.length; i++) { - if (loadTasks[i] === task) { - loadTasks.splice(i, 1); - } - } - - if (!data.aborted && task.state === SCHEDULED) { - oriInvoke.call(task); - } - }; - - loadTasks.push(task); - } else { - task.invoke(); - } - } else if (!data.aborted && target[XHR_SCHEDULED] === false) { - // error occurs when xhr.send() - target[XHR_ERROR_BEFORE_SCHEDULED] = true; - } - } - }; - - oriAddListener.call(target, READY_STATE_CHANGE, newListener); - var storedTask = target[XHR_TASK]; - - if (!storedTask) { - target[XHR_TASK] = task; - } - - sendNative.apply(target, data.args); - target[XHR_SCHEDULED] = true; - return task; - } - - function placeholderCallback() {} - - function clearTask(task) { - var data = task.data; // Note - ideally, we would call data.target.removeEventListener here, but it's too late - // to prevent it from firing. So instead, we store info for the event listener. - - data.aborted = true; - return abortNative.apply(data.target, data.args); - } - - var openNative = patchMethod(XMLHttpRequestPrototype, 'open', function () { - return function (self, args) { - self[XHR_SYNC] = args[2] == false; - self[XHR_URL] = args[1]; - return openNative.apply(self, args); - }; - }); - var XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send'; - var fetchTaskAborting = zoneSymbol('fetchTaskAborting'); - var fetchTaskScheduling = zoneSymbol('fetchTaskScheduling'); - var sendNative = patchMethod(XMLHttpRequestPrototype, 'send', function () { - return function (self, args) { - if (Zone.current[fetchTaskScheduling] === true) { - // a fetch is scheduling, so we are using xhr to polyfill fetch - // and because we already schedule macroTask for fetch, we should - // not schedule a macroTask for xhr again - return sendNative.apply(self, args); - } - - if (self[XHR_SYNC]) { - // if the XHR is sync there is no task to schedule, just execute the code. - return sendNative.apply(self, args); - } else { - var _options2 = { - target: self, - url: self[XHR_URL], - isPeriodic: false, - args: args, - aborted: false - }; - var task = scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, _options2, scheduleTask, clearTask); - - if (self && self[XHR_ERROR_BEFORE_SCHEDULED] === true && !_options2.aborted && task.state === SCHEDULED) { - // xhr request throw error when send - // we should invoke task instead of leaving a scheduled - // pending macroTask - task.invoke(); - } - } - }; - }); - var abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', function () { - return function (self, args) { - var task = findPendingTask(self); - - if (task && typeof task.type == 'string') { - // If the XHR has already completed, do nothing. - // If the XHR has already been aborted, do nothing. - // Fix #569, call abort multiple times before done will cause - // macroTask task count be negative number - if (task.cancelFn == null || task.data && task.data.aborted) { - return; - } - - task.zone.cancelTask(task); - } else if (Zone.current[fetchTaskAborting] === true) { - // the abort is called from fetch polyfill, we need to call native abort of XHR. - return abortNative.apply(self, args); - } // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no - // task - // to cancel. Do nothing. - - }; - }); - } - }); - - Zone.__load_patch('geolocation', function (global) { - /// GEO_LOCATION - if (global['navigator'] && global['navigator'].geolocation) { - patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']); - } - }); - - Zone.__load_patch('PromiseRejectionEvent', function (global, Zone) { - // handle unhandled promise rejection - function findPromiseRejectionHandler(evtName) { - return function (e) { - var eventTasks = findEventTasks(global, evtName); - eventTasks.forEach(function (eventTask) { - // windows has added unhandledrejection event listener - // trigger the event listener - var PromiseRejectionEvent = global['PromiseRejectionEvent']; - - if (PromiseRejectionEvent) { - var evt = new PromiseRejectionEvent(evtName, { - promise: e.promise, - reason: e.rejection - }); - eventTask.invoke(evt); - } - }); - }; - } - - if (global['PromiseRejectionEvent']) { - Zone[zoneSymbol('unhandledPromiseRejectionHandler')] = findPromiseRejectionHandler('unhandledrejection'); - Zone[zoneSymbol('rejectionHandledHandler')] = findPromiseRejectionHandler('rejectionhandled'); - } - }); - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /***/ - - }, - - /***/ - "./node_modules/zone.js/dist/zone-legacy.js": - /*!**************************************************!*\ - !*** ./node_modules/zone.js/dist/zone-legacy.js ***! - \**************************************************/ - - /*! no static exports found */ - - /***/ - function node_modulesZoneJsDistZoneLegacyJs(module, exports, __webpack_require__) { - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - (function (global, factory) { - true ? factory() : undefined; - })(this, function () { - 'use strict'; - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - function eventTargetLegacyPatch(_global, api) { - var _a = api.getGlobalObjects(), - eventNames = _a.eventNames, - globalSources = _a.globalSources, - zoneSymbolEventNames = _a.zoneSymbolEventNames, - TRUE_STR = _a.TRUE_STR, - FALSE_STR = _a.FALSE_STR, - ZONE_SYMBOL_PREFIX = _a.ZONE_SYMBOL_PREFIX; - - var WTF_ISSUE_555 = 'Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video'; - var NO_EVENT_TARGET = 'ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket'.split(','); - var EVENT_TARGET = 'EventTarget'; - var apis = []; - var isWtf = _global['wtf']; - var WTF_ISSUE_555_ARRAY = WTF_ISSUE_555.split(','); - - if (isWtf) { - // Workaround for: https://github.com/google/tracing-framework/issues/555 - apis = WTF_ISSUE_555_ARRAY.map(function (v) { - return 'HTML' + v + 'Element'; - }).concat(NO_EVENT_TARGET); - } else if (_global[EVENT_TARGET]) { - apis.push(EVENT_TARGET); - } else { - // Note: EventTarget is not available in all browsers, - // if it's not available, we instead patch the APIs in the IDL that inherit from EventTarget - apis = NO_EVENT_TARGET; - } - - var isDisableIECheck = _global['__Zone_disable_IE_check'] || false; - var isEnableCrossContextCheck = _global['__Zone_enable_cross_context_check'] || false; - var ieOrEdge = api.isIEOrEdge(); - var ADD_EVENT_LISTENER_SOURCE = '.addEventListener:'; - var FUNCTION_WRAPPER = '[object FunctionWrapper]'; - var BROWSER_TOOLS = 'function __BROWSERTOOLS_CONSOLE_SAFEFUNC() { [native code] }'; // predefine all __zone_symbol__ + eventName + true/false string - - for (var i = 0; i < eventNames.length; i++) { - var eventName = eventNames[i]; - var falseEventName = eventName + FALSE_STR; - var trueEventName = eventName + TRUE_STR; - var symbol = ZONE_SYMBOL_PREFIX + falseEventName; - var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; - zoneSymbolEventNames[eventName] = {}; - zoneSymbolEventNames[eventName][FALSE_STR] = symbol; - zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture; - } // predefine all task.source string - - - for (var i = 0; i < WTF_ISSUE_555.length; i++) { - var target = WTF_ISSUE_555_ARRAY[i]; - var targets = globalSources[target] = {}; - - for (var j = 0; j < eventNames.length; j++) { - var eventName = eventNames[j]; - targets[eventName] = target + ADD_EVENT_LISTENER_SOURCE + eventName; - } - } - - var checkIEAndCrossContext = function checkIEAndCrossContext(nativeDelegate, delegate, target, args) { - if (!isDisableIECheck && ieOrEdge) { - if (isEnableCrossContextCheck) { - try { - var testString = delegate.toString(); - - if (testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS) { - nativeDelegate.apply(target, args); - return false; - } - } catch (error) { - nativeDelegate.apply(target, args); - return false; - } - } else { - var testString = delegate.toString(); - - if (testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS) { - nativeDelegate.apply(target, args); - return false; - } - } - } else if (isEnableCrossContextCheck) { - try { - delegate.toString(); - } catch (error) { - nativeDelegate.apply(target, args); - return false; - } - } - - return true; - }; - - var apiTypes = []; - - for (var i = 0; i < apis.length; i++) { - var type = _global[apis[i]]; - apiTypes.push(type && type.prototype); - } // vh is validateHandler to check event handler - // is valid or not(for security check) - - - api.patchEventTarget(_global, apiTypes, { - vh: checkIEAndCrossContext - }); - Zone[api.symbol('patchEventTarget')] = !!_global[EVENT_TARGET]; - return true; - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - // we have to patch the instance since the proto is non-configurable - - - function apply(api, _global) { - var _a = api.getGlobalObjects(), - ADD_EVENT_LISTENER_STR = _a.ADD_EVENT_LISTENER_STR, - REMOVE_EVENT_LISTENER_STR = _a.REMOVE_EVENT_LISTENER_STR; - - var WS = _global.WebSocket; // On Safari window.EventTarget doesn't exist so need to patch WS add/removeEventListener - // On older Chrome, no need since EventTarget was already patched - - if (!_global.EventTarget) { - api.patchEventTarget(_global, [WS.prototype]); - } - - _global.WebSocket = function (x, y) { - var socket = arguments.length > 1 ? new WS(x, y) : new WS(x); - var proxySocket; - var proxySocketProto; // Safari 7.0 has non-configurable own 'onmessage' and friends properties on the socket instance - - var onmessageDesc = api.ObjectGetOwnPropertyDescriptor(socket, 'onmessage'); - - if (onmessageDesc && onmessageDesc.configurable === false) { - proxySocket = api.ObjectCreate(socket); // socket have own property descriptor 'onopen', 'onmessage', 'onclose', 'onerror' - // but proxySocket not, so we will keep socket as prototype and pass it to - // patchOnProperties method - - proxySocketProto = socket; - [ADD_EVENT_LISTENER_STR, REMOVE_EVENT_LISTENER_STR, 'send', 'close'].forEach(function (propName) { - proxySocket[propName] = function () { - var args = api.ArraySlice.call(arguments); - - if (propName === ADD_EVENT_LISTENER_STR || propName === REMOVE_EVENT_LISTENER_STR) { - var eventName = args.length > 0 ? args[0] : undefined; - - if (eventName) { - var propertySymbol = Zone.__symbol__('ON_PROPERTY' + eventName); - - socket[propertySymbol] = proxySocket[propertySymbol]; - } - } - - return socket[propName].apply(socket, args); - }; - }); - } else { - // we can patch the real socket - proxySocket = socket; - } - - api.patchOnProperties(proxySocket, ['close', 'error', 'message', 'open'], proxySocketProto); - return proxySocket; - }; - - var globalWebSocket = _global['WebSocket']; - - for (var prop in WS) { - globalWebSocket[prop] = WS[prop]; - } - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * @fileoverview - * @suppress {globalThis} - */ - - - function propertyDescriptorLegacyPatch(api, _global) { - var _a = api.getGlobalObjects(), - isNode = _a.isNode, - isMix = _a.isMix; - - if (isNode && !isMix) { - return; - } - - if (!canPatchViaPropertyDescriptor(api, _global)) { - var supportsWebSocket = typeof WebSocket !== 'undefined'; // Safari, Android browsers (Jelly Bean) - - patchViaCapturingAllTheEvents(api); - api.patchClass('XMLHttpRequest'); - - if (supportsWebSocket) { - apply(api, _global); - } - - Zone[api.symbol('patchEvents')] = true; - } - } - - function canPatchViaPropertyDescriptor(api, _global) { - var _a = api.getGlobalObjects(), - isBrowser = _a.isBrowser, - isMix = _a.isMix; - - if ((isBrowser || isMix) && !api.ObjectGetOwnPropertyDescriptor(HTMLElement.prototype, 'onclick') && typeof Element !== 'undefined') { - // WebKit https://bugs.webkit.org/show_bug.cgi?id=134364 - // IDL interface attributes are not configurable - var desc = api.ObjectGetOwnPropertyDescriptor(Element.prototype, 'onclick'); - if (desc && !desc.configurable) return false; // try to use onclick to detect whether we can patch via propertyDescriptor - // because XMLHttpRequest is not available in service worker - - if (desc) { - api.ObjectDefineProperty(Element.prototype, 'onclick', { - enumerable: true, - configurable: true, - get: function get() { - return true; - } - }); - var div = document.createElement('div'); - var result = !!div.onclick; - api.ObjectDefineProperty(Element.prototype, 'onclick', desc); - return result; - } - } - - var XMLHttpRequest = _global['XMLHttpRequest']; - - if (!XMLHttpRequest) { - // XMLHttpRequest is not available in service worker - return false; - } - - var ON_READY_STATE_CHANGE = 'onreadystatechange'; - var XMLHttpRequestPrototype = XMLHttpRequest.prototype; - var xhrDesc = api.ObjectGetOwnPropertyDescriptor(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE); // add enumerable and configurable here because in opera - // by default XMLHttpRequest.prototype.onreadystatechange is undefined - // without adding enumerable and configurable will cause onreadystatechange - // non-configurable - // and if XMLHttpRequest.prototype.onreadystatechange is undefined, - // we should set a real desc instead a fake one - - if (xhrDesc) { - api.ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, { - enumerable: true, - configurable: true, - get: function get() { - return true; - } - }); - var req = new XMLHttpRequest(); - var result = !!req.onreadystatechange; // restore original desc - - api.ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, xhrDesc || {}); - return result; - } else { - var SYMBOL_FAKE_ONREADYSTATECHANGE_1 = api.symbol('fake'); - api.ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, { - enumerable: true, - configurable: true, - get: function get() { - return this[SYMBOL_FAKE_ONREADYSTATECHANGE_1]; - }, - set: function set(value) { - this[SYMBOL_FAKE_ONREADYSTATECHANGE_1] = value; - } - }); - var req = new XMLHttpRequest(); - - var detectFunc = function detectFunc() {}; - - req.onreadystatechange = detectFunc; - var result = req[SYMBOL_FAKE_ONREADYSTATECHANGE_1] === detectFunc; - req.onreadystatechange = null; - return result; - } - } // Whenever any eventListener fires, we check the eventListener target and all parents - // for `onwhatever` properties and replace them with zone-bound functions - // - Chrome (for now) - - - function patchViaCapturingAllTheEvents(api) { - var eventNames = api.getGlobalObjects().eventNames; - var unboundKey = api.symbol('unbound'); - - var _loop_1 = function _loop_1(i) { - var property = eventNames[i]; - var onproperty = 'on' + property; - self.addEventListener(property, function (event) { - var elt = event.target, - bound, - source; - - if (elt) { - source = elt.constructor['name'] + '.' + onproperty; - } else { - source = 'unknown.' + onproperty; - } - - while (elt) { - if (elt[onproperty] && !elt[onproperty][unboundKey]) { - bound = api.wrapWithCurrentZone(elt[onproperty], source); - bound[unboundKey] = elt[onproperty]; - elt[onproperty] = bound; - } - - elt = elt.parentElement; - } - }, true); - }; - - for (var i = 0; i < eventNames.length; i++) { - _loop_1(i); - } - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - - function registerElementPatch(_global, api) { - var _a = api.getGlobalObjects(), - isBrowser = _a.isBrowser, - isMix = _a.isMix; - - if (!isBrowser && !isMix || !('registerElement' in _global.document)) { - return; - } - - var callbacks = ['createdCallback', 'attachedCallback', 'detachedCallback', 'attributeChangedCallback']; - api.patchCallbacks(api, document, 'Document', 'registerElement', callbacks); - } - /** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - - /** - * @fileoverview - * @suppress {missingRequire} - */ - - - (function (_global) { - _global['__zone_symbol__legacyPatch'] = function () { - var Zone = _global['Zone']; - - Zone.__load_patch('registerElement', function (global, Zone, api) { - registerElementPatch(global, api); - }); - - Zone.__load_patch('EventTargetLegacy', function (global, Zone, api) { - eventTargetLegacyPatch(global, api); - propertyDescriptorLegacyPatch(api, global); - }); - }; - })(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global); - }); - /***/ - - }, - - /***/ - "./src/polyfills.ts": - /*!**************************!*\ - !*** ./src/polyfills.ts ***! - \**************************/ - - /*! no exports provided */ - - /***/ - function srcPolyfillsTs(module, __webpack_exports__, __webpack_require__) { - "use strict"; - - __webpack_require__.r(__webpack_exports__); - /* harmony import */ - - - var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( - /*! tslib */ - "./node_modules/tslib/tslib.es6.js"); - /* harmony import */ - - - var zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( - /*! zone.js/dist/zone */ - "./node_modules/zone.js/dist/zone-evergreen.js"); - /* harmony import */ - - - var zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1___default = - /*#__PURE__*/ - __webpack_require__.n(zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1__); - /* - * DAA Example - * - * Copyright (C) 2019 - Miguel Reboiro-Jato. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - /** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), - * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - - /*************************************************************************************************** - * BROWSER POLYFILLS - */ - - /** IE9, IE10 and IE11 requires all of the following polyfills. **/ - // import 'core-js/es6/symbol'; - // import 'core-js/es6/object'; - // import 'core-js/es6/function'; - // import 'core-js/es6/parse-int'; - // import 'core-js/es6/parse-float'; - // import 'core-js/es6/number'; - // import 'core-js/es6/math'; - // import 'core-js/es6/string'; - // import 'core-js/es6/date'; - // import 'core-js/es6/array'; - // import 'core-js/es6/regexp'; - // import 'core-js/es6/map'; - // import 'core-js/es6/weak-map'; - // import 'core-js/es6/set'; - - /** - * If the application will be indexed by Google Search, the following is required. - * Googlebot uses a renderer based on Chrome 41. - * https://developers.google.com/search/docs/guides/rendering - **/ - // import 'core-js/es6/array'; - - /** IE10 and IE11 requires the following for NgClass support on SVG elements */ - // import 'classlist.js'; // Run `npm install --save classlist.js`. - - /** IE10 and IE11 requires the following for the Reflect API. */ - // import 'core-js/es6/reflect'; - - /** - * Web Animations `@angular/platform-browser/animations` - * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. - * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). - **/ - // import 'web-animations-js'; // Run `npm install --save web-animations-js`. - - /** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - */ - // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - - /* - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - */ - // (window as any).__Zone_enable_cross_context_check = true; - - /*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ - // Included with Angular CLI. - - /*************************************************************************************************** - * APPLICATION IMPORTS - */ - - /***/ - - }, - - /***/ - 1: - /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** multi ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-polyfills.js zone.js/dist/zone-legacy ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-jit-polyfills.js ./src/polyfills.ts ***! - \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************/ - - /*! no static exports found */ - - /***/ - function _(module, exports, __webpack_require__) { - __webpack_require__( - /*! C:\Users\Noelia\Desktop\DAA\daaexample\src\main\angular\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models\es5-polyfills.js */ - "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-polyfills.js"); - - __webpack_require__( - /*! zone.js/dist/zone-legacy */ - "./node_modules/zone.js/dist/zone-legacy.js"); - - __webpack_require__( - /*! C:\Users\Noelia\Desktop\DAA\daaexample\src\main\angular\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models\jit-polyfills.js */ - "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js"); - - __webpack_require__( - /*! C:\Users\Noelia\Desktop\DAA\daaexample\src\main\angular\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models\es5-jit-polyfills.js */ - "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-jit-polyfills.js"); - - module.exports = __webpack_require__( - /*! C:\Users\Noelia\Desktop\DAA\daaexample\src\main\angular\src\polyfills.ts */ - "./src/polyfills.ts"); - /***/ - } -}, [[1, "runtime"]]]); -//# sourceMappingURL=polyfills-es5.js.map \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/polyfills-es5.js.map b/target/catalina-base/webapps/DAAExample/polyfills-es5.js.map deleted file mode 100644 index f56ce15c3a060523339d6070176908be061178fb..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/polyfills-es5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["node_modules/@angular-devkit/build-angular/node_modules/core-js/es/date/index.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/es/math/index.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/es/number/index.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/es/reflect/index.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/es/symbol/index.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-function.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/a-possible-prototype.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/add-to-unscopables.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/advance-string-index.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-instance.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/an-object.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-copy-within.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-fill.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-for-each.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-from.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-includes.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-iteration.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-last-index-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-has-species-support.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-is-strict.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-method-uses-to-length.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-reduce.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/array-species-create.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/call-with-safe-iteration-closing.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/check-correctness-of-iteration.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof-raw.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/classof.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-strong.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection-weak.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/collection.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/copy-constructor-properties.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-is-regexp-logic.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/correct-prototype-getter.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-html.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-iterator-constructor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-non-enumerable-property.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property-descriptor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/create-property.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/date-to-iso-string.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/date-to-primitive.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-iterator.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/define-well-known-symbol.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/descriptors.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/document-create-element.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/dom-iterables.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-is-ios.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-user-agent.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/engine-v8-version.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/enum-bug-keys.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/export.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fails.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/freezing.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind-context.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/function-bind.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-built-in.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/get-iterator-method.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/global.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/has.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/hidden-keys.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/host-report-errors.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/html.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/ie8-dom-define.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/indexed-object.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inherit-if-required.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/inspect-source.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/internal-state.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array-iterator-method.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-array.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-forced.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-integer.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-object.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-pure.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/is-regexp.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterate.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators-core.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/iterators.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-expm1.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-fround.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-log1p.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/math-sign.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/microtask.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-promise-constructor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-symbol.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/native-weak-map.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/new-promise-capability.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/not-a-regexp.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-is-finite.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-float.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/number-parse-int.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-assign.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-create.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-properties.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-define-property.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-descriptor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names-external.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-names.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-own-property-symbols.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-get-prototype-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys-internal.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-keys.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-property-is-enumerable.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-set-prototype-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/object-to-string.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/own-keys.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/path.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/perform.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/promise-resolve.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine-all.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/redefine.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/reflect-metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec-abstract.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-exec.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-flags.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/regexp-sticky-helpers.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/require-object-coercible.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/same-value.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-global.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-species.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/set-to-string-tag.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-key.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared-store.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/shared.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/species-constructor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-html-forced.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-multibyte.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-pad.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-repeat.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim-forced.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/string-trim.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/task.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/this-number-value.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-absolute-index.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-indexed-object.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-integer.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-length.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-object.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-primitive.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/to-string-tag-support.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/uid.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/use-symbol-as-uid.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol-wrapped.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/well-known-symbol.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/internals/whitespaces.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.concat.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.copy-within.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.every.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.fill.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.filter.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.find-index.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.find.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.for-each.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.from.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.index-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.is-array.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.iterator.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.join.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.last-index-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.map.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.reduce-right.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.reduce.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.slice.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.some.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.sort.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.array.splice.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.now.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-iso-string.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-json.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-primitive.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.date.to-string.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.bind.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.has-instance.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.function.name.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.json.to-string-tag.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.map.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.acosh.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.asinh.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.atanh.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.cbrt.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.clz32.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.cosh.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.expm1.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.fround.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.hypot.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.imul.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log10.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log1p.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.log2.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.sign.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.sinh.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.tanh.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.to-string-tag.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.math.trunc.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.constructor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.epsilon.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-finite.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-integer.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-nan.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.is-safe-integer.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.max-safe-integer.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.min-safe-integer.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.parse-float.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.parse-int.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.to-fixed.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.number.to-precision.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.assign.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.create.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.define-properties.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.define-property.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.freeze.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-own-property-descriptor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-own-property-names.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.get-prototype-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-extensible.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-frozen.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is-sealed.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.is.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.keys.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.prevent-extensions.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.seal.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.set-prototype-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.object.to-string.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.parse-float.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.parse-int.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.promise.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.apply.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.construct.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.define-property.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.delete-property.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get-prototype-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.get.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.has.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.is-extensible.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.own-keys.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.prevent-extensions.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.set-prototype-of.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.reflect.set.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.constructor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.exec.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.flags.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.regexp.to-string.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.set.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.anchor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.big.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.blink.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.bold.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.code-point-at.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.ends-with.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fixed.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fontcolor.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.fontsize.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.from-code-point.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.includes.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.italics.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.iterator.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.link.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.match.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.raw.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.repeat.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.replace.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.search.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.small.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.split.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.starts-with.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.strike.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.sub.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.sup.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.string.trim.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.async-iterator.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.description.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.has-instance.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.iterator.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.match-all.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.match.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.replace.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.search.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.species.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.split.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.to-primitive.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.to-string-tag.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.symbol.unscopables.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/es.weak-map.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.define-metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.delete-metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/esnext.reflect.metadata.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/web.dom-collections.for-each.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/modules/web.dom-collections.iterator.js","node_modules/@angular-devkit/build-angular/node_modules/core-js/proposals/reflect-metadata.js","node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-jit-polyfills.js","node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-polyfills.js","node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js","node_modules/regenerator-runtime/runtime.js","node_modules/tslib/tslib.es6.js","node_modules/zone.js/dist/zone-evergreen.js","node_modules/zone.js/dist/zone-legacy.js","src/polyfills.ts"],"names":[],"mappings":"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","file":"polyfills-es5.js","sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/runtime-es2015.js b/target/catalina-base/webapps/DAAExample/runtime-es2015.js deleted file mode 100644 index ab4f9b75a5cf7dea77f848bfec466054d5537489..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/runtime-es2015.js +++ /dev/null @@ -1,224 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // install a JSONP callback for chunk loading -/******/ function webpackJsonpCallback(data) { -/******/ var chunkIds = data[0]; -/******/ var moreModules = data[1]; -/******/ var executeModules = data[2]; -/******/ -/******/ // add "moreModules" to the modules object, -/******/ // then flag all "chunkIds" as loaded and fire callback -/******/ var moduleId, chunkId, i = 0, resolves = []; -/******/ for(;i < chunkIds.length; i++) { -/******/ chunkId = chunkIds[i]; -/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) { -/******/ resolves.push(installedChunks[chunkId][0]); -/******/ } -/******/ installedChunks[chunkId] = 0; -/******/ } -/******/ for(moduleId in moreModules) { -/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { -/******/ modules[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if(parentJsonpFunction) parentJsonpFunction(data); -/******/ -/******/ while(resolves.length) { -/******/ resolves.shift()(); -/******/ } -/******/ -/******/ // add entry modules from loaded chunk to deferred list -/******/ deferredModules.push.apply(deferredModules, executeModules || []); -/******/ -/******/ // run deferred modules when all chunks ready -/******/ return checkDeferredModules(); -/******/ }; -/******/ function checkDeferredModules() { -/******/ var result; -/******/ for(var i = 0; i < deferredModules.length; i++) { -/******/ var deferredModule = deferredModules[i]; -/******/ var fulfilled = true; -/******/ for(var j = 1; j < deferredModule.length; j++) { -/******/ var depId = deferredModule[j]; -/******/ if(installedChunks[depId] !== 0) fulfilled = false; -/******/ } -/******/ if(fulfilled) { -/******/ deferredModules.splice(i--, 1); -/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]); -/******/ } -/******/ } -/******/ -/******/ return result; -/******/ } -/******/ -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // object to store loaded and loading chunks -/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched -/******/ // Promise = chunk loading, 0 = chunk loaded -/******/ var installedChunks = { -/******/ "runtime": 0 -/******/ }; -/******/ -/******/ var deferredModules = []; -/******/ -/******/ // script path function -/******/ function jsonpScriptSrc(chunkId) { -/******/ return __webpack_require__.p + "" + ({"modules-people-people-module":"modules-people-people-module","modules-pets-pets-module":"modules-pets-pets-module"}[chunkId]||chunkId) + "-es2015.js" -/******/ } -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ // This file contains only the entry chunk. -/******/ // The chunk loading function for additional chunks -/******/ __webpack_require__.e = function requireEnsure(chunkId) { -/******/ var promises = []; -/******/ -/******/ -/******/ // JSONP chunk loading for javascript -/******/ -/******/ var installedChunkData = installedChunks[chunkId]; -/******/ if(installedChunkData !== 0) { // 0 means "already installed". -/******/ -/******/ // a Promise means "currently loading". -/******/ if(installedChunkData) { -/******/ promises.push(installedChunkData[2]); -/******/ } else { -/******/ // setup Promise in chunk cache -/******/ var promise = new Promise(function(resolve, reject) { -/******/ installedChunkData = installedChunks[chunkId] = [resolve, reject]; -/******/ }); -/******/ promises.push(installedChunkData[2] = promise); -/******/ -/******/ // start chunk loading -/******/ var script = document.createElement('script'); -/******/ var onScriptComplete; -/******/ -/******/ script.charset = 'utf-8'; -/******/ script.timeout = 120; -/******/ if (__webpack_require__.nc) { -/******/ script.setAttribute("nonce", __webpack_require__.nc); -/******/ } -/******/ script.src = jsonpScriptSrc(chunkId); -/******/ -/******/ // create error before stack unwound to get useful stacktrace later -/******/ var error = new Error(); -/******/ onScriptComplete = function (event) { -/******/ // avoid mem leaks in IE. -/******/ script.onerror = script.onload = null; -/******/ clearTimeout(timeout); -/******/ var chunk = installedChunks[chunkId]; -/******/ if(chunk !== 0) { -/******/ if(chunk) { -/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type); -/******/ var realSrc = event && event.target && event.target.src; -/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')'; -/******/ error.name = 'ChunkLoadError'; -/******/ error.type = errorType; -/******/ error.request = realSrc; -/******/ chunk[1](error); -/******/ } -/******/ installedChunks[chunkId] = undefined; -/******/ } -/******/ }; -/******/ var timeout = setTimeout(function(){ -/******/ onScriptComplete({ type: 'timeout', target: script }); -/******/ }, 120000); -/******/ script.onerror = script.onload = onScriptComplete; -/******/ document.head.appendChild(script); -/******/ } -/******/ } -/******/ return Promise.all(promises); -/******/ }; -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // on error function for async loading -/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; }; -/******/ -/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || []; -/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray); -/******/ jsonpArray.push = webpackJsonpCallback; -/******/ jsonpArray = jsonpArray.slice(); -/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]); -/******/ var parentJsonpFunction = oldJsonpFunction; -/******/ -/******/ -/******/ // run deferred modules from other chunks -/******/ checkDeferredModules(); -/******/ }) -/************************************************************************/ -/******/ ([]); -//# sourceMappingURL=runtime-es2015.js.map \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/runtime-es2015.js.map b/target/catalina-base/webapps/DAAExample/runtime-es2015.js.map deleted file mode 100644 index 7a5b7c565ba40cf0aa7615a6dee40e679c8dea68..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/runtime-es2015.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack/bootstrap"],"names":[],"mappings":";QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;QACA,yCAAyC,oHAAoH;QAC7J;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;;;QAGA;;QAEA;QACA,iCAAiC;;QAEjC;QACA;QACA;QACA,KAAK;QACL;QACA;QACA;QACA,MAAM;QACN;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,wBAAwB,kCAAkC;QAC1D,MAAM;QACN;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA,0CAA0C,oBAAoB,WAAW;;QAEzE;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA","file":"runtime-es2015.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"runtime\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"modules-people-people-module\":\"modules-people-people-module\",\"modules-pets-pets-module\":\"modules-pets-pets-module\"}[chunkId]||chunkId) + \"-es2015.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/runtime-es5.js b/target/catalina-base/webapps/DAAExample/runtime-es5.js deleted file mode 100644 index e4265b3d5a7382a429704169fd33d749938f1695..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/runtime-es5.js +++ /dev/null @@ -1,224 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // install a JSONP callback for chunk loading -/******/ function webpackJsonpCallback(data) { -/******/ var chunkIds = data[0]; -/******/ var moreModules = data[1]; -/******/ var executeModules = data[2]; -/******/ -/******/ // add "moreModules" to the modules object, -/******/ // then flag all "chunkIds" as loaded and fire callback -/******/ var moduleId, chunkId, i = 0, resolves = []; -/******/ for(;i < chunkIds.length; i++) { -/******/ chunkId = chunkIds[i]; -/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) { -/******/ resolves.push(installedChunks[chunkId][0]); -/******/ } -/******/ installedChunks[chunkId] = 0; -/******/ } -/******/ for(moduleId in moreModules) { -/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { -/******/ modules[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if(parentJsonpFunction) parentJsonpFunction(data); -/******/ -/******/ while(resolves.length) { -/******/ resolves.shift()(); -/******/ } -/******/ -/******/ // add entry modules from loaded chunk to deferred list -/******/ deferredModules.push.apply(deferredModules, executeModules || []); -/******/ -/******/ // run deferred modules when all chunks ready -/******/ return checkDeferredModules(); -/******/ }; -/******/ function checkDeferredModules() { -/******/ var result; -/******/ for(var i = 0; i < deferredModules.length; i++) { -/******/ var deferredModule = deferredModules[i]; -/******/ var fulfilled = true; -/******/ for(var j = 1; j < deferredModule.length; j++) { -/******/ var depId = deferredModule[j]; -/******/ if(installedChunks[depId] !== 0) fulfilled = false; -/******/ } -/******/ if(fulfilled) { -/******/ deferredModules.splice(i--, 1); -/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]); -/******/ } -/******/ } -/******/ -/******/ return result; -/******/ } -/******/ -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // object to store loaded and loading chunks -/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched -/******/ // Promise = chunk loading, 0 = chunk loaded -/******/ var installedChunks = { -/******/ "runtime": 0 -/******/ }; -/******/ -/******/ var deferredModules = []; -/******/ -/******/ // script path function -/******/ function jsonpScriptSrc(chunkId) { -/******/ return __webpack_require__.p + "" + ({"modules-people-people-module":"modules-people-people-module","modules-pets-pets-module":"modules-pets-pets-module"}[chunkId]||chunkId) + "-es5.js" -/******/ } -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ // This file contains only the entry chunk. -/******/ // The chunk loading function for additional chunks -/******/ __webpack_require__.e = function requireEnsure(chunkId) { -/******/ var promises = []; -/******/ -/******/ -/******/ // JSONP chunk loading for javascript -/******/ -/******/ var installedChunkData = installedChunks[chunkId]; -/******/ if(installedChunkData !== 0) { // 0 means "already installed". -/******/ -/******/ // a Promise means "currently loading". -/******/ if(installedChunkData) { -/******/ promises.push(installedChunkData[2]); -/******/ } else { -/******/ // setup Promise in chunk cache -/******/ var promise = new Promise(function(resolve, reject) { -/******/ installedChunkData = installedChunks[chunkId] = [resolve, reject]; -/******/ }); -/******/ promises.push(installedChunkData[2] = promise); -/******/ -/******/ // start chunk loading -/******/ var script = document.createElement('script'); -/******/ var onScriptComplete; -/******/ -/******/ script.charset = 'utf-8'; -/******/ script.timeout = 120; -/******/ if (__webpack_require__.nc) { -/******/ script.setAttribute("nonce", __webpack_require__.nc); -/******/ } -/******/ script.src = jsonpScriptSrc(chunkId); -/******/ -/******/ // create error before stack unwound to get useful stacktrace later -/******/ var error = new Error(); -/******/ onScriptComplete = function (event) { -/******/ // avoid mem leaks in IE. -/******/ script.onerror = script.onload = null; -/******/ clearTimeout(timeout); -/******/ var chunk = installedChunks[chunkId]; -/******/ if(chunk !== 0) { -/******/ if(chunk) { -/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type); -/******/ var realSrc = event && event.target && event.target.src; -/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')'; -/******/ error.name = 'ChunkLoadError'; -/******/ error.type = errorType; -/******/ error.request = realSrc; -/******/ chunk[1](error); -/******/ } -/******/ installedChunks[chunkId] = undefined; -/******/ } -/******/ }; -/******/ var timeout = setTimeout(function(){ -/******/ onScriptComplete({ type: 'timeout', target: script }); -/******/ }, 120000); -/******/ script.onerror = script.onload = onScriptComplete; -/******/ document.head.appendChild(script); -/******/ } -/******/ } -/******/ return Promise.all(promises); -/******/ }; -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // on error function for async loading -/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; }; -/******/ -/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || []; -/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray); -/******/ jsonpArray.push = webpackJsonpCallback; -/******/ jsonpArray = jsonpArray.slice(); -/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]); -/******/ var parentJsonpFunction = oldJsonpFunction; -/******/ -/******/ -/******/ // run deferred modules from other chunks -/******/ checkDeferredModules(); -/******/ }) -/************************************************************************/ -/******/ ([]); -//# sourceMappingURL=runtime-es5.js.map \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/runtime-es5.js.map b/target/catalina-base/webapps/DAAExample/runtime-es5.js.map deleted file mode 100644 index 81061d280554a9a0d8dec09e6ac1b94e5abe4dc7..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/runtime-es5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack/bootstrap"],"names":[],"mappings":";QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;QACA,yCAAyC,oHAAoH;QAC7J;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;;;QAGA;;QAEA;QACA,iCAAiC;;QAEjC;QACA;QACA;QACA,KAAK;QACL;QACA;QACA;QACA,MAAM;QACN;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,wBAAwB,kCAAkC;QAC1D,MAAM;QACN;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA,0CAA0C,oBAAoB,WAAW;;QAEzE;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA","file":"runtime-es5.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"runtime\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"modules-people-people-module\":\"modules-people-people-module\",\"modules-pets-pets-module\":\"modules-pets-pets-module\"}[chunkId]||chunkId) + \"-es2015.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":"webpack:///"} \ No newline at end of file diff --git a/target/catalina-base/webapps/DAAExample/styles-es2015.js b/target/catalina-base/webapps/DAAExample/styles-es2015.js deleted file mode 100644 index 33ed3a81aaa00e101c70ea22fc55a340ada7f817..0000000000000000000000000000000000000000 --- a/target/catalina-base/webapps/DAAExample/styles-es2015.js +++ /dev/null @@ -1,386 +0,0 @@ -(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["styles"],{ - -/***/ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/bootstrap/dist/css/bootstrap.css": -/*!************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!./node_modules/postcss-loader/src??embedded!./node_modules/bootstrap/dist/css/bootstrap.css ***! - \************************************************************************************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = [[module.i, "/*!\n * Bootstrap v4.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n --blue: #007bff;\n --indigo: #6610f2;\n --purple: #6f42c1;\n --pink: #e83e8c;\n --red: #dc3545;\n --orange: #fd7e14;\n --yellow: #ffc107;\n --green: #28a745;\n --teal: #20c997;\n --cyan: #17a2b8;\n --white: #fff;\n --gray: #6c757d;\n --gray-dark: #343a40;\n --primary: #007bff;\n --secondary: #6c757d;\n --success: #28a745;\n --info: #17a2b8;\n --warning: #ffc107;\n --danger: #dc3545;\n --light: #f8f9fa;\n --dark: #343a40;\n --breakpoint-xs: 0;\n --breakpoint-sm: 576px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 992px;\n --breakpoint-xl: 1200px;\n --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none;\n}\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\ndt {\n font-weight: 700;\n}\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\nblockquote {\n margin: 0 0 1rem;\n}\nb,\nstrong {\n font-weight: bolder;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\nsub {\n bottom: -.25em;\n}\nsup {\n top: -.5em;\n}\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n}\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\na:not([href]) {\n color: inherit;\n text-decoration: none;\n}\na:not([href]):hover {\n color: inherit;\n text-decoration: none;\n}\npre,\ncode,\nkbd,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n font-size: 1em;\n}\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\nfigure {\n margin: 0 0 1rem;\n}\nimg {\n vertical-align: middle;\n border-style: none;\n}\nsvg {\n overflow: hidden;\n vertical-align: middle;\n}\ntable {\n border-collapse: collapse;\n}\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\nth {\n text-align: inherit;\n}\nlabel {\n display: inline-block;\n margin-bottom: 0.5rem;\n}\nbutton {\n border-radius: 0;\n}\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\nbutton,\ninput {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nselect {\n word-wrap: normal;\n}\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=\"button\"]:not(:disabled),\n[type=\"reset\"]:not(:disabled),\n[type=\"submit\"]:not(:disabled) {\n cursor: pointer;\n}\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\ntextarea {\n overflow: auto;\n resize: vertical;\n}\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\nprogress {\n vertical-align: baseline;\n}\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\noutput {\n display: inline-block;\n}\nsummary {\n display: list-item;\n cursor: pointer;\n}\ntemplate {\n display: none;\n}\n[hidden] {\n display: none !important;\n}\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n}\nh1, .h1 {\n font-size: 2.5rem;\n}\nh2, .h2 {\n font-size: 2rem;\n}\nh3, .h3 {\n font-size: 1.75rem;\n}\nh4, .h4 {\n font-size: 1.5rem;\n}\nh5, .h5 {\n font-size: 1.25rem;\n}\nh6, .h6 {\n font-size: 1rem;\n}\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\nsmall,\n.small {\n font-size: 80%;\n font-weight: 400;\n}\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n.list-inline-item {\n display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #6c757d;\n}\n.blockquote-footer::before {\n content: \"\\2014\\00A0\";\n}\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #dee2e6;\n border-radius: 0.25rem;\n max-width: 100%;\n height: auto;\n}\n.figure {\n display: inline-block;\n}\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n.figure-caption {\n font-size: 90%;\n color: #6c757d;\n}\ncode {\n font-size: 87.5%;\n color: #e83e8c;\n word-wrap: break-word;\n}\na > code {\n color: inherit;\n}\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 87.5%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n}\npre {\n display: block;\n font-size: 87.5%;\n color: #212529;\n}\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n.container-fluid, .container-sm, .container-md, .container-lg, .container-xl {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n@media (min-width: 576px) {\n .container, .container-sm {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container, .container-sm, .container-md {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container, .container-sm, .container-md, .container-lg {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container, .container-sm, .container-md, .container-lg, .container-xl {\n max-width: 1140px;\n }\n}\n.row {\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n.col {\n flex-basis: 0;\n -webkit-box-flex: 1;\n flex-grow: 1;\n max-width: 100%;\n}\n.row-cols-1 > * {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n}\n.row-cols-2 > * {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n}\n.row-cols-3 > * {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n.row-cols-4 > * {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n}\n.row-cols-5 > * {\n -webkit-box-flex: 0;\n flex: 0 0 20%;\n max-width: 20%;\n}\n.row-cols-6 > * {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n.col-auto {\n -webkit-box-flex: 0;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n}\n.col-1 {\n -webkit-box-flex: 0;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n.col-2 {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n.col-3 {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n}\n.col-4 {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n.col-5 {\n -webkit-box-flex: 0;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n.col-6 {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n}\n.col-7 {\n -webkit-box-flex: 0;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n.col-8 {\n -webkit-box-flex: 0;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n.col-9 {\n -webkit-box-flex: 0;\n flex: 0 0 75%;\n max-width: 75%;\n}\n.col-10 {\n -webkit-box-flex: 0;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n.col-11 {\n -webkit-box-flex: 0;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n.col-12 {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n}\n.order-first {\n -webkit-box-ordinal-group: 0;\n order: -1;\n}\n.order-last {\n -webkit-box-ordinal-group: 14;\n order: 13;\n}\n.order-0 {\n -webkit-box-ordinal-group: 1;\n order: 0;\n}\n.order-1 {\n -webkit-box-ordinal-group: 2;\n order: 1;\n}\n.order-2 {\n -webkit-box-ordinal-group: 3;\n order: 2;\n}\n.order-3 {\n -webkit-box-ordinal-group: 4;\n order: 3;\n}\n.order-4 {\n -webkit-box-ordinal-group: 5;\n order: 4;\n}\n.order-5 {\n -webkit-box-ordinal-group: 6;\n order: 5;\n}\n.order-6 {\n -webkit-box-ordinal-group: 7;\n order: 6;\n}\n.order-7 {\n -webkit-box-ordinal-group: 8;\n order: 7;\n}\n.order-8 {\n -webkit-box-ordinal-group: 9;\n order: 8;\n}\n.order-9 {\n -webkit-box-ordinal-group: 10;\n order: 9;\n}\n.order-10 {\n -webkit-box-ordinal-group: 11;\n order: 10;\n}\n.order-11 {\n -webkit-box-ordinal-group: 12;\n order: 11;\n}\n.order-12 {\n -webkit-box-ordinal-group: 13;\n order: 12;\n}\n.offset-1 {\n margin-left: 8.333333%;\n}\n.offset-2 {\n margin-left: 16.666667%;\n}\n.offset-3 {\n margin-left: 25%;\n}\n.offset-4 {\n margin-left: 33.333333%;\n}\n.offset-5 {\n margin-left: 41.666667%;\n}\n.offset-6 {\n margin-left: 50%;\n}\n.offset-7 {\n margin-left: 58.333333%;\n}\n.offset-8 {\n margin-left: 66.666667%;\n}\n.offset-9 {\n margin-left: 75%;\n}\n.offset-10 {\n margin-left: 83.333333%;\n}\n.offset-11 {\n margin-left: 91.666667%;\n}\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n -webkit-box-flex: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-sm-1 > * {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-sm-2 > * {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-sm-3 > * {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-sm-4 > * {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-sm-5 > * {\n -webkit-box-flex: 0;\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-sm-6 > * {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-auto {\n -webkit-box-flex: 0;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-sm-1 {\n -webkit-box-flex: 0;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n -webkit-box-flex: 0;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n -webkit-box-flex: 0;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n -webkit-box-flex: 0;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n -webkit-box-flex: 0;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n -webkit-box-flex: 0;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n -webkit-box-flex: 0;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n -webkit-box-ordinal-group: 0;\n order: -1;\n }\n .order-sm-last {\n -webkit-box-ordinal-group: 14;\n order: 13;\n }\n .order-sm-0 {\n -webkit-box-ordinal-group: 1;\n order: 0;\n }\n .order-sm-1 {\n -webkit-box-ordinal-group: 2;\n order: 1;\n }\n .order-sm-2 {\n -webkit-box-ordinal-group: 3;\n order: 2;\n }\n .order-sm-3 {\n -webkit-box-ordinal-group: 4;\n order: 3;\n }\n .order-sm-4 {\n -webkit-box-ordinal-group: 5;\n order: 4;\n }\n .order-sm-5 {\n -webkit-box-ordinal-group: 6;\n order: 5;\n }\n .order-sm-6 {\n -webkit-box-ordinal-group: 7;\n order: 6;\n }\n .order-sm-7 {\n -webkit-box-ordinal-group: 8;\n order: 7;\n }\n .order-sm-8 {\n -webkit-box-ordinal-group: 9;\n order: 8;\n }\n .order-sm-9 {\n -webkit-box-ordinal-group: 10;\n order: 9;\n }\n .order-sm-10 {\n -webkit-box-ordinal-group: 11;\n order: 10;\n }\n .order-sm-11 {\n -webkit-box-ordinal-group: 12;\n order: 11;\n }\n .order-sm-12 {\n -webkit-box-ordinal-group: 13;\n order: 12;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n -webkit-box-flex: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-md-1 > * {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-md-2 > * {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-md-3 > * {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-md-4 > * {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-md-5 > * {\n -webkit-box-flex: 0;\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-md-6 > * {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-auto {\n -webkit-box-flex: 0;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-md-1 {\n -webkit-box-flex: 0;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n -webkit-box-flex: 0;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n -webkit-box-flex: 0;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n -webkit-box-flex: 0;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n -webkit-box-flex: 0;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n -webkit-box-flex: 0;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n -webkit-box-flex: 0;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n -webkit-box-ordinal-group: 0;\n order: -1;\n }\n .order-md-last {\n -webkit-box-ordinal-group: 14;\n order: 13;\n }\n .order-md-0 {\n -webkit-box-ordinal-group: 1;\n order: 0;\n }\n .order-md-1 {\n -webkit-box-ordinal-group: 2;\n order: 1;\n }\n .order-md-2 {\n -webkit-box-ordinal-group: 3;\n order: 2;\n }\n .order-md-3 {\n -webkit-box-ordinal-group: 4;\n order: 3;\n }\n .order-md-4 {\n -webkit-box-ordinal-group: 5;\n order: 4;\n }\n .order-md-5 {\n -webkit-box-ordinal-group: 6;\n order: 5;\n }\n .order-md-6 {\n -webkit-box-ordinal-group: 7;\n order: 6;\n }\n .order-md-7 {\n -webkit-box-ordinal-group: 8;\n order: 7;\n }\n .order-md-8 {\n -webkit-box-ordinal-group: 9;\n order: 8;\n }\n .order-md-9 {\n -webkit-box-ordinal-group: 10;\n order: 9;\n }\n .order-md-10 {\n -webkit-box-ordinal-group: 11;\n order: 10;\n }\n .order-md-11 {\n -webkit-box-ordinal-group: 12;\n order: 11;\n }\n .order-md-12 {\n -webkit-box-ordinal-group: 13;\n order: 12;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n -webkit-box-flex: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-lg-1 > * {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-lg-2 > * {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-lg-3 > * {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-lg-4 > * {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-lg-5 > * {\n -webkit-box-flex: 0;\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-lg-6 > * {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-auto {\n -webkit-box-flex: 0;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-lg-1 {\n -webkit-box-flex: 0;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n -webkit-box-flex: 0;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n -webkit-box-flex: 0;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n -webkit-box-flex: 0;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n -webkit-box-flex: 0;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n -webkit-box-flex: 0;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n -webkit-box-flex: 0;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n -webkit-box-ordinal-group: 0;\n order: -1;\n }\n .order-lg-last {\n -webkit-box-ordinal-group: 14;\n order: 13;\n }\n .order-lg-0 {\n -webkit-box-ordinal-group: 1;\n order: 0;\n }\n .order-lg-1 {\n -webkit-box-ordinal-group: 2;\n order: 1;\n }\n .order-lg-2 {\n -webkit-box-ordinal-group: 3;\n order: 2;\n }\n .order-lg-3 {\n -webkit-box-ordinal-group: 4;\n order: 3;\n }\n .order-lg-4 {\n -webkit-box-ordinal-group: 5;\n order: 4;\n }\n .order-lg-5 {\n -webkit-box-ordinal-group: 6;\n order: 5;\n }\n .order-lg-6 {\n -webkit-box-ordinal-group: 7;\n order: 6;\n }\n .order-lg-7 {\n -webkit-box-ordinal-group: 8;\n order: 7;\n }\n .order-lg-8 {\n -webkit-box-ordinal-group: 9;\n order: 8;\n }\n .order-lg-9 {\n -webkit-box-ordinal-group: 10;\n order: 9;\n }\n .order-lg-10 {\n -webkit-box-ordinal-group: 11;\n order: 10;\n }\n .order-lg-11 {\n -webkit-box-ordinal-group: 12;\n order: 11;\n }\n .order-lg-12 {\n -webkit-box-ordinal-group: 13;\n order: 12;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n -webkit-box-flex: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .row-cols-xl-1 > * {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .row-cols-xl-2 > * {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .row-cols-xl-3 > * {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .row-cols-xl-4 > * {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .row-cols-xl-5 > * {\n -webkit-box-flex: 0;\n flex: 0 0 20%;\n max-width: 20%;\n }\n .row-cols-xl-6 > * {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-auto {\n -webkit-box-flex: 0;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-xl-1 {\n -webkit-box-flex: 0;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n -webkit-box-flex: 0;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n -webkit-box-flex: 0;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n -webkit-box-flex: 0;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n -webkit-box-flex: 0;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n -webkit-box-flex: 0;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n -webkit-box-flex: 0;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n -webkit-box-flex: 0;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n -webkit-box-flex: 0;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n -webkit-box-flex: 0;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n -webkit-box-flex: 0;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n -webkit-box-flex: 0;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n -webkit-box-ordinal-group: 0;\n order: -1;\n }\n .order-xl-last {\n -webkit-box-ordinal-group: 14;\n order: 13;\n }\n .order-xl-0 {\n -webkit-box-ordinal-group: 1;\n order: 0;\n }\n .order-xl-1 {\n -webkit-box-ordinal-group: 2;\n order: 1;\n }\n .order-xl-2 {\n -webkit-box-ordinal-group: 3;\n order: 2;\n }\n .order-xl-3 {\n -webkit-box-ordinal-group: 4;\n order: 3;\n }\n .order-xl-4 {\n -webkit-box-ordinal-group: 5;\n order: 4;\n }\n .order-xl-5 {\n -webkit-box-ordinal-group: 6;\n order: 5;\n }\n .order-xl-6 {\n -webkit-box-ordinal-group: 7;\n order: 6;\n }\n .order-xl-7 {\n -webkit-box-ordinal-group: 8;\n order: 7;\n }\n .order-xl-8 {\n -webkit-box-ordinal-group: 9;\n order: 8;\n }\n .order-xl-9 {\n -webkit-box-ordinal-group: 10;\n order: 9;\n }\n .order-xl-10 {\n -webkit-box-ordinal-group: 11;\n order: 10;\n }\n .order-xl-11 {\n -webkit-box-ordinal-group: 12;\n order: 11;\n }\n .order-xl-12 {\n -webkit-box-ordinal-group: 13;\n order: 12;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n.table {\n width: 100%;\n margin-bottom: 1rem;\n color: #212529;\n}\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #dee2e6;\n}\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #dee2e6;\n}\n.table tbody + tbody {\n border-top: 2px solid #dee2e6;\n}\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n.table-bordered {\n border: 1px solid #dee2e6;\n}\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #dee2e6;\n}\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n.table-borderless th,\n.table-borderless td,\n.table-borderless thead th,\n.table-borderless tbody + tbody {\n border: 0;\n}\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n.table-hover tbody tr:hover {\n color: #212529;\n background-color: rgba(0, 0, 0, 0.075);\n}\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff;\n}\n.table-primary th,\n.table-primary td,\n.table-primary thead th,\n.table-primary tbody + tbody {\n border-color: #7abaff;\n}\n.table-hover .table-primary:hover {\n background-color: #9fcdff;\n}\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n}\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #d6d8db;\n}\n.table-secondary th,\n.table-secondary td,\n.table-secondary thead th,\n.table-secondary tbody + tbody {\n border-color: #b3b7bb;\n}\n.table-hover .table-secondary:hover {\n background-color: #c8cbcf;\n}\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #c8cbcf;\n}\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb;\n}\n.table-success th,\n.table-success td,\n.table-success thead th,\n.table-success tbody + tbody {\n border-color: #8fd19e;\n}\n.table-hover .table-success:hover {\n background-color: #b1dfbb;\n}\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n}\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb;\n}\n.table-info th,\n.table-info td,\n.table-info thead th,\n.table-info tbody + tbody {\n border-color: #86cfda;\n}\n.table-hover .table-info:hover {\n background-color: #abdde5;\n}\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #abdde5;\n}\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba;\n}\n.table-warning th,\n.table-warning td,\n.table-warning thead th,\n.table-warning tbody + tbody {\n border-color: #ffdf7e;\n}\n.table-hover .table-warning:hover {\n background-color: #ffe8a1;\n}\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n}\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb;\n}\n.table-danger th,\n.table-danger td,\n.table-danger thead th,\n.table-danger tbody + tbody {\n border-color: #ed969e;\n}\n.table-hover .table-danger:hover {\n background-color: #f1b0b7;\n}\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n}\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe;\n}\n.table-light th,\n.table-light td,\n.table-light thead th,\n.table-light tbody + tbody {\n border-color: #fbfcfc;\n}\n.table-hover .table-light:hover {\n background-color: #ececf6;\n}\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #ececf6;\n}\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca;\n}\n.table-dark th,\n.table-dark td,\n.table-dark thead th,\n.table-dark tbody + tbody {\n border-color: #95999c;\n}\n.table-hover .table-dark:hover {\n background-color: #b9bbbe;\n}\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n}\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n.table .thead-dark th {\n color: #fff;\n background-color: #343a40;\n border-color: #454d55;\n}\n.table .thead-light th {\n color: #495057;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n.table-dark {\n color: #fff;\n background-color: #343a40;\n}\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n border-color: #454d55;\n}\n.table-dark.table-bordered {\n border: 0;\n}\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n.table-dark.table-hover tbody tr:hover {\n color: #fff;\n background-color: rgba(255, 255, 255, 0.075);\n}\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-sm > .table-bordered {\n border: 0;\n }\n}\n@media (max-width: 767.98px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-md > .table-bordered {\n border: 0;\n }\n}\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-lg > .table-bordered {\n border: 0;\n }\n}\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-xl > .table-bordered {\n border: 0;\n }\n}\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n.table-responsive > .table-bordered {\n border: 0;\n}\n.form-control {\n display: block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n -webkit-transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n -webkit-transition: none;\n transition: none;\n }\n}\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n.form-control:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 #495057;\n}\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.form-control::-webkit-input-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n.form-control::-moz-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n.form-control::-ms-input-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n.form-control::placeholder {\n color: #6c757d;\n opacity: 1;\n}\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n.col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n.col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.25rem;\n line-height: 1.5;\n}\n.col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.875rem;\n line-height: 1.5;\n}\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding: 0.375rem 0;\n margin-bottom: 0;\n font-size: 1rem;\n line-height: 1.5;\n color: #212529;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0;\n}\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n}\n.form-control-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n.form-control-lg {\n height: calc(1.5em + 1rem + 2px);\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\nselect.form-control[size], select.form-control[multiple] {\n height: auto;\n}\ntextarea.form-control {\n height: auto;\n}\n.form-group {\n margin-bottom: 1rem;\n}\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n.form-row {\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n}\n.form-check {\n position: relative;\n display: block;\n padding-left: 1.25rem;\n}\n.form-check-input {\n position: absolute;\n margin-top: 0.3rem;\n margin-left: -1.25rem;\n}\n.form-check-input[disabled] ~ .form-check-label,\n.form-check-input:disabled ~ .form-check-label {\n color: #6c757d;\n}\n.form-check-label {\n margin-bottom: 0;\n}\n.form-check-inline {\n display: -webkit-inline-box;\n display: inline-flex;\n -webkit-box-align: center;\n align-items: center;\n padding-left: 0;\n margin-right: 0.75rem;\n}\n.form-check-inline .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: 0.3125rem;\n margin-left: 0;\n}\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #28a745;\n}\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(40, 167, 69, 0.9);\n border-radius: 0.25rem;\n}\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n display: block;\n}\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: #28a745;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n.was-validated .custom-select:valid, .custom-select.is-valid {\n border-color: #28a745;\n padding-right: calc(0.75em + 2.3125rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: #28a745;\n}\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n color: #28a745;\n}\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n border-color: #28a745;\n}\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n border-color: #34ce57;\n background-color: #34ce57;\n}\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #28a745;\n}\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n border-color: #28a745;\n}\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #dc3545;\n}\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.9);\n border-radius: 0.25rem;\n}\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: #dc3545;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n.was-validated .custom-select:invalid, .custom-select.is-invalid {\n border-color: #dc3545;\n padding-right: calc(0.75em + 2.3125rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: #dc3545;\n}\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n color: #dc3545;\n}\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n border-color: #e4606d;\n background-color: #e4606d;\n}\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n border-color: #dc3545;\n}\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n.form-inline {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row wrap;\n -webkit-box-align: center;\n align-items: center;\n}\n.form-inline .form-check {\n width: 100%;\n}\n@media (min-width: 576px) {\n .form-inline label {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 0;\n flex: 0 0 auto;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row wrap;\n -webkit-box-align: center;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group,\n .form-inline .custom-select {\n width: auto;\n }\n .form-inline .form-check {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n width: auto;\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n flex-shrink: 0;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n }\n .form-inline .custom-control-label {\n margin-bottom: 0;\n }\n}\n.btn {\n display: inline-block;\n font-weight: 400;\n color: #212529;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: transparent;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .btn {\n -webkit-transition: none;\n transition: none;\n }\n}\n.btn:hover {\n color: #212529;\n text-decoration: none;\n}\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n.btn-primary:focus, .btn-primary.focus {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #0062cc;\n border-color: #005cbf;\n}\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n.btn-secondary:focus, .btn-secondary.focus {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n color: #fff;\n background-color: #545b62;\n border-color: #4e555b;\n}\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n.btn-success:focus, .btn-success.focus {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #1e7e34;\n border-color: #1c7430;\n}\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n.btn-info:focus, .btn-info.focus {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #117a8b;\n border-color: #10707f;\n}\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n.btn-warning:focus, .btn-warning.focus {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n color: #212529;\n background-color: #d39e00;\n border-color: #c69500;\n}\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n.btn-danger:focus, .btn-danger.focus {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #bd2130;\n border-color: #b21f2d;\n}\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n.btn-light:focus, .btn-light.focus {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n color: #212529;\n background-color: #dae0e5;\n border-color: #d3d9df;\n}\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n.btn-dark:focus, .btn-dark.focus {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #1d2124;\n border-color: #171a1d;\n}\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n.btn-outline-primary {\n color: #007bff;\n border-color: #007bff;\n}\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n}\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n.btn-outline-secondary {\n color: #6c757d;\n border-color: #6c757d;\n}\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #6c757d;\n background-color: transparent;\n}\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n.btn-outline-success {\n color: #28a745;\n border-color: #28a745;\n}\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n}\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n.btn-outline-info {\n color: #17a2b8;\n border-color: #17a2b8;\n}\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n}\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n.btn-outline-warning {\n color: #ffc107;\n border-color: #ffc107;\n}\n.btn-outline-warning:hover {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n}\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n.btn-outline-danger {\n color: #dc3545;\n border-color: #dc3545;\n}\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n}\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n.btn-outline-light {\n color: #f8f9fa;\n border-color: #f8f9fa;\n}\n.btn-outline-light:hover {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n}\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n.btn-outline-dark {\n color: #343a40;\n border-color: #343a40;\n}\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n}\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n.btn-link {\n font-weight: 400;\n color: #007bff;\n text-decoration: none;\n}\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n box-shadow: none;\n}\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n pointer-events: none;\n}\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n -webkit-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n .fade {\n -webkit-transition: none;\n transition: none;\n }\n}\n.fade:not(.show) {\n opacity: 0;\n}\n.collapse:not(.show) {\n display: none;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition: height 0.35s ease;\n transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .collapsing {\n -webkit-transition: none;\n transition: none;\n }\n}\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n position: relative;\n}\n.dropdown-toggle {\n white-space: nowrap;\n}\n.dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n@media (min-width: 576px) {\n .dropdown-menu-sm-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-sm-right {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 768px) {\n .dropdown-menu-md-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-md-right {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 992px) {\n .dropdown-menu-lg-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-lg-right {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 1200px) {\n .dropdown-menu-xl-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xl-right {\n right: 0;\n left: auto;\n }\n}\n.dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropright .dropdown-menu {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: 0.125rem;\n}\n.dropright .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n.dropright .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropright .dropdown-toggle::after {\n vertical-align: 0;\n}\n.dropleft .dropdown-menu {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: 0.125rem;\n}\n.dropleft .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n.dropleft .dropdown-toggle::after {\n display: none;\n}\n.dropleft .dropdown-toggle::before {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n.dropleft .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropleft .dropdown-toggle::before {\n vertical-align: 0;\n}\n.dropdown-menu[x-placement^=\"top\"], .dropdown-menu[x-placement^=\"right\"], .dropdown-menu[x-placement^=\"bottom\"], .dropdown-menu[x-placement^=\"left\"] {\n right: auto;\n bottom: auto;\n}\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n}\n.dropdown-item:hover, .dropdown-item:focus {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: transparent;\n}\n.dropdown-menu.show {\n display: block;\n}\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #6c757d;\n white-space: nowrap;\n}\n.dropdown-item-text {\n display: block;\n padding: 0.25rem 1.5rem;\n color: #212529;\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: -webkit-inline-box;\n display: inline-flex;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 1;\n}\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n.btn-toolbar {\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n -webkit-box-pack: start;\n justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n width: auto;\n}\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n margin-left: -1px;\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n.dropdown-toggle-split::after,\n.dropup .dropdown-toggle-split::after,\n.dropright .dropdown-toggle-split::after {\n margin-left: 0;\n}\n.dropleft .dropdown-toggle-split::before {\n margin-right: 0;\n}\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n.btn-group-vertical {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n -webkit-box-align: start;\n align-items: flex-start;\n -webkit-box-pack: center;\n justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: -1px;\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n margin-bottom: 0;\n}\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n -webkit-box-align: stretch;\n align-items: stretch;\n width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-control-plaintext,\n.input-group > .custom-select,\n.input-group > .custom-file {\n position: relative;\n -webkit-box-flex: 1;\n flex: 1 1 0%;\n min-width: 0;\n margin-bottom: 0;\n}\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .form-control-plaintext + .form-control,\n.input-group > .form-control-plaintext + .custom-select,\n.input-group > .form-control-plaintext + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n margin-left: -1px;\n}\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {\n z-index: 3;\n}\n.input-group > .custom-file .custom-file-input:focus {\n z-index: 4;\n}\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group > .custom-file {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::after {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > .custom-file:not(:first-child) .custom-file-label {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group-prepend,\n.input-group-append {\n display: -webkit-box;\n display: flex;\n}\n.input-group-prepend .btn,\n.input-group-append .btn {\n position: relative;\n z-index: 2;\n}\n.input-group-prepend .btn:focus,\n.input-group-append .btn:focus {\n z-index: 3;\n}\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n margin-left: -1px;\n}\n.input-group-prepend {\n margin-right: -1px;\n}\n.input-group-append {\n margin-left: -1px;\n}\n.input-group-text {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n white-space: nowrap;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group-lg > .form-control:not(textarea),\n.input-group-lg > .custom-select {\n height: calc(1.5em + 1rem + 2px);\n}\n.input-group-lg > .form-control,\n.input-group-lg > .custom-select,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n.input-group-sm > .form-control:not(textarea),\n.input-group-sm > .custom-select {\n height: calc(1.5em + 0.5rem + 2px);\n}\n.input-group-sm > .form-control,\n.input-group-sm > .custom-select,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n.input-group-lg > .custom-select,\n.input-group-sm > .custom-select {\n padding-right: 1.75rem;\n}\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.custom-control {\n position: relative;\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n}\n.custom-control-inline {\n display: -webkit-inline-box;\n display: inline-flex;\n margin-right: 1rem;\n}\n.custom-control-input {\n position: absolute;\n left: 0;\n z-index: -1;\n width: 1rem;\n height: 1.25rem;\n opacity: 0;\n}\n.custom-control-input:checked ~ .custom-control-label::before {\n color: #fff;\n border-color: #007bff;\n background-color: #007bff;\n}\n.custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-control-input:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #80bdff;\n}\n.custom-control-input:not(:disabled):active ~ .custom-control-label::before {\n color: #fff;\n background-color: #b3d7ff;\n border-color: #b3d7ff;\n}\n.custom-control-input[disabled] ~ .custom-control-label, .custom-control-input:disabled ~ .custom-control-label {\n color: #6c757d;\n}\n.custom-control-input[disabled] ~ .custom-control-label::before, .custom-control-input:disabled ~ .custom-control-label::before {\n background-color: #e9ecef;\n}\n.custom-control-label {\n position: relative;\n margin-bottom: 0;\n vertical-align: top;\n}\n.custom-control-label::before {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n content: \"\";\n background-color: #fff;\n border: #adb5bd solid 1px;\n}\n.custom-control-label::after {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n content: \"\";\n background: no-repeat 50% / 50% 50%;\n}\n.custom-checkbox .custom-control-label::before {\n border-radius: 0.25rem;\n}\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e\");\n}\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n border-color: #007bff;\n background-color: #007bff;\n}\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e\");\n}\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n.custom-radio .custom-control-label::before {\n border-radius: 50%;\n}\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n.custom-switch {\n padding-left: 2.25rem;\n}\n.custom-switch .custom-control-label::before {\n left: -2.25rem;\n width: 1.75rem;\n pointer-events: all;\n border-radius: 0.5rem;\n}\n.custom-switch .custom-control-label::after {\n top: calc(0.25rem + 2px);\n left: calc(-2.25rem + 2px);\n width: calc(1rem - 4px);\n height: calc(1rem - 4px);\n background-color: #adb5bd;\n border-radius: 0.5rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;\n -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;\n transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .custom-switch .custom-control-label::after {\n -webkit-transition: none;\n transition: none;\n }\n}\n.custom-switch .custom-control-input:checked ~ .custom-control-label::after {\n background-color: #fff;\n -webkit-transform: translateX(0.75rem);\n transform: translateX(0.75rem);\n}\n.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n.custom-select {\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.custom-select:focus {\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none;\n}\n.custom-select:disabled {\n color: #6c757d;\n background-color: #e9ecef;\n}\n.custom-select::-ms-expand {\n display: none;\n}\n.custom-select:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 #495057;\n}\n.custom-select-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n font-size: 0.875rem;\n}\n.custom-select-lg {\n height: calc(1.5em + 1rem + 2px);\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n}\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin-bottom: 0;\n}\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin: 0;\n opacity: 0;\n}\n.custom-file-input:focus ~ .custom-file-label {\n border-color: #80bdff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-file-input[disabled] ~ .custom-file-label,\n.custom-file-input:disabled ~ .custom-file-label {\n background-color: #e9ecef;\n}\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n content: \"Browse\";\n}\n.custom-file-input ~ .custom-file-label[data-browse]::after {\n content: attr(data-browse);\n}\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n.custom-file-label::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: calc(1.5em + 0.75rem);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n content: \"Browse\";\n background-color: #e9ecef;\n border-left: inherit;\n border-radius: 0 0.25rem 0.25rem 0;\n}\n.custom-range {\n width: 100%;\n height: 1.4rem;\n padding: 0;\n background-color: transparent;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.custom-range:focus {\n outline: none;\n}\n.custom-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-range:focus::-ms-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.custom-range::-moz-focus-outer {\n border: 0;\n}\n.custom-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n -webkit-appearance: none;\n appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-webkit-slider-thumb {\n -webkit-transition: none;\n transition: none;\n }\n}\n.custom-range::-webkit-slider-thumb:active {\n background-color: #b3d7ff;\n}\n.custom-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n.custom-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n -moz-appearance: none;\n appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-moz-range-thumb {\n -webkit-transition: none;\n transition: none;\n }\n}\n.custom-range::-moz-range-thumb:active {\n background-color: #b3d7ff;\n}\n.custom-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n.custom-range::-ms-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: 0;\n margin-right: 0.2rem;\n margin-left: 0.2rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-ms-thumb {\n -webkit-transition: none;\n transition: none;\n }\n}\n.custom-range::-ms-thumb:active {\n background-color: #b3d7ff;\n}\n.custom-range::-ms-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: transparent;\n border-color: transparent;\n border-width: 0.5rem;\n}\n.custom-range::-ms-fill-lower {\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n.custom-range::-ms-fill-upper {\n margin-right: 15px;\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n.custom-range:disabled::-webkit-slider-thumb {\n background-color: #adb5bd;\n}\n.custom-range:disabled::-webkit-slider-runnable-track {\n cursor: default;\n}\n.custom-range:disabled::-moz-range-thumb {\n background-color: #adb5bd;\n}\n.custom-range:disabled::-moz-range-track {\n cursor: default;\n}\n.custom-range:disabled::-ms-thumb {\n background-color: #adb5bd;\n}\n.custom-control-label::before,\n.custom-file-label,\n.custom-select {\n -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .custom-control-label::before,\n .custom-file-label,\n .custom-select {\n -webkit-transition: none;\n transition: none;\n }\n}\n.nav {\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n.nav-link:hover, .nav-link:focus {\n text-decoration: none;\n}\n.nav-link.disabled {\n color: #6c757d;\n pointer-events: none;\n cursor: default;\n}\n.nav-tabs {\n border-bottom: 1px solid #dee2e6;\n}\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n border-color: #e9ecef #e9ecef #dee2e6;\n}\n.nav-tabs .nav-link.disabled {\n color: #6c757d;\n background-color: transparent;\n border-color: transparent;\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #dee2e6 #dee2e6 #fff;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n.nav-fill .nav-item {\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n text-align: center;\n}\n.nav-justified .nav-item {\n flex-basis: 0;\n -webkit-box-flex: 1;\n flex-grow: 1;\n text-align: center;\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.navbar {\n position: relative;\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n.navbar .container,\n.navbar .container-fluid, .navbar .container-sm, .navbar .container-md, .navbar .container-lg, .navbar .container-xl {\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n justify-content: space-between;\n}\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n.navbar-brand:hover, .navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-nav {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.navbar-collapse {\n flex-basis: 100%;\n -webkit-box-flex: 1;\n flex-grow: 1;\n -webkit-box-align: center;\n align-items: center;\n}\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n.navbar-toggler:hover, .navbar-toggler:focus {\n text-decoration: none;\n}\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n@media (max-width: 575.98px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n@media (min-width: 576px) {\n .navbar-expand-sm {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: -webkit-box !important;\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n}\n@media (max-width: 767.98px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-expand-md {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: -webkit-box !important;\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n}\n@media (max-width: 991.98px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n@media (min-width: 992px) {\n .navbar-expand-lg {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: -webkit-box !important;\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n}\n@media (max-width: 1199.98px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {\n padding-right: 0;\n padding-left: 0;\n }\n}\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl {\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: -webkit-box !important;\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n}\n.navbar-expand {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n justify-content: flex-start;\n}\n.navbar-expand > .container,\n.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {\n padding-right: 0;\n padding-left: 0;\n}\n.navbar-expand .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n}\n.navbar-expand > .container,\n.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl {\n flex-wrap: nowrap;\n}\n.navbar-expand .navbar-collapse {\n display: -webkit-box !important;\n display: flex !important;\n flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n display: none;\n}\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n color: rgba(0, 0, 0, 0.7);\n}\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n.navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n.navbar-dark .navbar-brand {\n color: #fff;\n}\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n color: #fff;\n}\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: rgba(255, 255, 255, 0.75);\n}\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: #fff;\n}\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n.navbar-dark .navbar-text a {\n color: #fff;\n}\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n color: #fff;\n}\n.card {\n position: relative;\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n.card-body {\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n min-height: 1px;\n padding: 1.25rem;\n}\n.card-title {\n margin-bottom: 0.75rem;\n}\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n.card-text:last-child {\n margin-bottom: 0;\n}\n.card-link:hover {\n text-decoration: none;\n}\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n.card-img,\n.card-img-top,\n.card-img-bottom {\n flex-shrink: 0;\n width: 100%;\n}\n.card-img,\n.card-img-top {\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n.card-img,\n.card-img-bottom {\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n.card-deck .card {\n margin-bottom: 15px;\n}\n@media (min-width: 576px) {\n .card-deck {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n -webkit-box-flex: 1;\n flex: 1 0 0%;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}\n.card-group > .card {\n margin-bottom: 15px;\n}\n@media (min-width: 576px) {\n .card-group {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-flow: row wrap;\n }\n .card-group > .card {\n -webkit-box-flex: 1;\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-top,\n .card-group > .card:not(:last-child) .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-bottom,\n .card-group > .card:not(:last-child) .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-top,\n .card-group > .card:not(:first-child) .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-bottom,\n .card-group > .card:not(:first-child) .card-footer {\n border-bottom-left-radius: 0;\n }\n}\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n@media (min-width: 576px) {\n .card-columns {\n -webkit-column-count: 3;\n -moz-column-count: 3;\n column-count: 3;\n -webkit-column-gap: 1.25rem;\n -moz-column-gap: 1.25rem;\n column-gap: 1.25rem;\n orphans: 1;\n widows: 1;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n.accordion > .card {\n overflow: hidden;\n}\n.accordion > .card:not(:last-of-type) {\n border-bottom: 0;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.accordion > .card:not(:first-of-type) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.accordion > .card > .card-header {\n border-radius: 0;\n margin-bottom: -1px;\n}\n.breadcrumb {\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n.breadcrumb-item + .breadcrumb-item {\n padding-left: 0.5rem;\n}\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n color: #6c757d;\n content: \"/\";\n}\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n.breadcrumb-item.active {\n color: #6c757d;\n}\n.pagination {\n display: -webkit-box;\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #dee2e6;\n}\n.page-link:hover {\n z-index: 2;\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n.page-link:focus {\n z-index: 3;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n.page-item.active .page-link {\n z-index: 3;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n.page-item.disabled .page-link {\n color: #6c757d;\n pointer-events: none;\n cursor: auto;\n background-color: #fff;\n border-color: #dee2e6;\n}\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .badge {\n -webkit-transition: none;\n transition: none;\n }\n}\na.badge:hover, a.badge:focus {\n text-decoration: none;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\na.badge-primary:hover, a.badge-primary:focus {\n color: #fff;\n background-color: #0062cc;\n}\na.badge-primary:focus, a.badge-primary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\na.badge-secondary:hover, a.badge-secondary:focus {\n color: #fff;\n background-color: #545b62;\n}\na.badge-secondary:focus, a.badge-secondary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\na.badge-success:hover, a.badge-success:focus {\n color: #fff;\n background-color: #1e7e34;\n}\na.badge-success:focus, a.badge-success.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\na.badge-info:hover, a.badge-info:focus {\n color: #fff;\n background-color: #117a8b;\n}\na.badge-info:focus, a.badge-info.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\na.badge-warning:hover, a.badge-warning:focus {\n color: #212529;\n background-color: #d39e00;\n}\na.badge-warning:focus, a.badge-warning.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\na.badge-danger:hover, a.badge-danger:focus {\n color: #fff;\n background-color: #bd2130;\n}\na.badge-danger:focus, a.badge-danger.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\na.badge-light:hover, a.badge-light:focus {\n color: #212529;\n background-color: #dae0e5;\n}\na.badge-light:focus, a.badge-light.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\na.badge-dark:hover, a.badge-dark:focus {\n color: #fff;\n background-color: #1d2124;\n}\na.badge-dark:focus, a.badge-dark.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n.alert-heading {\n color: inherit;\n}\n.alert-link {\n font-weight: 700;\n}\n.alert-dismissible {\n padding-right: 4rem;\n}\n.alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n.alert-primary .alert-link {\n color: #002752;\n}\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n.alert-secondary .alert-link {\n color: #202326;\n}\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n.alert-success .alert-link {\n color: #0b2e13;\n}\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n.alert-info hr {\n border-top-color: #abdde5;\n}\n.alert-info .alert-link {\n color: #062c33;\n}\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n.alert-warning .alert-link {\n color: #533f03;\n}\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n.alert-danger .alert-link {\n color: #491217;\n}\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n.alert-light hr {\n border-top-color: #ececf6;\n}\n.alert-light .alert-link {\n color: #686868;\n}\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n.alert-dark .alert-link {\n color: #040505;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n display: -webkit-box;\n display: flex;\n height: 1rem;\n overflow: hidden;\n font-size: 0.75rem;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n.progress-bar {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n -webkit-box-pack: center;\n justify-content: center;\n overflow: hidden;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n background-color: #007bff;\n -webkit-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n -webkit-transition: none;\n transition: none;\n }\n}\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n.progress-bar-animated {\n -webkit-animation: progress-bar-stripes 1s linear infinite;\n animation: progress-bar-stripes 1s linear infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n -webkit-animation: none;\n animation: none;\n }\n}\n.media {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: start;\n align-items: flex-start;\n}\n.media-body {\n -webkit-box-flex: 1;\n flex: 1;\n}\n.list-group {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n.list-group-item-action:hover, .list-group-item-action:focus {\n z-index: 1;\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n.list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: #fff;\n}\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n.list-group-item + .list-group-item {\n border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n margin-top: -1px;\n border-top-width: 1px;\n}\n.list-group-horizontal {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n}\n.list-group-horizontal .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n}\n.list-group-horizontal .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n}\n.list-group-horizontal .list-group-item.active {\n margin-top: 0;\n}\n.list-group-horizontal .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n}\n.list-group-horizontal .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n}\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n }\n .list-group-horizontal-sm .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-sm .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-sm .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-sm .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-sm .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n }\n .list-group-horizontal-md .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-md .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-md .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-md .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-md .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n }\n .list-group-horizontal-lg .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-lg .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-lg .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-lg .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-lg .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n }\n .list-group-horizontal-xl .list-group-item:first-child {\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xl .list-group-item:last-child {\n border-top-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xl .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xl .list-group-item + .list-group-item {\n border-top-width: 1px;\n border-left-width: 0;\n }\n .list-group-horizontal-xl .list-group-item + .list-group-item.active {\n margin-left: -1px;\n border-left-width: 1px;\n }\n}\n.list-group-flush .list-group-item {\n border-right-width: 0;\n border-left-width: 0;\n border-radius: 0;\n}\n.list-group-flush .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom-width: 0;\n}\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n}\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n color: #004085;\n background-color: #9fcdff;\n}\n.list-group-item-primary.list-group-item-action.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n}\n.list-group-item-secondary {\n color: #383d41;\n background-color: #d6d8db;\n}\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n color: #383d41;\n background-color: #c8cbcf;\n}\n.list-group-item-secondary.list-group-item-action.active {\n color: #fff;\n background-color: #383d41;\n border-color: #383d41;\n}\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n}\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n color: #155724;\n background-color: #b1dfbb;\n}\n.list-group-item-success.list-group-item-action.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n}\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n}\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n color: #0c5460;\n background-color: #abdde5;\n}\n.list-group-item-info.list-group-item-action.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n}\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n}\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n color: #856404;\n background-color: #ffe8a1;\n}\n.list-group-item-warning.list-group-item-action.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n}\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n}\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n color: #721c24;\n background-color: #f1b0b7;\n}\n.list-group-item-danger.list-group-item-action.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n}\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n}\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n color: #818182;\n background-color: #ececf6;\n}\n.list-group-item-light.list-group-item-action.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n}\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n}\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n color: #1b1e21;\n background-color: #b9bbbe;\n}\n.list-group-item-dark.list-group-item-action.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n}\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n.close:hover {\n color: #000;\n text-decoration: none;\n}\n.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {\n opacity: .75;\n}\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\na.close.disabled {\n pointer-events: none;\n}\n.toast {\n max-width: 350px;\n overflow: hidden;\n font-size: 0.875rem;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n opacity: 0;\n border-radius: 0.25rem;\n}\n.toast:not(:last-child) {\n margin-bottom: 0.75rem;\n}\n.toast.showing {\n opacity: 1;\n}\n.toast.show {\n display: block;\n opacity: 1;\n}\n.toast.hide {\n display: none;\n}\n.toast-header {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n padding: 0.25rem 0.75rem;\n color: #6c757d;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n}\n.toast-body {\n padding: 0.75rem;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1050;\n display: none;\n width: 100%;\n height: 100%;\n overflow: hidden;\n outline: 0;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none;\n}\n.modal.fade .modal-dialog {\n transition: -webkit-transform 0.3s ease-out;\n -webkit-transition: -webkit-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n -webkit-transform: translate(0, -50px);\n transform: translate(0, -50px);\n}\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n -webkit-transition: none;\n transition: none;\n }\n}\n.modal.show .modal-dialog {\n -webkit-transform: none;\n transform: none;\n}\n.modal.modal-static .modal-dialog {\n -webkit-transform: scale(1.02);\n transform: scale(1.02);\n}\n.modal-dialog-scrollable {\n display: -webkit-box;\n display: flex;\n max-height: calc(100% - 1rem);\n}\n.modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 1rem);\n overflow: hidden;\n}\n.modal-dialog-scrollable .modal-header,\n.modal-dialog-scrollable .modal-footer {\n flex-shrink: 0;\n}\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n.modal-dialog-centered {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n min-height: calc(100% - 1rem);\n}\n.modal-dialog-centered::before {\n display: block;\n height: calc(100vh - 1rem);\n content: \"\";\n}\n.modal-dialog-centered.modal-dialog-scrollable {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n -webkit-box-pack: center;\n justify-content: center;\n height: 100%;\n}\n.modal-dialog-centered.modal-dialog-scrollable .modal-content {\n max-height: none;\n}\n.modal-dialog-centered.modal-dialog-scrollable::before {\n content: none;\n}\n.modal-content {\n position: relative;\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n}\n.modal-backdrop.show {\n opacity: 0.5;\n}\n.modal-header {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: start;\n align-items: flex-start;\n -webkit-box-pack: justify;\n justify-content: space-between;\n padding: 1rem 1rem;\n border-bottom: 1px solid #dee2e6;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n.modal-header .close {\n padding: 1rem 1rem;\n margin: -1rem -1rem -1rem auto;\n}\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n.modal-body {\n position: relative;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n padding: 1rem;\n}\n.modal-footer {\n display: -webkit-box;\n display: flex;\n flex-wrap: wrap;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: end;\n justify-content: flex-end;\n padding: 0.75rem;\n border-top: 1px solid #dee2e6;\n border-bottom-right-radius: calc(0.3rem - 1px);\n border-bottom-left-radius: calc(0.3rem - 1px);\n}\n.modal-footer > * {\n margin: 0.25rem;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto;\n }\n .modal-dialog-scrollable {\n max-height: calc(100% - 3.5rem);\n }\n .modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 3.5rem);\n }\n .modal-dialog-centered {\n min-height: calc(100% - 3.5rem);\n }\n .modal-dialog-centered::before {\n height: calc(100vh - 3.5rem);\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg,\n .modal-xl {\n max-width: 800px;\n }\n}\n@media (min-width: 1200px) {\n .modal-xl {\n max-width: 1140px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n.tooltip.show {\n opacity: 0.9;\n}\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem;\n}\n.tooltip .arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 0.4rem 0;\n}\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n top: 0;\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000;\n}\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 0.4rem;\n}\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n right: 0;\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000;\n}\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 0.4rem 0;\n}\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n bottom: 0;\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000;\n}\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 0.4rem;\n}\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n left: 0;\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n.popover .arrow {\n position: absolute;\n display: block;\n width: 1rem;\n height: 0.5rem;\n margin: 0 0.3rem;\n}\n.popover .arrow::before, .popover .arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 0.5rem;\n}\n.bs-popover-top > .arrow, .bs-popover-auto[x-placement^=\"top\"] > .arrow {\n bottom: calc(-0.5rem - 1px);\n}\n.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^=\"top\"] > .arrow::before {\n bottom: 0;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^=\"top\"] > .arrow::after {\n bottom: 1px;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: #fff;\n}\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 0.5rem;\n}\n.bs-popover-right > .arrow, .bs-popover-auto[x-placement^=\"right\"] > .arrow {\n left: calc(-0.5rem - 1px);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^=\"right\"] > .arrow::before {\n left: 0;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^=\"right\"] > .arrow::after {\n left: 1px;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: #fff;\n}\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 0.5rem;\n}\n.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow {\n top: calc(-0.5rem - 1px);\n}\n.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::before {\n top: 0;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::after {\n top: 1px;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: #fff;\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 1rem;\n margin-left: -0.5rem;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 0.5rem;\n}\n.bs-popover-left > .arrow, .bs-popover-auto[x-placement^=\"left\"] > .arrow {\n right: calc(-0.5rem - 1px);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^=\"left\"] > .arrow::before {\n right: 0;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^=\"left\"] > .arrow::after {\n right: 1px;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: #fff;\n}\n.popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n.popover-header:empty {\n display: none;\n}\n.popover-body {\n padding: 0.5rem 0.75rem;\n color: #212529;\n}\n.carousel {\n position: relative;\n}\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transition: -webkit-transform 0.6s ease-in-out;\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n -webkit-transition: none;\n transition: none;\n }\n}\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n.carousel-item-next:not(.carousel-item-left),\n.active.carousel-item-right {\n -webkit-transform: translateX(100%);\n transform: translateX(100%);\n}\n.carousel-item-prev:not(.carousel-item-right),\n.active.carousel-item-left {\n -webkit-transform: translateX(-100%);\n transform: translateX(-100%);\n}\n.carousel-fade .carousel-item {\n opacity: 0;\n -webkit-transition-property: opacity;\n transition-property: opacity;\n -webkit-transform: none;\n transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-left,\n.carousel-fade .carousel-item-prev.carousel-item-right {\n z-index: 1;\n opacity: 1;\n}\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n z-index: 0;\n opacity: 0;\n -webkit-transition: opacity 0s 0.6s;\n transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-left,\n .carousel-fade .active.carousel-item-right {\n -webkit-transition: none;\n transition: none;\n }\n}\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n -webkit-transition: opacity 0.15s ease;\n transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n .carousel-control-next {\n -webkit-transition: none;\n transition: none;\n }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n.carousel-control-prev {\n left: 0;\n}\n.carousel-control-next {\n right: 0;\n}\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: no-repeat 50% / 100% 100%;\n}\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e\");\n}\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e\");\n}\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 15;\n display: -webkit-box;\n display: flex;\n -webkit-box-pack: center;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n.carousel-indicators li {\n box-sizing: content-box;\n -webkit-box-flex: 0;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #fff;\n background-clip: padding-box;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: .5;\n -webkit-transition: opacity 0.6s ease;\n transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators li {\n -webkit-transition: none;\n transition: none;\n }\n}\n.carousel-indicators .active {\n opacity: 1;\n}\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n@-webkit-keyframes spinner-border {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes spinner-border {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.spinner-border {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n border: 0.25em solid currentColor;\n border-right-color: transparent;\n border-radius: 50%;\n -webkit-animation: spinner-border .75s linear infinite;\n animation: spinner-border .75s linear infinite;\n}\n.spinner-border-sm {\n width: 1rem;\n height: 1rem;\n border-width: 0.2em;\n}\n@-webkit-keyframes spinner-grow {\n 0% {\n -webkit-transform: scale(0);\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n }\n}\n@keyframes spinner-grow {\n 0% {\n -webkit-transform: scale(0);\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n }\n}\n.spinner-grow {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n background-color: currentColor;\n border-radius: 50%;\n opacity: 0;\n -webkit-animation: spinner-grow .75s linear infinite;\n animation: spinner-grow .75s linear infinite;\n}\n.spinner-grow-sm {\n width: 1rem;\n height: 1rem;\n}\n.align-baseline {\n vertical-align: baseline !important;\n}\n.align-top {\n vertical-align: top !important;\n}\n.align-middle {\n vertical-align: middle !important;\n}\n.align-bottom {\n vertical-align: bottom !important;\n}\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n.align-text-top {\n vertical-align: text-top !important;\n}\n.bg-primary {\n background-color: #007bff !important;\n}\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n.bg-secondary {\n background-color: #6c757d !important;\n}\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n.bg-success {\n background-color: #28a745 !important;\n}\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n.bg-info {\n background-color: #17a2b8 !important;\n}\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n.bg-warning {\n background-color: #ffc107 !important;\n}\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n.bg-danger {\n background-color: #dc3545 !important;\n}\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n.bg-light {\n background-color: #f8f9fa !important;\n}\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n.bg-dark {\n background-color: #343a40 !important;\n}\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n.bg-white {\n background-color: #fff !important;\n}\n.bg-transparent {\n background-color: transparent !important;\n}\n.border {\n border: 1px solid #dee2e6 !important;\n}\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n.border-0 {\n border: 0 !important;\n}\n.border-top-0 {\n border-top: 0 !important;\n}\n.border-right-0 {\n border-right: 0 !important;\n}\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n.border-left-0 {\n border-left: 0 !important;\n}\n.border-primary {\n border-color: #007bff !important;\n}\n.border-secondary {\n border-color: #6c757d !important;\n}\n.border-success {\n border-color: #28a745 !important;\n}\n.border-info {\n border-color: #17a2b8 !important;\n}\n.border-warning {\n border-color: #ffc107 !important;\n}\n.border-danger {\n border-color: #dc3545 !important;\n}\n.border-light {\n border-color: #f8f9fa !important;\n}\n.border-dark {\n border-color: #343a40 !important;\n}\n.border-white {\n border-color: #fff !important;\n}\n.rounded-sm {\n border-radius: 0.2rem !important;\n}\n.rounded {\n border-radius: 0.25rem !important;\n}\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n.rounded-lg {\n border-radius: 0.3rem !important;\n}\n.rounded-circle {\n border-radius: 50% !important;\n}\n.rounded-pill {\n border-radius: 50rem !important;\n}\n.rounded-0 {\n border-radius: 0 !important;\n}\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n.d-none {\n display: none !important;\n}\n.d-inline {\n display: inline !important;\n}\n.d-inline-block {\n display: inline-block !important;\n}\n.d-block {\n display: block !important;\n}\n.d-table {\n display: table !important;\n}\n.d-table-row {\n display: table-row !important;\n}\n.d-table-cell {\n display: table-cell !important;\n}\n.d-flex {\n display: -webkit-box !important;\n display: flex !important;\n}\n.d-inline-flex {\n display: -webkit-inline-box !important;\n display: inline-flex !important;\n}\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: -webkit-box !important;\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: -webkit-inline-box !important;\n display: inline-flex !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: -webkit-box !important;\n display: flex !important;\n }\n .d-md-inline-flex {\n display: -webkit-inline-box !important;\n display: inline-flex !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: -webkit-box !important;\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: -webkit-inline-box !important;\n display: inline-flex !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: -webkit-box !important;\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: -webkit-inline-box !important;\n display: inline-flex !important;\n }\n}\n@media print {\n .d-print-none {\n display: none !important;\n }\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: -webkit-box !important;\n display: flex !important;\n }\n .d-print-inline-flex {\n display: -webkit-inline-box !important;\n display: inline-flex !important;\n }\n}\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n.flex-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n flex-direction: row !important;\n}\n.flex-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n flex-direction: column !important;\n}\n.flex-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n flex-direction: row-reverse !important;\n}\n.flex-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n flex-direction: column-reverse !important;\n}\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n.flex-fill {\n -webkit-box-flex: 1 !important;\n flex: 1 1 auto !important;\n}\n.flex-grow-0 {\n -webkit-box-flex: 0 !important;\n flex-grow: 0 !important;\n}\n.flex-grow-1 {\n -webkit-box-flex: 1 !important;\n flex-grow: 1 !important;\n}\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n.justify-content-start {\n -webkit-box-pack: start !important;\n justify-content: flex-start !important;\n}\n.justify-content-end {\n -webkit-box-pack: end !important;\n justify-content: flex-end !important;\n}\n.justify-content-center {\n -webkit-box-pack: center !important;\n justify-content: center !important;\n}\n.justify-content-between {\n -webkit-box-pack: justify !important;\n justify-content: space-between !important;\n}\n.justify-content-around {\n justify-content: space-around !important;\n}\n.align-items-start {\n -webkit-box-align: start !important;\n align-items: flex-start !important;\n}\n.align-items-end {\n -webkit-box-align: end !important;\n align-items: flex-end !important;\n}\n.align-items-center {\n -webkit-box-align: center !important;\n align-items: center !important;\n}\n.align-items-baseline {\n -webkit-box-align: baseline !important;\n align-items: baseline !important;\n}\n.align-items-stretch {\n -webkit-box-align: stretch !important;\n align-items: stretch !important;\n}\n.align-content-start {\n align-content: flex-start !important;\n}\n.align-content-end {\n align-content: flex-end !important;\n}\n.align-content-center {\n align-content: center !important;\n}\n.align-content-between {\n align-content: space-between !important;\n}\n.align-content-around {\n align-content: space-around !important;\n}\n.align-content-stretch {\n align-content: stretch !important;\n}\n.align-self-auto {\n align-self: auto !important;\n}\n.align-self-start {\n align-self: flex-start !important;\n}\n.align-self-end {\n align-self: flex-end !important;\n}\n.align-self-center {\n align-self: center !important;\n}\n.align-self-baseline {\n align-self: baseline !important;\n}\n.align-self-stretch {\n align-self: stretch !important;\n}\n@media (min-width: 576px) {\n .flex-sm-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n flex-direction: row !important;\n }\n .flex-sm-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-sm-fill {\n -webkit-box-flex: 1 !important;\n flex: 1 1 auto !important;\n }\n .flex-sm-grow-0 {\n -webkit-box-flex: 0 !important;\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n -webkit-box-flex: 1 !important;\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-sm-start {\n -webkit-box-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n -webkit-box-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n -webkit-box-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-sm-between {\n -webkit-box-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n -webkit-box-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n -webkit-box-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n -webkit-box-align: center !important;\n align-items: center !important;\n }\n .align-items-sm-baseline {\n -webkit-box-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n -webkit-box-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n@media (min-width: 768px) {\n .flex-md-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n flex-direction: row !important;\n }\n .flex-md-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-md-fill {\n -webkit-box-flex: 1 !important;\n flex: 1 1 auto !important;\n }\n .flex-md-grow-0 {\n -webkit-box-flex: 0 !important;\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n -webkit-box-flex: 1 !important;\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-md-start {\n -webkit-box-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n -webkit-box-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n -webkit-box-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-md-between {\n -webkit-box-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n -webkit-box-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-md-end {\n -webkit-box-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-md-center {\n -webkit-box-align: center !important;\n align-items: center !important;\n }\n .align-items-md-baseline {\n -webkit-box-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n -webkit-box-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n@media (min-width: 992px) {\n .flex-lg-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n flex-direction: row !important;\n }\n .flex-lg-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-lg-fill {\n -webkit-box-flex: 1 !important;\n flex: 1 1 auto !important;\n }\n .flex-lg-grow-0 {\n -webkit-box-flex: 0 !important;\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n -webkit-box-flex: 1 !important;\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-lg-start {\n -webkit-box-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n -webkit-box-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n -webkit-box-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-lg-between {\n -webkit-box-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n -webkit-box-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n -webkit-box-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n -webkit-box-align: center !important;\n align-items: center !important;\n }\n .align-items-lg-baseline {\n -webkit-box-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n -webkit-box-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n@media (min-width: 1200px) {\n .flex-xl-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n flex-direction: row !important;\n }\n .flex-xl-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-xl-fill {\n -webkit-box-flex: 1 !important;\n flex: 1 1 auto !important;\n }\n .flex-xl-grow-0 {\n -webkit-box-flex: 0 !important;\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n -webkit-box-flex: 1 !important;\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-xl-start {\n -webkit-box-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n -webkit-box-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n -webkit-box-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-xl-between {\n -webkit-box-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n -webkit-box-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n -webkit-box-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n -webkit-box-align: center !important;\n align-items: center !important;\n }\n .align-items-xl-baseline {\n -webkit-box-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n -webkit-box-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n.float-left {\n float: left !important;\n}\n.float-right {\n float: right !important;\n}\n.float-none {\n float: none !important;\n}\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n.overflow-auto {\n overflow: auto !important;\n}\n.overflow-hidden {\n overflow: hidden !important;\n}\n.position-static {\n position: static !important;\n}\n.position-relative {\n position: relative !important;\n}\n.position-absolute {\n position: absolute !important;\n}\n.position-fixed {\n position: fixed !important;\n}\n.position-sticky {\n position: -webkit-sticky !important;\n position: sticky !important;\n}\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n@supports ((position: -webkit-sticky) or (position: sticky)) {\n .sticky-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n}\n.shadow-sm {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n.shadow {\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n.shadow-lg {\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n.shadow-none {\n box-shadow: none !important;\n}\n.w-25 {\n width: 25% !important;\n}\n.w-50 {\n width: 50% !important;\n}\n.w-75 {\n width: 75% !important;\n}\n.w-100 {\n width: 100% !important;\n}\n.w-auto {\n width: auto !important;\n}\n.h-25 {\n height: 25% !important;\n}\n.h-50 {\n height: 50% !important;\n}\n.h-75 {\n height: 75% !important;\n}\n.h-100 {\n height: 100% !important;\n}\n.h-auto {\n height: auto !important;\n}\n.mw-100 {\n max-width: 100% !important;\n}\n.mh-100 {\n max-height: 100% !important;\n}\n.min-vw-100 {\n min-width: 100vw !important;\n}\n.min-vh-100 {\n min-height: 100vh !important;\n}\n.vw-100 {\n width: 100vw !important;\n}\n.vh-100 {\n height: 100vh !important;\n}\n.stretched-link::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n pointer-events: auto;\n content: \"\";\n background-color: rgba(0, 0, 0, 0);\n}\n.m-0 {\n margin: 0 !important;\n}\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n.m-1 {\n margin: 0.25rem !important;\n}\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n.m-2 {\n margin: 0.5rem !important;\n}\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n.m-3 {\n margin: 1rem !important;\n}\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n.m-4 {\n margin: 1.5rem !important;\n}\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n.m-5 {\n margin: 3rem !important;\n}\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n.p-0 {\n padding: 0 !important;\n}\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n.p-1 {\n padding: 0.25rem !important;\n}\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n.p-2 {\n padding: 0.5rem !important;\n}\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n.p-3 {\n padding: 1rem !important;\n}\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n.p-4 {\n padding: 1.5rem !important;\n}\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n.p-5 {\n padding: 3rem !important;\n}\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n.m-n1 {\n margin: -0.25rem !important;\n}\n.mt-n1,\n.my-n1 {\n margin-top: -0.25rem !important;\n}\n.mr-n1,\n.mx-n1 {\n margin-right: -0.25rem !important;\n}\n.mb-n1,\n.my-n1 {\n margin-bottom: -0.25rem !important;\n}\n.ml-n1,\n.mx-n1 {\n margin-left: -0.25rem !important;\n}\n.m-n2 {\n margin: -0.5rem !important;\n}\n.mt-n2,\n.my-n2 {\n margin-top: -0.5rem !important;\n}\n.mr-n2,\n.mx-n2 {\n margin-right: -0.5rem !important;\n}\n.mb-n2,\n.my-n2 {\n margin-bottom: -0.5rem !important;\n}\n.ml-n2,\n.mx-n2 {\n margin-left: -0.5rem !important;\n}\n.m-n3 {\n margin: -1rem !important;\n}\n.mt-n3,\n.my-n3 {\n margin-top: -1rem !important;\n}\n.mr-n3,\n.mx-n3 {\n margin-right: -1rem !important;\n}\n.mb-n3,\n.my-n3 {\n margin-bottom: -1rem !important;\n}\n.ml-n3,\n.mx-n3 {\n margin-left: -1rem !important;\n}\n.m-n4 {\n margin: -1.5rem !important;\n}\n.mt-n4,\n.my-n4 {\n margin-top: -1.5rem !important;\n}\n.mr-n4,\n.mx-n4 {\n margin-right: -1.5rem !important;\n}\n.mb-n4,\n.my-n4 {\n margin-bottom: -1.5rem !important;\n}\n.ml-n4,\n.mx-n4 {\n margin-left: -1.5rem !important;\n}\n.m-n5 {\n margin: -3rem !important;\n}\n.mt-n5,\n.my-n5 {\n margin-top: -3rem !important;\n}\n.mr-n5,\n.mx-n5 {\n margin-right: -3rem !important;\n}\n.mb-n5,\n.my-n5 {\n margin-bottom: -3rem !important;\n}\n.ml-n5,\n.mx-n5 {\n margin-left: -3rem !important;\n}\n.m-auto {\n margin: auto !important;\n}\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0,\n .my-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0,\n .mx-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0,\n .my-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0,\n .mx-sm-0 {\n margin-left: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1,\n .my-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1,\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1,\n .my-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1,\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2,\n .my-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2,\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2,\n .my-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2,\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3,\n .my-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3,\n .mx-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3,\n .my-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3,\n .mx-sm-3 {\n margin-left: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4,\n .my-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4,\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4,\n .my-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4,\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5,\n .my-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5,\n .mx-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5,\n .my-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5,\n .mx-sm-5 {\n margin-left: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0,\n .py-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0,\n .px-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0,\n .py-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0,\n .px-sm-0 {\n padding-left: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1,\n .py-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1,\n .px-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1,\n .py-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1,\n .px-sm-1 {\n padding-left: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2,\n .py-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2,\n .px-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2,\n .py-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2,\n .px-sm-2 {\n padding-left: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3,\n .py-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3,\n .px-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3,\n .py-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3,\n .px-sm-3 {\n padding-left: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4,\n .py-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4,\n .px-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4,\n .py-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4,\n .px-sm-4 {\n padding-left: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5,\n .py-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5,\n .px-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5,\n .py-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5,\n .px-sm-5 {\n padding-left: 3rem !important;\n }\n .m-sm-n1 {\n margin: -0.25rem !important;\n }\n .mt-sm-n1,\n .my-sm-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-sm-n1,\n .mx-sm-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-sm-n1,\n .my-sm-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-sm-n1,\n .mx-sm-n1 {\n margin-left: -0.25rem !important;\n }\n .m-sm-n2 {\n margin: -0.5rem !important;\n }\n .mt-sm-n2,\n .my-sm-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-sm-n2,\n .mx-sm-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-sm-n2,\n .my-sm-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-sm-n2,\n .mx-sm-n2 {\n margin-left: -0.5rem !important;\n }\n .m-sm-n3 {\n margin: -1rem !important;\n }\n .mt-sm-n3,\n .my-sm-n3 {\n margin-top: -1rem !important;\n }\n .mr-sm-n3,\n .mx-sm-n3 {\n margin-right: -1rem !important;\n }\n .mb-sm-n3,\n .my-sm-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-sm-n3,\n .mx-sm-n3 {\n margin-left: -1rem !important;\n }\n .m-sm-n4 {\n margin: -1.5rem !important;\n }\n .mt-sm-n4,\n .my-sm-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-sm-n4,\n .mx-sm-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-sm-n4,\n .my-sm-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-sm-n4,\n .mx-sm-n4 {\n margin-left: -1.5rem !important;\n }\n .m-sm-n5 {\n margin: -3rem !important;\n }\n .mt-sm-n5,\n .my-sm-n5 {\n margin-top: -3rem !important;\n }\n .mr-sm-n5,\n .mx-sm-n5 {\n margin-right: -3rem !important;\n }\n .mb-sm-n5,\n .my-sm-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-sm-n5,\n .mx-sm-n5 {\n margin-left: -3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto,\n .my-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto,\n .mx-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto,\n .my-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto,\n .mx-sm-auto {\n margin-left: auto !important;\n }\n}\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0,\n .my-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0,\n .mx-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0,\n .my-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0,\n .mx-md-0 {\n margin-left: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1,\n .my-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1,\n .mx-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1,\n .my-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1,\n .mx-md-1 {\n margin-left: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2,\n .my-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2,\n .mx-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2,\n .my-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2,\n .mx-md-2 {\n margin-left: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3,\n .my-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3,\n .mx-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3,\n .my-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3,\n .mx-md-3 {\n margin-left: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4,\n .my-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4,\n .mx-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4,\n .my-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4,\n .mx-md-4 {\n margin-left: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5,\n .my-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5,\n .mx-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5,\n .my-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5,\n .mx-md-5 {\n margin-left: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0,\n .py-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0,\n .px-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0,\n .py-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0,\n .px-md-0 {\n padding-left: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1,\n .py-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1,\n .px-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1,\n .py-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1,\n .px-md-1 {\n padding-left: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2,\n .py-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2,\n .px-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2,\n .py-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2,\n .px-md-2 {\n padding-left: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3,\n .py-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3,\n .px-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3,\n .py-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3,\n .px-md-3 {\n padding-left: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4,\n .py-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4,\n .px-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4,\n .py-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4,\n .px-md-4 {\n padding-left: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5,\n .py-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5,\n .px-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5,\n .py-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5,\n .px-md-5 {\n padding-left: 3rem !important;\n }\n .m-md-n1 {\n margin: -0.25rem !important;\n }\n .mt-md-n1,\n .my-md-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-md-n1,\n .mx-md-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-md-n1,\n .my-md-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-md-n1,\n .mx-md-n1 {\n margin-left: -0.25rem !important;\n }\n .m-md-n2 {\n margin: -0.5rem !important;\n }\n .mt-md-n2,\n .my-md-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-md-n2,\n .mx-md-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-md-n2,\n .my-md-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-md-n2,\n .mx-md-n2 {\n margin-left: -0.5rem !important;\n }\n .m-md-n3 {\n margin: -1rem !important;\n }\n .mt-md-n3,\n .my-md-n3 {\n margin-top: -1rem !important;\n }\n .mr-md-n3,\n .mx-md-n3 {\n margin-right: -1rem !important;\n }\n .mb-md-n3,\n .my-md-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-md-n3,\n .mx-md-n3 {\n margin-left: -1rem !important;\n }\n .m-md-n4 {\n margin: -1.5rem !important;\n }\n .mt-md-n4,\n .my-md-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-md-n4,\n .mx-md-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-md-n4,\n .my-md-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-md-n4,\n .mx-md-n4 {\n margin-left: -1.5rem !important;\n }\n .m-md-n5 {\n margin: -3rem !important;\n }\n .mt-md-n5,\n .my-md-n5 {\n margin-top: -3rem !important;\n }\n .mr-md-n5,\n .mx-md-n5 {\n margin-right: -3rem !important;\n }\n .mb-md-n5,\n .my-md-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-md-n5,\n .mx-md-n5 {\n margin-left: -3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto,\n .my-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto,\n .mx-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto,\n .my-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto,\n .mx-md-auto {\n margin-left: auto !important;\n }\n}\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0,\n .my-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0,\n .mx-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0,\n .my-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0,\n .mx-lg-0 {\n margin-left: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1,\n .my-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1,\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1,\n .my-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1,\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2,\n .my-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2,\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2,\n .my-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2,\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3,\n .my-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3,\n .mx-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3,\n .my-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3,\n .mx-lg-3 {\n margin-left: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4,\n .my-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4,\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4,\n .my-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4,\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5,\n .my-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5,\n .mx-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5,\n .my-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5,\n .mx-lg-5 {\n margin-left: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0,\n .py-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0,\n .px-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0,\n .py-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0,\n .px-lg-0 {\n padding-left: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1,\n .py-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1,\n .px-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1,\n .py-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1,\n .px-lg-1 {\n padding-left: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2,\n .py-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2,\n .px-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2,\n .py-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2,\n .px-lg-2 {\n padding-left: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3,\n .py-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3,\n .px-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3,\n .py-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3,\n .px-lg-3 {\n padding-left: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4,\n .py-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4,\n .px-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4,\n .py-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4,\n .px-lg-4 {\n padding-left: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5,\n .py-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5,\n .px-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5,\n .py-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5,\n .px-lg-5 {\n padding-left: 3rem !important;\n }\n .m-lg-n1 {\n margin: -0.25rem !important;\n }\n .mt-lg-n1,\n .my-lg-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-lg-n1,\n .mx-lg-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-lg-n1,\n .my-lg-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-lg-n1,\n .mx-lg-n1 {\n margin-left: -0.25rem !important;\n }\n .m-lg-n2 {\n margin: -0.5rem !important;\n }\n .mt-lg-n2,\n .my-lg-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-lg-n2,\n .mx-lg-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-lg-n2,\n .my-lg-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-lg-n2,\n .mx-lg-n2 {\n margin-left: -0.5rem !important;\n }\n .m-lg-n3 {\n margin: -1rem !important;\n }\n .mt-lg-n3,\n .my-lg-n3 {\n margin-top: -1rem !important;\n }\n .mr-lg-n3,\n .mx-lg-n3 {\n margin-right: -1rem !important;\n }\n .mb-lg-n3,\n .my-lg-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-lg-n3,\n .mx-lg-n3 {\n margin-left: -1rem !important;\n }\n .m-lg-n4 {\n margin: -1.5rem !important;\n }\n .mt-lg-n4,\n .my-lg-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-lg-n4,\n .mx-lg-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-lg-n4,\n .my-lg-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-lg-n4,\n .mx-lg-n4 {\n margin-left: -1.5rem !important;\n }\n .m-lg-n5 {\n margin: -3rem !important;\n }\n .mt-lg-n5,\n .my-lg-n5 {\n margin-top: -3rem !important;\n }\n .mr-lg-n5,\n .mx-lg-n5 {\n margin-right: -3rem !important;\n }\n .mb-lg-n5,\n .my-lg-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-lg-n5,\n .mx-lg-n5 {\n margin-left: -3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto,\n .my-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto,\n .mx-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto,\n .my-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto,\n .mx-lg-auto {\n margin-left: auto !important;\n }\n}\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0,\n .my-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0,\n .mx-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0,\n .my-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0,\n .mx-xl-0 {\n margin-left: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1,\n .my-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1,\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1,\n .my-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1,\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2,\n .my-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2,\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2,\n .my-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2,\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3,\n .my-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3,\n .mx-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3,\n .my-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3,\n .mx-xl-3 {\n margin-left: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4,\n .my-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4,\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4,\n .my-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4,\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5,\n .my-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5,\n .mx-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5,\n .my-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5,\n .mx-xl-5 {\n margin-left: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0,\n .py-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0,\n .px-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0,\n .py-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0,\n .px-xl-0 {\n padding-left: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1,\n .py-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1,\n .px-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1,\n .py-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1,\n .px-xl-1 {\n padding-left: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2,\n .py-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2,\n .px-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2,\n .py-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2,\n .px-xl-2 {\n padding-left: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3,\n .py-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3,\n .px-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3,\n .py-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3,\n .px-xl-3 {\n padding-left: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4,\n .py-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4,\n .px-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4,\n .py-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4,\n .px-xl-4 {\n padding-left: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5,\n .py-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5,\n .px-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5,\n .py-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5,\n .px-xl-5 {\n padding-left: 3rem !important;\n }\n .m-xl-n1 {\n margin: -0.25rem !important;\n }\n .mt-xl-n1,\n .my-xl-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-xl-n1,\n .mx-xl-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-xl-n1,\n .my-xl-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-xl-n1,\n .mx-xl-n1 {\n margin-left: -0.25rem !important;\n }\n .m-xl-n2 {\n margin: -0.5rem !important;\n }\n .mt-xl-n2,\n .my-xl-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-xl-n2,\n .mx-xl-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-xl-n2,\n .my-xl-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-xl-n2,\n .mx-xl-n2 {\n margin-left: -0.5rem !important;\n }\n .m-xl-n3 {\n margin: -1rem !important;\n }\n .mt-xl-n3,\n .my-xl-n3 {\n margin-top: -1rem !important;\n }\n .mr-xl-n3,\n .mx-xl-n3 {\n margin-right: -1rem !important;\n }\n .mb-xl-n3,\n .my-xl-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-xl-n3,\n .mx-xl-n3 {\n margin-left: -1rem !important;\n }\n .m-xl-n4 {\n margin: -1.5rem !important;\n }\n .mt-xl-n4,\n .my-xl-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-xl-n4,\n .mx-xl-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-xl-n4,\n .my-xl-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-xl-n4,\n .mx-xl-n4 {\n margin-left: -1.5rem !important;\n }\n .m-xl-n5 {\n margin: -3rem !important;\n }\n .mt-xl-n5,\n .my-xl-n5 {\n margin-top: -3rem !important;\n }\n .mr-xl-n5,\n .mx-xl-n5 {\n margin-right: -3rem !important;\n }\n .mb-xl-n5,\n .my-xl-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-xl-n5,\n .mx-xl-n5 {\n margin-left: -3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto,\n .my-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto,\n .mx-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto,\n .my-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto,\n .mx-xl-auto {\n margin-left: auto !important;\n }\n}\n.text-monospace {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !important;\n}\n.text-justify {\n text-align: justify !important;\n}\n.text-wrap {\n white-space: normal !important;\n}\n.text-nowrap {\n white-space: nowrap !important;\n}\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.text-left {\n text-align: left !important;\n}\n.text-right {\n text-align: right !important;\n}\n.text-center {\n text-align: center !important;\n}\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n.text-lowercase {\n text-transform: lowercase !important;\n}\n.text-uppercase {\n text-transform: uppercase !important;\n}\n.text-capitalize {\n text-transform: capitalize !important;\n}\n.font-weight-light {\n font-weight: 300 !important;\n}\n.font-weight-lighter {\n font-weight: lighter !important;\n}\n.font-weight-normal {\n font-weight: 400 !important;\n}\n.font-weight-bold {\n font-weight: 700 !important;\n}\n.font-weight-bolder {\n font-weight: bolder !important;\n}\n.font-italic {\n font-style: italic !important;\n}\n.text-white {\n color: #fff !important;\n}\n.text-primary {\n color: #007bff !important;\n}\na.text-primary:hover, a.text-primary:focus {\n color: #0056b3 !important;\n}\n.text-secondary {\n color: #6c757d !important;\n}\na.text-secondary:hover, a.text-secondary:focus {\n color: #494f54 !important;\n}\n.text-success {\n color: #28a745 !important;\n}\na.text-success:hover, a.text-success:focus {\n color: #19692c !important;\n}\n.text-info {\n color: #17a2b8 !important;\n}\na.text-info:hover, a.text-info:focus {\n color: #0f6674 !important;\n}\n.text-warning {\n color: #ffc107 !important;\n}\na.text-warning:hover, a.text-warning:focus {\n color: #ba8b00 !important;\n}\n.text-danger {\n color: #dc3545 !important;\n}\na.text-danger:hover, a.text-danger:focus {\n color: #a71d2a !important;\n}\n.text-light {\n color: #f8f9fa !important;\n}\na.text-light:hover, a.text-light:focus {\n color: #cbd3da !important;\n}\n.text-dark {\n color: #343a40 !important;\n}\na.text-dark:hover, a.text-dark:focus {\n color: #121416 !important;\n}\n.text-body {\n color: #212529 !important;\n}\n.text-muted {\n color: #6c757d !important;\n}\n.text-black-50 {\n color: rgba(0, 0, 0, 0.5) !important;\n}\n.text-white-50 {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.text-decoration-none {\n text-decoration: none !important;\n}\n.text-break {\n word-break: break-word !important;\n overflow-wrap: break-word !important;\n}\n.text-reset {\n color: inherit !important;\n}\n.visible {\n visibility: visible !important;\n}\n.invisible {\n visibility: hidden !important;\n}\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a:not(.btn) {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #adb5bd;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n @page {\n size: a3;\n }\n body {\n min-width: 992px !important;\n }\n .container {\n min-width: 992px !important;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #dee2e6 !important;\n }\n .table-dark {\n color: inherit;\n }\n .table-dark th,\n .table-dark td,\n .table-dark thead th,\n .table-dark tbody + tbody {\n border-color: #dee2e6;\n }\n .table .thead-dark th {\n color: inherit;\n border-color: #dee2e6;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9ib290c3RyYXAuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvZGlzdC9jc3MvYm9vdHN0cmFwLmNzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fcm9vdC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19yZWJvb3Quc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fdmFyaWFibGVzLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdmVuZG9yL19yZnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2hvdmVyLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3R5cGUuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2xpc3RzLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2ltYWdlcy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9faW1hZ2Uuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JvcmRlci1yYWRpdXMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fY29kZS5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19ncmlkLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19ncmlkLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19icmVha3BvaW50cy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fZ3JpZC1mcmFtZXdvcmsuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fdGFibGVzLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL190YWJsZS1yb3cuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fZnVuY3Rpb25zLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2Zvcm1zLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL190cmFuc2l0aW9uLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19mb3Jtcy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fZ3JhZGllbnRzLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2J1dHRvbnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2J1dHRvbnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fdHJhbnNpdGlvbnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fZHJvcGRvd24uc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2NhcmV0LnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19uYXYtZGl2aWRlci5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19idXR0b24tZ3JvdXAuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9faW5wdXQtZ3JvdXAuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fY3VzdG9tLWZvcm1zLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX25hdi5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19uYXZiYXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fY2FyZC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19icmVhZGNydW1iLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3BhZ2luYXRpb24uc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3BhZ2luYXRpb24uc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fYmFkZ2Uuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JhZGdlLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2p1bWJvdHJvbi5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19hbGVydC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYWxlcnQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fcHJvZ3Jlc3Muc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fbWVkaWEuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fbGlzdC1ncm91cC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fbGlzdC1ncm91cC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19jbG9zZS5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL190b2FzdHMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fbW9kYWwuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fdG9vbHRpcC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fcmVzZXQtdGV4dC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19wb3BvdmVyLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2Nhcm91c2VsLnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19jbGVhcmZpeC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19zcGlubmVycy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fYWxpZ24uc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JhY2tncm91bmQtdmFyaWFudC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fYmFja2dyb3VuZC5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fYm9yZGVycy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fZGlzcGxheS5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fZW1iZWQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX2ZsZXguc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX2Zsb2F0LnNjc3MiLCJub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdXRpbGl0aWVzL19vdmVyZmxvdy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fcG9zaXRpb24uc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3NjcmVlbnJlYWRlcnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3NjcmVlbi1yZWFkZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3NoYWRvd3Muc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3NpemluZy5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fc3RyZXRjaGVkLWxpbmsuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3NwYWNpbmcuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3RleHQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3RleHQtdHJ1bmNhdGUuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3RleHQtZW1waGFzaXMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3RleHQtaGlkZS5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fdmlzaWJpbGl0eS5zY3NzIiwibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19wcmludC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztFQ0tFO0FDSkY7RUFHSSxlQUFjO0VBQWQsaUJBQWM7RUFBZCxpQkFBYztFQUFkLGVBQWM7RUFBZCxjQUFjO0VBQWQsaUJBQWM7RUFBZCxpQkFBYztFQUFkLGdCQUFjO0VBQWQsZUFBYztFQUFkLGVBQWM7RUFBZCxhQUFjO0VBQWQsZUFBYztFQUFkLG9CQUFjO0VBSWQsa0JBQWM7RUFBZCxvQkFBYztFQUFkLGtCQUFjO0VBQWQsZUFBYztFQUFkLGtCQUFjO0VBQWQsaUJBQWM7RUFBZCxnQkFBYztFQUFkLGVBQWM7RUFJZCxrQkFBaUM7RUFBakMsc0JBQWlDO0VBQWpDLHNCQUFpQztFQUFqQyxzQkFBaUM7RUFBakMsdUJBQWlDO0VBS25DLCtNQUF5QjtFQUN6Qiw2R0FBd0I7QURpQjFCO0FFakJBOzs7RUFHRSxzQkFBc0I7QUZvQnhCO0FFakJBO0VBQ0UsdUJBQXVCO0VBQ3ZCLGlCQUFpQjtFQUNqQiw4QkFBOEI7RUFDOUIsNkNDWGE7QUgrQmY7QUVkQTtFQUNFLGNBQWM7QUZpQmhCO0FFUEE7RUFDRSxTQUFTO0VBQ1Qsa01DeU9pTjtFQ3pKN00sZUF0Q1k7RUZ4Q2hCLGdCQ2tQK0I7RURqUC9CLGdCQ3NQK0I7RURyUC9CLGNDbkNnQjtFRG9DaEIsZ0JBQWdCO0VBQ2hCLHNCQzlDYTtBSHdEZjtBQUVBO0VF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QWE7RUFDYiwwQkFBMEI7QUZ6SDVCO0FFZ0lBO0VBQ0UscUJBQXFCO0FGN0h2QjtBRWdJQTtFQUNFLGtCQUFrQjtFQUNsQixlQUFlO0FGN0hqQjtBRWdJQTtFQUNFLGFBQWE7QUY3SGY7QUFFQTtFRWlJRSx3QkFBd0I7QUYvSDFCO0FNM1ZBOztFQUVFLHFCSHlTdUM7RUd2U3ZDLGdCSHlTK0I7RUd4Uy9CLGdCSHlTK0I7QUhvRGpDO0FNelZBO0VGZ0hNLGlCQXRDWTtBSm1SbEI7QU01VkE7RUYrR00sZUF0Q1k7QUp1UmxCO0FNL1ZBO0VGOEdNLGtCQXRDWTtBSjJSbEI7QU1sV0E7RUY2R00saUJBdENZO0FKK1JsQjtBTXJXQTtFRjRHTSxrQkF0Q1k7QUptU2xCO0FNeFdBO0VGMkdNLGVBdENZO0FKdVNsQjtBTTFXQTtFRnlHTSxrQkF0Q1k7RUVqRWhCLGdCSDJTK0I7QUhrRWpDO0FNeldBO0VGbUdNLGVBdENZO0VFM0RoQixnQkg4UitCO0VHN1IvQixnQkhxUitCO0FIdUZqQztBTTFXQTtFRjhGTSxpQkF0Q1k7RUV0RGhCLGdCSDBSK0I7RUd6Ui9CLGdCSGdSK0I7QUg2RmpDO0FNM1dBO0VGeUZNLGlCQXRDWTtFRWpEaEIsZ0JIc1IrQjtFR3JSL0IsZ0JIMlErQjtBSG1HakM7QU01V0E7RUZvRk0saUJBdENZO0VFNUNoQixnQkhrUitCO0VHalIvQixnQkhzUStCO0FIeUdqQztBRWxWQTtFSXBCRSxnQkhpRlc7RUdoRlgsbUJIZ0ZXO0VHL0VYLFNBQVM7RUFDVCx3Q0h6Q2E7QUhtWmY7QU1sV0E7O0VGTUksY0FBVztFRUhiLGdCSDhOK0I7QUh1SWpDO0FNbFdBOztFQUVFLGNIc1FnQztFR3JRaEMseUJIOFFtQztBSHVGckM7QU03VkE7RUMvRUUsZUFBZTtFQUNmLGdCQUFnQjtBUGdibEI7QU03VkE7RUNwRkUsZUFBZTtFQUNmLGdCQUFnQjtBUHFibEI7QU0vVkE7RUFDRSxxQkFBcUI7QU5rV3ZCO0FNbldBO0VBSUksb0JId1ArQjtBSDJHbkM7QU16VkE7RUZqQ0ksY0FBVztFRW1DYix5QkFBeUI7QU40VjNCO0FNeFZBO0VBQ0UsbUJId0JXO0VDVFAsa0JBdENZO0FKbVhsQjtBTXhWQTtFQUNFLGNBQWM7RUY3Q1osY0FBVztFRStDYixjSDFHZ0I7QUhxY2xCO0FNOVZBO0VBTUkscUJBQXFCO0FONFZ6QjtBUS9jQTtFQ0lFLGVBQWU7RUFHZixZQUFZO0FUNmNkO0FROWNBO0VBQ0UsZ0JMaWdDd0M7RUtoZ0N4QyxzQkxSYTtFS1NiLHlCTE5nQjtFT0xkLHNCUDZPZ0M7RU12T2xDLGVBQWU7RUFHZixZQUFZO0FUc2RkO0FReGNBO0VBRUUscUJBQXFCO0FSMGN2QjtBUXZjQTtFQUNFLHFCQUEwQjtFQUMxQixjQUFjO0FSMGNoQjtBUXZjQTtFSmtDSSxjQUFXO0VJaENiLGNMM0JnQjtBSHFlbEI7QVdqZkE7RVB1RUksZ0JBQVc7RU9yRWIsY1JvQ2U7RVFuQ2YscUJBQXFCO0FYb2Z2QjtBV2pmRTtFQUNFLGNBQWM7QVhvZmxCO0FXL2VBO0VBQ0Usc0JScWxDdUM7RUMzaENyQyxnQkFBVztFT3hEYixXUlRhO0VRVWIseUJSRGdCO0VPWGQscUJQK08rQjtBSGdSbkM7QVd2ZkE7RUFTSSxVQUFVO0VQa0RWLGVBQVc7RU9oRFgsZ0JSNFE2QjtBSHNPakM7QUUxU0E7RVNqTUUsY0FBYztFUHlDWixnQkFBVztFT3ZDYixjUmpCZ0I7QUhnZ0JsQjtBV2xmQTtFUDBDSSxrQkFBVztFT2xDWCxjQUFjO0VBQ2Qsa0JBQWtCO0FYK2V0QjtBVzFlQTtFQUNFLGlCUjRqQ3VDO0VRM2pDdkMsa0JBQWtCO0FYNmVwQjtBWXJoQkU7RUNEQSxXQUFXO0VBQ1gsbUJBQTBCO0VBQzFCLGtCQUF5QjtFQUN6QixrQkFBa0I7RUFDbEIsaUJBQWlCO0FiMGhCbkI7QWN2ZUk7RUZ0REY7SUNXSSxnQlZxTUs7RUhrVlQ7QUFDRjtBYzdlSTtFRnRERjtJQ1dJLGdCVnNNSztFSHVWVDtBQUNGO0FjbmZJO0VGdERGO0lDV0ksZ0JWdU1LO0VINFZUO0FBQ0Y7QWN6Zkk7RUZ0REY7SUNXSSxpQlZ3TU07RUhpV1Y7QUFDRjtBWS9pQkU7RUNQQSxXQUFX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Q1E7SUZSUix1QkFBOEM7RWJrNUM5QztFZTE0Q1E7SUZSUix1QkFBOEM7RWJxNUM5QztFZTc0Q1E7SUZSUixnQkFBOEM7RWJ3NUM5QztFZWg1Q1E7SUZSUix1QkFBOEM7RWIyNUM5QztFZW41Q1E7SUZSUix1QkFBOEM7RWI4NUM5QztFZXQ1Q1E7SUZSUixnQkFBOEM7RWJpNkM5QztFZXo1Q1E7SUZSUix1QkFBOEM7RWJvNkM5QztFZTU1Q1E7SUZSUix1QkFBOEM7RWJ1NkM5QztBQUNGO0FnQjM5Q0E7RUFDRSxXQUFXO0VBQ1gsbUJia0lXO0VhaklYLGNiU2dCO0FIcTlDbEI7QWdCaitDQTs7RUFRSSxnQmJzVmdDO0VhclZoQyxtQkFBbUI7RUFDbkIsNkJiSmM7QUhrK0NsQjtBZ0J4K0NBO0VBY0ksc0JBQXNCO0VBQ3RCLGdDYlRjO0FIdStDbEI7QWdCNytDQTtFQW1CSSw2QmJiYztBSDIrQ2xCO0FnQnI5Q0E7O0VBR0ksZWJnVStCO0FIdXBDbkM7QWdCOThDQTtFQUNFLHlCYm5DZ0I7QUhvL0NsQjtBZ0JsOUNBOztFQUtJLHlCYnZDYztBSHkvQ2xCO0FnQnY5Q0E7O0VBV00sd0JBQTRDO0FoQmk5Q2xEO0FnQjU4Q0E7Ozs7RUFLSSxTQUFTO0FoQjg4Q2I7QWdCdDhDQTtFQUVJLHFDYjFEVztBSGtnRGY7QUt2Z0RFO0VXMkVJLGNidkVZO0Vhd0VaLHNDYnZFUztBSHVnRGY7QWlCbmhERTs7O0VBSUkseUJDc0Y0RDtBbEIrN0NsRTtBaUJ6aERFOzs7O0VBWU0scUJDOEUwRDtBbEJzOENsRTtBS3poREU7RVlpQk0seUJBSnNDO0FqQmdoRDlDO0FpQmpoREU7O0VBU1EseUJBUm9DO0FqQnFoRDlDO0FpQnppREU7OztFQUlJLHlCQ3NGNEQ7QWxCcTlDbEU7QWlCL2lERTs7OztFQVlNLHFCQzhFMEQ7QWxCNDlDbEU7QUsvaURFO0VZaUJNLHlCQUpzQztBakJzaUQ5QztBaUJ2aURFOztFQVNRLHlCQVJvQztBakIyaUQ5QztBaUIvakRFOzs7RUFJSSx5QkNzRjREO0FsQjIrQ2xFO0FpQnJrREU7Ozs7RUFZTSxxQkM4RTBEO0FsQmsvQ2xFO0FLcmtERTtFWWlCTSx5QkFKc0M7QWpCNGpEOUM7QWlCN2pERTs7RUFTUSx5QkFSb0M7QWpCaWtEOUM7QWlCcmxERTs7O0VBSUkseUJDc0Y0RDtBbEJpZ0RsRTtBaUIzbERFOzs7O0VBWU0scUJDOEUwRDtBbEJ3Z0RsRTtBSzNsREU7RVlpQk0seUJBSnNDO0FqQmtsRDlDO0FpQm5sREU7O0VBU1EseUJBUm9DO0FqQnVsRDlDO0FpQjNtREU7OztFQUlJLHlCQ3NGNEQ7QWxCdWhEbEU7QWlCam5ERTs7OztFQVlNLHFCQzhFMEQ7QWxCOGhEbEU7QUtqbkRFO0VZaUJNLHlCQUpzQztBakJ3bUQ5QztBaUJ6bURFOztFQVNRLHlCQVJvQztBakI2bUQ5QztBaUJqb0RFOzs7RUFJSSx5QkNzRjREO0FsQjZpRGxFO0FpQnZvREU7Ozs7RUFZTSxxQkM4RTBEO0FsQm9qRGxFO0FLdm9ERTtFWWlCTSx5QkFKc0M7QWpCOG5EOUM7QWlCL25ERTs7RUFTUSx5QkFSb0M7QWpCbW9EOUM7QWlCdnBERTs7O0VBSUkseUJDc0Y0RDtBbEJta0RsRTtBaUI3cERFOzs7O0VBWU0scUJDOEUwRDtBbEIwa0RsRTtBSzdwREU7RVlpQk0seUJBSnNDO0FqQm9wRDlDO0FpQnJwREU7O0VBU1EseUJBUm9DO0FqQnlwRDlDO0FpQjdxREU7OztFQUlJLHlCQ3NGNEQ7QWxCeWxEbEU7QWlCbnJERTs7OztFQVlNLHFCQzhFMEQ7QWxCZ21EbEU7QUtuckRFO0VZaUJNLHlCQUpzQztBakIwcUQ5QztBaUIzcURFOztFQVNRLHlCQVJvQztBakIrcUQ5QztBaUJuc0RFOzs7RUFJSSxzQ2RRUztBSDZyRGY7QUtsc0RFO0VZaUJNLHNDQUpzQztBakJ5ckQ5QztBaUIxckRFOztFQVNRLHNDQVJvQztBakI4ckQ5QztBZ0J4bURBO0VBR00sV2IzR1M7RWE0R1QseUJicEdZO0VhcUdaLHFCYm1RcUQ7QUhzMkMzRDtBZ0I5bURBO0VBV00sY2I1R1k7RWE2R1oseUJibEhZO0VhbUhaLHFCYmxIWTtBSHl0RGxCO0FnQmxtREE7RUFDRSxXYjNIYTtFYTRIYix5QmJwSGdCO0FIeXREbEI7QWdCdm1EQTs7O0VBT0kscUJiK091RDtBSHUzQzNEO0FnQjdtREE7RUFXSSxTQUFTO0FoQnNtRGI7QWdCam5EQTtFQWdCTSwyQ2IxSVM7QUgrdURmO0FLMXVERTtFVzRJTSxXYmpKTztFYWtKUCw0Q2JsSk87QUhvdkRmO0FjbHJESTtFRWlHQTtJQUVJLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGlDQUFpQztFaEJvbER2QztFZ0J6bERHO0lBU0ssU0FBUztFaEJtbERqQjtBQUNGO0FjOXJESTtFRWlHQTtJQUVJLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGlDQUFpQztFaEJnbUR2QztFZ0JybURHO0lBU0ssU0FBUztFaEIrbERqQjtBQUNGO0FjMXNESTtFRWlHQTtJQUVJLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGlDQUFpQztFaEI0bUR2QztFZ0JqbkRHO0lBU0ssU0FBUztFaEIybURqQjtBQUNGO0FjdHRESTtFRWlHQTtJQUVJLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGlDQUFpQztFaEJ3bkR2QztFZ0I3bkRHO0lBU0ssU0FBUztFaEJ1bkRqQjtBQUNGO0FnQnRvREE7RUFPUSxjQUFjO0VBQ2QsV0FBVztFQUNYLGdCQUFnQjtFQUNoQixpQ0FBaUM7QWhCbW9EekM7QWdCN29EQTtFQWNVLFNBQVM7QWhCbW9EbkI7QW1CaHpEQTtFQUNFLGNBQWM7RUFDZCxXQUFXO0VBQ1gsbUNEdUc4RDtFQ3RHOUQseUJoQjRYa0M7RUN2UTlCLGVBdENZO0VlNUVoQixnQmhCc1IrQjtFZ0JyUi9CLGdCaEIwUitCO0VnQnpSL0IsY2hCRGdCO0VnQkVoQixzQmhCVGE7RWdCVWIsNEJBQTRCO0VBQzVCLHlCaEJQZ0I7RU9OZCxzQlA2T2dDO0VpQjVPOUIsZ0ZqQm9mNEY7RWlCcGY1Rix3RWpCb2Y0RjtBSDQwQ2xHO0FvQjN6REk7RURMSjtJQ01NLHdCQUFnQjtJQUFoQixnQkFBZ0I7RXBCK3pEcEI7QUFDRjtBbUJ0MERBO0VBc0JJLDZCQUE2QjtFQUM3QixTQUFTO0FuQm96RGI7QW1CMzBEQTtFQTRCSSxrQkFBa0I7RUFDbEIsMEJoQnJCYztBSHcwRGxCO0FxQnowREU7RUFDRSxjbEJBYztFa0JDZCxzQmxCUlc7RWtCU1gscUJsQndkc0U7RWtCdmR0RSxVQUFVO0VBS1IsZ0RsQmNXO0FIMHpEakI7QW1CeDFEQTtFQXFDSSxjaEI5QmM7RWdCZ0NkLFVBQVU7QW5Cc3pEZDtBbUI3MURBO0VBcUNJLGNoQjlCYztFZ0JnQ2QsVUFBVTtBbkJzekRkO0FtQjcxREE7RUFxQ0ksY2hCOUJjO0VnQmdDZCxVQUFVO0FuQnN6RGQ7QW1CNzFEQTtFQXFDSSxjaEI5QmM7RWdCZ0NkLFVBQVU7QW5Cc3pEZDtBbUI3MURBO0VBaURJLHlCaEI5Q2M7RWdCZ0RkLFVBQVU7QW5CK3lEZDtBbUIzeURBO0VBT0ksY2hCdERjO0VnQnVEZCxzQmhCOURXO0FIczJEZjtBbUJueURBOztFQUVFLGNBQWM7RUFDZCxXQUFXO0FuQnN5RGI7QW1CNXhEQTtFQUNFLGlDRHdCOEQ7RUN2QjlELG9DRHVCOEQ7RUN0QjlELGdCQUFnQjtFZmxCZCxrQkFBVztFZW9CYixnQmhCNE0rQjtBSG1sRGpDO0FtQjV4REE7RUFDRSwrQkRnQjhEO0VDZjlELGtDRGU4RDtFZGUxRCxrQkF0Q1k7RWVVaEIsZ0JoQnlJK0I7QUhzcERqQztBbUI1eERBO0VBQ0UsZ0NEUzhEO0VDUjlELG1DRFE4RDtFZGUxRCxtQkF0Q1k7RWVpQmhCLGdCaEJtSStCO0FINHBEakM7QW1CdHhEQTtFQUNFLGNBQWM7RUFDZCxXQUFXO0VBQ1gsbUJBQTJCO0VBQzNCLGdCQUFnQjtFZlFaLGVBdENZO0VlZ0NoQixnQmhCK0srQjtFZ0I5Sy9CLGNoQjFHZ0I7RWdCMkdoQiw2QkFBNkI7RUFDN0IseUJBQXlCO0VBQ3pCLG1CQUFtQztBbkJ5eERyQztBbUJueURBO0VBY0ksZ0JBQWdCO0VBQ2hCLGVBQWU7QW5CeXhEbkI7QW1CN3dEQTtFQUNFLGtDRC9COEQ7RUNnQzlELHVCaEJnUWlDO0VDalI3QixtQkF0Q1k7RWV5RGhCLGdCaEIyRitCO0VPeE83QixxQlArTytCO0FIK3FEbkM7QW1CN3dEQTtFQUNFLGdDRHZDOEQ7RUN3QzlELG9CaEI2UGdDO0VDdFI1QixrQkF0Q1k7RWVpRWhCLGdCaEJrRitCO0VPdk83QixxQlA4TytCO0FId3JEbkM7QW1CNXdEQTtFQUdJLFlBQVk7QW5CNndEaEI7QW1CendEQTtFQUNFLFlBQVk7QW5CNHdEZDtBbUJwd0RBO0VBQ0UsbUJoQnNWMEM7QUhpN0M1QztBbUJwd0RBO0VBQ0UsY0FBYztFQUNkLG1CaEJ1VTRDO0FIZzhDOUM7QW1CL3ZEQTtFQUNFLG9CQUFhO0VBQWIsYUFBYTtFQUNiLGVBQWU7RUFDZixrQkFBMEM7RUFDMUMsaUJBQXlDO0FuQmt3RDNDO0FtQnR3REE7O0VBUUksa0JBQTBDO0VBQzFDLGlCQUF5QztBbkJtd0Q3QztBbUIxdkRBO0VBQ0Usa0JBQWtCO0VBQ2xCLGNBQWM7RUFDZCxxQmhCNFM2QztBSGk5Qy9DO0FtQjF2REE7RUFDRSxrQkFBa0I7RUFDbEIsa0JoQndTMkM7RWdCdlMzQyxxQmhCc1M2QztBSHU5Qy9DO0FtQmh3REE7O0VBUUksY2hCaE5jO0FINjhEbEI7QW1CenZEQTtFQUNFLGdCQUFnQjtBbkI0dkRsQjtBbUJ6dkRBO0VBQ0UsMkJBQW9CO0VBQXBCLG9CQUFvQjtFQUNwQix5QkFBbUI7VUFBbkIsbUJBQW1CO0VBQ25CLGVBQWU7RUFDZixxQmhCeVI0QztBSG0rQzlDO0FtQmh3REE7RUFRSSxnQkFBZ0I7RUFDaEIsYUFBYTtFQUNiLHVCaEJvUjRDO0VnQm5SNUMsY0FBYztBbkI0dkRsQjtBcUJoOERFO0VBQ0UsYUFBYTtFQUNiLFdBQVc7RUFDWCxtQmxCNmMwQztFQ3BiMUMsY0FBVztFaUJ2QlgsY2xCTmE7QUh5OERqQjtBcUJoOERFO0VBQ0Usa0JBQWtCO0VBQ2xCLFNBQVM7RUFDVCxVQUFVO0VBQ1YsYUFBYTtFQUNiLGVBQWU7RUFDZix1QmxCbXlCcUM7RWtCbHlCckMsaUJBQWlCO0VqQm9FZixtQkF0Q1k7RWlCNUJkLGdCbEIyTzZCO0VrQjFPN0IsV2xCdkRXO0VrQndEWCx3Q2xCcEJhO0VPdENiLHNCUDZPZ0M7QUhpeERwQztBcUJuK0RJOzs7O0VBc0NFLGNBQWM7QXJCbzhEcEI7QXFCMStESTtFQTRDRSxxQmxCakNXO0VrQm9DVCxvQ0hpQ3dEO0VHaEN4RCxpUkhwQ21JO0VHcUNuSSw0QkFBNEI7RUFDNUIsMkRBQTZEO0VBQzdELGdFSDZCd0Q7QWxCbTZEaEU7QXFCbi9ESTtFQXVESSxxQmxCNUNTO0VrQjZDVCxnRGxCN0NTO0FINitEakI7QXFCeC9ESTtFQWlFSSxvQ0hld0Q7RUdkeEQsa0ZIY3dEO0FsQjY2RGhFO0FxQjcvREk7RUF5RUUscUJsQjlEVztFa0JpRVQsdUNISXdEO0VHSHhELHVqQkFBOEo7QXJCczdEdEs7QXFCbmdFSTtFQWlGSSxxQmxCdEVTO0VrQnVFVCxnRGxCdkVTO0FINi9EakI7QXFCeGdFSTtFQTBGSSxjbEIvRVM7QUhpZ0VqQjtBcUI1Z0VJOzs7RUErRkksY0FBYztBckJtN0R0QjtBcUJsaEVJO0VBdUdJLGNsQjVGUztBSDJnRWpCO0FxQnRoRUk7RUEwR00scUJsQi9GTztBSCtnRWpCO0FxQjFoRUk7RUFnSE0scUJBQWtDO0VDMUl4Qyx5QkQySStDO0FyQjg2RG5EO0FxQi9oRUk7RUF1SE0sZ0RsQjVHTztBSHdoRWpCO0FxQm5pRUk7RUEySE0scUJsQmhITztBSDRoRWpCO0FxQnZpRUk7RUFxSUkscUJsQjFIUztBSGdpRWpCO0FxQjNpRUk7RUEwSU0scUJsQi9ITztFa0JnSVAsZ0RsQmhJTztBSHFpRWpCO0FxQnBpRUU7RUFDRSxhQUFhO0VBQ2IsV0FBVztFQUNYLG1CbEI2YzBDO0VDcGIxQyxjQUFXO0VpQnZCWCxjbEJUYTtBSGdqRWpCO0FxQnBpRUU7RUFDRSxrQkFBa0I7RUFDbEIsU0FBUztFQUNULFVBQVU7RUFDVixhQUFhO0VBQ2IsZUFBZTtFQUNmLHVCbEJteUJxQztFa0JseUJyQyxpQkFBaUI7RWpCb0VmLG1CQXRDWTtFaUI1QmQsZ0JsQjJPNkI7RWtCMU83QixXbEJ2RFc7RWtCd0RYLHdDbEJ2QmE7RU9uQ2Isc0JQNk9nQztBSHEzRHBDO0FxQnZrRUk7Ozs7RUFzQ0UsY0FBYztBckJ3aUVwQjtBcUI5a0VJO0VBNENFLHFCbEJwQ1c7RWtCdUNULG9DSGlDd0Q7RUdoQ3hELDRVSHBDbUk7RUdxQ25JLDRCQUE0QjtFQUM1QiwyREFBNkQ7RUFDN0QsZ0VINkJ3RDtBbEJ1Z0VoRTtBcUJ2bEVJO0VBdURJLHFCbEIvQ1M7RWtCZ0RULGdEbEJoRFM7QUhvbEVqQjtBcUI1bEVJO0VBaUVJLG9DSGV3RDtFR2R4RCxrRkhjd0Q7QWxCaWhFaEU7QXFCam1FSTtFQXlFRSxxQmxCakVXO0VrQm9FVCx1Q0hJd0Q7RUdIeEQsa25CQUE4SjtBckIwaEV0SztBcUJ2bUVJO0VBaUZJLHFCbEJ6RVM7RWtCMEVULGdEbEIxRVM7QUhvbUVqQjtBcUI1bUVJO0VBMEZJLGNsQmxGUztBSHdtRWpCO0FxQmhuRUk7OztFQStGSSxjQUFjO0FyQnVoRXRCO0FxQnRuRUk7RUF1R0ksY2xCL0ZTO0FIa25FakI7QXFCMW5FSTtFQTBHTSxxQmxCbEdPO0FIc25FakI7QXFCOW5FSTtFQWdITSxxQkFBa0M7RUMxSXhDLHlCRDJJK0M7QXJCa2hFbkQ7QXFCbm9FSTtFQXVITSxnRGxCL0dPO0FIK25FakI7QXFCdm9FSTtFQTJITSxxQmxCbkhPO0FIbW9FakI7QXFCM29FSTtFQXFJSSxxQmxCN0hTO0FIdW9FakI7QXFCL29FSTtFQTBJTSxxQmxCbElPO0VrQm1JUCxnRGxCbklPO0FING9FakI7QW1CMzZEQTtFQUNFLG9CQUFhO0VBQWIsYUFBYTtFQUNiLDhCQUFtQjtFQUFuQiw2QkFBbUI7VUFBbkIsbUJBQW1CO0VBQ25CLHlCQUFtQjtVQUFuQixtQkFBbUI7QW5CODZEckI7QW1CajdEQTtFQVNJLFdBQVc7QW5CNDZEZjtBY2xvRUk7RUs2TUo7SUFlTSxvQkFBYTtJQUFiLGFBQWE7SUFDYix5QkFBbUI7WUFBbkIsbUJBQW1CO0lBQ25CLHdCQUF1QjtZQUF2Qix1QkFBdUI7SUFDdkIsZ0JBQWdCO0VuQjI2RHBCO0VtQjc3REY7SUF1Qk0sb0JBQWE7SUFBYixhQUFhO0lBQ2IsbUJBQWM7WUFBZCxjQUFjO0lBQ2QsOEJBQW1CO0lBQW5CLDZCQUFtQjtZQUFuQixtQkFBbUI7SUFDbkIseUJBQW1CO1lBQW5CLG1CQUFtQjtJQUNuQixnQkFBZ0I7RW5CeTZEcEI7RW1CcDhERjtJQWdDTSxxQkFBcUI7SUFDckIsV0FBVztJQUNYLHNCQUFzQjtFbkJ1NkQxQjtFbUJ6OERGO0lBdUNNLHFCQUFxQjtFbkJxNkR6QjtFbUI1OERGOztJQTRDTSxXQUFXO0VuQm82RGY7RW1CaDlERjtJQWtETSxvQkFBYTtJQUFiLGFBQWE7SUFDYix5QkFBbUI7WUFBbkIsbUJBQW1CO0lBQ25CLHdCQUF1QjtZQUF2Qix1QkFBdUI7SUFDdkIsV0FBVztJQUNYLGVBQWU7RW5CaTZEbkI7RW1CdjlERjtJQXlETSxrQkFBa0I7SUFDbEIsY0FBYztJQUNkLGFBQWE7SUFDYixxQmhCMkx3QztJZ0IxTHhDLGNBQWM7RW5CaTZEbEI7RW1COTlERjtJQWlFTSx5QkFBbUI7WUFBbkIsbUJBQW1CO0lBQ25CLHdCQUF1QjtZQUF2Qix1QkFBdUI7RW5CZzZEM0I7RW1CbCtERjtJQXFFTSxnQkFBZ0I7RW5CZzZEcEI7QUFDRjtBdUJ6dUVBO0VBQ0UscUJBQXFCO0VBRXJCLGdCcEIwUitCO0VvQnpSL0IsY3BCTWdCO0VvQkxoQixrQkFBa0I7RUFFbEIsc0JBQXNCO0VBQ3RCLGVBQXNEO0VBQ3RELHlCQUFpQjtFQUFqQixzQkFBaUI7RUFBakIscUJBQWlCO0VBQWpCLGlCQUFpQjtFQUNqQiw2QkFBNkI7RUFDN0IsNkJBQTJDO0VDdUYzQyx5QnJCOFJrQztFQ3ZROUIsZUF0Q1k7RW9CaUJoQixnQnJCOEwrQjtFT25TN0Isc0JQNk9nQztFaUI1TzlCLDZJakI2YjZJO0VpQjdiN0kscUlqQjZiNkk7QUg2ekRuSjtBb0JydkVJO0VHTEo7SUhNTSx3QkFBZ0I7SUFBaEIsZ0JBQWdCO0VwQnl2RXBCO0FBQ0Y7QUsxdkVFO0VrQlVFLGNwQk5jO0VvQk9kLHFCQUFxQjtBdkJvdkV6QjtBdUJyd0VBO0VBc0JJLFVBQVU7RUFDVixnRHBCT2E7QUg0dUVqQjtBdUIxd0VBO0VBNkJJLGFwQm9aNkI7QUg2MURqQztBdUJsdUVBOztFQUVFLG9CQUFvQjtBdkJxdUV0QjtBdUI1dEVFO0VDdkRBLFdyQkNhO0VtQkRYLHlCbkI4QmE7RXFCNUJmLHFCckI0QmU7QUgydkVqQjtBS254RUU7RW1CQUUsV3JCTFc7RW1CRFgseUJFRG9GO0VBU3BGLHFCQVR5SDtBeEJneUU3SDtBd0JweEVFO0VBRUUsV3JCWlc7RW1CRFgseUJFRG9GO0VBZ0JwRixxQkFoQnlIO0VBcUJ2SCxnREFBaUY7QXhCa3hFdkY7QXdCN3dFRTtFQUVFLFdyQjFCVztFcUIyQlgseUJyQkVhO0VxQkRiLHFCckJDYTtBSDh3RWpCO0F3Qnh3RUU7O0VBR0UsV3JCdENXO0VxQnVDWCx5QkF6Q3VLO0VBNkN2SyxxQkE3QytNO0F4Qm96RW5OO0F3QnJ3RUk7O0VBS0ksZ0RBQWlGO0F4QnF3RXpGO0F1Qmp3RUU7RUN2REEsV3JCQ2E7RW1CRFgseUJuQk9jO0VxQkxoQixxQnJCS2dCO0FIdXpFbEI7QUt4ekVFO0VtQkFFLFdyQkxXO0VtQkRYLHlCRURvRjtFQVNwRixxQkFUeUg7QXhCcTBFN0g7QXdCenpFRTtFQUVFLFdyQlpXO0VtQkRYLHlCRURvRjtFQWdCcEYscUJBaEJ5SDtFQXFCdkgsaURBQWlGO0F4QnV6RXZGO0F3Qmx6RUU7RUFFRSxXckIxQlc7RXFCMkJYLHlCckJyQmM7RXFCc0JkLHFCckJ0QmM7QUgwMEVsQjtBd0I3eUVFOztFQUdFLFdyQnRDVztFcUJ1Q1gseUJBekN1SztFQTZDdksscUJBN0MrTTtBeEJ5MUVuTjtBd0IxeUVJOztFQUtJLGlEQUFpRjtBeEIweUV6RjtBdUJ0eUVFO0VDdkRBLFdyQkNhO0VtQkRYLHlCbkJxQ2E7RXFCbkNmLHFCckJtQ2U7QUg4ekVqQjtBSzcxRUU7RW1CQUUsV3JCTFc7RW1CRFgseUJFRG9GO0VBU3BGLHFCQVR5SDtBeEIwMkU3SDtBd0I5MUVFO0VBRUUsV3JCWlc7RW1CRFgseUJFRG9GO0VBZ0JwRixxQkFoQnlIO0VBcUJ2SCwrQ0FBaUY7QXhCNDFFdkY7QXdCdjFFRTtFQUVFLFdyQjFCVztFcUIyQlgseUJyQlNhO0VxQlJiLHFCckJRYTtBSGkxRWpCO0F3QmwxRUU7O0VBR0UsV3JCdENXO0VxQnVDWCx5QkF6Q3VLO0VBNkN2SyxxQkE3QytNO0F4QjgzRW5OO0F3Qi8wRUk7O0VBS0ksK0NBQWlGO0F4QiswRXpGO0F1QjMwRUU7RUN2REEsV3JCQ2E7RW1CRFgseUJuQnVDYTtFcUJyQ2YscUJyQnFDZTtBSGkyRWpCO0FLbDRFRTtFbUJBRSxXckJMVztFbUJEWCx5QkVEb0Y7RUFTcEYscUJBVHlIO0F4Qis0RTdIO0F3Qm40RUU7RUFFRSxXckJaVztFbUJEWCx5QkVEb0Y7RUFnQnBGLHFCQWhCeUg7RUFxQnZILGdEQUFpRjtBeEJpNEV2RjtBd0I1M0VFO0VBRUUsV3JCMUJXO0VxQjJCWCx5QnJCV2E7RXFCVmIscUJyQlVhO0FIbzNFakI7QXdCdjNFRTs7RUFHRSxXckJ0Q1c7RXFCdUNYLHlCQXpDdUs7RUE2Q3ZLLHFCQTdDK007QXhCbTZFbk47QXdCcDNFSTs7RUFLSSxnREFBaUY7QXhCbzNFekY7QXVCaDNFRTtFQ3ZEQSxjckJVZ0I7RW1CVmQseUJuQm9DYTtFcUJsQ2YscUJyQmtDZTtBSHk0RWpCO0FLdjZFRTtFbUJBRSxjckJJYztFbUJWZCx5QkVEb0Y7RUFTcEYscUJBVHlIO0F4Qm83RTdIO0F3Qng2RUU7RUFFRSxjckJIYztFbUJWZCx5QkVEb0Y7RUFnQnBGLHFCQWhCeUg7RUFxQnZILGdEQUFpRjtBeEJzNkV2RjtBd0JqNkVFO0VBRUUsY3JCakJjO0VxQmtCZCx5QnJCUWE7RXFCUGIscUJyQk9hO0FINDVFakI7QXdCNTVFRTs7RUFHRSxjckI3QmM7RXFCOEJkLHlCQXpDdUs7RUE2Q3ZLLHFCQTdDK007QXhCdzhFbk47QXdCejVFSTs7RUFLSSxnREFBaUY7QXhCeTVFekY7QXVCcjVFRTtFQ3ZEQSxXckJDYTtFbUJEWCx5Qm5Ca0NhO0VxQmhDZixxQnJCZ0NlO0FIZzdFakI7QUs1OEVFO0VtQkFFLFdyQkxXO0VtQkRYLHlCRURvRjtFQVNwRixxQkFUeUg7QXhCeTlFN0g7QXdCNzhFRTtFQUVFLFdyQlpXO0VtQkRYLHlCRURvRjtFQWdCcEYscUJBaEJ5SDtFQXFCdkgsK0NBQWlGO0F4QjI4RXZGO0F3QnQ4RUU7RUFFRSxXckIxQlc7RXFCMkJYLHlCckJNYTtFcUJMYixxQnJCS2E7QUhtOEVqQjtBd0JqOEVFOztFQUdFLFdyQnRDVztFcUJ1Q1gseUJBekN1SztFQTZDdksscUJBN0MrTTtBeEI2K0VuTjtBd0I5N0VJOztFQUtJLCtDQUFpRjtBeEI4N0V6RjtBdUIxN0VFO0VDdkRBLGNyQlVnQjtFbUJWZCx5Qm5CRWM7RXFCQWhCLHFCckJBZ0I7QUhxL0VsQjtBS2ovRUU7RW1CQUUsY3JCSWM7RW1CVmQseUJFRG9GO0VBU3BGLHFCQVR5SDtBeEI4L0U3SDtBd0JsL0VFO0VBRUUsY3JCSGM7RW1CVmQseUJFRG9GO0VBZ0JwRixxQkFoQnlIO0VBcUJ2SCxpREFBaUY7QXhCZy9FdkY7QXdCMytFRTtFQUVFLGNyQmpCYztFcUJrQmQseUJyQjFCYztFcUIyQmQscUJyQjNCYztBSHdnRmxCO0F3QnQrRUU7O0VBR0UsY3JCN0JjO0VxQjhCZCx5QkF6Q3VLO0VBNkN2SyxxQkE3QytNO0F4QmtoRm5OO0F3Qm4rRUk7O0VBS0ksaURBQWlGO0F4Qm0rRXpGO0F1Qi85RUU7RUN2REEsV3JCQ2E7RW1CRFgseUJuQlNjO0VxQlBoQixxQnJCT2dCO0FIbWhGbEI7QUt0aEZFO0VtQkFFLFdyQkxXO0VtQkRYLHlCRURvRjtFQVNwRixxQkFUeUg7QXhCbWlGN0g7QXdCdmhGRTtFQUVFLFdyQlpXO0VtQkRYLHlCRURvRjtFQWdCcEYscUJBaEJ5SDtFQXFCdkgsOENBQWlGO0F4QnFoRnZGO0F3QmhoRkU7RUFFRSxXckIxQlc7RXFCMkJYLHlCckJuQmM7RXFCb0JkLHFCckJwQmM7QUhzaUZsQjtBd0IzZ0ZFOztFQUdFLFdyQnRDVztFcUJ1Q1gseUJBekN1SztFQTZDdksscUJBN0MrTTtBeEJ1akZuTjtBd0J4Z0ZJOztFQUtJLDhDQUFpRjtBeEJ3Z0Z6RjtBdUI5L0VFO0VDSEEsY3JCNUJlO0VxQjZCZixxQnJCN0JlO0FIa2lGakI7QUsxakZFO0VtQndERSxXckI3RFc7RXFCOERYLHlCckJqQ2E7RXFCa0NiLHFCckJsQ2E7QUh3aUZqQjtBd0JuZ0ZFO0VBRUUsK0NyQnZDYTtBSDRpRmpCO0F3QmxnRkU7RUFFRSxjckI1Q2E7RXFCNkNiLDZCQUE2QjtBeEJvZ0ZqQztBd0JqZ0ZFOztFQUdFLFdyQmhGVztFcUJpRlgseUJyQnBEYTtFcUJxRGIscUJyQnJEYTtBSHdqRmpCO0F3QmpnRkk7O0VBS0ksK0NyQjVEUztBSDZqRmpCO0F1QjloRkU7RUNIQSxjckJuRGdCO0VxQm9EaEIscUJyQnBEZ0I7QUh5bEZsQjtBSzFsRkU7RW1Cd0RFLFdyQjdEVztFcUI4RFgseUJyQnhEYztFcUJ5RGQscUJyQnpEYztBSCtsRmxCO0F3Qm5pRkU7RUFFRSxpRHJCOURjO0FIbW1GbEI7QXdCbGlGRTtFQUVFLGNyQm5FYztFcUJvRWQsNkJBQTZCO0F4Qm9pRmpDO0F3QmppRkU7O0VBR0UsV3JCaEZXO0VxQmlGWCx5QnJCM0VjO0VxQjRFZCxxQnJCNUVjO0FIK21GbEI7QXdCamlGSTs7RUFLSSxpRHJCbkZVO0FIb25GbEI7QXVCOWpGRTtFQ0hBLGNyQnJCZTtFcUJzQmYscUJyQnRCZTtBSDJsRmpCO0FLMW5GRTtFbUJ3REUsV3JCN0RXO0VxQjhEWCx5QnJCMUJhO0VxQjJCYixxQnJCM0JhO0FIaW1GakI7QXdCbmtGRTtFQUVFLCtDckJoQ2E7QUhxbUZqQjtBd0Jsa0ZFO0VBRUUsY3JCckNhO0VxQnNDYiw2QkFBNkI7QXhCb2tGakM7QXdCamtGRTs7RUFHRSxXckJoRlc7RXFCaUZYLHlCckI3Q2E7RXFCOENiLHFCckI5Q2E7QUhpbkZqQjtBd0Jqa0ZJOztFQUtJLCtDckJyRFM7QUhzbkZqQjtBdUI5bEZFO0VDSEEsY3JCbkJlO0VxQm9CZixxQnJCcEJlO0FIeW5GakI7QUsxcEZFO0VtQndERSxXckI3RFc7RXFCOERYLHlCckJ4QmE7RXFCeUJiLHFCckJ6QmE7QUgrbkZqQjtBd0JubUZFO0VBRUUsZ0RyQjlCYTtBSG1vRmpCO0F3QmxtRkU7RUFFRSxjckJuQ2E7RXFCb0NiLDZCQUE2QjtBeEJvbUZqQztBd0JqbUZFOztFQUdFLFdyQmhGVztFcUJpRlgseUJyQjNDYTtFcUI0Q2IscUJyQjVDYTtBSCtvRmpCO0F3QmptRkk7O0VBS0ksZ0RyQm5EUztBSG9wRmpCO0F1QjluRkU7RUNIQSxjckJ0QmU7RXFCdUJmLHFCckJ2QmU7QUg0cEZqQjtBSzFyRkU7RW1Cd0RFLGNyQnBEYztFcUJxRGQseUJyQjNCYTtFcUI0QmIscUJyQjVCYTtBSGtxRmpCO0F3Qm5vRkU7RUFFRSwrQ3JCakNhO0FIc3FGakI7QXdCbG9GRTtFQUVFLGNyQnRDYTtFcUJ1Q2IsNkJBQTZCO0F4Qm9vRmpDO0F3QmpvRkU7O0VBR0UsY3JCdkVjO0VxQndFZCx5QnJCOUNhO0VxQitDYixxQnJCL0NhO0FIa3JGakI7QXdCam9GSTs7RUFLSSwrQ3JCdERTO0FIdXJGakI7QXVCOXBGRTtFQ0hBLGNyQnhCZTtFcUJ5QmYscUJyQnpCZTtBSDhyRmpCO0FLMXRGRTtFbUJ3REUsV3JCN0RXO0VxQjhEWCx5QnJCN0JhO0VxQjhCYixxQnJCOUJhO0FIb3NGakI7QXdCbnFGRTtFQUVFLCtDckJuQ2E7QUh3c0ZqQjtBd0JscUZFO0VBRUUsY3JCeENhO0VxQnlDYiw2QkFBNkI7QXhCb3FGakM7QXdCanFGRTs7RUFHRSxXckJoRlc7RXFCaUZYLHlCckJoRGE7RXFCaURiLHFCckJqRGE7QUhvdEZqQjtBd0JqcUZJOztFQUtJLCtDckJ4RFM7QUh5dEZqQjtBdUI5ckZFO0VDSEEsY3JCeERnQjtFcUJ5RGhCLHFCckJ6RGdCO0FIOHZGbEI7QUsxdkZFO0VtQndERSxjckJwRGM7RXFCcURkLHlCckI3RGM7RXFCOERkLHFCckI5RGM7QUhvd0ZsQjtBd0Juc0ZFO0VBRUUsaURyQm5FYztBSHd3RmxCO0F3QmxzRkU7RUFFRSxjckJ4RWM7RXFCeUVkLDZCQUE2QjtBeEJvc0ZqQztBd0Jqc0ZFOztFQUdFLGNyQnZFYztFcUJ3RWQseUJyQmhGYztFcUJpRmQscUJyQmpGYztBSG94RmxCO0F3QmpzRkk7O0VBS0ksaURyQnhGVTtBSHl4RmxCO0F1Qjl0RkU7RUNIQSxjckJqRGdCO0VxQmtEaEIscUJyQmxEZ0I7QUh1eEZsQjtBSzF4RkU7RW1Cd0RFLFdyQjdEVztFcUI4RFgseUJyQnREYztFcUJ1RGQscUJyQnZEYztBSDZ4RmxCO0F3Qm51RkU7RUFFRSw4Q3JCNURjO0FIaXlGbEI7QXdCbHVGRTtFQUVFLGNyQmpFYztFcUJrRWQsNkJBQTZCO0F4Qm91RmpDO0F3Qmp1RkU7O0VBR0UsV3JCaEZXO0VxQmlGWCx5QnJCekVjO0VxQjBFZCxxQnJCMUVjO0FINnlGbEI7QXdCanVGSTs7RUFLSSw4Q3JCakZVO0FIa3pGbEI7QXVCbnZGQTtFQUNFLGdCcEJvTitCO0VvQm5OL0IsY3BCNUNlO0VvQjZDZixxQnBCa0c0QztBSG9wRjlDO0FLM3pGRTtFa0J3RUUsY3BCZ0c4RDtFb0IvRjlELDBCcEJnRytDO0FIdXBGbkQ7QXVCOXZGQTtFQVlJLDBCcEIyRitDO0VvQjFGL0MsZ0JBQWdCO0F2QnN2RnBCO0F1Qm53RkE7RUFrQkksY3BCbkZjO0VvQm9GZCxvQkFBb0I7QXZCcXZGeEI7QXVCMXVGQTtFQ0pFLG9CckI2U2dDO0VDdFI1QixrQkF0Q1k7RW9CaUJoQixnQnJCa0krQjtFT3ZPN0IscUJQOE8rQjtBSDBtRm5DO0F1Qjd1RkE7RUNSRSx1QnJCd1NpQztFQ2pSN0IsbUJBdENZO0VvQmlCaEIsZ0JyQm1JK0I7RU94TzdCLHFCUCtPK0I7QUhnbkZuQztBdUIzdUZBO0VBQ0UsY0FBYztFQUNkLFdBQVc7QXZCOHVGYjtBdUJodkZBO0VBTUksa0JwQjZUK0I7QUhpN0VuQztBdUJ6dUZBOzs7RUFJSSxXQUFXO0F2QjJ1RmY7QXlCbjNGQTtFTE1NLHdDakI4UDJDO0VpQjlQM0MsZ0NqQjhQMkM7QUhtbkZqRDtBb0I1MkZJO0VLWEo7SUxZTSx3QkFBZ0I7SUFBaEIsZ0JBQWdCO0VwQmczRnBCO0FBQ0Y7QXlCNzNGQTtFQUlJLFVBQVU7QXpCNjNGZDtBeUJ6M0ZB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OztFQTJCSSxVQUFVO0E5QnV3R2Q7QThCbHlHQTtFQWdDSSxVQUFVO0E5QnN3R2Q7QThCdHlHQTs7RXBCZUksMEJvQnNCbUQ7RXBCckJuRCw2Qm9CcUJtRDtBOUJ1d0d2RDtBOEI1eUdBOztFcEI2QkkseUJvQlNtRDtFcEJSbkQsNEJvQlFtRDtBOUI0d0d2RDtBOEJsekdBO0VBNENJLG9CQUFhO0VBQWIsYUFBYTtFQUNiLHlCQUFtQjtVQUFuQixtQkFBbUI7QTlCMHdHdkI7QThCdnpHQTs7RXBCZUksMEJvQmlDNkU7RXBCaEM3RSw2Qm9CZ0M2RTtBOUI2d0dqRjtBOEI3ekdBO0VwQjZCSSx5Qm9Cb0JzRTtFcEJuQnRFLDRCb0JtQnNFO0E5Qml4RzFFO0E4QnR3R0E7O0VBRUUsb0JBQWE7RUFBYixhQUFhO0E5Qnl3R2Y7QThCM3dHQTs7RUFRSSxrQkFBa0I7RUFDbEIsVUFBVTtBOUJ3d0dkO0E4Qmp4R0E7O0VBWU0sVUFBVTtBOUIwd0doQjtBOEJ0eEdBOzs7Ozs7OztFQW9CSSxpQjNCeUo2QjtBSG9uR2pDO0E4Qnp3R0E7RUFBdUIsa0IzQnFKVTtBSHduR2pDO0E4QjV3R0E7RUFBc0IsaUIzQm9KVztBSDRuR2pDO0E4Qnh3R0E7RUFDRSxvQkFBYTtFQUFiLGFBQWE7RUFDYix5QkFBbUI7VUFBbkIsbUJBQW1CO0VBQ25CLHlCM0JnU2tDO0UyQi9SbEMsZ0JBQWdCO0UxQndCWixlQXRDWTtFMEJnQmhCLGdCM0IwTCtCO0UyQnpML0IsZ0IzQjhMK0I7RTJCN0wvQixjM0I3RmdCO0UyQjhGaEIsa0JBQWtCO0VBQ2xCLG1CQUFtQjtFQUNuQix5QjNCckdnQjtFMkJzR2hCLHlCM0JwR2dCO0VPTmQsc0JQNk9nQztBSHlvR3BDO0E4Qnh4R0E7O0VBa0JJLGFBQWE7QTlCMndHakI7QThCandHQTs7RUFFRSxnQ1pqQjhEO0FsQnF4R2hFO0E4Qmp3R0E7Ozs7OztFQU1FLG9CM0IyUWdDO0VDdFI1QixrQkF0Q1k7RTBCbURoQixnQjNCZ0crQjtFT3ZPN0IscUJQOE8rQjtBSDhwR25DO0E4Qmp3R0E7O0VBRUUsa0NabEM4RDtBbEJzeUdoRTtBOEJqd0dBOzs7Ozs7RUFNRSx1QjNCcVBpQztFQ2pSN0IsbUJBdENZO0UwQm9FaEIsZ0IzQmdGK0I7RU94TzdCLHFCUCtPK0I7QUg4cUduQztBOEJqd0dBOztFQUVFLHNCQUEwRTtBOUJvd0c1RTtBOEJ6dkdBOzs7Ozs7RXBCekpJLDBCb0IrSjRCO0VwQjlKNUIsNkJvQjhKNEI7QTlCNnZHaEM7QThCMXZHQTs7Ozs7O0VwQnBKSSx5Qm9CMEoyQjtFcEJ6SjNCLDRCb0J5SjJCO0E5Qjh2Ry9CO0ErQmw3R0E7RUFDRSxrQkFBa0I7RUFDbEIsY0FBYztFQUNkLGtCQUErQztFQUMvQyxvQkFBcUU7QS9CcTdHdkU7QStCbDdHQTtFQUNFLDJCQUFvQjtFQUFwQixvQkFBb0I7RUFDcEIsa0I1QjZmMEM7QUh3N0Y1QztBK0JsN0dBO0VBQ0Usa0JBQWtCO0VBQ2xCLE9BQU87RUFDUCxXQUFXO0VBQ1gsVzVCeWYwQztFNEJ4ZjFDLGVBQWtGO0VBQ2xGLFVBQVU7QS9CcTdHWjtBK0IzN0dBO0VBU0ksVzVCdkJXO0U0QndCWCxxQjVCS2E7RW1COUJiLHlCbkI4QmE7QUhrN0dqQjtBK0JqOEdBO0VBb0JNLGdENUJMVztBSHM3R2pCO0ErQnI4R0E7RUF5QkkscUI1QjBic0U7QUhzL0YxRTtBK0J6OEdBO0VBNkJJLFc1QjNDVztFNEI0Q1gseUI1QnNmOEU7RTRCcmY5RSxxQjVCcWY4RTtBSDI3RmxGO0ErQi84R0E7RUF1Q00sYzVCL0NZO0FIMjlHbEI7QStCbjlHQTtFQTBDUSx5QjVCdERVO0FIbStHbEI7QStCbjZHQTtFQUNFLGtCQUFrQjtFQUNsQixnQkFBZ0I7RUFFaEIsbUJBQW1CO0EvQnE2R3JCO0ErQno2R0E7RUFTSSxrQkFBa0I7RUFDbEIsWUFBK0U7RUFDL0UsYUFBK0Q7RUFDL0QsY0FBYztFQUNkLFc1QjRid0M7RTRCM2J4QyxZNUIyYndDO0U0QjFieEMsb0JBQW9CO0VBQ3BCLFdBQVc7RUFDWCxzQjVCbkZXO0U0Qm9GWCx5QjVCb0o2QjtBSGd4R2pDO0ErQnQ3R0E7RUF3Qkksa0JBQWtCO0VBQ2xCLFlBQStFO0VBQy9FLGFBQStEO0VBQy9ELGNBQWM7RUFDZCxXNUI2YXdDO0U0QjVheEMsWTVCNGF3QztFNEIzYXhDLFdBQVc7RUFDWCxtQ0FBZ0U7QS9CazZHcEU7QStCejVHQTtFckI1R0ksc0JQNk9nQztBSDR4R3BDO0ErQjc1R0E7RUFPTSxrT2I1RXFJO0FsQnMrRzNJO0ErQmo2R0E7RUFhTSxxQjVCMUZXO0VtQjlCYix5Qm5COEJhO0FIbS9HakI7QStCdDZHQTtFQWtCTSwrS2J2RnFJO0FsQisrRzNJO0ErQjE2R0E7RUF3Qk0sd0M1QnJHVztBSDIvR2pCO0ErQjk2R0E7RUEyQk0sd0M1QnhHVztBSCsvR2pCO0ErQjk0R0E7RUFHSSxrQjVCOForQztBSGkvRm5EO0ErQmw1R0E7RUFRTSw4S2JqSHFJO0FsQisvRzNJO0ErQnQ1R0E7RUFjTSx3QzVCL0hXO0FIMmdIakI7QStCbDRHQTtFQUNFLHFCQUEyRDtBL0JxNEc3RDtBK0J0NEdBO0VBS00sY0FBcUQ7RUFDckQsYzVCc1krRTtFNEJyWS9FLG1CQUFtQjtFQUVuQixxQjVCb1k0RTtBSGdnR2xGO0ErQjc0R0E7RUFhTSx3QmIxRTBEO0VhMkUxRCwwQmIzRTBEO0VhNEUxRCx1QmJ4RDBEO0VheUQxRCx3QmJ6RDBEO0VhMEQxRCx5QjVCbExZO0U0Qm9MWixxQjVCMFg0RTtFaUJwakI1RSxpSmpCc2dCK0g7RWlCdGdCL0gseUpqQnNnQitIO0VpQnRnQi9ILHlJakJzZ0IrSDtFaUJ0Z0IvSCw4S2pCc2dCK0g7QUh3akdySTtBb0J6akhJO0VXa0tKO0lYaktNLHdCQUFnQjtJQUFoQixnQkFBZ0I7RXBCNmpIcEI7QUFDRjtBK0I3NUdBO0VBMEJNLHNCNUJoTVM7RTRCaU1ULHNDQUE0RTtFQUE1RSw4QkFBNEU7QS9CdTRHbEY7QStCbDZHQTtFQWlDTSx3QzVCMUtXO0FIK2lIakI7QStCejNHQTtFQUNFLHFCQUFxQjtFQUNyQixXQUFXO0VBQ1gsbUNiN0c4RDtFYThHOUQsMEM1QndLa0M7RUN2UTlCLGVBdENZO0UyQndJaEIsZ0I1QmtFK0I7RTRCakUvQixnQjVCc0UrQjtFNEJyRS9CLGM1QnJOZ0I7RTRCc05oQixzQkFBc0I7RUFDdEIsdU81QnVXK0k7RTRCdFcvSSx5QjVCM05nQjtFT05kLHNCUDZPZ0M7RTRCVGxDLHdCQUFnQjtFQUFoQixxQkFBZ0I7RUFBaEIsZ0JBQWdCO0EvQjAzR2xCO0ErQno0R0E7RUFrQkkscUI1QjRQc0U7RTRCM1B0RSxVQUFVO0VBSVIsZ0Q1QjdNVztBSHFrSGpCO0ErQi80R0E7RUFnQ00sYzVCNU9ZO0U0QjZPWixzQjVCcFBTO0FIdW1IZjtBK0JwNUdBO0VBdUNJLFlBQVk7RUFDWixzQjVCb0lnQztFNEJuSWhDLHNCQUFzQjtBL0JpM0cxQjtBK0IxNUdBO0VBNkNJLGM1QjFQYztFNEIyUGQseUI1Qi9QYztBSGduSGxCO0ErQi81R0E7RUFtREksYUFBYTtBL0JnM0dqQjtBK0JuNkdBO0VBd0RJLGtCQUFrQjtFQUNsQiwwQjVCclFjO0FIb25IbEI7QStCMzJHQTtFQUNFLGtDYnhLOEQ7RWF5SzlELG9CNUJzSGtDO0U0QnJIbEMsdUI1QnFIa0M7RTRCcEhsQyxvQjVCcUhpQztFQ2pSN0IsbUJBdENZO0FKaWpIbEI7QStCMzJHQTtFQUNFLGdDYmhMOEQ7RWFpTDlELG1CNUJtSGlDO0U0QmxIakMsc0I1QmtIaUM7RTRCakhqQyxrQjVCa0hnQztFQ3RSNUIsa0JBdENZO0FKeWpIbEI7QStCdDJHQTtFQUNFLGtCQUFrQjtFQUNsQixxQkFBcUI7RUFDckIsV0FBVztFQUNYLG1DYmhNOEQ7RWFpTTlELGdCQUFnQjtBL0J5MkdsQjtBK0J0MkdBO0VBQ0Usa0JBQWtCO0VBQ2xCLFVBQVU7RUFDVixXQUFXO0VBQ1gsbUNieE04RDtFYXlNOUQsU0FBUztFQUNULFVBQVU7QS9CeTJHWjtBK0IvMkdBO0VBU0kscUI1QjJLc0U7RTRCMUt0RSxnRDVCMVJhO0FIb29IakI7QStCcDNHQTs7RUFnQkkseUI1QjNUYztBSG9xSGxCO0ErQnozR0E7RUFxQk0saUI1QmtVUTtBSHNpR2Q7QStCNzNHQTtFQTBCSSwwQkFBMEI7QS9CdTJHOUI7QStCbjJHQTtFQUNFLGtCQUFrQjtFQUNsQixNQUFNO0VBQ04sUUFBUTtFQUNSLE9BQU87RUFDUCxVQUFVO0VBQ1YsbUNieE84RDtFYXlPOUQseUI1QjZDa0M7RTRCM0NsQyxnQjVCeEQrQjtFNEJ5RC9CLGdCNUJwRCtCO0U0QnFEL0IsYzVCL1VnQjtFNEJnVmhCLHNCNUJ2VmE7RTRCd1ZiLHlCNUJwVmdCO0VPTmQsc0JQNk9nQztBSG05R3BDO0ErQm4zR0E7RUFrQkksa0JBQWtCO0VBQ2xCLE1BQU07RUFDTixRQUFRO0VBQ1IsU0FBUztFQUNULFVBQVU7RUFDVixjQUFjO0VBQ2QsNkJiMVA0RDtFYTJQNUQseUI1QjJCZ0M7RTRCMUJoQyxnQjVCcEU2QjtFNEJxRTdCLGM1Qi9WYztFNEJnV2QsaUJBQWlCO0VUeFdqQix5Qm5CR2M7RTRCdVdkLG9CQUFvQjtFckIzV3BCLGtDcUI0V2dGO0EvQnEyR3BGO0ErQjMxR0E7RUFDRSxXQUFXO0VBQ1gsY2JoUjJCO0VhaVIzQixVQUFVO0VBQ1YsNkJBQTZCO0VBQzdCLHdCQUFnQjtFQUFoQixxQkFBZ0I7RUFBaEIsZ0JBQWdCO0EvQjgxR2xCO0ErQm4yR0E7RUFRSSxhQUFhO0EvQisxR2pCO0ErQnYyR0E7RUFZOEIsZ0U1Qm5XYjtBSGtzSGpCO0ErQjMyR0E7RUFhOEIsZ0U1QnBXYjtBSHNzSGpCO0ErQi8yR0E7RUFjOEIsZ0U1QnJXYjtBSDBzSGpCO0ErQm4zR0E7RUFrQkksU0FBUztBL0JxMkdiO0ErQnYzR0E7RUFzQkksVzVCMk42QztFNEIxTjdDLFk1QjBONkM7RTRCek43QyxvQkFBeUU7RVQ3WXpFLHlCbkI4QmE7RTRCaVhiLFM1QjBOMEM7RU8xbUIxQyxtQlAybUI2QztFaUIxbUIzQyxvSGpCc2dCK0g7RWlCdGdCL0gsNEdqQnNnQitIO0U0Qm5Iakksd0JBQWdCO0VBQWhCLGdCQUFnQjtBL0JvMkdwQjtBb0JsdkhJO0VXZ1hKO0lYL1dNLHdCQUFnQjtJQUFoQixnQkFBZ0I7RXBCc3ZIcEI7QUFDRjtBK0J4NEdBO0VUclhJLHlCbkI4bUIyRTtBSG1wRy9FO0ErQjU0R0E7RUFzQ0ksVzVCb01vQztFNEJuTXBDLGM1Qm9NcUM7RTRCbk1yQyxrQkFBa0I7RUFDbEIsZTVCbU11QztFNEJsTXZDLHlCNUIzWmM7RTRCNFpkLHlCQUF5QjtFckJqYXpCLG1CUG9tQm9DO0FId3FHeEM7QStCdDVHQTtFQWlESSxXNUJnTTZDO0U0Qi9MN0MsWTVCK0w2QztFbUJ0bUI3Qyx5Qm5COEJhO0U0QjJZYixTNUJnTTBDO0VPMW1CMUMsbUJQMm1CNkM7RWlCMW1CM0Msb0hqQnNnQitIO0VpQnRnQi9ILDRHakJzZ0IrSDtFNEJ6RmpJLHFCQUFnQjtFQUFoQixnQkFBZ0I7QS9CdzJHcEI7QW9CaHhISTtFV2dYSjtJWC9XTSx3QkFBZ0I7SUFBaEIsZ0JBQWdCO0VwQm94SHBCO0FBQ0Y7QStCdDZHQTtFVHJYSSx5Qm5COG1CMkU7QUhpckcvRTtBK0IxNkdBO0VBZ0VJLFc1QjBLb0M7RTRCektwQyxjNUIwS3FDO0U0QnpLckMsa0JBQWtCO0VBQ2xCLGU1QnlLdUM7RTRCeEt2Qyx5QjVCcmJjO0U0QnNiZCx5QkFBeUI7RXJCM2J6QixtQlBvbUJvQztBSHNzR3hDO0ErQnA3R0E7RUEyRUksVzVCc0s2QztFNEJySzdDLFk1QnFLNkM7RTRCcEs3QyxhQUFhO0VBQ2Isb0I1QjlEK0I7RTRCK0QvQixtQjVCL0QrQjtFbUJyWS9CLHlCbkI4QmE7RTRCd2FiLFM1Qm1LMEM7RU8xbUIxQyxtQlAybUI2QztFaUIxbUIzQyxvSGpCc2dCK0g7RWlCdGdCL0gsNEdqQnNnQitIO0U0QjVEakksZ0JBQWdCO0EvQjQyR3BCO0FvQmp6SEk7RVdnWEo7SVgvV00sd0JBQWdCO0lBQWhCLGdCQUFnQjtFcEJxekhwQjtBQUNGO0ErQnY4R0E7RVRyWEkseUJuQjhtQjJFO0FIa3RHL0U7QStCMzhHQTtFQTZGSSxXNUI2SW9DO0U0QjVJcEMsYzVCNklxQztFNEI1SXJDLGtCQUFrQjtFQUNsQixlNUI0SXVDO0U0QjNJdkMsNkJBQTZCO0VBQzdCLHlCQUF5QjtFQUN6QixvQkFBNEM7QS9CazNHaEQ7QStCcjlHQTtFQXdHSSx5QjVCemRjO0VPTGQsbUJQb21Cb0M7QUg0dUd4QztBK0IxOUdBO0VBNkdJLGtCQUFrQjtFQUNsQix5QjVCL2RjO0VPTGQsbUJQb21Cb0M7QUhrdkd4QztBK0JoK0dBO0VBb0hNLHlCNUJuZVk7QUhtMUhsQjtBK0JwK0dBO0VBd0hNLGVBQWU7QS9CZzNHckI7QStCeCtHQTtFQTRITSx5QjVCM2VZO0FIMjFIbEI7QStCNStHQTtFQWdJTSxlQUFlO0EvQmczR3JCO0ErQmgvR0E7RUFvSU0seUI1Qm5mWTtBSG0ySGxCO0ErQjMyR0E7OztFWDlmTSxvSGpCc2dCK0g7RWlCdGdCL0gsNEdqQnNnQitIO0FIeTJHckk7QW9CMTJISTtFV3lmSjs7O0lYeGZNLHdCQUFnQjtJQUFoQixnQkFBZ0I7RXBCZzNIcEI7QUFDRjtBZ0N4M0hBO0VBQ0Usb0JBQWE7RUFBYixhQUFhO0VBQ2IsZUFBZTtFQUNmLGVBQWU7RUFDZixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0FoQzIzSGxCO0FnQ3gzSEE7RUFDRSxjQUFjO0VBQ2Qsb0I3QjZxQnNDO0FIOHNHeEM7QUsxM0hFO0UyQkVFLHFCQUFxQjtBaEM0M0h6QjtBZ0NqNEhBO0VBVUksYzdCVmM7RTZCV2Qsb0JBQW9CO0VBQ3BCLGVBQWU7QWhDMjNIbkI7QWdDbjNIQTtFQUNFLGdDN0J4QmdCO0FIODRIbEI7QWdDdjNIQTtFQUlJLG1CN0IwTTZCO0FINnFIakM7QWdDMzNIQTtFQVFJLDZCQUFnRDtFdEIzQmhELCtCUG9PZ0M7RU9uT2hDLGdDUG1PZ0M7QUhnckhwQztBS2w1SEU7RTJCNkJJLHFDN0JuQ1k7QUg0NUhsQjtBZ0NyNEhBO0VBZ0JNLGM3QnBDWTtFNkJxQ1osNkJBQTZCO0VBQzdCLHlCQUF5QjtBaEN5M0gvQjtBZ0MzNEhBOztFQXdCSSxjN0IzQ2M7RTZCNENkLHNCN0JuRFc7RTZCb0RYLGtDN0JwRFc7QUg0NkhmO0FnQ2w1SEE7RUErQkksZ0I3QitLNkI7RU9qTzdCLHlCc0JvRDRCO0V0Qm5ENUIsMEJzQm1ENEI7QWhDdTNIaEM7QWdDOTJIQTtFdEJ0RUksc0JQNk9n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eStIeEI7RWlDamlJRztJQTRESyxhQUFhO0VqQ3crSHJCO0FBQ0Y7QWlDMWlJQTtFQXlCUSw4QkFBcUI7RUFBckIsNkJBQXFCO1VBQXJCLHFCQUFxQjtFQUNyQix1QkFBMkI7VUFBM0IsMkJBQTJCO0FqQ3FoSW5DO0FpQy9pSUE7O0VBUVUsZ0JBQWdCO0VBQ2hCLGVBQWU7QWpDNGlJekI7QWlDcmpJQTtFQTZCVSw4QkFBbUI7RUFBbkIsNkJBQW1CO1VBQW5CLG1CQUFtQjtBakM0aEk3QjtBaUN6aklBO0VBZ0NZLGtCQUFrQjtBakM2aEk5QjtBaUM3aklBO0VBb0NZLHFCOUJnaUI2QjtFOEIvaEI3QixvQjlCK2hCNkI7QUg4L0d6QztBaUNsa0lBOztFQTJDVSxpQkFBaUI7QWpDNGhJM0I7QWlDdmtJQTtFQTBEVSwrQkFBd0I7RUFBeEIsd0JBQXdCO0VBR3hCLGdCQUFnQjtBakMrZ0kxQjtBaUM1a0lBO0VBaUVVLGFBQWE7QWpDK2dJdkI7QWlDbGdJQTtFQUVJLHlCOUIvTVc7QUhtdElmO0FLcHRJRTtFNEJtTkkseUI5QmxOUztBSHV0SWY7QWlDMWdJQTtFQVdNLHlCOUJ4TlM7QUgydElmO0FLNXRJRTtFNEI0Tk0seUI5QjNOTztBSCt0SWY7QWlDbGhJQTtFQWtCUSx5QjlCL05PO0FIbXVJZjtBaUN0aElBOzs7O0VBMEJNLHlCOUJ2T1M7QUgwdUlmO0FpQzdoSUE7RUErQkkseUI5QjVPVztFOEI2T1gsZ0M5QjdPVztBSCt1SWY7QWlDbGlJQTtFQW9DSSwrUWZ0TnVJO0FsQnd0STNJO0FpQ3RpSUE7RUF3Q0kseUI5QnJQVztBSHV2SWY7QWlDMWlJQTtFQTBDTSx5QjlCdlBTO0FIMnZJZjtBSzV2SUU7RTRCMlBNLHlCOUIxUE87QUgrdklmO0FpQzkvSEE7RUFFSSxXOUI3UVc7QUg2d0lmO0FLcHdJRTtFNEJ1UUksVzlCaFJTO0FIaXhJZjtBaUN0Z0lBO0VBV00sK0I5QnRSUztBSHF4SWY7QUs1d0lFO0U0QmdSTSxnQzlCelJPO0FIeXhJZjtBaUM5Z0lBO0VBa0JRLGdDOUI3Uk87QUg2eElmO0FpQ2xoSUE7Ozs7RUEwQk0sVzlCclNTO0FIb3lJZjtBaUN6aElBO0VBK0JJLCtCOUIxU1c7RThCMlNYLHNDOUIzU1c7QUh5eUlmO0FpQzloSUE7RUFvQ0kscVJmMVF1STtBbEJ3d0kzSTtBaUNsaUlBO0VBd0NJLCtCOUJuVFc7QUhpeklmO0FpQ3RpSUE7RUEwQ00sVzlCclRTO0FIcXpJZjtBSzV5SUU7RTRCK1NNLFc5QnhUTztBSHl6SWY7QWtDNXpJQTtFQUNFLGtCQUFrQjtFQUNsQixvQkFBYTtFQUFiLGFBQWE7RUFDYiw0QkFBc0I7RUFBdEIsNkJBQXNCO1VBQXRCLHNCQUFzQjtFQUN0QixZQUFZO0VBRVoscUJBQXFCO0VBQ3JCLHNCL0JKYTtFK0JLYiwyQkFBMkI7RUFDM0Isc0MvQklhO0VPWlgsc0JQNk9nQztBSDBsSXBDO0FrQ3gwSUE7RUFhSSxlQUFlO0VBQ2YsY0FBYztBbEMreklsQjtBa0M3MElBO0V4QlVJLCtCUG9PZ0M7RU9uT2hDLGdDUG1PZ0M7QUhvbUlwQztBa0NsMUlBO0V4QndCSSxtQ1BzTmdDO0VPck5oQyxrQ1BxTmdDO0FIeW1JcEM7QWtDenpJQTtFQUdFLG1CQUFjO1VBQWQsY0FBYztFQUdkLGVBQWU7RUFDZixnQi9Cc3hCeUM7QUhraUgzQztBa0NweklBO0VBQ0Usc0IvQmd4QndDO0FIdWlIMUM7QWtDcHpJQTtFQUNFLHFCQUErQjtFQUMvQixnQkFBZ0I7QWxDdXpJbEI7QWtDcHpJQTtFQUNFLGdCQUFnQjtBbEN1eklsQjtBS2wySUU7RTZCZ0RFLHFCQUFxQjtBbENzekl6QjtBa0N4eklBO0VBTUksb0IvQit2QnVDO0FIdWpIM0M7QWtDOXlJQTtFQUNFLHdCL0JzdkJ5QztFK0JydkJ6QyxnQkFBZ0I7RUFFaEIscUMvQjNEYTtFK0I0RGIsNkMvQjVEYTtBSDQySWY7QWtDcnpJQTtFeEJuRUksMER3QjJFOEU7QWxDaXpJbEY7QWtDenpJQTtFQWFNLGFBQWE7QWxDZ3pJbkI7QWtDM3lJQTtFQUNFLHdCL0JvdUJ5QztFK0JudUJ6QyxxQy9CM0VhO0UrQjRFYiwwQy9CNUVhO0FIMDNJZjtBa0NqeklBO0V4QnJGSSwwRFErSDREO0FsQjJ3SWhFO0FrQ3R5SUE7RUFDRSx1QkFBaUM7RUFDakMsdUIvQm10QndDO0UrQmx0QnhDLHNCQUFnQztFQUNoQyxnQkFBZ0I7QWxDeXlJbEI7QWtDdHlJQTtFQUNFLHVCQUFpQztFQUNqQyxzQkFBZ0M7QWxDeXlJbEM7QWtDcnlJQTtFQUNFLGtCQUFrQjtFQUNsQixNQUFNO0VBQ04sUUFBUTtFQUNSLFNBQVM7RUFDVCxPQUFPO0VBQ1AsZ0IvQjhzQnlDO0FIMGxIM0M7QWtDcnlJQTs7O0VBR0UsY0FBYztFQUNkLFdBQVc7QWxDd3lJYjtBa0NyeUlBOztFeEJ4SEksMkNRc0g0RDtFUnJINUQsNENRcUg0RDtBbEI2eUloRTtBa0N0eUlBOztFeEIvR0ksK0NRd0c0RDtFUnZHNUQsOENRdUc0RDtBbEJtekloRTtBa0NweUlBO0VBRUksbUIvQnVyQnNEO0FIK21IMUQ7QWMvM0lJO0VvQnVGSjtJQU1JLG9CQUFhO0lBQWIsYUFBYTtJQUNiLDhCQUFtQjtJQUFuQiw2QkFBbUI7WUFBbkIsbUJBQW1CO0lBQ25CLG1CL0JpckJzRDtJK0JockJ0RCxrQi9CZ3JCc0Q7RUh1bkh4RDtFa0NoeklGO0lBYU0sbUJBQVk7WUFBWixZQUFZO0lBQ1osa0IvQjJxQm9EO0krQjFxQnBELGdCQUFnQjtJQUNoQixpQi9CeXFCb0Q7RUg2bkh4RDtBQUNGO0FrQzd4SUE7RUFJSSxtQi9CMnBCc0Q7QUhrb0gxRDtBY2w1SUk7RW9CaUhKO0lBUUksb0JBQWE7SUFBYixhQUFhO0lBQ2IsOEJBQW1CO0lBQW5CLDZCQUFtQjtZQUFuQixtQkFBbUI7RWxDOHhJckI7RWtDdnlJRjtJQWNNLG1CQUFZO1lBQVosWUFBWTtJQUNaLGdCQUFnQjtFbEM0eElwQjtFa0MzeUlGO0lBa0JRLGNBQWM7SUFDZCxjQUFjO0VsQzR4SXBCO0VrQy95SUY7SXhCeEpJLDBCd0JpTG9DO0l4QmhMcEMsNkJ3QmdMb0M7RWxDMHhJdEM7RWtDbnpJRjs7SUE4QlksMEJBQTBCO0VsQ3l4SXBDO0VrQ3Z6SUY7O0lBbUNZLDZCQUE2QjtFbEN3eEl2QztFa0MzeklGO0l4QjFJSSx5QndCa0xtQztJeEJqTG5DLDRCd0JpTG1DO0VsQ3V4SXJDO0VrQy96SUY7O0lBNkNZLHlCQUF5QjtFbENzeEluQztFa0NuMElGOztJQWtEWSw0QkFBNEI7RWxDcXhJdEM7QUFDRjtBa0N6d0lBO0VBRUksc0IvQmdsQnNDO0FIMnJIMUM7QWM3N0lJO0VvQmdMSjtJQU1JLHVCL0I2bEJpQztJK0I3bEJqQyxvQi9CNmxCaUM7SStCN2xCakMsZS9CNmxCaUM7SStCNWxCakMsMkIvQjZsQnVDO0krQjdsQnZDLHdCL0I2bEJ1QztJK0I3bEJ2QyxtQi9CNmxCdUM7SStCNWxCdkMsVUFBVTtJQUNWLFNBQVM7RWxDNHdJWDtFa0NyeElGO0lBWU0scUJBQXFCO0lBQ3JCLFdBQVc7RWxDNHdJZjtBQUNGO0FrQ253SUE7RUFFSSxnQkFBZ0I7QWxDcXdJcEI7QWtDdndJQTtFQUtNLGdCQUFnQjtFeEI1T2xCLDZCd0I2T2lDO0V4QjVPakMsNEJ3QjRPaUM7QWxDdXdJckM7QWtDN3dJQTtFeEJyUEkseUJ3QitQOEI7RXhCOVA5QiwwQndCOFA4QjtBbEN3d0lsQztBa0NseElBO0V4QjlQSSxnQndCNFEwQjtFQUN4QixtQi9CbkMyQjtBSDJ5SWpDO0FtQzFoSkE7RUFDRSxvQkFBYTtFQUFiLGFBQWE7RUFDYixlQUFlO0VBQ2YscUJoQytoQ3NDO0VnQzloQ3RDLG1CaENpaUNzQztFZ0MvaEN0QyxnQkFBZ0I7RUFDaEIseUJoQ0VnQjtFT0pkLHNCUDZPZ0M7QUhreklwQztBbUN6aEpBO0VBR0ksb0JoQ3FoQ3FDO0FIcWdIekM7QW1DN2hKQTtFQU1NLHFCQUFxQjtFQUNyQixxQmhDaWhDbUM7RWdDaGhDbkMsY2hDTlk7RWdDT1osWWhDc2hDdUM7QUhxZ0g3QztBbUNwaUpBO0VBb0JJLDBCQUEwQjtBbkNvaEo5QjtBbUN4aUpBO0VBd0JJLHFCQUFxQjtBbkNvaEp6QjtBbUM1aUpBO0VBNEJJLGNoQzFCYztBSDhpSmxCO0FvQzNqSkE7RUFDRSxvQkFBYTtFQUFiLGFBQWE7RTdCR2IsZUFBZTtFQUNmLGdCQUFnQjtFR0FkLHNCUDZPZ0M7QUhnMUlwQztBb0M1akpBO0VBQ0Usa0JBQWtCO0VBQ2xCLGNBQWM7RUFDZCx1QmpDZ3hCd0M7RWlDL3dCeEMsaUJqQ3FPK0I7RWlDcE8vQixpQmpDbXhCc0M7RWlDbHhCdEMsY2pDd0JlO0VpQ3ZCZixzQmpDTmE7RWlDT2IseUJqQ0pnQjtBSG1rSmxCO0FvQ3ZrSkE7RUFXSSxVQUFVO0VBQ1YsY2pDa0s4RDtFaUNqSzlELHFCQUFxQjtFQUNyQix5QmpDWGM7RWlDWWQscUJqQ1hjO0FIMmtKbEI7QW9DL2tKQTtFQW1CSSxVQUFVO0VBQ1YsVWpDNHdCaUM7RWlDM3dCakMsZ0RqQ1NhO0FIdWpKakI7QW9DNWpKQTtFQUdNLGNBQWM7RTFCQ2hCLCtCUCtNZ0M7RU85TWhDLGtDUDhNZ0M7QUgrMklwQztBb0Nsa0pBO0UxQlZJLGdDUDZOZ0M7RU81TmhDLG1DUDROZ0M7QUhvM0lwQztBb0N2a0pBO0VBY0ksVUFBVTtFQUNWLFdqQ3ZDVztFaUN3Q1gseUJqQ1hhO0VpQ1liLHFCakNaYTtBSHlrSmpCO0FvQzlrSkE7RUFxQkksY2pDdkNjO0VpQ3dDZCxvQkFBb0I7RUFFcEIsWUFBWTtFQUNaLHNCakNqRFc7RWlDa0RYLHFCakMvQ2M7QUgybUpsQjtBcUNsbkpFO0VBQ0UsdUJsQ3l4QnNDO0VDOXBCcEMsa0JBdENZO0VpQ25GZCxnQmxDc082QjtBSCs0SWpDO0FxQ2huSk07RTNCd0JGLDhCUGdOK0I7RU8vTS9CLGlDUCtNK0I7QUg2NEluQztBcUNobkpNO0UzQktGLCtCUDhOK0I7RU83Ti9CLGtDUDZOK0I7QUhrNUluQztBcUNsb0pFO0VBQ0UsdUJsQ3V4QnFDO0VDNXBCbkMsbUJBdENZO0VpQ25GZCxnQmxDdU82QjtBSDg1SWpDO0FxQ2hvSk07RTNCd0JGLDhCUGlOK0I7RU9oTi9CLGlDUGdOK0I7QUg0NUluQztBcUNob0pNO0UzQktGLCtCUCtOK0I7RU85Ti9CLGtDUDhOK0I7QUhpNkluQztBc0NocEpBO0VBQ0UscUJBQXFCO0VBQ3JCLHFCbkN3NUJzQztFQ3YxQnBDLGNBQVc7RWtDL0RiLGdCbkMyUitCO0VtQzFSL0IsY0FBYztFQUNkLGtCQUFrQjtFQUNsQixtQkFBbUI7RUFDbkIsd0JBQXdCO0U1QlJ0QixzQlA2T2dDO0VpQjVPOUIsNklqQjZiNkk7RWlCN2I3SSxxSWpCNmI2STtBSCt0SW5KO0FvQnZwSkk7RWtCTko7SWxCT00sd0JBQWdCO0lBQWhCLGdCQUFnQjtFcEIycEpwQjtBQUNGO0FLeHBKRTtFaUNHSSxxQkFBcUI7QXRDeXBKM0I7QXNDdnFKQTtFQW9CSSxhQUFhO0F0Q3VwSmpCO0FzQ2xwSkE7RUFDRSxrQkFBa0I7RUFDbEIsU0FBUztBdENxcEpYO0FzQzlvSkE7RUFDRSxvQm5DNjNCc0M7RW1DNTNCdEMsbUJuQzQzQnNDO0VPaDZCcEMsb0JQbTZCcUM7QUhteEh6QztBc0N6b0pFO0VDakRBLFdwQ01hO0VvQ0xiLHlCcENrQ2U7QUg0cEpqQjtBS2hySkU7RWtDVkksV3BDQ1M7RW9DQVQseUJBQWtDO0F2QzhySnhDO0F1Q2pzSlU7RUFRSixVQUFVO0VBQ1YsK0NwQ3VCVztBSHNxSmpCO0FzQ3hwSkU7RUNqREEsV3BDTWE7RW9DTGIseUJwQ1dnQjtBSGtzSmxCO0FLL3JKRTtFa0NWSSxXcENDUztFb0NBVCx5QkFBa0M7QXZDNnNKeEM7QXVDaHRKVTtFQVFKLFVBQVU7RUFDVixpRHBDQVk7QUg0c0psQjtBc0N2cUpFO0VDakRBLFdwQ01hO0VvQ0xiLHlCcEN5Q2U7QUhtckpqQjtBSzlzSkU7RWtDVkksV3BDQ1M7RW9DQVQseUJBQWtDO0F2QzR0SnhDO0F1Qy90SlU7RUFRSixVQUFVO0VBQ1YsK0NwQzhCVztBSDZySmpCO0FzQ3RySkU7RUNqREEsV3BDTWE7RW9DTGIseUJwQzJDZTtBSGdzSmpCO0FLN3RKRTtFa0NWSSxXcENDUztFb0NBVCx5QkFBa0M7QXZDMnVKeEM7QXVDOXVKVTtFQVFKLFVBQVU7RUFDVixnRHBDZ0NXO0FIMHNKakI7QXNDcnNKRTtFQ2pEQSxjcENlZ0I7RW9DZGhCLHlCcEN3Q2U7QUhrdEpqQjtBSzV1SkU7RWtDVkksY3BDVVk7RW9DVFoseUJBQWtDO0F2QzB2SnhDO0F1Qzd2SlU7RUFRSixVQUFVO0VBQ1YsK0NwQzZCVztBSDR0SmpCO0FzQ3B0SkU7RUNqREEsV3BDTWE7RW9DTGIseUJwQ3NDZTtBSG11SmpCO0FLM3ZKRTtFa0NWSSxXcENDUztFb0NBVCx5QkFBa0M7QXZDeXdKeEM7QXVDNXdKVTtFQVFKLFVBQVU7RUFDViwrQ3BDMkJXO0FINnVKakI7QXNDbnVKRTtFQ2pEQSxjcENlZ0I7RW9DZGhCLHlCcENNZ0I7QUhreEpsQjtBSzF3SkU7RWtDVkksY3BDVVk7RW9DVFoseUJBQWtDO0F2Q3d4SnhDO0F1QzN4SlU7RUFRSixVQUFVO0VBQ1YsaURwQ0xZO0FINHhKbEI7QXNDbHZKRTtFQ2pEQSxXcENNYTtFb0NMYix5QnBDYWdCO0FIMHhKbEI7QUt6eEpFO0VrQ1ZJLFdwQ0NTO0VvQ0FULHlCQUFrQztBdkN1eUp4QztBdUMxeUpVO0VBUUosVUFBVTtFQUNWLDhDcENFWTtBSG95SmxCO0F3Q256SkE7RUFDRSxrQkFBb0Q7RUFDcEQsbUJyQ3F6QnNDO0VxQ256QnRDLHlCckNLZ0I7RU9KZCxxQlA4TytCO0FIdWtKbkM7QWM5dkpJO0UwQjVESjtJQVFJLGtCckMreUJvQztFSHdnSXRDO0FBQ0Y7QXdDcHpKQTtFQUNFLGdCQUFnQjtFQUNoQixlQUFlO0U5QlRiLGdCOEJVc0I7QXhDdXpKMUI7QXlDbDBKQTtFQUNFLGtCQUFrQjtFQUNsQix3QnRDcTlCeUM7RXNDcDlCekMsbUJ0Q3E5QnNDO0VzQ3A5QnRDLDZCQUE2QztFL0JIM0Msc0JQNk9nQztBSDRsSnBDO0F5Q2owSkE7RUFFRSxjQUFjO0F6Q20wSmhCO0F5Qy96SkE7RUFDRSxnQnRDZ1IrQjtBSGtqSmpDO0F5QzF6SkE7RUFDRSxtQkFBc0Q7QXpDNnpKeEQ7QXlDOXpKQTtFQUtJLGtCQUFrQjtFQUNsQixNQUFNO0VBQ04sUUFBUTtFQUNSLHdCdEN1N0J1QztFc0N0N0J2QyxjQUFjO0F6QzZ6SmxCO0F5Q256SkU7RUM5Q0EsY3hCOEZnRTtFSXpGOUQseUJKeUY4RDtFd0I1RmhFLHFCeEI0RmdFO0FsQnl3SmxFO0EwQ24ySkU7RUFDRSx5QkFBcUM7QTFDczJKekM7QTBDbjJKRTtFQUNFLGNBQTBCO0ExQ3MySjlCO0F5Q2owSkU7RUM5Q0EsY3hCOEZnRTtFSXpGOUQseUJKeUY4RDtFd0I1RmhFLHFCeEI0RmdFO0FsQnV4SmxFO0EwQ2ozSkU7RUFDRSx5QkFBcUM7QTFDbzNKekM7QTBDajNKRTtFQUNFLGNBQTBCO0ExQ28zSjlCO0F5Qy8wSkU7RUM5Q0EsY3hCOEZnRTtFSXpGOUQseUJKeUY4RDtFd0I1RmhFLHFCeEI0RmdFO0FsQnF5SmxFO0EwQy8zSkU7RUFDRSx5QkFBcUM7QTFDazRKekM7QTBDLzNKRTtFQUNFLGNBQTBCO0ExQ2s0SjlCO0F5QzcxSkU7RUM5Q0EsY3hCOEZnRTtFSXpGOUQseUJKeUY4RDtFd0I1RmhFLHFCeEI0RmdFO0FsQm16SmxFO0EwQzc0SkU7RUFDRSx5QkFBcUM7QTFDZzVKekM7QTBDNzRKRTtFQUNFLGNBQTBCO0ExQ2c1SjlCO0F5QzMySkU7RUM5Q0EsY3hCOEZnRTtFSXpGOUQseUJKeUY4RDtFd0I1RmhFLHFCeEI0RmdFO0FsQmkwSmxFO0EwQzM1SkU7RUFDRSx5QkFBcUM7QTFDODVKekM7QTBDMzVKRTtFQUNFLGNBQTBCO0ExQzg1SjlCO0F5Q3ozSkU7RUM5Q0EsY3hCOEZnRTtFSXpGOUQseUJKeUY4RDtFd0I1RmhFLHFCeEI0RmdFO0FsQiswSmxFO0EwQ3o2SkU7RUFDRSx5QkFBcUM7QTFDNDZKekM7QTBDejZKRTtFQUNFLGNBQTBCO0ExQzQ2SjlCO0F5Q3Y0SkU7RUM5Q0EsY3hCOEZnRTtFSXpGOUQseUJKeUY4RDtFd0I1RmhFLHFCeEI0RmdFO0FsQjYxSmxFO0EwQ3Y3SkU7RUFDRSx5QkFBcUM7QTFDMDdKekM7QTBDdjdKRTtFQUNFLGNBQTBCO0ExQzA3SjlCO0F5Q3I1SkU7RUM5Q0EsY3hCOEZnRTtFSXpGOUQseUJKeUY4RDtFd0I1RmhFLHFCeEI0RmdFO0FsQjIySmxFO0EwQ3I4SkU7RUFDRSx5QkFBcUM7QTFDdzhKekM7QTBDcjhKRTtFQUNFLGNBQTBCO0ExQ3c4SjlCO0EyQ2g5SkU7RUFDRTtJQUFPLDJCQUF1QztFM0NvOUpoRDtFMkNuOUpFO0lBQUssd0JBQXdCO0UzQ3M5Si9CO0FBQ0Y7QTJDejlKRTtFQUNFO0lBQU8sMkJBQXVDO0UzQ285SmhEO0UyQ245SkU7SUFBSyx3QkFBd0I7RTNDczlKL0I7QUFDRjtBMkNuOUpBO0VBQ0Usb0JBQWE7RUFBYixhQUFhO0VBQ2IsWXhDODlCc0M7RXdDNzlCdEMsZ0JBQWdCO0V2Q29IWixrQkF0Q1k7RXVDNUVoQix5QnhDSmdCO0VPSmQsc0JQNk9nQztBSGt2SnBDO0EyQ2w5SkE7RUFDRSxvQkFBYTtFQUFiLGFBQWE7RUFDYiw0QkFBc0I7RUFBdEIsNkJBQXNCO1VBQXRCLHNCQUFzQjtFQUN0Qix3QkFBdUI7VUFBdkIsdUJBQXVCO0VBQ3ZCLGdCQUFnQjtFQUNoQixXeENoQmE7RXdDaUJiLGtCQUFrQjtFQUNsQixtQkFBbUI7RUFDbkIseUJ4Q1VlO0VpQjlCWCxtQ2pCMCtCNEM7RWlCMStCNUMsMkJqQjArQjRDO0FIZ2dJbEQ7QW9CcitKSTtFdUJPSjtJdkJOTSx3QkFBZ0I7SUFBaEIsZ0JBQWdCO0VwQnkrSnBCO0FBQ0Y7QTJDeDlKQTtFckJhRSxxTUFBNkk7RXFCWDdJLDBCeEN3OEJzQztBSG1oSXhDO0EyQ3Y5SkU7RUFDRSwwRHhDMDhCa0Q7RXdDMThCbEQsa0R4QzA4QmtEO0FIZ2hJdEQ7QTJDdjlKTTtFQUpKO0lBS00sdUJBQWU7SUFBZixlQUFlO0UzQzI5SnJCO0FBQ0Y7QTRDcmdLQTtFQUNFLG9CQUFhO0VBQWIsYUFBYTtFQUNiLHdCQUF1QjtVQUF2Qix1QkFBdUI7QTVDd2dLekI7QTRDcmdLQTtFQUNFLG1CQUFPO1VBQVAsT0FBTztBNUN3Z0tUO0E2QzFnS0E7RUFDRSxvQkFBYTtFQUFiLGFBQWE7RUFDYiw0QkFBc0I7RUFBdEIsNkJBQXNCO1VBQXRCLHNCQUFzQjtFQUd0QixlQUFlO0VBQ2YsZ0JBQWdCO0E3QzJnS2xCO0E2Q2xnS0E7RUFDRSxXQUFXO0VBQ1gsYzFDUGdCO0UwQ1FoQixtQkFBbUI7QTdDcWdLckI7QUszZ0tFO0V3Q1VFLFVBQVU7RUFDVixjMUNiYztFMENjZCxxQkFBcUI7RUFDckIseUIxQ3JCYztBSDBoS2xCO0E2Qy9nS0E7RUFjSSxjMUNqQmM7RTBDa0JkLHlCMUN6QmM7QUg4aEtsQjtBNkM1L0pBO0VBQ0Usa0JBQWtCO0VBQ2xCLGNBQWM7RUFDZCx3QjFDODhCeUM7RTBDNThCekMsc0IxQ3pDYTtFMEMwQ2Isc0MxQ2hDYTtBSDhoS2Y7QTZDcGdLQTtFbkM3QkksK0JQb09nQztFT25PaEMsZ0NQbU9nQztBSGswSnBDO0E2Q3pnS0E7RW5DZkksbUNQc05nQztFT3JOaEMsa0NQcU5nQztBSHUwSnBDO0E2QzlnS0E7RUFrQkksYzFDaERjO0UwQ2lEZCxvQkFBb0I7RUFDcEIsc0IxQ3hEVztBSHdqS2Y7QTZDcGhLQTtFQXlCSSxVQUFVO0VBQ1YsVzFDOURXO0UwQytEWCx5QjFDbENhO0UwQ21DYixxQjFDbkNhO0FIa2lLakI7QTZDM2hLQTtFQWdDSSxtQkFBbUI7QTdDKy9KdkI7QTZDL2hLQTtFQW1DTSxnQjFDaUsyQjtFMENoSzNCLHFCMUNnSzJCO0FIZzJKakM7QTZDbC9KSTtFQUNFLDhCQUFtQjtFQUFuQiw2QkFBbUI7VUFBbkIsbUJBQW1CO0E3Q3EvSnpCO0E2Q3QvSkk7RW5DakNBLGtDUHNMZ0M7RU9sTWhDLDBCbUNtRHdDO0E3Q3EvSjVDO0E2QzMvSkk7RW5DN0NBLGdDUGtNZ0M7RU90TGhDLDRCbUM0QzBDO0E3Q3EvSjlDO0E2Q2hnS0k7RUFlTSxhQUFhO0E3Q3EvSnZCO0E2Q3BnS0k7RUFtQk0scUIxQytIdUI7RTBDOUh2QixvQkFBb0I7QTdDcS9KOUI7QTZDemdLSTtFQXVCUSxpQjFDMkhxQjtFMEMxSHJCLHNCMUMwSHFCO0FINDNKakM7QWMvaUtJO0UrQmlDQTtJQUNFLDhCQUFtQjtJQUFuQiw2QkFBbUI7WUFBbkIsbUJBQW1CO0U3Q2toS3ZCO0U2Q25oS0U7SW5DakNBLGtDUHNMZ0M7SU9sTWhDLDBCbUNtRHdDO0U3Q2loSzFDO0U2Q3ZoS0U7SW5DN0NBLGdDUGtNZ0M7SU90TGhDLDRCbUM0QzBDO0U3Q2doSzVDO0U2QzNoS0U7SUFlTSxhQUFhO0U3QytnS3JCO0U2QzloS0U7SUFtQk0scUIxQytIdUI7STBDOUh2QixvQkFBb0I7RTdDOGdLNUI7RTZDbGlLRTtJQXVCUSxpQjFDMkhxQjtJMEMxSHJCLHNCMUMwSHFCO0VIbzVKL0I7QUFDRjtBY3hrS0k7RStCaUNBO0lBQ0UsOEJBQW1CO0lBQW5CLDZCQUFtQjtZQUFuQixtQkFBbUI7RTdDMmlLdkI7RTZDNWlLRTtJbkNqQ0Esa0NQc0xnQztJT2xNaEMsMEJtQ21Ed0M7RTdDMGlLMUM7RTZDaGpLRTtJbkM3Q0EsZ0NQa01nQztJT3RMaEMsNEJtQzRDMEM7RTdDeWlLNUM7RTZDcGpLRTtJQWVNLGFBQWE7RTdDd2lLckI7RTZDdmpLRTtJQW1CTSxxQjFDK0h1QjtJMEM5SHZCLG9CQUFvQjtFN0N1aUs1QjtFNkMzaktFO0lBdUJRLGlCMUMySHFCO0kwQzFIckIsc0IxQzBIcUI7RUg2NkovQjtBQUNGO0Fjam1LSTtFK0JpQ0E7SUFDRSw4QkFBbUI7SUFBbkIsNkJBQW1CO1lBQW5CLG1CQUFtQjtFN0Nva0t2QjtFNkNya0tFO0luQ2pDQSxrQ1BzTGdDO0lPbE1oQywwQm1DbUR3QztFN0Nta0sxQztFNkN6a0tFO0luQzdDQSxnQ1BrTWdDO0lPdExoQyw0Qm1DNEMwQztFN0Nra0s1QztFNkM3a0tFO0lBZU0sYUFBYTtFN0Npa0tyQjtFNkNobEtFO0lBbUJNLHFCMUMrSHVCO0kwQzlIdkIsb0JBQW9CO0U3Q2drSzVCO0U2Q3BsS0U7SUF1QlEsaUIxQzJIcUI7STBDMUhyQixzQjFDMEhxQjtFSHM4Si9CO0FBQ0Y7QWMxbktJO0UrQmlDQTtJQUNFLDhCQUFtQjtJQUFuQiw2QkFBbUI7WUFBbkIsbUJBQW1CO0U3QzZsS3ZCO0U2QzlsS0U7SW5DakNBLGtDUHNMZ0M7SU9sTWhDLDBCbUNtRHdDO0U3QzRsSzFDO0U2Q2xtS0U7SW5DN0NBLGdDUGtNZ0M7SU90TGhDLDRCbUM0QzBDO0U3QzJsSzVDO0U2Q3RtS0U7SUFlTSxhQUFhO0U3QzBsS3JCO0U2Q3ptS0U7SUFtQk0scUIxQytIdUI7STBDOUh2QixvQkFBb0I7RTdDeWxLNUI7RTZDN21LRTtJQXVCUSxpQjFDMkhxQjtJMEMxSHJCLHNCMUMwSHFCO0VIKzlKL0I7QUFDRjtBNkM1a0tBO0VBRUkscUJBQXFCO0VBQ3JCLG9CQUFvQjtFbkNqSXBCLGdCbUNrSXdCO0E3QzhrSzVCO0E2Q2xsS0E7RUFPTSxtQkFBbUI7QTdDK2tLekI7QTZDdGxLQTtFQWFNLHNCQUFzQjtBN0M2a0s1QjtBOEMxdEtFO0VBQ0UsYzVCMkY4RDtFNEIxRjlELHlCNUIwRjhEO0FsQm1vS2xFO0FLbHRLRTtFeUNQTSxjNUJzRjBEO0U0QnJGMUQseUJBQXlDO0E5QzZ0S2pEO0E4Q3B1S0U7RUFXTSxXM0NQTztFMkNRUCx5QjVCZ0YwRDtFNEIvRTFELHFCNUIrRTBEO0FsQjhvS2xFO0E4QzF1S0U7RUFDRSxjNUIyRjhEO0U0QjFGOUQseUI1QjBGOEQ7QWxCbXBLbEU7QUtsdUtFO0V5Q1BNLGM1QnNGMEQ7RTRCckYxRCx5QkFBeUM7QTlDNnVLakQ7QThDcHZLRTtFQVdNLFczQ1BPO0UyQ1FQLHlCNUJnRjBEO0U0Qi9FMUQscUI1QitFMEQ7QWxCOHBLbEU7QThDMXZLRTtFQUNFLGM1QjJGOEQ7RTRCMUY5RCx5QjVCMEY4RDtBbEJtcUtsRTtBS2x2S0U7RXlDUE0sYzVCc0YwRDtFNEJyRjFELHlCQUF5QztBOUM2dktqRDtBOENwd0tFO0VBV00sVzNDUE87RTJDUVAseUI1QmdGMEQ7RTRCL0UxRCxxQjVCK0UwRDtBbEI4cUtsRTtBOEMxd0tFO0VBQ0UsYzVCMkY4RDtFNEIxRjlELHlCNUIwRjhEO0FsQm1yS2xFO0FLbHdLRTtFeUNQTSxjNUJzRjBEO0U0QnJGMUQseUJBQXlDO0E5QzZ3S2pEO0E4Q3B4S0U7RUFXTSxXM0NQTztFMkNRUCx5QjVCZ0YwRDtFNEIvRTFELHFCNUIrRTBEO0FsQjhyS2xFO0E4QzF4S0U7RUFDRSxjNUIyRjhEO0U0QjFGOUQseUI1QjBGOEQ7QWxCbXNLbEU7QUtseEtFO0V5Q1BNLGM1QnNGMEQ7RTRCckYxRCx5QkFBeUM7QTlDNnhLakQ7QThDcHlLRTtFQVdNLFczQ1BPO0UyQ1FQLHlCNUJnRjBEO0U0Qi9FMUQscUI1QitFMEQ7QWxCOHNLbEU7QThDMXlLRTtFQUNFLGM1QjJGOEQ7RTRCMUY5RCx5QjVCMEY4RDtBbEJtdEtsRTtBS2x5S0U7RXlDUE0sYzVCc0YwRDtFNEJyRjFELHlCQUF5QztBOUM2eUtqRDtBOENwektFO0VBV00sVzNDUE87RTJDUVAseUI1QmdGMEQ7RTRCL0UxRCxxQjVCK0UwRDtBbEI4dEtsRTtBOEMxektFO0VBQ0UsYzVCMkY4RDtFNEIxRjlELHlCNUIwRjhEO0FsQm11S2xFO0FLbHpLRTtFeUNQTSxjNUJzRjBEO0U0QnJGMUQseUJBQXlDO0E5QzZ6S2pEO0E4Q3AwS0U7RUFXTSxXM0NQTztFMkNRUCx5QjVCZ0YwRDtFNEIvRTFELHFCNUIrRTBEO0FsQjh1S2xFO0E4QzEwS0U7RUFDRSxjNUIyRjhEO0U0QjFGOUQseUI1QjBGOEQ7QWxCbXZLbEU7QUtsMEtFO0V5Q1BNLGM1QnNGMEQ7RTRCckYxRCx5QkFBeUM7QTlDNjBLakQ7QThDcDFLRTtFQVdNLFczQ1BPO0UyQ1FQLHlCNUJnRjBEO0U0Qi9FMUQscUI1QitFMEQ7QWxCOHZLbEU7QStDNzFLQTtFQUNFLFlBQVk7RTNDOEhSLGlCQXRDWTtFMkN0RmhCLGdCNUNpUytCO0U0Q2hTL0IsY0FBYztFQUNkLFc1Q1lhO0U0Q1hiLHlCNUNDYTtFNENBYixXQUFXO0EvQ2cyS2I7QUszMUtFO0UwQ0RFLFc1Q01XO0U0Q0xYLHFCQUFxQjtBL0NnMkt6QjtBSzUxS0U7RTBDQ0ksWUFBWTtBL0MrMUtsQjtBK0NwMUtBO0VBQ0UsVUFBVTtFQUNWLDZCQUE2QjtFQUM3QixTQUFTO0VBQ1Qsd0JBQWdCO0VBQWhCLHFCQUFnQjtFQUFoQixnQkFBZ0I7QS9DdTFLbEI7QStDajFLQTtFQUNFLG9CQUFvQjtBL0NvMUt0QjtBZ0QzM0tBO0VBQ0UsZ0I3Q3k0QnVDO0U2Q3g0QnZDLGdCQUFnQjtFNUM2SFosbUJBdENZO0U0Q3BGaEIsMkM3Q0VhO0U2Q0RiLDRCQUE0QjtFQUM1QixvQzdDMDRCbUQ7RTZDejRCbkQsZ0Q3Q1NhO0U2Q1JiLG1DQUEyQjtFQUEzQiwyQkFBMkI7RUFDM0IsVUFBVTtFdENMUixzQlA2NEJzQztBSHMvSTFDO0FnRHg0S0E7RUFjSSxzQjdDNjNCc0M7QUhpZ0oxQztBZ0Q1NEtBO0VBa0JJLFVBQVU7QWhEODNLZDtBZ0RoNUtBO0VBc0JJLGNBQWM7RUFDZCxVQUFVO0FoRDgzS2Q7QWdEcjVLQTtFQTJCSSxhQUFhO0FoRDgzS2pCO0FnRDEzS0E7RUFDRSxvQkFBYTtFQUFiLGFBQWE7RUFDYix5QkFBbUI7VUFBbkIsbUJBQW1CO0VBQ25CLHdCN0N5MkJ3QztFNkN4MkJ4QyxjN0N0QmdCO0U2Q3VCaEIsMkM3QzdCYTtFNkM4QmIsNEJBQTRCO0VBQzVCLDRDN0NpM0JvRDtBSDRnSnREO0FnRDEzS0E7RUFDRSxnQjdDaTJCd0M7QUg0aEoxQztBaURqNktBO0VBRUUsZ0JBQWdCO0FqRG02S2xCO0FpRHI2S0E7RUFLSSxrQkFBa0I7RUFDbEIsZ0JBQWdCO0FqRG82S3BCO0FpRC81S0E7RUFDRSxlQUFlO0VBQ2YsTUFBTTtFQUNOLE9BQU87RUFDUCxhOUMrcEJzQztFOEM5cEJ0QyxhQUFhO0VBQ2IsV0FBVztFQUNYLFlBQVk7RUFDWixnQkFBZ0I7RUFHaEIsVUFBVTtBakRnNktaO0FpRHo1S0E7RUFDRSxrQkFBa0I7RUFDbEIsV0FBVztFQUNYLGM5QzY0QnVDO0U4QzM0QnZDLG9CQUFvQjtBakQyNUt0QjtBaUR4NUtFO0U3QnJDSSwyQ2pCNDhCb0Q7RWlCNThCcEQsbURqQjQ4Qm9EO0VpQjU4QnBELG1DakI0OEJvRDtFaUI1OEJwRCxvRWpCNDhCb0Q7RThDcjZCdEQsc0M5Q202Qm1EO0U4Q242Qm5ELDhCOUNtNkJtRDtBSHcvSXZEO0FvQjc3S0k7RTZCZ0NGO0k3Qi9CSSx3QkFBZ0I7SUFBaEIsZ0JBQWdCO0VwQmk4S3BCO0FBQ0Y7QWlELzVLRTtFQUNFLHVCOUNpNkJvQztFOENqNkJwQyxlOUNpNkJvQztBSGlnSnhDO0FpRDk1S0U7RUFDRSw4QjlDODVCMkM7RThDOTVCM0Msc0I5Qzg1QjJDO0FIbWdKL0M7QWlENzVLQTtFQUNFLG9CQUFhO0VBQWIsYUFBYTtFQUNiLDZCL0J5RThEO0FsQnUxS2hFO0FpRGw2S0E7RUFLSSw4Qi9Cc0U0RDtFK0JyRTVELGdCQUFnQjtBakRpNktwQjtBaUR2NktBOztFQVdJLGNBQWM7QWpEaTZLbEI7QWlENTZLQTtFQWVJLGdCQUFnQjtBakRpNktwQjtBaUQ3NUtBO0VBQ0Usb0JBQWE7RUFBYixhQUFhO0VBQ2IseUJBQW1CO1VBQW5CLG1CQUFtQjtFQUNuQiw2Qi9CcUQ4RDtBbEIyMktoRTtBaURuNktBO0VBT0ksY0FBYztFQUNkLDBCL0JnRDREO0UrQi9DNUQsV0FBVztBakRnNktmO0FpRHo2S0E7RUFjSSw0QkFBc0I7RUFBdEIsNkJBQXNCO1VBQXRCLHNCQUFzQjtFQUN0Qix3QkFBdUI7VUFBdkIsdUJBQXVCO0VBQ3ZCLFlBQVk7QWpEKzVLaEI7QWlELzZLQTtFQW1CTSxnQkFBZ0I7QWpEZzZLdEI7QWlEbjdLQTtFQXVCTSxhQUFhO0FqRGc2S25CO0FpRDE1S0E7RUFDRSxrQkFBa0I7RUFDbEIsb0JBQWE7RUFBYixhQUFhO0VBQ2IsNEJBQXNCO0VBQXRCLDZCQUFzQjtVQUF0QixzQkFBc0I7RUFDdEIsV0FBVztFQUdYLG9CQUFvQjtFQUNwQixzQjlDMUdhO0U4QzJHYiw0QkFBNEI7RUFDNUIsb0M5Q2xHYTtFT1pYLHFCUDhPK0I7RThDNUhqQyxVQUFVO0FqRHk1S1o7QWlEcjVLQTtFQUNFLGVBQWU7RUFDZixNQUFNO0VBQ04sT0FBTztFQUNQLGE5Q29qQnNDO0U4Q25qQnRDLFlBQVk7RUFDWixhQUFhO0VBQ2Isc0I5Q2pIYTtBSHlnTGY7QWlELzVLQTtFQVVXLFVBQVU7QWpEeTVLckI7QWlEbjZLQTtFQVdXLFk5QzR6QjJCO0FIZ21KdEM7QWlEdjVLQTtFQUNFLG9CQUFhO0VBQWIsYUFBYTtFQUNiLHdCQUF1QjtVQUF2Qix1QkFBdUI7RUFDdkIseUJBQThCO1VBQTlCLDhCQUE4QjtFQUM5QixrQjlDeXpCc0M7RThDeHpCdEMsZ0M5Q3RJZ0I7RU9JZCwwQ1FzSDREO0VSckg1RCwyQ1FxSDREO0FsQnc2S2hFO0FpRGo2S0E7RUFTSSxrQjlDb3pCb0M7RThDbHpCcEMsOEJBQTZGO0FqRDI1S2pHO0FpRHQ1S0E7RUFDRSxnQkFBZ0I7RUFDaEIsZ0I5QzJJK0I7QUg4d0tqQztBaURwNUtBO0VBQ0Usa0JBQWtCO0VBR2xCLG1CQUFjO1VBQWQsY0FBYztFQUNkLGE5Q3V3QnNDO0FIOG9KeEM7QWlEajVLQTtFQUNFLG9CQUFhO0VBQWIsYUFBYTtFQUNiLGVBQWU7RUFDZix5QkFBbUI7VUFBbkIsbUJBQW1CO0VBQ25CLHFCQUF5QjtVQUF6Qix5QkFBeUI7RUFDekIsZ0JBQWdFO0VBQ2hFLDZCOUN2S2dCO0VPa0JkLDhDUXdHNEQ7RVJ2RzVELDZDUXVHNEQ7QWxCbThLaEU7QWlENTVLQTtFQWNJLGVBQXdDO0FqRGs1SzVDO0FpRDc0S0E7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLFdBQVc7RUFDWCxZQUFZO0VBQ1osZ0JBQWdCO0FqRGc1S2xCO0FjdmhMSTtFbUN6Qko7SUF1S0ksZ0I5Q213QnFDO0k4Q2x3QnJDLG9CQUF5QztFakQ4NEszQztFaURoaUxGO0lBc0pJLCtCL0IzRTREO0VsQnc5SzlEO0VpRG5pTEY7SUF5Sk0sZ0MvQjlFMEQ7RWxCMjlLOUQ7RWlEbmhMRjtJQTJJSSwrQi9CbkY0RDtFbEI4OUs5RDtFaUR0aExGO0lBOElNLDRCL0J0RjBEO0VsQmkrSzlEO0VpRG40S0E7SUFBWSxnQjlDNHVCMkI7RUgwcEp2QztBQUNGO0FjN2lMSTtFbUMwS0Y7O0lBRUUsZ0I5Q291QnFDO0VIbXFKdkM7QUFDRjtBY3BqTEk7RW1DaUxGO0lBQVksaUI5Qzh0QjRCO0VIMHFKeEM7QUFDRjtBa0RybkxBO0VBQ0Usa0JBQWtCO0VBQ2xCLGEvQ21yQnNDO0UrQ2xyQnRDLGNBQWM7RUFDZCxTL0N5MUJtQztFZ0Q3MUJuQyxrTWhEdVJpTjtFZ0RyUmpOLGtCQUFrQjtFQUNsQixnQmhEK1IrQjtFZ0Q5Ui9CLGdC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LE9BQU87RUFDUCxvQ0FBMkY7RUFDM0YsdUNqRGcwQmlFO0FIazdKdkU7QW9EOXZMQTtFQWdCTSxTakRzSzJCO0VpRHJLM0Isb0NBQTJGO0VBQzNGLHdCakRwRVM7QUhzekxmO0FvRDd1TEE7RUFDRSxrQmpEaXpCdUM7QUgrN0p6QztBb0RqdkxBO0VBSUksd0JsQ2dENEQ7QWxCaXNMaEU7QW9EcnZMQTtFQU9NLE1BQU07RUFDTixvQ0FBMkY7RUFDM0Ysd0NqRDR5QmlFO0FIczhKdkU7QW9EM3ZMQTtFQWFNLFFqRGtKMkI7RWlEakozQixvQ0FBMkY7RUFDM0YseUJqRHhGUztBSDAwTGY7QW9EandMQTtFQXFCSSxrQkFBa0I7RUFDbEIsTUFBTTtFQUNOLFNBQVM7RUFDVCxjQUFjO0VBQ2QsV2pEd3hCb0M7RWlEdnhCcEMsb0JBQXNDO0VBQ3RDLFdBQVc7RUFDWCxnQ2pENHdCdUQ7QUhvK0ozRDtBb0Q1dUxBO0VBQ0Usb0JqRGl4QnVDO0FIODlKekM7QW9EaHZMQTtFQUlJLDBCbENnQjREO0VrQ2Y1RCxhakQ2d0JxQztFaUQ1d0JyQyxZakQyd0JvQztFaUQxd0JwQyxnQkFBZ0M7QXBEZ3ZMcEM7QW9EdnZMQTtFQVVNLFFBQVE7RUFDUixvQ2pEdXdCbUM7RWlEdHdCbkMsc0NqRHl3QmlFO0FIdytKdkU7QW9EN3ZMQTtFQWdCTSxVakQrRzJCO0VpRDlHM0Isb0NqRGl3Qm1DO0VpRGh3Qm5DLHVCakQzSFM7QUg0MkxmO0FvRDN0TEE7RUFDRSx1QmpEa3VCd0M7RWlEanVCeEMsZ0JBQWdCO0VoRDNCWixlQXRDWTtFZ0RvRWhCLHlCakQydEJ5RDtFaUQxdEJ6RCxnQ0FBeUU7RTFDaEp2RSwwQ1FzSDREO0VSckg1RCwyQ1FxSDREO0FsQnl2TGhFO0FvRHJ1TEE7RUFVSSxhQUFhO0FwRCt0TGpCO0FvRDN0TEE7RUFDRSx1QmpEb3RCd0M7RWlEbnRCeEMsY2pEeEpnQjtBSHMzTGxCO0FxRHozTEE7RUFDRSxrQkFBa0I7QXJENDNMcEI7QXFEejNMQTtFQUNFLG1CQUFtQjtBckQ0M0xyQjtBcUR6M0xBO0VBQ0Usa0JB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RSxvQ0FBbUM7QXpEd29NdkM7QUs5bk1FOzs7RW9ETEksb0NBQWdEO0F6RHlvTXREO0F5RC9vTUU7RUFDRSxvQ0FBbUM7QXpEa3BNdkM7QUt4b01FOzs7RW9ETEksb0NBQWdEO0F6RG1wTXREO0F5RHpwTUU7RUFDRSxvQ0FBbUM7QXpENHBNdkM7QUtscE1FOzs7RW9ETEksb0NBQWdEO0F6RDZwTXREO0F5RG5xTUU7RUFDRSxvQ0FBbUM7QXpEc3FNdkM7QUs1cE1FOzs7RW9ETEksb0NBQWdEO0F6RHVxTXREO0F5RDdxTUU7RUFDRSxvQ0FBbUM7QXpEZ3JNdkM7QUt0cU1FOzs7RW9ETEksb0NBQWdEO0F6RGlyTXREO0F5RHZyTUU7RUFDRSxvQ0FBbUM7QXpEMHJNdkM7QUtock1FOzs7RW9ETEksb0NBQWdEO0F6RDJyTXREO0F5RGpzTUU7RUFDRSxvQ0FBbUM7QXpEb3NNdkM7QUsxck1FOzs7RW9ETEksb0NBQWdEO0F6RHFzTXREO0F5RDNzTUU7RUFDRSxvQ0FBbUM7QXpEOHNNdkM7QUtwc01FOzs7RW9ETEksb0NBQWdEO0F6RCtzTXREO0EwRDlzTUE7RUFDRSxpQ0FBbUM7QTFEaXRNckM7QTBEOXNNQTtFQUNFLHdDQUF3QztBMURpdE0xQztBMkQ1dE1BO0VBQWtCLG9DQUFvRDtBM0RndU10RTtBMkQvdE1BO0VBQWtCLHdDQUF3RDtBM0RtdU0xRTtBMkRsdU1BO0VBQWtCLDBDQUEwRDtBM0RzdU01RTtBMkRydU1BO0VBQWtCLDJDQUEyRDtBM0R5dU03RTtBMkR4dU1BO0VBQWtCLHlDQUF5RDtBM0Q0dU0zRTtBMkQxdU1BO0VBQW1CLG9CQUFvQjtBM0Q4dU12QztBMkQ3dU1BO0VBQW1CLHdCQUF3QjtBM0Rpdk0zQztBMkRodk1BO0VBQW1CLDBCQUEwQjtBM0Rvdk03QztBMkRudk1BO0VBQW1CLDJCQUEyQjtBM0R1dk05QztBMkR0dk1BO0VBQW1CLHlCQUF5QjtBM0Qwdk01QztBMkR2dk1FO0VBQ0UsZ0NBQStCO0EzRDB2TW5DO0EyRDN2TUU7RUFDRSxnQ0FBK0I7QTNEOHZNbkM7QTJEL3ZNRTtFQUNFLGdD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QTJCO0U5RHNqTzdEO0U4RHJqT0U7SUFBZ0MsaUNBQWlDO0U5RHdqT25FO0U4RHZqT0U7SUFBZ0MsK0JBQStCO0U5RDBqT2pFO0U4RHpqT0U7SUFBZ0MsNkJBQTZCO0U5RDRqTy9EO0U4RDNqT0U7SUFBZ0MsK0JBQStCO0U5RDhqT2pFO0U4RDdqT0U7SUFBZ0MsOEJBQThCO0U5RGdrT2hFO0FBQ0Y7QStEM21PSTtFQUF3QixzQkFBc0I7QS9EK21PbEQ7QStEOW1PSTtFQUF3Qix1QkFBdUI7QS9Ea25PbkQ7QStEam5PSTtFQUF3QixzQkFBc0I7QS9EcW5PbEQ7QWNqa09JO0VpRHREQTtJQUF3QixzQkFBc0I7RS9ENG5PaEQ7RStEM25PRTtJQUF3Qix1QkFBdUI7RS9EOG5PakQ7RStEN25PRTtJQUF3QixzQkFBc0I7RS9EZ29PaEQ7QUFDRjtBYzdrT0k7RWlEdERBO0lBQXdCLHNCQUFzQjtFL0R3b09oRDtFK0R2b09FO0lBQXdCLHVCQUF1QjtFL0Qwb09qRDtFK0R6b09FO0lBQXdCLHNCQUFzQjtFL0Q0b09oRDtBQUNGO0FjemxPSTtFaUR0REE7SUFBd0Isc0JBQXNCO0UvRG9wT2hEO0UrRG5wT0U7SUFBd0IsdUJBQXVCO0UvRHNwT2pEO0UrRHJwT0U7SUFBd0Isc0JBQXNCO0UvRHdwT2hEO0FBQ0Y7QWNybU9JO0VpRHREQTtJQUF3QixzQkFBc0I7RS9EZ3FPaEQ7RStEL3BPRTtJQUF3Qix1QkFBdUI7RS9Ea3FPakQ7RStEanFPRTtJQUF3QixzQkFBc0I7RS9Eb3FPaEQ7QUFDRjtBZ0UxcU9FO0VBQXNCLHlCQUEyQjtBaEU4cU9uRDtBZ0U5cU9FO0VBQXNCLDJCQUEyQjtBaEVrck9uRDtBaUVqck9FO0VBQXlCLDJCQUE4QjtBakVxck96RDtBaUVyck9FO0VBQXlCLDZCQUE4QjtBakV5ck96RDtBaUV6ck9FO0VBQXlCLDZCQUE4QjtBakU2ck96RDtBaUU3ck9FO0VBQXlCLDBCQUE4QjtBakVpc096RDtBaUVqc09FO0VBQXlCLG1DQUE4QjtFQUE5QiwyQkFBOEI7QWpFcXNPekQ7QWlFaHNPQTtFQUNFLGVB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O0F1RTc2T1E7O0VBRUUsZ0NBQTBDO0F2RWc3T3BEO0F1RTk2T1E7O0VBRUUsOEJBQXNDO0F2RWk3T2hEO0F1RWg4T1E7RUFBZ0MsdUJBQTRCO0F2RW84T3BFO0F1RW44T1E7O0VBRUUsMkJBQW9DO0F2RXM4TzlDO0F1RXA4T1E7O0VBRUUsNkJBQXdDO0F2RXU4T2xEO0F1RXI4T1E7O0VBRUUsOEJBQTBDO0F2RXc4T3BEO0F1RXQ4T1E7O0VBRUUsNEJBQXNDO0F2RXk4T2hEO0F1RXg5T1E7RUFBZ0MscUJBQTRCO0F2RTQ5T3BFO0F1RTM5T1E7O0VBRUUseUJBQW9DO0F2RTg5TzlDO0F1RTU5T1E7O0VBRUUsMkJBQXdDO0F2RSs5T2xEO0F1RTc5T1E7O0VBRUUsNEJBQTBDO0F2RWcrT3BEO0F1RTk5T1E7O0VBRUUsMEJBQXNDO0F2RWkrT2hEO0F1RWgvT1E7RUFBZ0MsMkJBQTRCO0F2RW8vT3BFO0F1RW4vT1E7O0VBRUUsK0JBQW9DO0F2RXMvTzlDO0F1RXAvT1E7O0VBRUUsaUNBQXdDO0F2RXUvT2xEO0F1RXIvT1E7O0VBRUUsa0NBQTBDO0F2RXcvT3BEO0F1RXQvT1E7O0VBRUUsZ0NBQXNDO0F2RXkvT2hEO0F1RXhnUFE7RUFBZ0MsMEJBQTRCO0F2RTRnUHBFO0F1RTNnUFE7O0VBRUUsOEJBQW9DO0F2RThnUDlDO0F1RTVnUFE7O0VBRUUsZ0NBQXdDO0F2RStnUGxEO0F1RTdnUFE7O0VBRUUsaUNBQTBDO0F2RWdoUHBEO0F1RTlnUFE7O0VBRUUsK0JBQXNDO0F2RWloUGhEO0F1RWhpUFE7RUFBZ0Msd0JBQTRCO0F2RW9pUHBFO0F1RW5pUFE7O0VBRUUsNEJBQW9DO0F2RXNpUDlDO0F1RXBpUFE7O0VBRUUsOEJBQXdDO0F2RXVpUGxEO0F1RXJpUFE7O0VBRUUsK0JBQTBDO0F2RXdpUHBEO0F1RXRpUFE7O0VBRUUsNkJBQXNDO0F2RXlpUGhEO0F1RXhqUFE7RUFBZ0MsMEJBQTRCO0F2RTRqUHBFO0F1RTNqUFE7O0VBRUUsOEJBQW9DO0F2RThqUDlDO0F1RTVqUFE7O0VBRUUsZ0NBQXdDO0F2RStqUGxEO0F1RTdqUFE7O0VBRUUsaUNBQTBDO0F2RWdrUHBEO0F1RTlqUFE7O0VBRUUsK0JBQXNDO0F2RWlrUGhEO0F1RWhsUFE7RUFBZ0Msd0JBQTRCO0F2RW9sUHBFO0F1RW5sUFE7O0VBRUUsNEJBQW9DO0F2RXNsUDlDO0F1RXBsUFE7O0VBRUUsOEJBQXdDO0F2RXVsUGxEO0F1RXJsUFE7O0VBRUUsK0JBQTBDO0F2RXdsUHBEO0F1RXRsUFE7O0VBRUUsNkJBQXNDO0F2RXlsUGhEO0F1RWpsUFE7RUFBd0IsMkJBQTJCO0F2RXFsUDNEO0F1RXBsUFE7O0VBRUUsK0JBQStCO0F2RXVsUHpDO0F1RXJsUFE7O0VBRUUsaUNBQWlDO0F2RXdsUDNDO0F1RXRsUFE7O0VBRUUsa0NBQWtDO0F2RXlsUDVDO0F1RXZsUFE7O0VBRUUsZ0NBQWdDO0F2RTBsUDFDO0F1RXptUFE7RUFBd0IsMEJBQTJCO0F2RTZtUDNEO0F1RTVtUFE7O0VBRUUsOEJBQStCO0F2RSttUHpDO0F1RTdtUFE7O0VBRUUsZ0NBQWlDO0F2RWduUDNDO0F1RTltUFE7O0VBRUUsaUNBQWtDO0F2RWluUDVDO0F1RS9tUFE7O0VBRUUsK0JBQWdDO0F2RWtuUDFDO0F1RWpvUFE7RUFBd0Isd0JBQTJCO0F2RXFvUDNEO0F1RXBvUFE7O0VBRUUsNEJBQStCO0F2RXVvUHpDO0F1RXJvUFE7O0VBRUUsOEJBQWlDO0F2RXdvUDNDO0F1RXRvUFE7O0VBRUUsK0JBQWtDO0F2RXlvUDVDO0F1RXZvUFE7O0VBRUUsNkJBQWdDO0F2RTBvUDFDO0F1RXpwUFE7RUFBd0IsMEJBQTJCO0F2RTZwUDNEO0F1RTVwUFE7O0VBRUUsOEJBQStCO0F2RStwUHpDO0F1RTdwUFE7O0VBRUUsZ0NBQWlDO0F2RWdxUDNDO0F1RTlwUFE7O0VBRUUsaUNBQWtDO0F2RWlxUDVDO0F1RS9wUFE7O0VBRUUsK0JBQWdDO0F2RWtxUDFDO0F1RWpyUFE7RUFBd0Isd0JBQTJCO0F2RXFyUDNEO0F1RXByUFE7O0VBRUUsNEJBQStCO0F2RXVyUHpDO0F1RXJyUFE7O0VBRUUsOEJBQWlDO0F2RXdyUDNDO0F1RXRyUFE7O0VBRUUsK0JBQWtDO0F2RXlyUDVDO0F1RXZyUFE7O0VBRUUsNkJBQWdDO0F2RTByUDFDO0F1RXByUEk7RUFBbUIsdUJBQXVCO0F2RXdyUDlDO0F1RXZyUEk7O0VBRUUsMkJBQTJCO0F2RTByUGpDO0F1RXhyUEk7O0VBRUUsNkJBQTZCO0F2RTJyUG5DO0F1RXpyUEk7O0VBRUUsOEJBQThCO0F2RTRyUHBDO0F1RTFyUEk7O0VBRUUsNEJBQTRCO0F2RTZyUGxDO0FjdHNQSTtFeURsREk7SUFBZ0Msb0JBQTRCO0V2RTZ2UGxFO0V1RTV2UE07O0lBRUUsd0JBQW9DO0V2RTh2UDVDO0V1RTV2UE07O0lBRUUsMEJBQXdDO0V2RTh2UGhEO0V1RTV2UE07O0lBRUUsMkJBQTBDO0V2RTh2UGxEO0V1RTV2UE07O0lBRUUseUJBQXNDO0V2RTh2UDlDO0V1RTd3UE07SUFBZ0MsMEJBQTRCO0V2RWd4UGxFO0V1RS93UE07O0lBRUUsOEJBQW9DO0V2RWl4UDVDO0V1RS93UE07O0lBRUUsZ0NBQXdDO0V2RWl4UGhEO0V1RS93UE07O0lBRUUsaUNBQTBDO0V2RWl4UGxEO0V1RS93UE07O0lBRUUsK0JBQXNDO0V2RWl4UDlDO0V1RWh5UE07SUFBZ0MseUJBQTRCO0V2RW15UGxFO0V1RWx5UE07O0lBRUUsNkJBQW9DO0V2RW95UDVDO0V1RWx5UE07O0lBRUUsK0JBQXdDO0V2RW95UGhEO0V1RWx5UE07O0lBRUUsZ0NBQTBDO0V2RW95UGxEO0V1RWx5UE07O0lBRUUsOEJBQXNDO0V2RW95UDlDO0V1RW56UE07SUFBZ0MsdUJBQTRCO0V2RXN6UGxFO0V1RXJ6UE07O0lBRUUsMkJBQW9DO0V2RXV6UDVDO0V1RXJ6UE07O0lBRUUsNkJBQXdDO0V2RXV6UGhEO0V1RXJ6UE07O0lBRUUsOEJBQTBDO0V2RXV6UGxEO0V1RXJ6UE07O0lBRUUsNEJBQXNDO0V2RXV6UDlDO0V1RXQwUE07SUFBZ0MseUJBQTRCO0V2RXkwUGxFO0V1RXgwUE07O0lBRUUsNkJBQW9DO0V2RTAwUDVDO0V1RXgwUE07O0lBRUUsK0JBQXdDO0V2RTAwUGhEO0V1RXgwUE07O0lBRUUsZ0NBQTBDO0V2RTAwUGxEO0V1RXgwUE07O0lBRUUsOEJBQXNDO0V2RTAwUDlDO0V1RXoxUE07SUFBZ0MsdUJBQTRCO0V2RTQxUGxFO0V1RTMxUE07O0lBRUUsMkJBQW9DO0V2RTYxUDVDO0V1RTMxUE07O0lBRUUsNkJBQXdDO0V2RTYxUGhEO0V1RTMxUE07O0lBRUUsOEJBQTBDO0V2RTYxUGxEO0V1RTMxUE07O0lBRUUsNEJBQXNDO0V2RTYxUDlDO0V1RTUyUE07SUFBZ0MscUJBQTRCO0V2RSsyUGxFO0V1RTkyUE07O0lBRUUseUJBQW9DO0V2RWczUDVDO0V1RTkyUE07O0lBRUUsMkJBQXdDO0V2RWczUGhEO0V1RTkyUE07O0lBRUUsNEJBQTBDO0V2RWczUGxEO0V1RTkyUE07O0lBRUUsMEJBQXNDO0V2RWczUDlDO0V1RS8zUE07SUFBZ0MsMkJBQTRCO0V2RWs0UGxFO0V1RWo0UE07O0lBRUUsK0JBQW9DO0V2RW00UDVDO0V1RWo0UE07O0lBRUUsaUNBQXdDO0V2RW00UGhEO0V1RWo0UE07O0lBRUUsa0NBQTBDO0V2RW00UGxEO0V1RWo0UE07O0lBRUUsZ0NBQXNDO0V2RW00UDlDO0V1RWw1UE07SUFBZ0MsMEJBQTRCO0V2RXE1UGxFO0V1RXA1UE07O0lBRUUsOEJBQW9DO0V2RXM1UDVDO0V1RXA1UE07O0lBRUUsZ0NBQXdDO0V2RXM1UGhEO0V1RXA1UE07O0lBRUUsaUNBQTBDO0V2RXM1UGxEO0V1RXA1UE07O0lBRUUsK0JBQXNDO0V2RXM1UDlDO0V1RXI2UE07SUFBZ0Msd0JBQTRCO0V2RXc2UGxFO0V1RXY2UE07O0lBRUUsNEJBQW9DO0V2RXk2UDVDO0V1RXY2UE07O0lBRUUsOEJBQXdDO0V2RXk2UGhEO0V1RXY2UE07O0lBRUUsK0JBQTBDO0V2RXk2UGxEO0V1RXY2UE07O0lBRUUsNkJBQXNDO0V2RXk2UDlDO0V1RXg3UE07SUFBZ0MsMEJBQTRCO0V2RTI3UGxFO0V1RTE3UE07O0lBRUUsOEJBQW9DO0V2RTQ3UDVDO0V1RTE3UE07O0lBRUUsZ0NBQXdDO0V2RTQ3UGhEO0V1RTE3UE07O0lBRUUsaUNBQTBDO0V2RTQ3UGxEO0V1RTE3UE07O0lBRUUsK0JBQXNDO0V2RTQ3UDlDO0V1RTM4UE07SUFBZ0Msd0JBQTRCO0V2RTg4UGxFO0V1RTc4UE07O0lBRUUsNEJBQW9DO0V2RSs4UDVDO0V1RTc4UE07O0lBRUUsOEJBQXdDO0V2RSs4UGhEO0V1RTc4UE07O0lBRUUsK0JBQTBDO0V2RSs4UGxEO0V1RTc4UE07O0lBRUUsNkJBQXNDO0V2RSs4UDlDO0V1RXY4UE07SUFBd0IsMkJBQTJCO0V2RTA4UHpEO0V1RXo4UE07O0lBRUUsK0JBQStCO0V2RTI4UHZDO0V1RXo4UE07O0lBRUUsaUNBQWlDO0V2RTI4UHpDO0V1RXo4UE07O0lBRUUsa0NBQWtDO0V2RTI4UDFDO0V1RXo4UE07O0lBRUUsZ0NBQWdDO0V2RTI4UHhDO0V1RTE5UE07SUFBd0IsMEJBQTJCO0V2RTY5UHpEO0V1RTU5UE07O0lBRUUsOEJBQStCO0V2RTg5UHZDO0V1RTU5UE07O0lBRUUsZ0NBQWlDO0V2RTg5UHpDO0V1RTU5UE07O0lBRUUsaUNBQWtDO0V2RTg5UDFDO0V1RTU5UE07O0lBRUUsK0JBQWdDO0V2RTg5UHhDO0V1RTcrUE07SUFBd0Isd0JBQTJCO0V2RWcvUHpEO0V1RS8rUE07O0lBRUUsNEJBQStCO0V2RWkvUHZDO0V1RS8rUE07O0lBRUUsOEJBQWlDO0V2RWkvUHpDO0V1RS8rUE07O0lBRUUsK0JBQWtDO0V2RWkvUDFDO0V1RS8rUE07O0lBRUUsNkJBQWdDO0V2RWkvUHhDO0V1RWhnUU07SUFBd0IsMEJBQTJCO0V2RW1nUXpEO0V1RWxnUU07O0lBRUUsOEJBQStCO0V2RW9nUXZDO0V1RWxnUU07O0lBRUUsZ0NBQWlDO0V2RW9nUXpDO0V1RWxnUU07O0lBRUUsaUNBQWtDO0V2RW9nUTFDO0V1RWxnUU07O0lBRUUsK0JBQWdDO0V2RW9nUXhDO0V1RW5oUU07SUFBd0Isd0JBQTJCO0V2RXNoUXpEO0V1RXJoUU07O0lBRUUsNEJBQStCO0V2RXVoUXZDO0V1RXJoUU07O0lBRUUsOEJBQWlDO0V2RXVoUXpDO0V1RXJoUU07O0lBRUUsK0JBQWtDO0V2RXVoUTFDO0V1RXJoUU07O0lBRUUsNkJBQWdDO0V2RXVoUXhDO0V1RWpoUUU7SUFBbUIsdUJBQXVCO0V2RW9oUTVDO0V1RW5oUUU7O0lBRUUsMkJBQTJCO0V2RXFoUS9CO0V1RW5oUUU7O0lBRUUsNkJBQTZCO0V2RXFoUWpDO0V1RW5oUUU7O0lBRUUsOEJBQThCO0V2RXFoUWxDO0V1RW5oUUU7O0lBRUUsNEJBQTRCO0V2RXFoUWhDO0FBQ0Y7QWMvaFFJO0V5RGxESTtJQUFnQyxvQkFBNEI7RXZFc2xRbEU7RXVFcmxRTTs7SUFFRSx3QkFBb0M7RXZFdWxRNUM7RXVFcmxRTTs7SUFFRSwwQkFBd0M7RXZFdWxRaEQ7RXVFcmxRTTs7SUFFRSwyQkFBMEM7RXZFdWxRbEQ7RXVFcmxRTTs7SUFFRSx5QkFBc0M7RXZFdWxROUM7RXVFdG1RTTtJQUFnQywwQkFBNEI7RXZFeW1RbEU7RXVFeG1RTTs7SUFFRSw4QkFBb0M7RXZFMG1RNUM7RXVFeG1RTTs7SUFFRSxnQ0FBd0M7RXZFMG1RaEQ7RXVFeG1RTTs7SUFFRSxpQ0FBMEM7RXZFMG1RbEQ7RXVFeG1RTTs7SUFFRSwrQkFBc0M7RXZFMG1ROUM7RXVFem5RTTtJQUFnQyx5QkFBNEI7RXZFNG5RbEU7RXVFM25RTTs7SUFFRSw2QkFBb0M7RXZFNm5RNUM7RXVFM25RTTs7SUFFRSwrQkFBd0M7RXZFNm5RaEQ7RXVFM25RTTs7SUFFRSxnQ0FBMEM7RXZFNm5RbEQ7RXVFM25RTTs7SUFFRSw4QkFBc0M7RXZFNm5ROUM7RXVFNW9RTTtJQUFnQyx1QkFBNEI7RXZFK29RbEU7RXVFOW9RTTs7SUFFRSwyQkFBb0M7RXZFZ3BRNUM7RXVFOW9RTTs7SUFFRSw2QkFBd0M7RXZFZ3BRaEQ7RXVFOW9RTTs7SUFFRSw4QkFBMEM7RXZFZ3BRbEQ7RXVFOW9RTTs7SUFFRSw0QkFBc0M7RXZFZ3BROUM7RXVFL3BRTTtJQUFnQyx5QkFBNEI7RXZFa3FRbEU7RXVFanFRTTs7SUFFRSw2QkFBb0M7RXZFbXFRNUM7RXVFanFRTTs7SUFFRSwrQkFBd0M7RXZFbXFRaEQ7RXVFanFRTTs7SUFFRSxnQ0FBMEM7RXZFbXFRbEQ7RXVFanFRTTs7SUFFRSw4QkFBc0M7RXZFbXFROUM7RXVFbHJRTTtJQUFnQyx1QkFBNEI7RXZFcXJRbEU7RXVFcHJRTTs7SUFFRSwyQkFBb0M7RXZFc3JRNUM7RXVFcHJRTTs7SUFFRSw2QkFBd0M7RXZFc3JRaEQ7RXVFcHJRTTs7SUFFRSw4QkFBMEM7RXZFc3JRbEQ7RXVFcHJRTTs7SUFFRSw0QkFBc0M7RXZFc3JROUM7RXVFcnNRTTtJQUFnQyxxQkFBNEI7RXZFd3NRbEU7RXVFdnNRTTs7SUFFRSx5QkFBb0M7RXZFeXNRNUM7RXVFdnNRTTs7SUFFRSwyQkFBd0M7RXZFeXNRaEQ7RXVFdnNRTTs7SUFFRSw0QkFBMEM7RXZFeXNRbEQ7RXVFdnNRTTs7SUFFRSwwQkFBc0M7RXZFeXNROUM7RXVFeHRRTTtJQUFnQywyQkFBNEI7RXZFMnRRbEU7RXVFMXRRTTs7SUFFRSwrQkFBb0M7RXZFNHRRNUM7RXVFMXRRTTs7SUFFRSxpQ0FBd0M7RXZFNHRRaEQ7RXVFMXRRTTs7SUFFRSxrQ0FBMEM7RXZFNHRRbEQ7RXVFMXRRTTs7SUFFRSxnQ0FBc0M7RXZFNHRROUM7RXVFM3VRTTtJQUFnQywwQkFBNEI7RXZFOHVRbEU7RXVFN3VRTTs7SUFFRSw4QkFBb0M7RXZFK3VRNUM7RXVFN3VRTTs7SUFFRSxnQ0FBd0M7RXZFK3VRaEQ7RXVFN3VRTTs7SUFFRSxpQ0FBMEM7RXZFK3VRbEQ7RXVFN3VRTTs7SUFFRSwrQkFBc0M7RXZFK3VROUM7RXVFOXZRTTtJQUFnQyx3QkFBNEI7RXZFaXdRbEU7RXVFaHdRTTs7SUFFRSw0QkFBb0M7RXZFa3dRNUM7RXVFaHdRTTs7SUFFRSw4QkFBd0M7RXZFa3dRaEQ7RXVFaHdRTTs7SUFFRSwrQkFBMEM7RXZFa3dRbEQ7RXVFaHdRTTs7SUFFRSw2QkFBc0M7RXZFa3dROUM7RXVFanhRTTtJQUFnQywwQkFBNEI7RXZFb3hRbEU7RXVFbnhRTTs7SUFFRSw4QkFBb0M7RXZFcXhRNUM7RXVFbnhRTTs7SUFFRSxnQ0FBd0M7RXZFcXhRaEQ7RXVFbnhRTTs7SUFFRSxpQ0FBMEM7RXZFcXhRbEQ7RXVFbnhRTTs7SUFFRSwrQkFBc0M7RXZFcXhROUM7RXVFcHlRTTtJQUFnQyx3QkFBNEI7RXZFdXlRbEU7RXVFdHlRTTs7SUFFRSw0QkFBb0M7RXZFd3lRNUM7RXVFdHlRTTs7SUFFRSw4QkFBd0M7RXZFd3lRaEQ7RXVFdHlRTTs7SUFFRSwrQkFBMEM7RXZFd3lRbEQ7RXVFdHlRTTs7SUFFRSw2QkFBc0M7RXZFd3lROUM7RXVFaHlRTTtJQUF3QiwyQkFBMkI7RXZFbXlRekQ7RXVFbHlRTTs7SUFFRSwrQkFBK0I7RXZFb3lRdkM7RXVFbHlRTTs7SUFFRSxpQ0FBaUM7RXZFb3lRekM7RXVFbHlRTTs7SUFFRSxrQ0FBa0M7RXZFb3lRMUM7RXVFbHlRTTs7SUFFRSxnQ0FBZ0M7RXZFb3lReEM7RXVFbnpRTTtJQUF3QiwwQkFBMkI7RXZFc3pRekQ7RXVFcnpRTTs7SUFFRSw4QkFBK0I7RXZFdXpRdkM7RXVFcnpRTTs7SUFFRSxnQ0FBaUM7RXZFdXpRekM7RXVFcnpRTTs7SUFFRSxpQ0FBa0M7RXZFdXpRMUM7RXVFcnpRTTs7SUFFRSwrQkFBZ0M7RXZFdXpReEM7RXVFdDBRTTtJQUF3Qix3QkFBMkI7RXZFeTBRekQ7RXVFeDBRTTs7SUFFRSw0QkFBK0I7RXZFMDBRdkM7RXVFeDBRTTs7SUFFRSw4QkFBaUM7RXZFMDBRekM7RXVFeDBRTTs7SUFFRSwrQkFBa0M7RXZFMDBRMUM7RXVFeDBRTTs7SUFFRSw2QkFBZ0M7RXZFMDBReEM7RXVFejFRTTtJQUF3QiwwQkFBMkI7RXZFNDFRekQ7RXVFMzFRTTs7SUFFRSw4QkFBK0I7RXZFNjFRdkM7RXVFMzFRTTs7SUFFRSxnQ0FBaUM7RXZFNjFRekM7RXVFMzFRTTs7SUFFRSxpQ0FBa0M7RXZFNjFRMUM7RXVFMzFRTTs7SUFFRSwrQkFBZ0M7RXZFNjFReEM7RXVFNTJRTTtJQUF3Qix3QkFBMkI7RXZFKzJRekQ7RXVFOTJRTTs7SUFFRSw0QkFBK0I7RXZFZzNRdkM7RXVFOTJRTTs7SUFFRSw4QkFBaUM7RXZFZzNRekM7RXVFOTJRTTs7SUFFRSwrQkFBa0M7RXZFZzNRMUM7RXVFOTJRTTs7SUFFRSw2QkFBZ0M7RXZFZzNReEM7RXVFMTJRRTtJQUFtQix1QkFBdUI7RXZFNjJRNUM7RXVFNTJRRTs7SUFFRSwyQkFBMkI7RXZFODJRL0I7RXVFNTJRRTs7SUFFRSw2QkFBNkI7RXZFODJRakM7RXVFNTJRRTs7SUFFRSw4QkFBOEI7RXZFODJRbEM7RXVFNTJRRTs7SUFFRSw0QkFBNEI7RXZFODJRaEM7QUFDRjtBY3gzUUk7RXlEbERJO0lBQWdDLG9CQUE0QjtFdkUrNlFsRTtFdUU5NlFNOztJQUVFLHdCQUFvQztFdkVnN1E1QztFdUU5NlFNOztJQUVFLDBCQUF3QztFdkVnN1FoRDtFdUU5NlFNOztJQUVFLDJCQUEwQztFdkVnN1FsRDtFdUU5NlFNOztJQUVFLHlCQUFzQztFdkVnN1E5QztFdUUvN1FNO0lBQWdDLDBCQUE0QjtFdkVrOFFsRTtFdUVqOFFNOztJQUVFLDhCQUFvQztFdkVtOFE1QztFdUVqOFFNOztJQUVFLGdDQUF3QztFdkVtOFFoRDtFdUVqOFFNOztJQUVFLGlDQUEwQztFdkVtOFFsRDtFdUVqOFFNOztJQUVFLCtCQUFzQztFdkVtOFE5QztFdUVsOVFNO0lBQWdDLHlCQUE0QjtFdkVxOVFsRTtFdUVwOVFNOztJQUVFLDZCQUFvQztFdkVzOVE1QztFdUVwOVFNOztJQUVFLCtCQUF3QztFdkVzOVFoRDtFdUVwOVFNOztJQUVFLGdDQUEwQztFdkVzOVFsRDtFdUVwOVFNOztJQUVFLDhCQUFzQztFdkVzOVE5QztFdUVyK1FNO0lBQWdDLHVCQUE0QjtFdkV3K1FsRTtFdUV2K1FNOztJQUVFLDJCQUFvQztFdkV5K1E1QztFdUV2K1FNOztJQUVFLDZCQUF3QztFdkV5K1FoRDtFdUV2K1FNOztJQUVFLDhCQUEwQztFdkV5K1FsRDtFdUV2K1FNOztJQUVFLDRCQUFzQztFdkV5K1E5QztFdUV4L1FNO0lBQWdDLHlCQUE0QjtFdkUyL1FsRTtFdUUxL1FNOztJQUVFLDZCQUFvQztFdkU0L1E1QztFdUUxL1FNOztJQUVFLCtCQUF3QztFdkU0L1FoRDtFdUUxL1FNOztJQUVFLGdDQUEwQztFdkU0L1FsRDtFdUUxL1FNOztJQUVFLDhCQUFzQztFdkU0L1E5QztFdUUzZ1JNO0lBQWdDLHVCQUE0QjtFdkU4Z1JsRTtFdUU3Z1JNOztJQUVFLDJCQUFvQztFdkUrZ1I1QztFdUU3Z1JNOztJQUVFLDZCQUF3QztFdkUrZ1JoRDtFdUU3Z1JNOztJQUVFLDhCQUEwQztFdkUrZ1JsRDtFdUU3Z1JNOztJQUVFLDRCQUFzQztFdkUrZ1I5QztFdUU5aFJNO0lBQWdDLHFCQUE0QjtFdkVpaVJsRTtFdUVoaVJNOztJQUVFLHlCQUFvQztFdkVraVI1QztFdUVoaVJNOztJQUVFLDJCQUF3QztFdkVraVJoRDtFdUVoaVJNOztJQUVFLDRCQUEwQztFdkVraVJsRDtFdUVoaVJNOztJQUVFLDBCQUFzQztFdkVraVI5QztFdUVqalJNO0lBQWdDLDJCQUE0QjtFdkVvalJsRTtFdUVualJNOztJQUVFLCtCQUFvQztFdkVxalI1QztFdUVualJNOztJQUVFLGlDQUF3QztFdkVxalJoRDtFdUVualJNOztJQUVFLGtDQUEwQztFdkVxalJsRDtFdUVualJNOztJQUVFLGdDQUFzQztFdkVxalI5QztFdUVwa1JNO0lBQWdDLDBCQUE0QjtFdkV1a1JsRTtFdUV0a1JNOztJQUVFLDhCQUFvQztFdkV3a1I1QztFdUV0a1JNOztJQUVFLGdDQUF3QztFdkV3a1JoRDtFdUV0a1JNOztJQUVFLGlDQUEwQztFdkV3a1JsRDtFdUV0a1JNOztJQUVFLCtCQUFzQztFdkV3a1I5QztFdUV2bFJNO0lBQWdDLHdCQUE0QjtFdkUwbFJsRTtFdUV6bFJNOztJQUVFLDRCQUFvQztFdkUybFI1QztFdUV6bFJNOztJQUVFLDhCQUF3QztFdkUybFJoRDtFdUV6bFJNOztJQUVFLCtCQUEwQztFdkUybFJsRDtFdUV6bFJNOztJQUVFLDZCQUFzQztFdkUybFI5QztFdUUxbVJNO0lBQWdDLDBCQUE0QjtFdkU2bVJsRTtFdUU1bVJNOztJQUVFLDhCQUFvQztFdkU4bVI1QztFdUU1bVJNOztJQUVFLGdDQUF3QztFdkU4bVJoRDtFdUU1bVJNOztJQUVFLGlDQUEwQztFdkU4bVJsRDtFdUU1bVJNOztJQUVFLCtCQUFzQztFdkU4bVI5QztFdUU3blJNO0lBQWdDLHdCQUE0QjtFdkVnb1JsRTtFdUUvblJNOztJQUVFLDRCQUFvQztFdkVpb1I1QztFdUUvblJNOztJQUVFLDhCQUF3QztFdkVpb1JoRDtFdUUvblJNOztJQUVFLCtCQUEwQztFdkVpb1JsRDtFdUUvblJNOztJQUVFLDZCQUFzQztFdkVpb1I5QztFdUV6blJNO0lBQXdCLDJCQUEyQjtFdkU0blJ6RDtFdUUzblJNOztJQUVFLCtCQUErQjtFdkU2blJ2QztFdUUzblJNOztJQUVFLGlDQUFpQztFdkU2blJ6QztFdUUzblJNOztJQUVFLGtDQUFrQztFdkU2blIxQztFdUUzblJNOztJQUVFLGdDQUFnQztFdkU2blJ4QztFdUU1b1JNO0lBQXdCLDBCQUEyQjtFdkUrb1J6RDtFdUU5b1JNOztJQUVFLDhCQUErQjtFdkVncFJ2QztFdUU5b1JNOztJQUVFLGdDQUFpQztFdkVncFJ6QztFdUU5b1JNOztJQUVFLGlDQUFrQztFdkVncFIxQztFdUU5b1JNOztJQUVFLCtCQUFnQztFdkVncFJ4QztFdUUvcFJNO0lBQXdCLHdCQUEyQjtFdkVrcVJ6RDtFdUVqcVJNOztJQUVFLDRCQUErQjtFdkVtcVJ2QztFdUVqcVJNOztJQUVFLDhCQUFpQztFdkVtcVJ6QztFdUVqcVJNOztJQUVFLCtCQUFrQztFdkVtcVIxQztFdUVqcVJNOztJQUVFLDZCQUFnQztFdkVtcVJ4QztFdUVsclJNO0lBQXdCLDBCQUEyQjtFdkVxclJ6RDtFdUVwclJNOztJQUVFLDhCQUErQjtFdkVzclJ2QztFdUVwclJNOztJQUVFLGdDQUFpQztFdkVzclJ6QztFdUVwclJNOztJQUVFLGlDQUFrQztFdkVzclIxQztFdUVwclJNOztJQUVFLCtCQUFnQztFdkVzclJ4QztFdUVyc1JNO0lBQXdCLHdCQUEyQjtFdkV3c1J6RDtFdUV2c1JNOztJQUVFLDRCQUErQjtFdkV5c1J2QztFdUV2c1JNOztJQUVFLDhCQUFpQztFdkV5c1J6QztFdUV2c1JNOztJQUVFLCtCQUFrQztFdkV5c1IxQztFdUV2c1JNOztJQUVFLDZCQUFnQztFdkV5c1J4QztFdUVuc1JFO0lBQW1CLHVCQUF1QjtFdkVzc1I1QztFdUVyc1JFOztJQUVFLDJCQUEyQjtFdkV1c1IvQjtFdUVyc1JFOztJQUVFLDZCQUE2QjtFdkV1c1JqQztFdUVyc1JFOztJQUVFLDhCQUE4QjtFdkV1c1JsQztFdUVyc1JFOztJQUVFLDRCQUE0QjtFdkV1c1JoQztBQUNGO0FjanRSSTtFeURsREk7SUFBZ0Msb0JBQTRCO0V2RXd3UmxFO0V1RXZ3Uk07O0lBRUUsd0JBQW9DO0V2RXl3UjVDO0V1RXZ3Uk07O0lBRUUsMEJBQXdDO0V2RXl3UmhEO0V1RXZ3Uk07O0lBRUUsMkJBQTBDO0V2RXl3UmxEO0V1RXZ3Uk07O0lBRUUseUJBQXNDO0V2RXl3UjlDO0V1RXh4Uk07SUFBZ0MsMEJBQTRCO0V2RTJ4UmxFO0V1RTF4Uk07O0lBRUUsOEJBQW9DO0V2RTR4UjVDO0V1RTF4Uk07O0lBRUUsZ0NBQXdDO0V2RTR4UmhEO0V1RTF4Uk07O0lBRUUsaUNBQTBDO0V2RTR4UmxEO0V1RTF4Uk07O0lBRUUsK0JBQXNDO0V2RTR4UjlDO0V1RTN5Uk07SUFBZ0MseUJBQTRCO0V2RTh5UmxFO0V1RTd5Uk07O0lBRUUsNkJBQW9DO0V2RSt5UjVDO0V1RTd5Uk07O0lBRUUsK0JBQXdDO0V2RSt5UmhEO0V1RTd5Uk07O0lBRUUsZ0NBQTBDO0V2RSt5UmxEO0V1RTd5Uk07O0lBRUUsOEJBQXNDO0V2RSt5UjlDO0V1RTl6Uk07SUFBZ0MsdUJBQTRCO0V2RWkwUmxFO0V1RWgwUk07O0lBRUUsMkJBQW9DO0V2RWswUjVDO0V1RWgwUk07O0lBRUUsNkJBQXdDO0V2RWswUmhEO0V1RWgwUk07O0lBRUUsOEJBQTBDO0V2RWswUmxEO0V1RWgwUk07O0lBRUUsNEJBQXNDO0V2RWswUjlDO0V1RWoxUk07SUFBZ0MseUJBQTRCO0V2RW8xUmxFO0V1RW4xUk07O0lBRUUsNkJBQW9DO0V2RXExUjVDO0V1RW4xUk07O0lBRUUsK0JBQXdDO0V2RXExUmhEO0V1RW4xUk07O0lBRUUsZ0NBQTBDO0V2RXExUmxEO0V1RW4xUk07O0lBRUUsOEJBQXNDO0V2RXExUjlDO0V1RXAyUk07SUFBZ0MsdUJBQTRCO0V2RXUyUmxFO0V1RXQyUk07O0lBRUUsMkJBQW9DO0V2RXcyUjVDO0V1RXQyUk07O0lBRUUsNkJBQXdDO0V2RXcyUmhEO0V1RXQyUk07O0lBRUUsOEJBQTBDO0V2RXcyUmxEO0V1RXQyUk07O0lBRUUsNEJBQXNDO0V2RXcyUjlDO0V1RXYzUk07SUFBZ0MscUJBQTRCO0V2RTAzUmxFO0V1RXozUk07O0lBRUUseUJBQW9DO0V2RTIzUjVDO0V1RXozUk07O0lBRUUsMkJBQXdDO0V2RTIzUmhEO0V1RXozUk07O0lBRUUsNEJBQTBDO0V2RTIzUmxEO0V1RXozUk07O0lBRUUsMEJBQXNDO0V2RTIzUjlDO0V1RTE0Uk07SUFBZ0MsMkJBQTRCO0V2RTY0UmxFO0V1RTU0Uk07O0lBRUUsK0JBQW9DO0V2RTg0UjVDO0V1RTU0Uk07O0lBRUUsaUNBQXdDO0V2RTg0UmhEO0V1RTU0Uk07O0lBRUUsa0NBQTBDO0V2RTg0UmxEO0V1RTU0Uk07O0lBRUUsZ0NBQXNDO0V2RTg0UjlDO0V1RTc1Uk07SUFBZ0MsMEJBQTRCO0V2RWc2UmxFO0V1RS81Uk07O0lBRUUsOEJBQW9DO0V2RWk2UjVDO0V1RS81Uk07O0lBRUUsZ0NBQXdDO0V2RWk2UmhEO0V1RS81Uk07O0lBRUUsaUNBQTBDO0V2RWk2UmxEO0V1RS81Uk07O0lBRUUsK0JBQXNDO0V2RWk2UjlDO0V1RWg3Uk07SUFBZ0Msd0JBQTRCO0V2RW03UmxFO0V1RWw3Uk07O0lBRUUsNEJBQW9DO0V2RW83UjVDO0V1RWw3Uk07O0lBRUUsOEJBQXdDO0V2RW83UmhEO0V1RWw3Uk07O0lBRUUsK0JBQTBDO0V2RW83UmxEO0V1RWw3Uk07O0lBRUUsNkJBQXNDO0V2RW83UjlDO0V1RW44Uk07SUFBZ0MsMEJBQTRCO0V2RXM4UmxFO0V1RXI4Uk07O0lBRUUsOEJBQW9DO0V2RXU4UjVDO0V1RXI4Uk07O0lBRUUsZ0NBQXdDO0V2RXU4UmhEO0V1RXI4Uk07O0lBRUUsaUNBQTBDO0V2RXU4UmxEO0V1RXI4Uk07O0lBRUUsK0JBQXNDO0V2RXU4UjlDO0V1RXQ5Uk07SUFBZ0Msd0JBQTRCO0V2RXk5UmxFO0V1RXg5Uk07O0lBRUUsNEJBQW9DO0V2RTA5UjVDO0V1RXg5Uk07O0lBRUUsOEJBQXdDO0V2RTA5UmhEO0V1RXg5Uk07O0lBRUUsK0JBQTBDO0V2RTA5UmxEO0V1RXg5Uk07O0lBRUUsNkJBQXNDO0V2RTA5UjlDO0V1RWw5Uk07SUFBd0IsMkJBQTJCO0V2RXE5UnpEO0V1RXA5Uk07O0lBRUUsK0JBQStCO0V2RXM5UnZDO0V1RXA5Uk07O0lBRUUsaUNBQWlDO0V2RXM5UnpDO0V1RXA5Uk07O0lBRUUsa0NBQWtDO0V2RXM5UjFDO0V1RXA5Uk07O0lBRUUsZ0NBQWdDO0V2RXM5UnhDO0V1RXIrUk07SUFBd0IsMEJBQTJCO0V2RXcrUnpEO0V1RXYrUk07O0lBRUUsOEJBQStCO0V2RXkrUnZDO0V1RXYrUk07O0lBRUUsZ0NBQWlDO0V2RXkrUnpDO0V1RXYrUk07O0lBRUUsaUNBQWtDO0V2RXkrUjFDO0V1RXYrUk07O0lBRUUsK0JBQWdDO0V2RXkrUnhDO0V1RXgvUk07SUFBd0Isd0JBQTJCO0V2RTIvUnpEO0V1RTEvUk07O0lBRUUsNEJBQStCO0V2RTQvUnZDO0V1RTEvUk07O0lBRUUsOEJBQWlDO0V2RTQvUnpDO0V1RTEvUk07O0lBRUUsK0JBQWtDO0V2RTQvUjFDO0V1RTEvUk07O0lBRUUsNkJBQWdDO0V2RTQvUnhDO0V1RTNnU007SUFBd0IsMEJBQTJCO0V2RThnU3pEO0V1RTdnU007O0lBRUUsOEJBQStCO0V2RStnU3ZDO0V1RTdnU007O0lBRUUsZ0NBQWlDO0V2RStnU3pDO0V1RTdnU007O0lBRUUsaUNBQWtDO0V2RStnUzFDO0V1RTdnU007O0lBRUUsK0JBQWdDO0V2RStnU3hDO0V1RTloU007SUFBd0Isd0JBQTJCO0V2RWlpU3pEO0V1RWhpU007O0lBRUUsNEJBQStCO0V2RWtpU3ZDO0V1RWhpU007O0lBRUUsOEJBQWlDO0V2RWtpU3pDO0V1RWhpU007O0lBRUUsK0JBQWtDO0V2RWtpUzFDO0V1RWhpU007O0lBRUUsNkJBQWdDO0V2RWtpU3hDO0V1RTVoU0U7SUFBbUIsdUJBQXVCO0V2RStoUzVDO0V1RTloU0U7O0lBRUUsMkJBQTJCO0V2RWdpUy9CO0V1RTloU0U7O0lBRUUsNkJBQTZCO0V2RWdpU2pDO0V1RTloU0U7O0lBRUUsOEJBQThCO0V2RWdpU2xDO0V1RTloU0U7O0lBRUUsNEJBQTRCO0V2RWdpU2hDO0FBQ0Y7QXdFaG1TQTtFQUFrQiw0R0FBOEM7QXhFb21TaEU7QXdFaG1TQTtFQUFpQiw4QkFBOEI7QXhFb21TL0M7QXdFbm1TQTtFQUFpQiw4QkFBOEI7QXhFdW1TL0M7QXdFdG1TQTtFQUFpQiw4QkFBOEI7QXhFMG1TL0M7QXdFem1TQTtFQ1RFLGdCQUFnQjtFQUNoQix1QkFBdUI7RUFDdkIsbUJBQW1CO0F6RXNuU3JCO0F3RXZtU0k7RUFBd0IsMkJBQTJCO0F4RTJtU3ZEO0F3RTFtU0k7RUFBd0IsNEJBQTRCO0F4RThtU3hEO0F3RTdtU0k7RUFBd0IsNkJBQTZCO0F4RWluU3pEO0FjNWtTSTtFMER2Q0E7SUFBd0IsMkJBQTJCO0V4RXduU3JEO0V3RXZuU0U7SUFBd0IsNEJBQTRCO0V4RTBuU3REO0V3RXpuU0U7SUFBd0IsNkJBQTZCO0V4RTRuU3ZEO0FBQ0Y7QWN4bFNJO0UwRHZDQTtJQUF3QiwyQkFBMkI7RXhFb29TckQ7RXdFbm9TRTtJQUF3Qiw0QkFBNEI7RXhFc29TdEQ7RXdFcm9TRTtJQUF3Qiw2QkFBNkI7RXhFd29TdkQ7QUFDRjtBY3BtU0k7RTBEdkNBO0lBQXdCLDJCQUEyQjtFeEVncFNyRDtFd0Uvb1NFO0lBQXdCLDRCQUE0QjtFeEVrcFN0RDtFd0VqcFNFO0lBQXdCLDZCQUE2QjtFeEVvcFN2RDtBQUNGO0FjaG5TSTtFMER2Q0E7SUFBd0IsMkJBQTJCO0V4RTRwU3JEO0V3RTNwU0U7SUFBd0IsNEJBQTRCO0V4RThwU3REO0V3RTdwU0U7SUFBd0IsNkJBQTZCO0V4RWdxU3ZEO0FBQ0Y7QXdFM3BTQTtFQUFtQixvQ0FBb0M7QXhFK3BTdkQ7QXdFOXBTQTtFQUFtQixvQ0FBb0M7QXhFa3FTdkQ7QXdFanFTQTtFQUFtQixxQ0FBcUM7QXhFcXFTeEQ7QXdFanFTQTtFQUF1QiwyQkFBMEM7QXhFcXFTakU7QXdFcHFTQTtFQUF1QiwrQkFBNEM7QXhFd3FTbkU7QXdFdnFTQTtFQUF1QiwyQkFBMkM7QXhFMnFTbEU7QXdFMXFTQTtFQUF1QiwyQkFBeUM7QXhFOHFTaEU7QXdFN3FTQTtFQUF1Qiw4QkFBMkM7QXhFaXJTbEU7QXdFaHJTQTtFQUF1Qiw2QkFBNkI7QXhFb3JTcEQ7QXdFaHJTQTtFQUFjLHNCQUF3QjtBeEVvclN0QztBMEUzdFNFO0VBQ0UseUJBQXdCO0ExRTh0UzVCO0FLcHRTRTtFcUVMTSx5QkFBMEU7QTFFNnRTbEY7QTBFbnVTRTtFQUNFLHlCQUF3QjtBMUVzdVM1QjtBSzV0U0U7RXFFTE0seUJBQTBFO0ExRXF1U2xGO0EwRTN1U0U7RUFDRSx5QkFBd0I7QTFFOHVTNUI7QUtwdVNFO0VxRUxNLHlCQUEwRTtBMUU2dVNsRjtBMEVudlNFO0VBQ0UseUJBQXdCO0ExRXN2UzVCO0FLNXVTRTtFcUVMTSx5QkFBMEU7QTFFcXZTbEY7QTBFM3ZTRTtFQUNFLHlCQUF3QjtBMUU4dlM1QjtBS3B2U0U7RXFFTE0seUJBQTBFO0ExRTZ2U2xGO0EwRW53U0U7RUFDRSx5QkFBd0I7QTFFc3dTNUI7QUs1dlNFO0VxRUxNLHlCQUEwRTtBMUVxd1NsRjtBMEUzd1NFO0VBQ0UseUJBQXdCO0ExRTh3UzVCO0FLcHdTRTtFcUVMTSx5QkFBMEU7QTFFNndTbEY7QTBFbnhTRTtFQUNFLHlCQUF3QjtBMUVzeFM1QjtBSzV3U0U7RXFFTE0seUJBQTBFO0ExRXF4U2xGO0F3RTl1U0E7RUFBYSx5QkFBNkI7QXhFa3ZTMUM7QXdFanZTQTtFQUFjLHlCQUE2QjtBeEVxdlMzQztBd0VudlNBO0VBQWlCLG9DQUFrQztBeEV1dlNuRDtBd0V0dlNBO0VBQWlCLDBDQUFrQztBeEUwdlNuRDtBd0V0dlNBO0VHdkRFLFdBQVc7RUFDWCxrQkFBa0I7RUFDbEIsaUJBQWlCO0VBQ2pCLDZCQUE2QjtFQUM3QixTQUFTO0EzRWl6U1g7QXdFMXZTQTtFQUF3QixnQ0FBZ0M7QXhFOHZTeEQ7QXdFNXZTQTtFQUNFLGlDQUFpQztFQUNqQyxvQ0FBb0M7QXhFK3ZTdEM7QXdFMXZTQTtFQUFjLHlCQUF5QjtBeEU4dlN2QztBNEUvelNBO0VBQ0UsOEJBQThCO0E1RWswU2hDO0E0RS96U0E7RUFDRSw2QkFBNkI7QTVFazBTL0I7QTZFbDBTRTtFM0VPRjs7O0kyRURNLDRCQUE0QjtJQUU1QiwyQkFBMkI7RTdFazBTL0I7RTZFL3pTRTtJQUVJLDBCQUEwQjtFN0VnMFNoQztFNkV2elNFO0lBQ0UsNkJBQTZCO0U3RXl6U2pDO0VFM25TRjtJMkUvS00sZ0NBQWdDO0U3RTZ5U3BDO0U2RTN5U0U7O0lBRUUseUIxRXpDWTtJMEUwQ1osd0JBQXdCO0U3RTZ5UzVCO0U2RXJ5U0U7SUFDRSwyQkFBMkI7RTdFdXlTL0I7RTZFcHlTRTs7SUFFRSx3QkFBd0I7RTdFc3lTNUI7RTZFbnlTRTs7O0lBR0UsVUFBVTtJQUNWLFNBQVM7RTdFcXlTYjtFNkVseVNFOztJQUVFLHVCQUF1QjtFN0VveVMzQjtFNkU1eFNFO0lBQ0UsUTFFNGhDZ0M7RUhrd1FwQztFRTEwU0Y7STJFK0NNLDJCQUEyQztFN0U4eFMvQztFWXAzU0E7SWlFeUZJLDJCQUEyQztFN0U4eFMvQztFaUM1MlNGO0k0Q21GTSxhQUFhO0U3RTR4U2pCO0VzQzMzU0Y7SXVDa0dNLHNCMUV0RlM7RUhrM1NiO0VnQi8zU0Y7STZEdUdNLG9DQUFvQztFN0UyeFN4QztFNkU1eFNFOztJQUtJLGlDQUFtQztFN0UyeFN6QztFZ0I5MVNGOztJNkQwRVEsb0NBQXNDO0U3RXd4UzVDO0VnQjd3U0Y7STZETk0sY0FBYztFN0VzeFNsQjtFaUI1NFNBOzs7O0k0RDRITSxxQjFFdkhVO0VINjRTaEI7RWdCeHlTRjtJNkR1Qk0sY0FBYztJQUNkLHFCMUU3SFk7RUhpNVNoQjtBQUNGO0FBbWxCQSx3Q0FBd0MiLCJmaWxlIjoibm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9kaXN0L2Nzcy9ib290c3RyYXAuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBCb290c3RyYXAgdjQuNC4xIChodHRwczovL2dldGJvb3RzdHJhcC5jb20vKVxuICogQ29weXJpZ2h0IDIwMTEtMjAxOSBUaGUgQm9vdHN0cmFwIEF1dGhvcnNcbiAqIENvcHlyaWdodCAyMDExLTIwMTkgVHdpdHRlciwgSW5jLlxuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcbiAqL1xuXG5AaW1wb3J0IFwiZnVuY3Rpb25zXCI7XG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XG5AaW1wb3J0IFwibWl4aW5zXCI7XG5AaW1wb3J0IFwicm9vdFwiO1xuQGltcG9ydCBcInJlYm9vdFwiO1xuQGltcG9ydCBcInR5cGVcIjtcbkBpbXBvcnQgXCJpbWFnZXNcIjtcbkBpbXBvcnQgXCJjb2RlXCI7XG5AaW1wb3J0IFwiZ3JpZFwiO1xuQGltcG9ydCBcInRhYmxlc1wiO1xuQGltcG9ydCBcImZvcm1zXCI7XG5AaW1wb3J0IFwiYnV0dG9uc1wiO1xuQGltcG9ydCBcInRyYW5zaXRpb25zXCI7XG5AaW1wb3J0IFwiZHJvcGRvd25cIjtcbkBpbXBvcnQgXCJidXR0b24tZ3JvdXBcIjtcbkBpbXBvcnQgXCJpbnB1dC1ncm91cFwiO1xuQGltcG9ydCBcImN1c3RvbS1mb3Jtc1wiO1xuQGltcG9ydCBcIm5hdlwiO1xuQGltcG9ydCBcIm5hdmJhclwiO1xuQGltcG9ydCBcImNhcmRcIjtcbkBpbXBvcnQgXCJicmVhZGNydW1iXCI7XG5AaW1wb3J0IFwicGFnaW5hdGlvblwiO1xuQGltcG9ydCBcImJhZGdlXCI7XG5AaW1wb3J0IFwianVtYm90cm9uXCI7XG5AaW1wb3J0IFwiYWxlcnRcIjtcbkBpbXBvcnQgXCJwcm9ncmVzc1wiO1xuQGltcG9ydCBcIm1lZGlhXCI7XG5AaW1wb3J0IFwibGlzdC1ncm91cFwiO1xuQGltcG9ydCBcImNsb3NlXCI7XG5AaW1wb3J0IFwidG9hc3RzXCI7XG5AaW1wb3J0IFwibW9kYWxcIjtcbkBpbXBvcnQgXCJ0b29sdGlwXCI7XG5AaW1wb3J0IFwicG9wb3ZlclwiO1xuQGltcG9ydCBcImNhcm91c2VsXCI7XG5AaW1wb3J0IFwic3Bpbm5lcnNcIjtcbkBpbXBvcnQgXCJ1dGlsaXRpZXNcIjtcbkBpbXBvcnQgXCJwcmludFwiO1xuIiwiLyohXG4gKiBCb290c3RyYXAgdjQuNC4xIChodHRwczovL2dldGJvb3RzdHJhcC5jb20vKVxuICogQ29weXJpZ2h0IDIwMTEtMjAxOSBUaGUgQm9vdHN0cmFwIEF1dGhvcnNcbiAqIENvcHlyaWdodCAyMDExLTIwMTkgVHdpdHRlciwgSW5jLlxuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcbiAqL1xuOnJvb3Qge1xuICAtLWJsdWU6ICMwMDdiZmY7XG4gIC0taW5kaWdvOiAjNjYxMGYyO1xuICAtLXB1cnBsZTogIzZmNDJjMTtcbiAgLS1waW5rOiAjZTgzZThjO1xuICAtLXJlZDogI2RjMzU0NTtcbiAgLS1vcmFuZ2U6ICNmZDdlMTQ7XG4gIC0teWVsbG93OiAjZmZjMTA3O1xuICAtLWdyZWVuOiAjMjhhNzQ1O1xuICAtLXRlYWw6ICMyMGM5OTc7XG4gIC0tY3lhbjogIzE3YTJiODtcbiAgLS13aGl0ZTogI2ZmZjtcbiAgLS1ncmF5OiAjNmM3NTdkO1xuICAtLWdyYXktZGFyazogIzM0M2E0MDtcbiAgLS1wcmltYXJ5OiAjMDA3YmZmO1xuICAtLXNlY29uZGFyeTogIzZjNzU3ZDtcbiAgLS1zdWNjZXNzOiAjMjhhNzQ1O1xuICAtLWluZm86ICMxN2EyYjg7XG4gIC0td2FybmluZzogI2ZmYzEwNztcbiAgLS1kYW5nZXI6ICNkYzM1NDU7XG4gIC0tbGlnaHQ6ICNmOGY5ZmE7XG4gIC0tZGFyazogIzM0M2E0MDtcbiAgLS1icmVha3BvaW50LXhzOiAwO1xuICAtLWJyZWFrcG9pbnQtc206IDU3NnB4O1xuICAtLWJyZWFrcG9pbnQtbWQ6IDc2OHB4O1xuICAtLWJyZWFrcG9pbnQtbGc6IDk5MnB4O1xuICAtLWJyZWFrcG9pbnQteGw6IDEyMDBweDtcbiAgLS1mb250LWZhbWlseS1zYW5zLXNlcmlmOiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBcIk5vdG8gU2Fuc1wiLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJTZWdvZSBVSSBTeW1ib2xcIiwgXCJOb3RvIENvbG9yIEVtb2ppXCI7XG4gIC0tZm9udC1mYW1pbHktbW9ub3NwYWNlOiBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiQ291cmllciBOZXdcIiwgbW9ub3NwYWNlO1xufVxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcbn1cblxuYXJ0aWNsZSwgYXNpZGUsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbmF2LCBzZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBcIk5vdG8gU2Fuc1wiLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJTZWdvZSBVSSBTeW1ib2xcIiwgXCJOb3RvIENvbG9yIEVtb2ppXCI7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cblt0YWJpbmRleD1cIi0xXCJdOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICBvdXRsaW5lOiAwICFpbXBvcnRhbnQ7XG59XG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIGhlaWdodDogMDtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG5cbnAge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG5hYmJyW3RpdGxlXSxcbmFiYnJbZGF0YS1vcmlnaW5hbC10aXRsZV0ge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICBjdXJzb3I6IGhlbHA7XG4gIGJvcmRlci1ib3R0b206IDA7XG4gIHRleHQtZGVjb3JhdGlvbi1za2lwLWluazogbm9uZTtcbn1cblxuYWRkcmVzcyB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG59XG5cbm9sLFxudWwsXG5kbCB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbm9sIG9sLFxudWwgdWwsXG5vbCB1bCxcbnVsIG9sIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuZHQge1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG5kZCB7XG4gIG1hcmdpbi1ib3R0b206IC41cmVtO1xuICBtYXJnaW4tbGVmdDogMDtcbn1cblxuYmxvY2txdW90ZSB7XG4gIG1hcmdpbjogMCAwIDFyZW07XG59XG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZGVyO1xufVxuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG5zdWIsXG5zdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIge1xuICBib3R0b206IC0uMjVlbTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtLjVlbTtcbn1cblxuYSB7XG4gIGNvbG9yOiAjMDA3YmZmO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG5hOmhvdmVyIHtcbiAgY29sb3I6ICMwMDU2YjM7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG5hOm5vdChbaHJlZl0pIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuYTpub3QoW2hyZWZdKTpob3ZlciB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbnByZSxcbmNvZGUsXG5rYmQsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgXCJMaWJlcmF0aW9uIE1vbm9cIiwgXCJDb3VyaWVyIE5ld1wiLCBtb25vc3BhY2U7XG4gIGZvbnQtc2l6ZTogMWVtO1xufVxuXG5wcmUge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuZmlndXJlIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuaW1nIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG5zdmcge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG59XG5cbmNhcHRpb24ge1xuICBwYWRkaW5nLXRvcDogMC43NXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDAuNzVyZW07XG4gIGNvbG9yOiAjNmM3NTdkO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBjYXB0aW9uLXNpZGU6IGJvdHRvbTtcbn1cblxudGgge1xuICB0ZXh0LWFsaWduOiBpbmhlcml0O1xufVxuXG5sYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuXG5idXR0b24ge1xuICBib3JkZXItcmFkaXVzOiAwO1xufVxuXG5idXR0b246Zm9jdXMge1xuICBvdXRsaW5lOiAxcHggZG90dGVkO1xuICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbmlucHV0LFxuYnV0dG9uLFxuc2VsZWN0LFxub3B0Z3JvdXAsXG50ZXh0YXJlYSB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG59XG5cbmJ1dHRvbixcbmlucHV0IHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG5zZWxlY3Qge1xuICB3b3JkLXdyYXA6IG5vcm1hbDtcbn1cblxuYnV0dG9uLFxuW3R5cGU9XCJidXR0b25cIl0sXG5bdHlwZT1cInJlc2V0XCJdLFxuW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbn1cblxuYnV0dG9uOm5vdCg6ZGlzYWJsZWQpLFxuW3R5cGU9XCJidXR0b25cIl06bm90KDpkaXNhYmxlZCksXG5bdHlwZT1cInJlc2V0XCJdOm5vdCg6ZGlzYWJsZWQpLFxuW3R5cGU9XCJzdWJtaXRcIl06bm90KDpkaXNhYmxlZCkge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0sXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAwO1xufVxuXG5pbnB1dFt0eXBlPVwiZGF0ZVwiXSxcbmlucHV0W3R5cGU9XCJ0aW1lXCJdLFxuaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdLFxuaW5wdXRbdHlwZT1cIm1vbnRoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBsaXN0Ym94O1xufVxuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICByZXNpemU6IHZlcnRpY2FsO1xufVxuXG5maWVsZHNldCB7XG4gIG1pbi13aWR0aDogMDtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBib3JkZXI6IDA7XG59XG5cbmxlZ2VuZCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICBjb2xvcjogaW5oZXJpdDtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICBmb250OiBpbmhlcml0O1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbn1cblxub3V0cHV0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogbGlzdC1pdGVtO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsXG4uaDEsIC5oMiwgLmgzLCAuaDQsIC5oNSwgLmg2IHtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG5oMSwgLmgxIHtcbiAgZm9udC1zaXplOiAyLjVyZW07XG59XG5cbmgyLCAuaDIge1xuICBmb250LXNpemU6IDJyZW07XG59XG5cbmgzLCAuaDMge1xuICBmb250LXNpemU6IDEuNzVyZW07XG59XG5cbmg0LCAuaDQge1xuICBmb250LXNpemU6IDEuNXJlbTtcbn1cblxuaDUsIC5oNSB7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbn1cblxuaDYsIC5oNiB7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbn1cblxuLmxlYWQge1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG59XG5cbi5kaXNwbGF5LTEge1xuICBmb250LXNpemU6IDZyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbi5kaXNwbGF5LTIge1xuICBmb250LXNpemU6IDUuNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLmRpc3BsYXktMyB7XG4gIGZvbnQtc2l6ZTogNC41cmVtO1xuICBmb250LXdlaWdodDogMzAwO1xuICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG4uZGlzcGxheS00IHtcbiAgZm9udC1zaXplOiAzLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbmhyIHtcbiAgbWFyZ2luLXRvcDogMXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG5zbWFsbCxcbi5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xuICBmb250LXdlaWdodDogNDAwO1xufVxuXG5tYXJrLFxuLm1hcmsge1xuICBwYWRkaW5nOiAwLjJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMztcbn1cblxuLmxpc3QtdW5zdHlsZWQge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi5saXN0LWlubGluZSB7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLmxpc3QtaW5saW5lLWl0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5saXN0LWlubGluZS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkge1xuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbn1cblxuLmluaXRpYWxpc20ge1xuICBmb250LXNpemU6IDkwJTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLmJsb2NrcXVvdGUge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBmb250LXNpemU6IDEuMjVyZW07XG59XG5cbi5ibG9ja3F1b3RlLWZvb3RlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDgwJTtcbiAgY29sb3I6ICM2Yzc1N2Q7XG59XG5cbi5ibG9ja3F1b3RlLWZvb3Rlcjo6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXDIwMTRcXDAwQTBcIjtcbn1cblxuLmltZy1mbHVpZCB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4uaW1nLXRodW1ibmFpbCB7XG4gIHBhZGRpbmc6IDAuMjVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4uZmlndXJlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZmlndXJlLWltZyB7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDE7XG59XG5cbi5maWd1cmUtY2FwdGlvbiB7XG4gIGZvbnQtc2l6ZTogOTAlO1xuICBjb2xvcjogIzZjNzU3ZDtcbn1cblxuY29kZSB7XG4gIGZvbnQtc2l6ZTogODcuNSU7XG4gIGNvbG9yOiAjZTgzZThjO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG59XG5cbmEgPiBjb2RlIHtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbmtiZCB7XG4gIHBhZGRpbmc6IDAuMnJlbSAwLjRyZW07XG4gIGZvbnQtc2l6ZTogODcuNSU7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5O1xuICBib3JkZXItcmFkaXVzOiAwLjJyZW07XG59XG5cbmtiZCBrYmQge1xuICBwYWRkaW5nOiAwO1xuICBmb250LXNpemU6IDEwMCU7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5cbnByZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDg3LjUlO1xuICBjb2xvcjogIzIxMjUyOTtcbn1cblxucHJlIGNvZGUge1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG59XG5cbi5wcmUtc2Nyb2xsYWJsZSB7XG4gIG1heC1oZWlnaHQ6IDM0MHB4O1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG59XG5cbi5jb250YWluZXIge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiA1NDBweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiA3MjBweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiA5NjBweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5jb250YWluZXIge1xuICAgIG1heC13aWR0aDogMTE0MHB4O1xuICB9XG59XG5cbi5jb250YWluZXItZmx1aWQsIC5jb250YWluZXItc20sIC5jb250YWluZXItbWQsIC5jb250YWluZXItbGcsIC5jb250YWluZXIteGwge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmNvbnRhaW5lciwgLmNvbnRhaW5lci1zbSB7XG4gICAgbWF4LXdpZHRoOiA1NDBweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmNvbnRhaW5lciwgLmNvbnRhaW5lci1zbSwgLmNvbnRhaW5lci1tZCB7XG4gICAgbWF4LXdpZHRoOiA3MjBweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmNvbnRhaW5lciwgLmNvbnRhaW5lci1zbSwgLmNvbnRhaW5lci1tZCwgLmNvbnRhaW5lci1sZyB7XG4gICAgbWF4LXdpZHRoOiA5NjBweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5jb250YWluZXIsIC5jb250YWluZXItc20sIC5jb250YWluZXItbWQsIC5jb250YWluZXItbGcsIC5jb250YWluZXIteGwge1xuICAgIG1heC13aWR0aDogMTE0MHB4O1xuICB9XG59XG5cbi5yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG1hcmdpbi1yaWdodDogLTE1cHg7XG4gIG1hcmdpbi1sZWZ0OiAtMTVweDtcbn1cblxuLm5vLWd1dHRlcnMge1xuICBtYXJnaW4tcmlnaHQ6IDA7XG4gIG1hcmdpbi1sZWZ0OiAwO1xufVxuXG4ubm8tZ3V0dGVycyA+IC5jb2wsXG4ubm8tZ3V0dGVycyA+IFtjbGFzcyo9XCJjb2wtXCJdIHtcbiAgcGFkZGluZy1yaWdodDogMDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xufVxuXG4uY29sLTEsIC5jb2wtMiwgLmNvbC0zLCAuY29sLTQsIC5jb2wtNSwgLmNvbC02LCAuY29sLTcsIC5jb2wtOCwgLmNvbC05LCAuY29sLTEwLCAuY29sLTExLCAuY29sLTEyLCAuY29sLFxuLmNvbC1hdXRvLCAuY29sLXNtLTEsIC5jb2wtc20tMiwgLmNvbC1zbS0zLCAuY29sLXNtLTQsIC5jb2wtc20tNSwgLmNvbC1zbS02LCAuY29sLXNtLTcsIC5jb2wtc20tOCwgLmNvbC1zbS05LCAuY29sLXNtLTEwLCAuY29sLXNtLTExLCAuY29sLXNtLTEyLCAuY29sLXNtLFxuLmNvbC1zbS1hdXRvLCAuY29sLW1kLTEsIC5jb2wtbWQtMiwgLmNvbC1tZC0zLCAuY29sLW1kLTQsIC5jb2wtbWQtNSwgLmNvbC1tZC02LCAuY29sLW1kLTcsIC5jb2wtbWQtOCwgLmNvbC1tZC05LCAuY29sLW1kLTEwLCAuY29sLW1kLTExLCAuY29sLW1kLTEyLCAuY29sLW1kLFxuLmNvbC1tZC1hdXRvLCAuY29sLWxnLTEsIC5jb2wtbGctMiwgLmNvbC1sZy0zLCAuY29sLWxnLTQsIC5jb2wtbGctNSwgLmNvbC1sZy02LCAuY29sLWxnLTcsIC5jb2wtbGctOCwgLmNvbC1sZy05LCAuY29sLWxnLTEwLCAuY29sLWxnLTExLCAuY29sLWxnLTEyLCAuY29sLWxnLFxuLmNvbC1sZy1hdXRvLCAuY29sLXhsLTEsIC5jb2wteGwtMiwgLmNvbC14bC0zLCAuY29sLXhsLTQsIC5jb2wteGwtNSwgLmNvbC14bC02LCAuY29sLXhsLTcsIC5jb2wteGwtOCwgLmNvbC14bC05LCAuY29sLXhsLTEwLCAuY29sLXhsLTExLCAuY29sLXhsLTEyLCAuY29sLXhsLFxuLmNvbC14bC1hdXRvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgcGFkZGluZy1sZWZ0OiAxNXB4O1xufVxuXG4uY29sIHtcbiAgZmxleC1iYXNpczogMDtcbiAgZmxleC1ncm93OiAxO1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi5yb3ctY29scy0xID4gKiB7XG4gIGZsZXg6IDAgMCAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi5yb3ctY29scy0yID4gKiB7XG4gIGZsZXg6IDAgMCA1MCU7XG4gIG1heC13aWR0aDogNTAlO1xufVxuXG4ucm93LWNvbHMtMyA+ICoge1xuICBmbGV4OiAwIDAgMzMuMzMzMzMzJTtcbiAgbWF4LXdpZHRoOiAzMy4zMzMzMzMlO1xufVxuXG4ucm93LWNvbHMtNCA+ICoge1xuICBmbGV4OiAwIDAgMjUlO1xuICBtYXgtd2lkdGg6IDI1JTtcbn1cblxuLnJvdy1jb2xzLTUgPiAqIHtcbiAgZmxleDogMCAwIDIwJTtcbiAgbWF4LXdpZHRoOiAyMCU7XG59XG5cbi5yb3ctY29scy02ID4gKiB7XG4gIGZsZXg6IDAgMCAxNi42NjY2NjclO1xuICBtYXgtd2lkdGg6IDE2LjY2NjY2NyU7XG59XG5cbi5jb2wtYXV0byB7XG4gIGZsZXg6IDAgMCBhdXRvO1xuICB3aWR0aDogYXV0bztcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4uY29sLTEge1xuICBmbGV4OiAwIDAgOC4zMzMzMzMlO1xuICBtYXgtd2lkdGg6IDguMzMzMzMzJTtcbn1cblxuLmNvbC0yIHtcbiAgZmxleDogMCAwIDE2LjY2NjY2NyU7XG4gIG1heC13aWR0aDogMTYuNjY2NjY3JTtcbn1cblxuLmNvbC0zIHtcbiAgZmxleDogMCAwIDI1JTtcbiAgbWF4LXdpZHRoOiAyNSU7XG59XG5cbi5jb2wtNCB7XG4gIGZsZXg6IDAgMCAzMy4zMzMzMzMlO1xuICBtYXgtd2lkdGg6IDMzLjMzMzMzMyU7XG59XG5cbi5jb2wtNSB7XG4gIGZsZXg6IDAgMCA0MS42NjY2NjclO1xuICBtYXgtd2lkdGg6IDQxLjY2NjY2NyU7XG59XG5cbi5jb2wtNiB7XG4gIGZsZXg6IDAgMCA1MCU7XG4gIG1heC13aWR0aDogNTAlO1xufVxuXG4uY29sLTcge1xuICBmbGV4OiAwIDAgNTguMzMzMzMzJTtcbiAgbWF4LXdpZHRoOiA1OC4zMzMzMzMlO1xufVxuXG4uY29sLTgge1xuICBmbGV4OiAwIDAgNjYuNjY2NjY3JTtcbiAgbWF4LXdpZHRoOiA2Ni42NjY2NjclO1xufVxuXG4uY29sLTkge1xuICBmbGV4OiAwIDAgNzUlO1xuICBtYXgtd2lkdGg6IDc1JTtcbn1cblxuLmNvbC0xMCB7XG4gIGZsZXg6IDAgMCA4My4zMzMzMzMlO1xuICBtYXgtd2lkdGg6IDgzLjMzMzMzMyU7XG59XG5cbi5jb2wtMTEge1xuICBmbGV4OiAwIDAgOTEuNjY2NjY3JTtcbiAgbWF4LXdpZHRoOiA5MS42NjY2NjclO1xufVxuXG4uY29sLTEyIHtcbiAgZmxleDogMCAwIDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cblxuLm9yZGVyLWZpcnN0IHtcbiAgb3JkZXI6IC0xO1xufVxuXG4ub3JkZXItbGFzdCB7XG4gIG9yZGVyOiAxMztcbn1cblxuLm9yZGVyLTAge1xuICBvcmRlcjogMDtcbn1cblxuLm9yZGVyLTEge1xuICBvcmRlcjogMTtcbn1cblxuLm9yZGVyLTIge1xuICBvcmRlcjogMjtcbn1cblxuLm9yZGVyLTMge1xuICBvcmRlcjogMztcbn1cblxuLm9yZGVyLTQge1xuICBvcmRlcjogNDtcbn1cblxuLm9yZGVyLTUge1xuICBvcmRlcjogNTtcbn1cblxuLm9yZGVyLTYge1xuICBvcmRlcjogNjtcbn1cblxuLm9yZGVyLTcge1xuICBvcmRlcjogNztcbn1cblxuLm9yZGVyLTgge1xuICBvcmRlcjogODtcbn1cblxuLm9yZGVyLTkge1xuICBvcmRlcjogOTtcbn1cblxuLm9yZGVyLTEwIHtcbiAgb3JkZXI6IDEwO1xufVxuXG4ub3JkZXItMTEge1xuICBvcmRlcjogMTE7XG59XG5cbi5vcmRlci0xMiB7XG4gIG9yZGVyOiAxMjtcbn1cblxuLm9mZnNldC0xIHtcbiAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzJTtcbn1cblxuLm9mZnNldC0yIHtcbiAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NyU7XG59XG5cbi5vZmZzZXQtMyB7XG4gIG1hcmdpbi1sZWZ0OiAyNSU7XG59XG5cbi5vZmZzZXQtNCB7XG4gIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMlO1xufVxuXG4ub2Zmc2V0LTUge1xuICBtYXJnaW4tbGVmdDogNDEuNjY2NjY3JTtcbn1cblxuLm9mZnNldC02IHtcbiAgbWFyZ2luLWxlZnQ6IDUwJTtcbn1cblxuLm9mZnNldC03IHtcbiAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMyU7XG59XG5cbi5vZmZzZXQtOCB7XG4gIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjclO1xufVxuXG4ub2Zmc2V0LTkge1xuICBtYXJnaW4tbGVmdDogNzUlO1xufVxuXG4ub2Zmc2V0LTEwIHtcbiAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMyU7XG59XG5cbi5vZmZzZXQtMTEge1xuICBtYXJnaW4tbGVmdDogOTEuNjY2NjY3JTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5jb2wtc20ge1xuICAgIGZsZXgtYmFzaXM6IDA7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAucm93LWNvbHMtc20tMSA+ICoge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAucm93LWNvbHMtc20tMiA+ICoge1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgbWF4LXdpZHRoOiA1MCU7XG4gIH1cbiAgLnJvdy1jb2xzLXNtLTMgPiAqIHtcbiAgICBmbGV4OiAwIDAgMzMuMzMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzMyU7XG4gIH1cbiAgLnJvdy1jb2xzLXNtLTQgPiAqIHtcbiAgICBmbGV4OiAwIDAgMjUlO1xuICAgIG1heC13aWR0aDogMjUlO1xuICB9XG4gIC5yb3ctY29scy1zbS01ID4gKiB7XG4gICAgZmxleDogMCAwIDIwJTtcbiAgICBtYXgtd2lkdGg6IDIwJTtcbiAgfVxuICAucm93LWNvbHMtc20tNiA+ICoge1xuICAgIGZsZXg6IDAgMCAxNi42NjY2NjclO1xuICAgIG1heC13aWR0aDogMTYuNjY2NjY3JTtcbiAgfVxuICAuY29sLXNtLWF1dG8ge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAuY29sLXNtLTEge1xuICAgIGZsZXg6IDAgMCA4LjMzMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA4LjMzMzMzMyU7XG4gIH1cbiAgLmNvbC1zbS0yIHtcbiAgICBmbGV4OiAwIDAgMTYuNjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY2NyU7XG4gIH1cbiAgLmNvbC1zbS0zIHtcbiAgICBmbGV4OiAwIDAgMjUlO1xuICAgIG1heC13aWR0aDogMjUlO1xuICB9XG4gIC5jb2wtc20tNCB7XG4gICAgZmxleDogMCAwIDMzLjMzMzMzMyU7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMzMlO1xuICB9XG4gIC5jb2wtc20tNSB7XG4gICAgZmxleDogMCAwIDQxLjY2NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA0MS42NjY2NjclO1xuICB9XG4gIC5jb2wtc20tNiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTtcbiAgfVxuICAuY29sLXNtLTcge1xuICAgIGZsZXg6IDAgMCA1OC4zMzMzMzMlO1xuICAgIG1heC13aWR0aDogNTguMzMzMzMzJTtcbiAgfVxuICAuY29sLXNtLTgge1xuICAgIGZsZXg6IDAgMCA2Ni42NjY2NjclO1xuICAgIG1heC13aWR0aDogNjYuNjY2NjY3JTtcbiAgfVxuICAuY29sLXNtLTkge1xuICAgIGZsZXg6IDAgMCA3NSU7XG4gICAgbWF4LXdpZHRoOiA3NSU7XG4gIH1cbiAgLmNvbC1zbS0xMCB7XG4gICAgZmxleDogMCAwIDgzLjMzMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA4My4zMzMzMzMlO1xuICB9XG4gIC5jb2wtc20tMTEge1xuICAgIGZsZXg6IDAgMCA5MS42NjY2NjclO1xuICAgIG1heC13aWR0aDogOTEuNjY2NjY3JTtcbiAgfVxuICAuY29sLXNtLTEyIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLm9yZGVyLXNtLWZpcnN0IHtcbiAgICBvcmRlcjogLTE7XG4gIH1cbiAgLm9yZGVyLXNtLWxhc3Qge1xuICAgIG9yZGVyOiAxMztcbiAgfVxuICAub3JkZXItc20tMCB7XG4gICAgb3JkZXI6IDA7XG4gIH1cbiAgLm9yZGVyLXNtLTEge1xuICAgIG9yZGVyOiAxO1xuICB9XG4gIC5vcmRlci1zbS0yIHtcbiAgICBvcmRlcjogMjtcbiAgfVxuICAub3JkZXItc20tMyB7XG4gICAgb3JkZXI6IDM7XG4gIH1cbiAgLm9yZGVyLXNtLTQge1xuICAgIG9yZGVyOiA0O1xuICB9XG4gIC5vcmRlci1zbS01IHtcbiAgICBvcmRlcjogNTtcbiAgfVxuICAub3JkZXItc20tNiB7XG4gICAgb3JkZXI6IDY7XG4gIH1cbiAgLm9yZGVyLXNtLTcge1xuICAgIG9yZGVyOiA3O1xuICB9XG4gIC5vcmRlci1zbS04IHtcbiAgICBvcmRlcjogODtcbiAgfVxuICAub3JkZXItc20tOSB7XG4gICAgb3JkZXI6IDk7XG4gIH1cbiAgLm9yZGVyLXNtLTEwIHtcbiAgICBvcmRlcjogMTA7XG4gIH1cbiAgLm9yZGVyLXNtLTExIHtcbiAgICBvcmRlcjogMTE7XG4gIH1cbiAgLm9yZGVyLXNtLTEyIHtcbiAgICBvcmRlcjogMTI7XG4gIH1cbiAgLm9mZnNldC1zbS0wIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuICAub2Zmc2V0LXNtLTEge1xuICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMyU7XG4gIH1cbiAgLm9mZnNldC1zbS0yIHtcbiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY3JTtcbiAgfVxuICAub2Zmc2V0LXNtLTMge1xuICAgIG1hcmdpbi1sZWZ0OiAyNSU7XG4gIH1cbiAgLm9mZnNldC1zbS00IHtcbiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzJTtcbiAgfVxuICAub2Zmc2V0LXNtLTUge1xuICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjclO1xuICB9XG4gIC5vZmZzZXQtc20tNiB7XG4gICAgbWFyZ2luLWxlZnQ6IDUwJTtcbiAgfVxuICAub2Zmc2V0LXNtLTcge1xuICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMlO1xuICB9XG4gIC5vZmZzZXQtc20tOCB7XG4gICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NyU7XG4gIH1cbiAgLm9mZnNldC1zbS05IHtcbiAgICBtYXJnaW4tbGVmdDogNzUlO1xuICB9XG4gIC5vZmZzZXQtc20tMTAge1xuICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMlO1xuICB9XG4gIC5vZmZzZXQtc20tMTEge1xuICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjclO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuY29sLW1kIHtcbiAgICBmbGV4LWJhc2lzOiAwO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLnJvdy1jb2xzLW1kLTEgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLnJvdy1jb2xzLW1kLTIgPiAqIHtcbiAgICBmbGV4OiAwIDAgNTAlO1xuICAgIG1heC13aWR0aDogNTAlO1xuICB9XG4gIC5yb3ctY29scy1tZC0zID4gKiB7XG4gICAgZmxleDogMCAwIDMzLjMzMzMzMyU7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMzMlO1xuICB9XG4gIC5yb3ctY29scy1tZC00ID4gKiB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAucm93LWNvbHMtbWQtNSA+ICoge1xuICAgIGZsZXg6IDAgMCAyMCU7XG4gICAgbWF4LXdpZHRoOiAyMCU7XG4gIH1cbiAgLnJvdy1jb2xzLW1kLTYgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTYuNjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY2NyU7XG4gIH1cbiAgLmNvbC1tZC1hdXRvIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmNvbC1tZC0xIHtcbiAgICBmbGV4OiAwIDAgOC4zMzMzMzMlO1xuICAgIG1heC13aWR0aDogOC4zMzMzMzMlO1xuICB9XG4gIC5jb2wtbWQtMiB7XG4gICAgZmxleDogMCAwIDE2LjY2NjY2NyU7XG4gICAgbWF4LXdpZHRoOiAxNi42NjY2NjclO1xuICB9XG4gIC5jb2wtbWQtMyB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAuY29sLW1kLTQge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMlO1xuICAgIG1heC13aWR0aDogMzMuMzMzMzMzJTtcbiAgfVxuICAuY29sLW1kLTUge1xuICAgIGZsZXg6IDAgMCA0MS42NjY2NjclO1xuICAgIG1heC13aWR0aDogNDEuNjY2NjY3JTtcbiAgfVxuICAuY29sLW1kLTYge1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgbWF4LXdpZHRoOiA1MCU7XG4gIH1cbiAgLmNvbC1tZC03IHtcbiAgICBmbGV4OiAwIDAgNTguMzMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDU4LjMzMzMzMyU7XG4gIH1cbiAgLmNvbC1tZC04IHtcbiAgICBmbGV4OiAwIDAgNjYuNjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NyU7XG4gIH1cbiAgLmNvbC1tZC05IHtcbiAgICBmbGV4OiAwIDAgNzUlO1xuICAgIG1heC13aWR0aDogNzUlO1xuICB9XG4gIC5jb2wtbWQtMTAge1xuICAgIGZsZXg6IDAgMCA4My4zMzMzMzMlO1xuICAgIG1heC13aWR0aDogODMuMzMzMzMzJTtcbiAgfVxuICAuY29sLW1kLTExIHtcbiAgICBmbGV4OiAwIDAgOTEuNjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDkxLjY2NjY2NyU7XG4gIH1cbiAgLmNvbC1tZC0xMiB7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIC5vcmRlci1tZC1maXJzdCB7XG4gICAgb3JkZXI6IC0xO1xuICB9XG4gIC5vcmRlci1tZC1sYXN0IHtcbiAgICBvcmRlcjogMTM7XG4gIH1cbiAgLm9yZGVyLW1kLTAge1xuICAgIG9yZGVyOiAwO1xuICB9XG4gIC5vcmRlci1tZC0xIHtcbiAgICBvcmRlcjogMTtcbiAgfVxuICAub3JkZXItbWQtMiB7XG4gICAgb3JkZXI6IDI7XG4gIH1cbiAgLm9yZGVyLW1kLTMge1xuICAgIG9yZGVyOiAzO1xuICB9XG4gIC5vcmRlci1tZC00IHtcbiAgICBvcmRlcjogNDtcbiAgfVxuICAub3JkZXItbWQtNSB7XG4gICAgb3JkZXI6IDU7XG4gIH1cbiAgLm9yZGVyLW1kLTYge1xuICAgIG9yZGVyOiA2O1xuICB9XG4gIC5vcmRlci1tZC03IHtcbiAgICBvcmRlcjogNztcbiAgfVxuICAub3JkZXItbWQtOCB7XG4gICAgb3JkZXI6IDg7XG4gIH1cbiAgLm9yZGVyLW1kLTkge1xuICAgIG9yZGVyOiA5O1xuICB9XG4gIC5vcmRlci1tZC0xMCB7XG4gICAgb3JkZXI6IDEwO1xuICB9XG4gIC5vcmRlci1tZC0xMSB7XG4gICAgb3JkZXI6IDExO1xuICB9XG4gIC5vcmRlci1tZC0xMiB7XG4gICAgb3JkZXI6IDEyO1xuICB9XG4gIC5vZmZzZXQtbWQtMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbiAgLm9mZnNldC1tZC0xIHtcbiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMlO1xuICB9XG4gIC5vZmZzZXQtbWQtMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NyU7XG4gIH1cbiAgLm9mZnNldC1tZC0zIHtcbiAgICBtYXJnaW4tbGVmdDogMjUlO1xuICB9XG4gIC5vZmZzZXQtbWQtNCB7XG4gICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMyU7XG4gIH1cbiAgLm9mZnNldC1tZC01IHtcbiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY3JTtcbiAgfVxuICAub2Zmc2V0LW1kLTYge1xuICAgIG1hcmdpbi1sZWZ0OiA1MCU7XG4gIH1cbiAgLm9mZnNldC1tZC03IHtcbiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzJTtcbiAgfVxuICAub2Zmc2V0LW1kLTgge1xuICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjclO1xuICB9XG4gIC5vZmZzZXQtbWQtOSB7XG4gICAgbWFyZ2luLWxlZnQ6IDc1JTtcbiAgfVxuICAub2Zmc2V0LW1kLTEwIHtcbiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzJTtcbiAgfVxuICAub2Zmc2V0LW1kLTExIHtcbiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY3JTtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmNvbC1sZyB7XG4gICAgZmxleC1iYXNpczogMDtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIC5yb3ctY29scy1sZy0xID4gKiB7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIC5yb3ctY29scy1sZy0yID4gKiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTtcbiAgfVxuICAucm93LWNvbHMtbGctMyA+ICoge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMlO1xuICAgIG1heC13aWR0aDogMzMuMzMzMzMzJTtcbiAgfVxuICAucm93LWNvbHMtbGctNCA+ICoge1xuICAgIGZsZXg6IDAgMCAyNSU7XG4gICAgbWF4LXdpZHRoOiAyNSU7XG4gIH1cbiAgLnJvdy1jb2xzLWxnLTUgPiAqIHtcbiAgICBmbGV4OiAwIDAgMjAlO1xuICAgIG1heC13aWR0aDogMjAlO1xuICB9XG4gIC5yb3ctY29scy1sZy02ID4gKiB7XG4gICAgZmxleDogMCAwIDE2LjY2NjY2NyU7XG4gICAgbWF4LXdpZHRoOiAxNi42NjY2NjclO1xuICB9XG4gIC5jb2wtbGctYXV0byB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIC5jb2wtbGctMSB7XG4gICAgZmxleDogMCAwIDguMzMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDguMzMzMzMzJTtcbiAgfVxuICAuY29sLWxnLTIge1xuICAgIGZsZXg6IDAgMCAxNi42NjY2NjclO1xuICAgIG1heC13aWR0aDogMTYuNjY2NjY3JTtcbiAgfVxuICAuY29sLWxnLTMge1xuICAgIGZsZXg6IDAgMCAyNSU7XG4gICAgbWF4LXdpZHRoOiAyNSU7XG4gIH1cbiAgLmNvbC1sZy00IHtcbiAgICBmbGV4OiAwIDAgMzMuMzMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzMyU7XG4gIH1cbiAgLmNvbC1sZy01IHtcbiAgICBmbGV4OiAwIDAgNDEuNjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDQxLjY2NjY2NyU7XG4gIH1cbiAgLmNvbC1sZy02IHtcbiAgICBmbGV4OiAwIDAgNTAlO1xuICAgIG1heC13aWR0aDogNTAlO1xuICB9XG4gIC5jb2wtbGctNyB7XG4gICAgZmxleDogMCAwIDU4LjMzMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA1OC4zMzMzMzMlO1xuICB9XG4gIC5jb2wtbGctOCB7XG4gICAgZmxleDogMCAwIDY2LjY2NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA2Ni42NjY2NjclO1xuICB9XG4gIC5jb2wtbGctOSB7XG4gICAgZmxleDogMCAwIDc1JTtcbiAgICBtYXgtd2lkdGg6IDc1JTtcbiAgfVxuICAuY29sLWxnLTEwIHtcbiAgICBmbGV4OiAwIDAgODMuMzMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDgzLjMzMzMzMyU7XG4gIH1cbiAgLmNvbC1sZy0xMSB7XG4gICAgZmxleDogMCAwIDkxLjY2NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA5MS42NjY2NjclO1xuICB9XG4gIC5jb2wtbGctMTIge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAub3JkZXItbGctZmlyc3Qge1xuICAgIG9yZGVyOiAtMTtcbiAgfVxuICAub3JkZXItbGctbGFzdCB7XG4gICAgb3JkZXI6IDEzO1xuICB9XG4gIC5vcmRlci1sZy0wIHtcbiAgICBvcmRlcjogMDtcbiAgfVxuICAub3JkZXItbGctMSB7XG4gICAgb3JkZXI6IDE7XG4gIH1cbiAgLm9yZGVyLWxnLTIge1xuICAgIG9yZGVyOiAyO1xuICB9XG4gIC5vcmRlci1sZy0zIHtcbiAgICBvcmRlcjogMztcbiAgfVxuICAub3JkZXItbGctNCB7XG4gICAgb3JkZXI6IDQ7XG4gIH1cbiAgLm9yZGVyLWxnLTUge1xuICAgIG9yZGVyOiA1O1xuICB9XG4gIC5vcmRlci1sZy02IHtcbiAgICBvcmRlcjogNjtcbiAgfVxuICAub3JkZXItbGctNyB7XG4gICAgb3JkZXI6IDc7XG4gIH1cbiAgLm9yZGVyLWxnLTgge1xuICAgIG9yZGVyOiA4O1xuICB9XG4gIC5vcmRlci1sZy05IHtcbiAgICBvcmRlcjogOTtcbiAgfVxuICAub3JkZXItbGctMTAge1xuICAgIG9yZGVyOiAxMDtcbiAgfVxuICAub3JkZXItbGctMTEge1xuICAgIG9yZGVyOiAxMTtcbiAgfVxuICAub3JkZXItbGctMTIge1xuICAgIG9yZGVyOiAxMjtcbiAgfVxuICAub2Zmc2V0LWxnLTAge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG4gIC5vZmZzZXQtbGctMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzJTtcbiAgfVxuICAub2Zmc2V0LWxnLTIge1xuICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjclO1xuICB9XG4gIC5vZmZzZXQtbGctMyB7XG4gICAgbWFyZ2luLWxlZnQ6IDI1JTtcbiAgfVxuICAub2Zmc2V0LWxnLTQge1xuICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMlO1xuICB9XG4gIC5vZmZzZXQtbGctNSB7XG4gICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NyU7XG4gIH1cbiAgLm9mZnNldC1sZy02IHtcbiAgICBtYXJnaW4tbGVmdDogNTAlO1xuICB9XG4gIC5vZmZzZXQtbGctNyB7XG4gICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMyU7XG4gIH1cbiAgLm9mZnNldC1sZy04IHtcbiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY3JTtcbiAgfVxuICAub2Zmc2V0LWxnLTkge1xuICAgIG1hcmdpbi1sZWZ0OiA3NSU7XG4gIH1cbiAgLm9mZnNldC1sZy0xMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMyU7XG4gIH1cbiAgLm9mZnNldC1sZy0xMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NyU7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAuY29sLXhsIHtcbiAgICBmbGV4LWJhc2lzOiAwO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLnJvdy1jb2xzLXhsLTEgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLnJvdy1jb2xzLXhsLTIgPiAqIHtcbiAgICBmbGV4OiAwIDAgNTAlO1xuICAgIG1heC13aWR0aDogNTAlO1xuICB9XG4gIC5yb3ctY29scy14bC0zID4gKiB7XG4gICAgZmxleDogMCAwIDMzLjMzMzMzMyU7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMzMlO1xuICB9XG4gIC5yb3ctY29scy14bC00ID4gKiB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAucm93LWNvbHMteGwtNSA+ICoge1xuICAgIGZsZXg6IDAgMCAyMCU7XG4gICAgbWF4LXdpZHRoOiAyMCU7XG4gIH1cbiAgLnJvdy1jb2xzLXhsLTYgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTYuNjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY2NyU7XG4gIH1cbiAgLmNvbC14bC1hdXRvIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmNvbC14bC0xIHtcbiAgICBmbGV4OiAwIDAgOC4zMzMzMzMlO1xuICAgIG1heC13aWR0aDogOC4zMzMzMzMlO1xuICB9XG4gIC5jb2wteGwtMiB7XG4gICAgZmxleDogMCAwIDE2LjY2NjY2NyU7XG4gICAgbWF4LXdpZHRoOiAxNi42NjY2NjclO1xuICB9XG4gIC5jb2wteGwtMyB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAuY29sLXhsLTQge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMlO1xuICAgIG1heC13aWR0aDogMzMuMzMzMzMzJTtcbiAgfVxuICAuY29sLXhsLTUge1xuICAgIGZsZXg6IDAgMCA0MS42NjY2NjclO1xuICAgIG1heC13aWR0aDogNDEuNjY2NjY3JTtcbiAgfVxuICAuY29sLXhsLTYge1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgbWF4LXdpZHRoOiA1MCU7XG4gIH1cbiAgLmNvbC14bC03IHtcbiAgICBmbGV4OiAwIDAgNTguMzMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDU4LjMzMzMzMyU7XG4gIH1cbiAgLmNvbC14bC04IHtcbiAgICBmbGV4OiAwIDAgNjYuNjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NyU7XG4gIH1cbiAgLmNvbC14bC05IHtcbiAgICBmbGV4OiAwIDAgNzUlO1xuICAgIG1heC13aWR0aDogNzUlO1xuICB9XG4gIC5jb2wteGwtMTAge1xuICAgIGZsZXg6IDAgMCA4My4zMzMzMzMlO1xuICAgIG1heC13aWR0aDogODMuMzMzMzMzJTtcbiAgfVxuICAuY29sLXhsLTExIHtcbiAgICBmbGV4OiAwIDAgOTEuNjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDkxLjY2NjY2NyU7XG4gIH1cbiAgLmNvbC14bC0xMiB7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIC5vcmRlci14bC1maXJzdCB7XG4gICAgb3JkZXI6IC0xO1xuICB9XG4gIC5vcmRlci14bC1sYXN0IHtcbiAgICBvcmRlcjogMTM7XG4gIH1cbiAgLm9yZGVyLXhsLTAge1xuICAgIG9yZGVyOiAwO1xuICB9XG4gIC5vcmRlci14bC0xIHtcbiAgICBvcmRlcjogMTtcbiAgfVxuICAub3JkZXIteGwtMiB7XG4gICAgb3JkZXI6IDI7XG4gIH1cbiAgLm9yZGVyLXhsLTMge1xuICAgIG9yZGVyOiAzO1xuICB9XG4gIC5vcmRlci14bC00IHtcbiAgICBvcmRlcjogNDtcbiAgfVxuICAub3JkZXIteGwtNSB7XG4gICAgb3JkZXI6IDU7XG4gIH1cbiAgLm9yZGVyLXhsLTYge1xuICAgIG9yZGVyOiA2O1xuICB9XG4gIC5vcmRlci14bC03IHtcbiAgICBvcmRlcjogNztcbiAgfVxuICAub3JkZXIteGwtOCB7XG4gICAgb3JkZXI6IDg7XG4gIH1cbiAgLm9yZGVyLXhsLTkge1xuICAgIG9yZGVyOiA5O1xuICB9XG4gIC5vcmRlci14bC0xMCB7XG4gICAgb3JkZXI6IDEwO1xuICB9XG4gIC5vcmRlci14bC0xMSB7XG4gICAgb3JkZXI6IDExO1xuICB9XG4gIC5vcmRlci14bC0xMiB7XG4gICAgb3JkZXI6IDEyO1xuICB9XG4gIC5vZmZzZXQteGwtMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbiAgLm9mZnNldC14bC0xIHtcbiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMlO1xuICB9XG4gIC5vZmZzZXQteGwtMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NyU7XG4gIH1cbiAgLm9mZnNldC14bC0zIHtcbiAgICBtYXJnaW4tbGVmdDogMjUlO1xuICB9XG4gIC5vZmZzZXQteGwtNCB7XG4gICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMyU7XG4gIH1cbiAgLm9mZnNldC14bC01IHtcbiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY3JTtcbiAgfVxuICAub2Zmc2V0LXhsLTYge1xuICAgIG1hcmdpbi1sZWZ0OiA1MCU7XG4gIH1cbiAgLm9mZnNldC14bC03IHtcbiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzJTtcbiAgfVxuICAub2Zmc2V0LXhsLTgge1xuICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjclO1xuICB9XG4gIC5vZmZzZXQteGwtOSB7XG4gICAgbWFyZ2luLWxlZnQ6IDc1JTtcbiAgfVxuICAub2Zmc2V0LXhsLTEwIHtcbiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzJTtcbiAgfVxuICAub2Zmc2V0LXhsLTExIHtcbiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY3JTtcbiAgfVxufVxuXG4udGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgY29sb3I6ICMyMTI1Mjk7XG59XG5cbi50YWJsZSB0aCxcbi50YWJsZSB0ZCB7XG4gIHBhZGRpbmc6IDAuNzVyZW07XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGVlMmU2O1xufVxuXG4udGFibGUgdGhlYWQgdGgge1xuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2RlZTJlNjtcbn1cblxuLnRhYmxlIHRib2R5ICsgdGJvZHkge1xuICBib3JkZXItdG9wOiAycHggc29saWQgI2RlZTJlNjtcbn1cblxuLnRhYmxlLXNtIHRoLFxuLnRhYmxlLXNtIHRkIHtcbiAgcGFkZGluZzogMC4zcmVtO1xufVxuXG4udGFibGUtYm9yZGVyZWQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2O1xufVxuXG4udGFibGUtYm9yZGVyZWQgdGgsXG4udGFibGUtYm9yZGVyZWQgdGQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2O1xufVxuXG4udGFibGUtYm9yZGVyZWQgdGhlYWQgdGgsXG4udGFibGUtYm9yZGVyZWQgdGhlYWQgdGQge1xuICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7XG59XG5cbi50YWJsZS1ib3JkZXJsZXNzIHRoLFxuLnRhYmxlLWJvcmRlcmxlc3MgdGQsXG4udGFibGUtYm9yZGVybGVzcyB0aGVhZCB0aCxcbi50YWJsZS1ib3JkZXJsZXNzIHRib2R5ICsgdGJvZHkge1xuICBib3JkZXI6IDA7XG59XG5cbi50YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDUpO1xufVxuXG4udGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIge1xuICBjb2xvcjogIzIxMjUyOTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA3NSk7XG59XG5cbi50YWJsZS1wcmltYXJ5LFxuLnRhYmxlLXByaW1hcnkgPiB0aCxcbi50YWJsZS1wcmltYXJ5ID4gdGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhkYWZmO1xufVxuXG4udGFibGUtcHJpbWFyeSB0aCxcbi50YWJsZS1wcmltYXJ5IHRkLFxuLnRhYmxlLXByaW1hcnkgdGhlYWQgdGgsXG4udGFibGUtcHJpbWFyeSB0Ym9keSArIHRib2R5IHtcbiAgYm9yZGVyLWNvbG9yOiAjN2FiYWZmO1xufVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWZjZGZmO1xufVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIgPiB0ZCxcbi50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciA+IHRoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzlmY2RmZjtcbn1cblxuLnRhYmxlLXNlY29uZGFyeSxcbi50YWJsZS1zZWNvbmRhcnkgPiB0aCxcbi50YWJsZS1zZWNvbmRhcnkgPiB0ZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkNmQ4ZGI7XG59XG5cbi50YWJsZS1zZWNvbmRhcnkgdGgsXG4udGFibGUtc2Vjb25kYXJ5IHRkLFxuLnRhYmxlLXNlY29uZGFyeSB0aGVhZCB0aCxcbi50YWJsZS1zZWNvbmRhcnkgdGJvZHkgKyB0Ym9keSB7XG4gIGJvcmRlci1jb2xvcjogI2IzYjdiYjtcbn1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS1zZWNvbmRhcnk6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzhjYmNmO1xufVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciA+IHRkLFxuLnRhYmxlLWhvdmVyIC50YWJsZS1zZWNvbmRhcnk6aG92ZXIgPiB0aCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjOGNiY2Y7XG59XG5cbi50YWJsZS1zdWNjZXNzLFxuLnRhYmxlLXN1Y2Nlc3MgPiB0aCxcbi50YWJsZS1zdWNjZXNzID4gdGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzNlNmNiO1xufVxuXG4udGFibGUtc3VjY2VzcyB0aCxcbi50YWJsZS1zdWNjZXNzIHRkLFxuLnRhYmxlLXN1Y2Nlc3MgdGhlYWQgdGgsXG4udGFibGUtc3VjY2VzcyB0Ym9keSArIHRib2R5IHtcbiAgYm9yZGVyLWNvbG9yOiAjOGZkMTllO1xufVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjFkZmJiO1xufVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgPiB0ZCxcbi50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlciA+IHRoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjtcbn1cblxuLnRhYmxlLWluZm8sXG4udGFibGUtaW5mbyA+IHRoLFxuLnRhYmxlLWluZm8gPiB0ZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiZWU1ZWI7XG59XG5cbi50YWJsZS1pbmZvIHRoLFxuLnRhYmxlLWluZm8gdGQsXG4udGFibGUtaW5mbyB0aGVhZCB0aCxcbi50YWJsZS1pbmZvIHRib2R5ICsgdGJvZHkge1xuICBib3JkZXItY29sb3I6ICM4NmNmZGE7XG59XG5cbi50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhYmRkZTU7XG59XG5cbi50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciA+IHRkLFxuLnRhYmxlLWhvdmVyIC50YWJsZS1pbmZvOmhvdmVyID4gdGgge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWJkZGU1O1xufVxuXG4udGFibGUtd2FybmluZyxcbi50YWJsZS13YXJuaW5nID4gdGgsXG4udGFibGUtd2FybmluZyA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWViYTtcbn1cblxuLnRhYmxlLXdhcm5pbmcgdGgsXG4udGFibGUtd2FybmluZyB0ZCxcbi50YWJsZS13YXJuaW5nIHRoZWFkIHRoLFxuLnRhYmxlLXdhcm5pbmcgdGJvZHkgKyB0Ym9keSB7XG4gIGJvcmRlci1jb2xvcjogI2ZmZGY3ZTtcbn1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZThhMTtcbn1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyID4gdGQsXG4udGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIgPiB0aCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmU4YTE7XG59XG5cbi50YWJsZS1kYW5nZXIsXG4udGFibGUtZGFuZ2VyID4gdGgsXG4udGFibGUtZGFuZ2VyID4gdGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVjNmNiO1xufVxuXG4udGFibGUtZGFuZ2VyIHRoLFxuLnRhYmxlLWRhbmdlciB0ZCxcbi50YWJsZS1kYW5nZXIgdGhlYWQgdGgsXG4udGFibGUtZGFuZ2VyIHRib2R5ICsgdGJvZHkge1xuICBib3JkZXItY29sb3I6ICNlZDk2OWU7XG59XG5cbi50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YxYjBiNztcbn1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgPiB0ZCxcbi50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyID4gdGgge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFiMGI3O1xufVxuXG4udGFibGUtbGlnaHQsXG4udGFibGUtbGlnaHQgPiB0aCxcbi50YWJsZS1saWdodCA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZTtcbn1cblxuLnRhYmxlLWxpZ2h0IHRoLFxuLnRhYmxlLWxpZ2h0IHRkLFxuLnRhYmxlLWxpZ2h0IHRoZWFkIHRoLFxuLnRhYmxlLWxpZ2h0IHRib2R5ICsgdGJvZHkge1xuICBib3JkZXItY29sb3I6ICNmYmZjZmM7XG59XG5cbi50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlY2Y2O1xufVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyID4gdGQsXG4udGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyID4gdGgge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlY2Y2O1xufVxuXG4udGFibGUtZGFyayxcbi50YWJsZS1kYXJrID4gdGgsXG4udGFibGUtZGFyayA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M2YzhjYTtcbn1cblxuLnRhYmxlLWRhcmsgdGgsXG4udGFibGUtZGFyayB0ZCxcbi50YWJsZS1kYXJrIHRoZWFkIHRoLFxuLnRhYmxlLWRhcmsgdGJvZHkgKyB0Ym9keSB7XG4gIGJvcmRlci1jb2xvcjogIzk1OTk5Yztcbn1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I5YmJiZTtcbn1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyID4gdGQsXG4udGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIgPiB0aCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiOWJiYmU7XG59XG5cbi50YWJsZS1hY3RpdmUsXG4udGFibGUtYWN0aXZlID4gdGgsXG4udGFibGUtYWN0aXZlID4gdGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTtcbn1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS1hY3RpdmU6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTtcbn1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS1hY3RpdmU6aG92ZXIgPiB0ZCxcbi50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyID4gdGgge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTtcbn1cblxuLnRhYmxlIC50aGVhZC1kYXJrIHRoIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7XG4gIGJvcmRlci1jb2xvcjogIzQ1NGQ1NTtcbn1cblxuLnRhYmxlIC50aGVhZC1saWdodCB0aCB7XG4gIGNvbG9yOiAjNDk1MDU3O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBib3JkZXItY29sb3I6ICNkZWUyZTY7XG59XG5cbi50YWJsZS1kYXJrIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7XG59XG5cbi50YWJsZS1kYXJrIHRoLFxuLnRhYmxlLWRhcmsgdGQsXG4udGFibGUtZGFyayB0aGVhZCB0aCB7XG4gIGJvcmRlci1jb2xvcjogIzQ1NGQ1NTtcbn1cblxuLnRhYmxlLWRhcmsudGFibGUtYm9yZGVyZWQge1xuICBib3JkZXI6IDA7XG59XG5cbi50YWJsZS1kYXJrLnRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG59XG5cbi50YWJsZS1kYXJrLnRhYmxlLWhvdmVyIHRib2R5IHRyOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNzUpO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHtcbiAgLnRhYmxlLXJlc3BvbnNpdmUtc20ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC50YWJsZS1yZXNwb25zaXZlLXNtID4gLnRhYmxlLWJvcmRlcmVkIHtcbiAgICBib3JkZXI6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gIC50YWJsZS1yZXNwb25zaXZlLW1kIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuICAudGFibGUtcmVzcG9uc2l2ZS1tZCA+IC50YWJsZS1ib3JkZXJlZCB7XG4gICAgYm9yZGVyOiAwO1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkge1xuICAudGFibGUtcmVzcG9uc2l2ZS1sZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIH1cbiAgLnRhYmxlLXJlc3BvbnNpdmUtbGcgPiAudGFibGUtYm9yZGVyZWQge1xuICAgIGJvcmRlcjogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7XG4gIC50YWJsZS1yZXNwb25zaXZlLXhsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuICAudGFibGUtcmVzcG9uc2l2ZS14bCA+IC50YWJsZS1ib3JkZXJlZCB7XG4gICAgYm9yZGVyOiAwO1xuICB9XG59XG5cbi50YWJsZS1yZXNwb25zaXZlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdy14OiBhdXRvO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkIHtcbiAgYm9yZGVyOiAwO1xufVxuXG4uZm9ybS1jb250cm9sIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGNhbGMoMS41ZW0gKyAwLjc1cmVtICsgMnB4KTtcbiAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogIzQ5NTA1NztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O1xufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuZm9ybS1jb250cm9sIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG59XG5cbi5mb3JtLWNvbnRyb2w6Oi1tcy1leHBhbmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAwO1xufVxuXG4uZm9ybS1jb250cm9sOi1tb3otZm9jdXNyaW5nIHtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICB0ZXh0LXNoYWRvdzogMCAwIDAgIzQ5NTA1Nztcbn1cblxuLmZvcm0tY29udHJvbDpmb2N1cyB7XG4gIGNvbG9yOiAjNDk1MDU3O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBib3JkZXItY29sb3I6ICM4MGJkZmY7XG4gIG91dGxpbmU6IDA7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTtcbn1cblxuLmZvcm0tY29udHJvbDo6cGxhY2Vob2xkZXIge1xuICBjb2xvcjogIzZjNzU3ZDtcbiAgb3BhY2l0eTogMTtcbn1cblxuLmZvcm0tY29udHJvbDpkaXNhYmxlZCwgLmZvcm0tY29udHJvbFtyZWFkb25seV0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBvcGFjaXR5OiAxO1xufVxuXG5zZWxlY3QuZm9ybS1jb250cm9sOmZvY3VzOjotbXMtdmFsdWUge1xuICBjb2xvcjogIzQ5NTA1NztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cblxuLmZvcm0tY29udHJvbC1maWxlLFxuLmZvcm0tY29udHJvbC1yYW5nZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmNvbC1mb3JtLWxhYmVsIHtcbiAgcGFkZGluZy10b3A6IGNhbGMoMC4zNzVyZW0gKyAxcHgpO1xuICBwYWRkaW5nLWJvdHRvbTogY2FsYygwLjM3NXJlbSArIDFweCk7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmNvbC1mb3JtLWxhYmVsLWxnIHtcbiAgcGFkZGluZy10b3A6IGNhbGMoMC41cmVtICsgMXB4KTtcbiAgcGFkZGluZy1ib3R0b206IGNhbGMoMC41cmVtICsgMXB4KTtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBsaW5lLWhlaWdodDogMS41O1xufVxuXG4uY29sLWZvcm0tbGFiZWwtc20ge1xuICBwYWRkaW5nLXRvcDogY2FsYygwLjI1cmVtICsgMXB4KTtcbiAgcGFkZGluZy1ib3R0b206IGNhbGMoMC4yNXJlbSArIDFweCk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwLjM3NXJlbSAwO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBmb250LXNpemU6IDFyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXdpZHRoOiAxcHggMDtcbn1cblxuLmZvcm0tY29udHJvbC1wbGFpbnRleHQuZm9ybS1jb250cm9sLXNtLCAuZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wtbGcge1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG59XG5cbi5mb3JtLWNvbnRyb2wtc20ge1xuICBoZWlnaHQ6IGNhbGMoMS41ZW0gKyAwLjVyZW0gKyAycHgpO1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm9yZGVyLXJhZGl1czogMC4ycmVtO1xufVxuXG4uZm9ybS1jb250cm9sLWxnIHtcbiAgaGVpZ2h0OiBjYWxjKDEuNWVtICsgMXJlbSArIDJweCk7XG4gIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGJvcmRlci1yYWRpdXM6IDAuM3JlbTtcbn1cblxuc2VsZWN0LmZvcm0tY29udHJvbFtzaXplXSwgc2VsZWN0LmZvcm0tY29udHJvbFttdWx0aXBsZV0ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbnRleHRhcmVhLmZvcm0tY29udHJvbCB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLmZvcm0tZ3JvdXAge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG4uZm9ybS10ZXh0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IDAuMjVyZW07XG59XG5cbi5mb3JtLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgbWFyZ2luLXJpZ2h0OiAtNXB4O1xuICBtYXJnaW4tbGVmdDogLTVweDtcbn1cblxuLmZvcm0tcm93ID4gLmNvbCxcbi5mb3JtLXJvdyA+IFtjbGFzcyo9XCJjb2wtXCJdIHtcbiAgcGFkZGluZy1yaWdodDogNXB4O1xuICBwYWRkaW5nLWxlZnQ6IDVweDtcbn1cblxuLmZvcm0tY2hlY2sge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07XG59XG5cbi5mb3JtLWNoZWNrLWlucHV0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXJnaW4tdG9wOiAwLjNyZW07XG4gIG1hcmdpbi1sZWZ0OiAtMS4yNXJlbTtcbn1cblxuLmZvcm0tY2hlY2staW5wdXRbZGlzYWJsZWRdIH4gLmZvcm0tY2hlY2stbGFiZWwsXG4uZm9ybS1jaGVjay1pbnB1dDpkaXNhYmxlZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgY29sb3I6ICM2Yzc1N2Q7XG59XG5cbi5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmZvcm0tY2hlY2staW5saW5lIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtO1xufVxuXG4uZm9ybS1jaGVjay1pbmxpbmUgLmZvcm0tY2hlY2staW5wdXQge1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tcmlnaHQ6IDAuMzEyNXJlbTtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbi52YWxpZC1mZWVkYmFjayB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xuICBmb250LXNpemU6IDgwJTtcbiAgY29sb3I6ICMyOGE3NDU7XG59XG5cbi52YWxpZC10b29sdGlwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIHotaW5kZXg6IDU7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XG4gIG1hcmdpbi10b3A6IC4xcmVtO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MCwgMTY3LCA2OSwgMC45KTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLndhcy12YWxpZGF0ZWQgOnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLFxuLndhcy12YWxpZGF0ZWQgOnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsXG4uaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssXG4uaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOnZhbGlkLCAuZm9ybS1jb250cm9sLmlzLXZhbGlkIHtcbiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1O1xuICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDEuNWVtICsgMC43NXJlbSk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nOCcgaGVpZ2h0PSc4JyB2aWV3Qm94PScwIDAgOCA4JyUzZSUzY3BhdGggZmlsbD0nJTIzMjhhNzQ1JyBkPSdNMi4zIDYuNzNMLjYgNC41M2MtLjQtMS4wNC40Ni0xLjQgMS4xLS44bDEuMSAxLjQgMy40LTMuOGMuNi0uNjMgMS42LS4yNyAxLjIuN2wtNCA0LjZjLS40My41LS44LjQtMS4xLjF6Jy8lM2UlM2Mvc3ZnJTNlXCIpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCBjYWxjKDAuMzc1ZW0gKyAwLjE4NzVyZW0pIGNlbnRlcjtcbiAgYmFja2dyb3VuZC1zaXplOiBjYWxjKDAuNzVlbSArIDAuMzc1cmVtKSBjYWxjKDAuNzVlbSArIDAuMzc1cmVtKTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZDpmb2N1cywgLmZvcm0tY29udHJvbC5pcy12YWxpZDpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NTtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpO1xufVxuXG4ud2FzLXZhbGlkYXRlZCB0ZXh0YXJlYS5mb3JtLWNvbnRyb2w6dmFsaWQsIHRleHRhcmVhLmZvcm0tY29udHJvbC5pcy12YWxpZCB7XG4gIHBhZGRpbmctcmlnaHQ6IGNhbGMoMS41ZW0gKyAwLjc1cmVtKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wIGNhbGMoMC4zNzVlbSArIDAuMTg3NXJlbSkgcmlnaHQgY2FsYygwLjM3NWVtICsgMC4xODc1cmVtKTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIHtcbiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1O1xuICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDAuNzVlbSArIDIuMzEyNXJlbSk7XG4gIGJhY2tncm91bmQ6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nNCcgaGVpZ2h0PSc1JyB2aWV3Qm94PScwIDAgNCA1JyUzZSUzY3BhdGggZmlsbD0nJTIzMzQzYTQwJyBkPSdNMiAwTDAgMmg0em0wIDVMMCAzaDR6Jy8lM2UlM2Mvc3ZnJTNlXCIpIG5vLXJlcGVhdCByaWdodCAwLjc1cmVtIGNlbnRlci84cHggMTBweCwgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc4JyBoZWlnaHQ9JzgnIHZpZXdCb3g9JzAgMCA4IDgnJTNlJTNjcGF0aCBmaWxsPSclMjMyOGE3NDUnIGQ9J00yLjMgNi43M0wuNiA0LjUzYy0uNC0xLjA0LjQ2LTEuNCAxLjEtLjhsMS4xIDEuNCAzLjQtMy44Yy42LS42MyAxLjYtLjI3IDEuMi43bC00IDQuNmMtLjQzLjUtLjguNC0xLjEuMXonLyUzZSUzYy9zdmclM2VcIikgI2ZmZiBuby1yZXBlYXQgY2VudGVyIHJpZ2h0IDEuNzVyZW0vY2FsYygwLjc1ZW0gKyAwLjM3NXJlbSkgY2FsYygwLjc1ZW0gKyAwLjM3NXJlbSk7XG59XG5cbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OnZhbGlkOmZvY3VzLCAuY3VzdG9tLXNlbGVjdC5pcy12YWxpZDpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NTtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpO1xufVxuXG4ud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDp2YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsLCAuZm9ybS1jaGVjay1pbnB1dC5pcy12YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgY29sb3I6ICMyOGE3NDU7XG59XG5cbi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLFxuLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssXG4uZm9ybS1jaGVjay1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLXZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsIHtcbiAgY29sb3I6ICMyOGE3NDU7XG59XG5cbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLXZhbGlkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGJvcmRlci1jb2xvcjogIzM0Y2U1NztcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0Y2U1Nztcbn1cblxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpO1xufVxuXG4ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQ6Zm9jdXM6bm90KDpjaGVja2VkKSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Zm9jdXM6bm90KDpjaGVja2VkKSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1O1xufVxuXG4ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7XG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwge1xuICBib3JkZXItY29sb3I6ICMyOGE3NDU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjI1KTtcbn1cblxuLmludmFsaWQtZmVlZGJhY2sge1xuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbiAgZm9udC1zaXplOiA4MCU7XG4gIGNvbG9yOiAjZGMzNTQ1O1xufVxuXG4uaW52YWxpZC10b29sdGlwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIHotaW5kZXg6IDU7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XG4gIG1hcmdpbi10b3A6IC4xcmVtO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjAsIDUzLCA2OSwgMC45KTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLndhcy12YWxpZGF0ZWQgOmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjayxcbi53YXMtdmFsaWRhdGVkIDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCxcbi5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssXG4uaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkLCAuZm9ybS1jb250cm9sLmlzLWludmFsaWQge1xuICBib3JkZXItY29sb3I6ICNkYzM1NDU7XG4gIHBhZGRpbmctcmlnaHQ6IGNhbGMoMS41ZW0gKyAwLjc1cmVtKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMicgaGVpZ2h0PScxMicgZmlsbD0nbm9uZScgc3Ryb2tlPSclMjNkYzM1NDUnIHZpZXdCb3g9JzAgMCAxMiAxMiclM2UlM2NjaXJjbGUgY3g9JzYnIGN5PSc2JyByPSc0LjUnLyUzZSUzY3BhdGggc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgZD0nTTUuOCAzLjZoLjRMNiA2LjV6Jy8lM2UlM2NjaXJjbGUgY3g9JzYnIGN5PSc4LjInIHI9Jy42JyBmaWxsPSclMjNkYzM1NDUnIHN0cm9rZT0nbm9uZScvJTNlJTNjL3N2ZyUzZVwiKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgY2FsYygwLjM3NWVtICsgMC4xODc1cmVtKSBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogY2FsYygwLjc1ZW0gKyAwLjM3NXJlbSkgY2FsYygwLjc1ZW0gKyAwLjM3NXJlbSk7XG59XG5cbi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZDpmb2N1cywgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkOmZvY3VzIHtcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1O1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC4yNSk7XG59XG5cbi53YXMtdmFsaWRhdGVkIHRleHRhcmVhLmZvcm0tY29udHJvbDppbnZhbGlkLCB0ZXh0YXJlYS5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCB7XG4gIHBhZGRpbmctcmlnaHQ6IGNhbGMoMS41ZW0gKyAwLjc1cmVtKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wIGNhbGMoMC4zNzVlbSArIDAuMTg3NXJlbSkgcmlnaHQgY2FsYygwLjM3NWVtICsgMC4xODc1cmVtKTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6aW52YWxpZCwgLmN1c3RvbS1zZWxlY3QuaXMtaW52YWxpZCB7XG4gIGJvcmRlci1jb2xvcjogI2RjMzU0NTtcbiAgcGFkZGluZy1yaWdodDogY2FsYygwLjc1ZW0gKyAyLjMxMjVyZW0pO1xuICBiYWNrZ3JvdW5kOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzQnIGhlaWdodD0nNScgdmlld0JveD0nMCAwIDQgNSclM2UlM2NwYXRoIGZpbGw9JyUyMzM0M2E0MCcgZD0nTTIgMEwwIDJoNHptMCA1TDAgM2g0eicvJTNlJTNjL3N2ZyUzZVwiKSBuby1yZXBlYXQgcmlnaHQgMC43NXJlbSBjZW50ZXIvOHB4IDEwcHgsIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTInIGhlaWdodD0nMTInIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzZGMzNTQ1JyB2aWV3Qm94PScwIDAgMTIgMTInJTNlJTNjY2lyY2xlIGN4PSc2JyBjeT0nNicgcj0nNC41Jy8lM2UlM2NwYXRoIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIGQ9J001LjggMy42aC40TDYgNi41eicvJTNlJTNjY2lyY2xlIGN4PSc2JyBjeT0nOC4yJyByPScuNicgZmlsbD0nJTIzZGMzNTQ1JyBzdHJva2U9J25vbmUnLyUzZSUzYy9zdmclM2VcIikgI2ZmZiBuby1yZXBlYXQgY2VudGVyIHJpZ2h0IDEuNzVyZW0vY2FsYygwLjc1ZW0gKyAwLjM3NXJlbSkgY2FsYygwLjc1ZW0gKyAwLjM3NXJlbSk7XG59XG5cbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWQ6Zm9jdXMsIC5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQ6Zm9jdXMge1xuICBib3JkZXItY29sb3I6ICNkYzM1NDU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjI1KTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsLCAuZm9ybS1jaGVjay1pbnB1dC5pcy1pbnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwge1xuICBjb2xvcjogI2RjMzU0NTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLFxuLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5mb3JtLWNoZWNrLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjayxcbi5mb3JtLWNoZWNrLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7XG4gIGNvbG9yOiAjZGMzNTQ1O1xufVxuXG4ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1O1xufVxuXG4ud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGJvcmRlci1jb2xvcjogI2U0NjA2ZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U0NjA2ZDtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjI1KTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQ6Zm9jdXM6bm90KDpjaGVja2VkKSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZDpmb2N1czpub3QoOmNoZWNrZWQpIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICBib3JkZXItY29sb3I6ICNkYzM1NDU7XG59XG5cbi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7XG4gIGJvcmRlci1jb2xvcjogI2RjMzU0NTtcbn1cblxuLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OmludmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsIHtcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1O1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC4yNSk7XG59XG5cbi5mb3JtLWlubGluZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5mb3JtLWlubGluZSAuZm9ybS1jaGVjayB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmZvcm0taW5saW5lIGxhYmVsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuICAuZm9ybS1pbmxpbmUgLmZvcm0tZ3JvdXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbiAgLmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogYXV0bztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG4gIC5mb3JtLWlubGluZSAuZm9ybS1jb250cm9sLXBsYWludGV4dCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG4gIC5mb3JtLWlubGluZSAuaW5wdXQtZ3JvdXAsXG4gIC5mb3JtLWlubGluZSAuY3VzdG9tLXNlbGVjdCB7XG4gICAgd2lkdGg6IGF1dG87XG4gIH1cbiAgLmZvcm0taW5saW5lIC5mb3JtLWNoZWNrIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG4gIC5mb3JtLWlubGluZSAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG4gIC5mb3JtLWlubGluZSAuY3VzdG9tLWNvbnRyb2wge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbiAgLmZvcm0taW5saW5lIC5jdXN0b20tY29udHJvbC1sYWJlbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4uYnRuIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogIzIxMjUyOTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmJ0biB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxufVxuXG4uYnRuOmhvdmVyIHtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLmJ0bjpmb2N1cywgLmJ0bi5mb2N1cyB7XG4gIG91dGxpbmU6IDA7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTtcbn1cblxuLmJ0bi5kaXNhYmxlZCwgLmJ0bjpkaXNhYmxlZCB7XG4gIG9wYWNpdHk6IDAuNjU7XG59XG5cbmEuYnRuLmRpc2FibGVkLFxuZmllbGRzZXQ6ZGlzYWJsZWQgYS5idG4ge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmJ0bi1wcmltYXJ5IHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbn1cblxuLmJ0bi1wcmltYXJ5OmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDY5ZDk7XG4gIGJvcmRlci1jb2xvcjogIzAwNjJjYztcbn1cblxuLmJ0bi1wcmltYXJ5OmZvY3VzLCAuYnRuLXByaW1hcnkuZm9jdXMge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjlkOTtcbiAgYm9yZGVyLWNvbG9yOiAjMDA2MmNjO1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgzOCwgMTQzLCAyNTUsIDAuNSk7XG59XG5cbi5idG4tcHJpbWFyeS5kaXNhYmxlZCwgLmJ0bi1wcmltYXJ5OmRpc2FibGVkIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbn1cblxuLmJ0bi1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbi5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2MmNjO1xuICBib3JkZXItY29sb3I6ICMwMDVjYmY7XG59XG5cbi5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsXG4uc2hvdyA+IC5idG4tcHJpbWFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgzOCwgMTQzLCAyNTUsIDAuNSk7XG59XG5cbi5idG4tc2Vjb25kYXJ5IHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7XG4gIGJvcmRlci1jb2xvcjogIzZjNzU3ZDtcbn1cblxuLmJ0bi1zZWNvbmRhcnk6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVhNjI2ODtcbiAgYm9yZGVyLWNvbG9yOiAjNTQ1YjYyO1xufVxuXG4uYnRuLXNlY29uZGFyeTpmb2N1cywgLmJ0bi1zZWNvbmRhcnkuZm9jdXMge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVhNjI2ODtcbiAgYm9yZGVyLWNvbG9yOiAjNTQ1YjYyO1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgxMzAsIDEzOCwgMTQ1LCAwLjUpO1xufVxuXG4uYnRuLXNlY29uZGFyeS5kaXNhYmxlZCwgLmJ0bi1zZWNvbmRhcnk6ZGlzYWJsZWQge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDtcbiAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkO1xufVxuXG4uYnRuLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbi5zaG93ID4gLmJ0bi1zZWNvbmRhcnkuZHJvcGRvd24tdG9nZ2xlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NDViNjI7XG4gIGJvcmRlci1jb2xvcjogIzRlNTU1Yjtcbn1cblxuLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsXG4uc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEzMCwgMTM4LCAxNDUsIDAuNSk7XG59XG5cbi5idG4tc3VjY2VzcyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xuICBib3JkZXItY29sb3I6ICMyOGE3NDU7XG59XG5cbi5idG4tc3VjY2Vzczpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE4ODM4O1xuICBib3JkZXItY29sb3I6ICMxZTdlMzQ7XG59XG5cbi5idG4tc3VjY2Vzczpmb2N1cywgLmJ0bi1zdWNjZXNzLmZvY3VzIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyMTg4Mzg7XG4gIGJvcmRlci1jb2xvcjogIzFlN2UzNDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNzIsIDE4MCwgOTcsIDAuNSk7XG59XG5cbi5idG4tc3VjY2Vzcy5kaXNhYmxlZCwgLmJ0bi1zdWNjZXNzOmRpc2FibGVkIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7XG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NTtcbn1cblxuLmJ0bi1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbi5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWU3ZTM0O1xuICBib3JkZXItY29sb3I6ICMxYzc0MzA7XG59XG5cbi5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsXG4uc2hvdyA+IC5idG4tc3VjY2Vzcy5kcm9wZG93bi10b2dnbGU6Zm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg3MiwgMTgwLCA5NywgMC41KTtcbn1cblxuLmJ0bi1pbmZvIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7XG4gIGJvcmRlci1jb2xvcjogIzE3YTJiODtcbn1cblxuLmJ0bi1pbmZvOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxMzg0OTY7XG4gIGJvcmRlci1jb2xvcjogIzExN2E4Yjtcbn1cblxuLmJ0bi1pbmZvOmZvY3VzLCAuYnRuLWluZm8uZm9jdXMge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzEzODQ5NjtcbiAgYm9yZGVyLWNvbG9yOiAjMTE3YThiO1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg1OCwgMTc2LCAxOTUsIDAuNSk7XG59XG5cbi5idG4taW5mby5kaXNhYmxlZCwgLmJ0bi1pbmZvOmRpc2FibGVkIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7XG4gIGJvcmRlci1jb2xvcjogIzE3YTJiODtcbn1cblxuLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbi5zaG93ID4gLmJ0bi1pbmZvLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE3YThiO1xuICBib3JkZXItY29sb3I6ICMxMDcwN2Y7XG59XG5cbi5idG4taW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4taW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsXG4uc2hvdyA+IC5idG4taW5mby5kcm9wZG93bi10b2dnbGU6Zm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg1OCwgMTc2LCAxOTUsIDAuNSk7XG59XG5cbi5idG4td2FybmluZyB7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3O1xuICBib3JkZXItY29sb3I6ICNmZmMxMDc7XG59XG5cbi5idG4td2FybmluZzpob3ZlciB7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBhODAwO1xuICBib3JkZXItY29sb3I6ICNkMzllMDA7XG59XG5cbi5idG4td2FybmluZzpmb2N1cywgLmJ0bi13YXJuaW5nLmZvY3VzIHtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGE4MDA7XG4gIGJvcmRlci1jb2xvcjogI2QzOWUwMDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIyLCAxNzAsIDEyLCAwLjUpO1xufVxuXG4uYnRuLXdhcm5pbmcuZGlzYWJsZWQsIC5idG4td2FybmluZzpkaXNhYmxlZCB7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3O1xuICBib3JkZXItY29sb3I6ICNmZmMxMDc7XG59XG5cbi5idG4td2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4td2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsXG4uc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGUge1xuICBjb2xvcjogIzIxMjUyOTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QzOWUwMDtcbiAgYm9yZGVyLWNvbG9yOiAjYzY5NTAwO1xufVxuXG4uYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLFxuLnNob3cgPiAuYnRuLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIyLCAxNzAsIDEyLCAwLjUpO1xufVxuXG4uYnRuLWRhbmdlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1O1xuICBib3JkZXItY29sb3I6ICNkYzM1NDU7XG59XG5cbi5idG4tZGFuZ2VyOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjODIzMzM7XG4gIGJvcmRlci1jb2xvcjogI2JkMjEzMDtcbn1cblxuLmJ0bi1kYW5nZXI6Zm9jdXMsIC5idG4tZGFuZ2VyLmZvY3VzIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjODIzMzM7XG4gIGJvcmRlci1jb2xvcjogI2JkMjEzMDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjI1LCA4MywgOTcsIDAuNSk7XG59XG5cbi5idG4tZGFuZ2VyLmRpc2FibGVkLCAuYnRuLWRhbmdlcjpkaXNhYmxlZCB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1O1xuICBib3JkZXItY29sb3I6ICNkYzM1NDU7XG59XG5cbi5idG4tZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLFxuLnNob3cgPiAuYnRuLWRhbmdlci5kcm9wZG93bi10b2dnbGUge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMDtcbiAgYm9yZGVyLWNvbG9yOiAjYjIxZjJkO1xufVxuXG4uYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cyxcbi5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjI1LCA4MywgOTcsIDAuNSk7XG59XG5cbi5idG4tbGlnaHQge1xuICBjb2xvcjogIzIxMjUyOTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhO1xufVxuXG4uYnRuLWxpZ2h0OmhvdmVyIHtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMmU2ZWE7XG4gIGJvcmRlci1jb2xvcjogI2RhZTBlNTtcbn1cblxuLmJ0bi1saWdodDpmb2N1cywgLmJ0bi1saWdodC5mb2N1cyB7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTJlNmVhO1xuICBib3JkZXItY29sb3I6ICNkYWUwZTU7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIxNiwgMjE3LCAyMTksIDAuNSk7XG59XG5cbi5idG4tbGlnaHQuZGlzYWJsZWQsIC5idG4tbGlnaHQ6ZGlzYWJsZWQge1xuICBjb2xvcjogIzIxMjUyOTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhO1xufVxuXG4uYnRuLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsXG4uc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlIHtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYWUwZTU7XG4gIGJvcmRlci1jb2xvcjogI2QzZDlkZjtcbn1cblxuLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLFxuLnNob3cgPiAuYnRuLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIxNiwgMjE3LCAyMTksIDAuNSk7XG59XG5cbi5idG4tZGFyayB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwO1xuICBib3JkZXItY29sb3I6ICMzNDNhNDA7XG59XG5cbi5idG4tZGFyazpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjMyNzJiO1xuICBib3JkZXItY29sb3I6ICMxZDIxMjQ7XG59XG5cbi5idG4tZGFyazpmb2N1cywgLmJ0bi1kYXJrLmZvY3VzIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyMzI3MmI7XG4gIGJvcmRlci1jb2xvcjogIzFkMjEyNDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoODIsIDg4LCA5MywgMC41KTtcbn1cblxuLmJ0bi1kYXJrLmRpc2FibGVkLCAuYnRuLWRhcms6ZGlzYWJsZWQge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDtcbiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwO1xufVxuXG4uYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLFxuLnNob3cgPiAuYnRuLWRhcmsuZHJvcGRvd24tdG9nZ2xlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZDIxMjQ7XG4gIGJvcmRlci1jb2xvcjogIzE3MWExZDtcbn1cblxuLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cyxcbi5zaG93ID4gLmJ0bi1kYXJrLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDgyLCA4OCwgOTMsIDAuNSk7XG59XG5cbi5idG4tb3V0bGluZS1wcmltYXJ5IHtcbiAgY29sb3I6ICMwMDdiZmY7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbn1cblxuLmJ0bi1vdXRsaW5lLXByaW1hcnk6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmO1xufVxuXG4uYnRuLW91dGxpbmUtcHJpbWFyeTpmb2N1cywgLmJ0bi1vdXRsaW5lLXByaW1hcnkuZm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC41KTtcbn1cblxuLmJ0bi1vdXRsaW5lLXByaW1hcnkuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1wcmltYXJ5OmRpc2FibGVkIHtcbiAgY29sb3I6ICMwMDdiZmY7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbi5zaG93ID4gLmJ0bi1vdXRsaW5lLXByaW1hcnkuZHJvcGRvd24tdG9nZ2xlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbn1cblxuLmJ0bi1vdXRsaW5lLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsXG4uc2hvdyA+IC5idG4tb3V0bGluZS1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjUpO1xufVxuXG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHtcbiAgY29sb3I6ICM2Yzc1N2Q7XG4gIGJvcmRlci1jb2xvcjogIzZjNzU3ZDtcbn1cblxuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkO1xuICBib3JkZXItY29sb3I6ICM2Yzc1N2Q7XG59XG5cbi5idG4tb3V0bGluZS1zZWNvbmRhcnk6Zm9jdXMsIC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgxMDgsIDExNywgMTI1LCAwLjUpO1xufVxuXG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRpc2FibGVkLCAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmRpc2FibGVkIHtcbiAgY29sb3I6ICM2Yzc1N2Q7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsXG4uc2hvdyA+IC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZHJvcGRvd24tdG9nZ2xlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7XG4gIGJvcmRlci1jb2xvcjogIzZjNzU3ZDtcbn1cblxuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLFxuLnNob3cgPiAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIDAuNSk7XG59XG5cbi5idG4tb3V0bGluZS1zdWNjZXNzIHtcbiAgY29sb3I6ICMyOGE3NDU7XG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NTtcbn1cblxuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTtcbiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1O1xufVxuXG4uYnRuLW91dGxpbmUtc3VjY2Vzczpmb2N1cywgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgMC41KTtcbn1cblxuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1zdWNjZXNzOmRpc2FibGVkIHtcbiAgY29sb3I6ICMyOGE3NDU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbi5zaG93ID4gLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZHJvcGRvd24tdG9nZ2xlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7XG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NTtcbn1cblxuLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsXG4uc2hvdyA+IC5idG4tb3V0bGluZS1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpO1xufVxuXG4uYnRuLW91dGxpbmUtaW5mbyB7XG4gIGNvbG9yOiAjMTdhMmI4O1xuICBib3JkZXItY29sb3I6ICMxN2EyYjg7XG59XG5cbi5idG4tb3V0bGluZS1pbmZvOmhvdmVyIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7XG4gIGJvcmRlci1jb2xvcjogIzE3YTJiODtcbn1cblxuLmJ0bi1vdXRsaW5lLWluZm86Zm9jdXMsIC5idG4tb3V0bGluZS1pbmZvLmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAwLjUpO1xufVxuXG4uYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJsZWQge1xuICBjb2xvcjogIzE3YTJiODtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLFxuLnNob3cgPiAuYnRuLW91dGxpbmUtaW5mby5kcm9wZG93bi10b2dnbGUge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODtcbiAgYm9yZGVyLWNvbG9yOiAjMTdhMmI4O1xufVxuXG4uYnRuLW91dGxpbmUtaW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cyxcbi5zaG93ID4gLmJ0bi1vdXRsaW5lLWluZm8uZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAwLjUpO1xufVxuXG4uYnRuLW91dGxpbmUtd2FybmluZyB7XG4gIGNvbG9yOiAjZmZjMTA3O1xuICBib3JkZXItY29sb3I6ICNmZmMxMDc7XG59XG5cbi5idG4tb3V0bGluZS13YXJuaW5nOmhvdmVyIHtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDc7XG4gIGJvcmRlci1jb2xvcjogI2ZmYzEwNztcbn1cblxuLmJ0bi1vdXRsaW5lLXdhcm5pbmc6Zm9jdXMsIC5idG4tb3V0bGluZS13YXJuaW5nLmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjU1LCAxOTMsIDcsIDAuNSk7XG59XG5cbi5idG4tb3V0bGluZS13YXJuaW5nLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtd2FybmluZzpkaXNhYmxlZCB7XG4gIGNvbG9yOiAjZmZjMTA3O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsXG4uc2hvdyA+IC5idG4tb3V0bGluZS13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3O1xuICBib3JkZXItY29sb3I6ICNmZmMxMDc7XG59XG5cbi5idG4tb3V0bGluZS13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLFxuLnNob3cgPiAuYnRuLW91dGxpbmUtd2FybmluZy5kcm9wZG93bi10b2dnbGU6Zm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTtcbn1cblxuLmJ0bi1vdXRsaW5lLWRhbmdlciB7XG4gIGNvbG9yOiAjZGMzNTQ1O1xuICBib3JkZXItY29sb3I6ICNkYzM1NDU7XG59XG5cbi5idG4tb3V0bGluZS1kYW5nZXI6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTtcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1O1xufVxuXG4uYnRuLW91dGxpbmUtZGFuZ2VyOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFuZ2VyLmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuNSk7XG59XG5cbi5idG4tb3V0bGluZS1kYW5nZXIuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1kYW5nZXI6ZGlzYWJsZWQge1xuICBjb2xvcjogI2RjMzU0NTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbi5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhbmdlci5kcm9wZG93bi10b2dnbGUge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTtcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1O1xufVxuXG4uYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsXG4uc2hvdyA+IC5idG4tb3V0bGluZS1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuNSk7XG59XG5cbi5idG4tb3V0bGluZS1saWdodCB7XG4gIGNvbG9yOiAjZjhmOWZhO1xuICBib3JkZXItY29sb3I6ICNmOGY5ZmE7XG59XG5cbi5idG4tb3V0bGluZS1saWdodDpob3ZlciB7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICBib3JkZXItY29sb3I6ICNmOGY5ZmE7XG59XG5cbi5idG4tb3V0bGluZS1saWdodDpmb2N1cywgLmJ0bi1vdXRsaW5lLWxpZ2h0LmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgMC41KTtcbn1cblxuLmJ0bi1vdXRsaW5lLWxpZ2h0LmRpc2FibGVkLCAuYnRuLW91dGxpbmUtbGlnaHQ6ZGlzYWJsZWQge1xuICBjb2xvcjogI2Y4ZjlmYTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsXG4uc2hvdyA+IC5idG4tb3V0bGluZS1saWdodC5kcm9wZG93bi10b2dnbGUge1xuICBjb2xvcjogIzIxMjUyOTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhO1xufVxuXG4uYnRuLW91dGxpbmUtbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLFxuLnNob3cgPiAuYnRuLW91dGxpbmUtbGlnaHQuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgMC41KTtcbn1cblxuLmJ0bi1vdXRsaW5lLWRhcmsge1xuICBjb2xvcjogIzM0M2E0MDtcbiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwO1xufVxuXG4uYnRuLW91dGxpbmUtZGFyazpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwO1xuICBib3JkZXItY29sb3I6ICMzNDNhNDA7XG59XG5cbi5idG4tb3V0bGluZS1kYXJrOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFyay5mb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDUyLCA1OCwgNjQsIDAuNSk7XG59XG5cbi5idG4tb3V0bGluZS1kYXJrLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtZGFyazpkaXNhYmxlZCB7XG4gIGNvbG9yOiAjMzQzYTQwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsXG4uc2hvdyA+IC5idG4tb3V0bGluZS1kYXJrLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwO1xuICBib3JkZXItY29sb3I6ICMzNDNhNDA7XG59XG5cbi5idG4tb3V0bGluZS1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLFxuLnNob3cgPiAuYnRuLW91dGxpbmUtZGFyay5kcm9wZG93bi10b2dnbGU6Zm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg1MiwgNTgsIDY0LCAwLjUpO1xufVxuXG4uYnRuLWxpbmsge1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogIzAwN2JmZjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uYnRuLWxpbms6aG92ZXIge1xuICBjb2xvcjogIzAwNTZiMztcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5idG4tbGluazpmb2N1cywgLmJ0bi1saW5rLmZvY3VzIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi5idG4tbGluazpkaXNhYmxlZCwgLmJ0bi1saW5rLmRpc2FibGVkIHtcbiAgY29sb3I6ICM2Yzc1N2Q7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uYnRuLWxnLCAuYnRuLWdyb3VwLWxnID4gLmJ0biB7XG4gIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGJvcmRlci1yYWRpdXM6IDAuM3JlbTtcbn1cblxuLmJ0bi1zbSwgLmJ0bi1ncm91cC1zbSA+IC5idG4ge1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm9yZGVyLXJhZGl1czogMC4ycmVtO1xufVxuXG4uYnRuLWJsb2NrIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uYnRuLWJsb2NrICsgLmJ0bi1ibG9jayB7XG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcbn1cblxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXS5idG4tYmxvY2ssXG5pbnB1dFt0eXBlPVwicmVzZXRcIl0uYnRuLWJsb2NrLFxuaW5wdXRbdHlwZT1cImJ1dHRvblwiXS5idG4tYmxvY2sge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmZhZGUge1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGxpbmVhcjtcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmZhZGUge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cbn1cblxuLmZhZGU6bm90KC5zaG93KSB7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5jb2xsYXBzZTpub3QoLnNob3cpIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmNvbGxhcHNpbmcge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMzVzIGVhc2U7XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5jb2xsYXBzaW5nIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG59XG5cbi5kcm9wdXAsXG4uZHJvcHJpZ2h0LFxuLmRyb3Bkb3duLFxuLmRyb3BsZWZ0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZHJvcGRvd24tdG9nZ2xlIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1sZWZ0OiAwLjI1NWVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogMC4yNTVlbTtcbiAgY29udGVudDogXCJcIjtcbiAgYm9yZGVyLXRvcDogMC4zZW0gc29saWQ7XG4gIGJvcmRlci1yaWdodDogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1ib3R0b206IDA7XG4gIGJvcmRlci1sZWZ0OiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDtcbn1cblxuLmRyb3Bkb3duLXRvZ2dsZTplbXB0eTo6YWZ0ZXIge1xuICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLmRyb3Bkb3duLW1lbnUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTAwMDtcbiAgZGlzcGxheTogbm9uZTtcbiAgZmxvYXQ6IGxlZnQ7XG4gIG1pbi13aWR0aDogMTByZW07XG4gIHBhZGRpbmc6IDAuNXJlbSAwO1xuICBtYXJnaW46IDAuMTI1cmVtIDAgMDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBjb2xvcjogIzIxMjUyOTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLmRyb3Bkb3duLW1lbnUtbGVmdCB7XG4gIHJpZ2h0OiBhdXRvO1xuICBsZWZ0OiAwO1xufVxuXG4uZHJvcGRvd24tbWVudS1yaWdodCB7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiBhdXRvO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmRyb3Bkb3duLW1lbnUtc20tbGVmdCB7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogMDtcbiAgfVxuICAuZHJvcGRvd24tbWVudS1zbS1yaWdodCB7XG4gICAgcmlnaHQ6IDA7XG4gICAgbGVmdDogYXV0bztcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmRyb3Bkb3duLW1lbnUtbWQtbGVmdCB7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogMDtcbiAgfVxuICAuZHJvcGRvd24tbWVudS1tZC1yaWdodCB7XG4gICAgcmlnaHQ6IDA7XG4gICAgbGVmdDogYXV0bztcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmRyb3Bkb3duLW1lbnUtbGctbGVmdCB7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogMDtcbiAgfVxuICAuZHJvcGRvd24tbWVudS1sZy1yaWdodCB7XG4gICAgcmlnaHQ6IDA7XG4gICAgbGVmdDogYXV0bztcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5kcm9wZG93bi1tZW51LXhsLWxlZnQge1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IDA7XG4gIH1cbiAgLmRyb3Bkb3duLW1lbnUteGwtcmlnaHQge1xuICAgIHJpZ2h0OiAwO1xuICAgIGxlZnQ6IGF1dG87XG4gIH1cbn1cblxuLmRyb3B1cCAuZHJvcGRvd24tbWVudSB7XG4gIHRvcDogYXV0bztcbiAgYm90dG9tOiAxMDAlO1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAwLjEyNXJlbTtcbn1cblxuLmRyb3B1cCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDAuMjU1ZW07XG4gIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtO1xuICBjb250ZW50OiBcIlwiO1xuICBib3JkZXItdG9wOiAwO1xuICBib3JkZXItcmlnaHQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItYm90dG9tOiAwLjNlbSBzb2xpZDtcbiAgYm9yZGVyLWxlZnQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG4uZHJvcHVwIC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbi5kcm9wcmlnaHQgLmRyb3Bkb3duLW1lbnUge1xuICB0b3A6IDA7XG4gIHJpZ2h0OiBhdXRvO1xuICBsZWZ0OiAxMDAlO1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tbGVmdDogMC4xMjVyZW07XG59XG5cbi5kcm9wcmlnaHQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1sZWZ0OiAwLjI1NWVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogMC4yNTVlbTtcbiAgY29udGVudDogXCJcIjtcbiAgYm9yZGVyLXRvcDogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodDogMDtcbiAgYm9yZGVyLWJvdHRvbTogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1sZWZ0OiAwLjNlbSBzb2xpZDtcbn1cblxuLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xufVxuXG4uZHJvcHJpZ2h0IC5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHtcbiAgdmVydGljYWwtYWxpZ246IDA7XG59XG5cbi5kcm9wbGVmdCAuZHJvcGRvd24tbWVudSB7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDEwMCU7XG4gIGxlZnQ6IGF1dG87XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1yaWdodDogMC4xMjVyZW07XG59XG5cbi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDAuMjU1ZW07XG4gIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtO1xuICBjb250ZW50OiBcIlwiO1xufVxuXG4uZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDAuMjU1ZW07XG4gIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtO1xuICBjb250ZW50OiBcIlwiO1xuICBib3JkZXItdG9wOiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJpZ2h0OiAwLjNlbSBzb2xpZDtcbiAgYm9yZGVyLWJvdHRvbTogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xufVxuXG4uZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHtcbiAgdmVydGljYWwtYWxpZ246IDA7XG59XG5cbi5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj1cInRvcFwiXSwgLmRyb3Bkb3duLW1lbnVbeC1wbGFjZW1lbnRePVwicmlnaHRcIl0sIC5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj1cImJvdHRvbVwiXSwgLmRyb3Bkb3duLW1lbnVbeC1wbGFjZW1lbnRePVwibGVmdFwiXSB7XG4gIHJpZ2h0OiBhdXRvO1xuICBib3R0b206IGF1dG87XG59XG5cbi5kcm9wZG93bi1kaXZpZGVyIHtcbiAgaGVpZ2h0OiAwO1xuICBtYXJnaW46IDAuNXJlbSAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2U5ZWNlZjtcbn1cblxuLmRyb3Bkb3duLWl0ZW0ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDAuMjVyZW0gMS41cmVtO1xuICBjbGVhcjogYm90aDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDA7XG59XG5cbi5kcm9wZG93bi1pdGVtOmhvdmVyLCAuZHJvcGRvd24taXRlbTpmb2N1cyB7XG4gIGNvbG9yOiAjMTYxODFiO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XG59XG5cbi5kcm9wZG93bi1pdGVtLmFjdGl2ZSwgLmRyb3Bkb3duLWl0ZW06YWN0aXZlIHtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbn1cblxuLmRyb3Bkb3duLWl0ZW0uZGlzYWJsZWQsIC5kcm9wZG93bi1pdGVtOmRpc2FibGVkIHtcbiAgY29sb3I6ICM2Yzc1N2Q7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRyb3Bkb3duLW1lbnUuc2hvdyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uZHJvcGRvd24taGVhZGVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuNXJlbSAxLjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiAjNmM3NTdkO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uZHJvcGRvd24taXRlbS10ZXh0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuMjVyZW0gMS41cmVtO1xuICBjb2xvcjogIzIxMjUyOTtcbn1cblxuLmJ0bi1ncm91cCxcbi5idG4tZ3JvdXAtdmVydGljYWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uYnRuLWdyb3VwID4gLmJ0bixcbi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmbGV4OiAxIDEgYXV0bztcbn1cblxuLmJ0bi1ncm91cCA+IC5idG46aG92ZXIsXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpob3ZlciB7XG4gIHotaW5kZXg6IDE7XG59XG5cbi5idG4tZ3JvdXAgPiAuYnRuOmZvY3VzLCAuYnRuLWdyb3VwID4gLmJ0bjphY3RpdmUsIC5idG4tZ3JvdXAgPiAuYnRuLmFjdGl2ZSxcbi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmZvY3VzLFxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46YWN0aXZlLFxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4uYWN0aXZlIHtcbiAgei1pbmRleDogMTtcbn1cblxuLmJ0bi10b29sYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG5cbi5idG4tdG9vbGJhciAuaW5wdXQtZ3JvdXAge1xuICB3aWR0aDogYXV0bztcbn1cblxuLmJ0bi1ncm91cCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksXG4uYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gIG1hcmdpbi1sZWZ0OiAtMXB4O1xufVxuXG4uYnRuLWdyb3VwID4gLmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSxcbi5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xufVxuXG4uYnRuLWdyb3VwID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSxcbi5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG59XG5cbi5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjU2MjVyZW07XG4gIHBhZGRpbmctbGVmdDogMC41NjI1cmVtO1xufVxuXG4uZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlcixcbi5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdDo6YWZ0ZXIsXG4uZHJvcHJpZ2h0IC5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmFmdGVyIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjpiZWZvcmUge1xuICBtYXJnaW4tcmlnaHQ6IDA7XG59XG5cbi5idG4tc20gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0LCAuYnRuLWdyb3VwLXNtID4gLmJ0biArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjM3NXJlbTtcbiAgcGFkZGluZy1sZWZ0OiAwLjM3NXJlbTtcbn1cblxuLmJ0bi1sZyArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQsIC5idG4tZ3JvdXAtbGcgPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XG4gIHBhZGRpbmctbGVmdDogMC43NXJlbTtcbn1cblxuLmJ0bi1ncm91cC12ZXJ0aWNhbCB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4sXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSxcbi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgbWFyZ2luLXRvcDogLTFweDtcbn1cblxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biB7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xufVxuXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSxcbi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xufVxuXG4uYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4sXG4uYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4tZ3JvdXAgPiAuYnRuIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuIGlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbi5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0biBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG4uYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4tZ3JvdXAgPiAuYnRuIGlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbi5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0bi1ncm91cCA+IC5idG4gaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmlucHV0LWdyb3VwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbCxcbi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LFxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QsXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXg6IDEgMSAwJTtcbiAgbWluLXdpZHRoOiAwO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmZvcm0tY29udHJvbCxcbi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wgKyAuY3VzdG9tLXNlbGVjdCxcbi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wgKyAuY3VzdG9tLWZpbGUsXG4uaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sLXBsYWludGV4dCArIC5mb3JtLWNvbnRyb2wsXG4uaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sLXBsYWludGV4dCArIC5jdXN0b20tc2VsZWN0LFxuLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbC1wbGFpbnRleHQgKyAuY3VzdG9tLWZpbGUsXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCArIC5mb3JtLWNvbnRyb2wsXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCArIC5jdXN0b20tc2VsZWN0LFxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QgKyAuY3VzdG9tLWZpbGUsXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgKyAuZm9ybS1jb250cm9sLFxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlICsgLmN1c3RvbS1zZWxlY3QsXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgKyAuY3VzdG9tLWZpbGUge1xuICBtYXJnaW4tbGVmdDogLTFweDtcbn1cblxuLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbDpmb2N1cyxcbi5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0OmZvY3VzLFxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlIC5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7XG4gIHotaW5kZXg6IDM7XG59XG5cbi5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSAuY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXMge1xuICB6LWluZGV4OiA0O1xufVxuXG4uaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOm5vdCg6bGFzdC1jaGlsZCksXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpub3QoOmxhc3QtY2hpbGQpIHtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xufVxuXG4uaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOm5vdCg6Zmlyc3QtY2hpbGQpLFxuLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3Q6bm90KDpmaXJzdC1jaGlsZCkge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xufVxuXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6bm90KDpsYXN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWwsXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6bm90KDpsYXN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xufVxuXG4uaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6bm90KDpmaXJzdC1jaGlsZCkgLmN1c3RvbS1maWxlLWxhYmVsIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuLmlucHV0LWdyb3VwLXByZXBlbmQsXG4uaW5wdXQtZ3JvdXAtYXBwZW5kIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0bixcbi5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMjtcbn1cblxuLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0bjpmb2N1cyxcbi5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0bjpmb2N1cyB7XG4gIHotaW5kZXg6IDM7XG59XG5cbi5pbnB1dC1ncm91cC1wcmVwZW5kIC5idG4gKyAuYnRuLFxuLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0biArIC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLXByZXBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuaW5wdXQtZ3JvdXAtdGV4dCxcbi5pbnB1dC1ncm91cC1wcmVwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmJ0bixcbi5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biArIC5idG4sXG4uaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4gKyAuaW5wdXQtZ3JvdXAtdGV4dCxcbi5pbnB1dC1ncm91cC1hcHBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuaW5wdXQtZ3JvdXAtdGV4dCxcbi5pbnB1dC1ncm91cC1hcHBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuYnRuIHtcbiAgbWFyZ2luLWxlZnQ6IC0xcHg7XG59XG5cbi5pbnB1dC1ncm91cC1wcmVwZW5kIHtcbiAgbWFyZ2luLXJpZ2h0OiAtMXB4O1xufVxuXG4uaW5wdXQtZ3JvdXAtYXBwZW5kIHtcbiAgbWFyZ2luLWxlZnQ6IC0xcHg7XG59XG5cbi5pbnB1dC1ncm91cC10ZXh0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogIzQ5NTA1NztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhO1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xufVxuXG4uaW5wdXQtZ3JvdXAtdGV4dCBpbnB1dFt0eXBlPVwicmFkaW9cIl0sXG4uaW5wdXQtZ3JvdXAtdGV4dCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuXG4uaW5wdXQtZ3JvdXAtbGcgPiAuZm9ybS1jb250cm9sOm5vdCh0ZXh0YXJlYSksXG4uaW5wdXQtZ3JvdXAtbGcgPiAuY3VzdG9tLXNlbGVjdCB7XG4gIGhlaWdodDogY2FsYygxLjVlbSArIDFyZW0gKyAycHgpO1xufVxuXG4uaW5wdXQtZ3JvdXAtbGcgPiAuZm9ybS1jb250cm9sLFxuLmlucHV0LWdyb3VwLWxnID4gLmN1c3RvbS1zZWxlY3QsXG4uaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuYnRuLFxuLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4ge1xuICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBib3JkZXItcmFkaXVzOiAwLjNyZW07XG59XG5cbi5pbnB1dC1ncm91cC1zbSA+IC5mb3JtLWNvbnRyb2w6bm90KHRleHRhcmVhKSxcbi5pbnB1dC1ncm91cC1zbSA+IC5jdXN0b20tc2VsZWN0IHtcbiAgaGVpZ2h0OiBjYWxjKDEuNWVtICsgMC41cmVtICsgMnB4KTtcbn1cblxuLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCxcbi5pbnB1dC1ncm91cC1zbSA+IC5jdXN0b20tc2VsZWN0LFxuLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCxcbi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCxcbi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0bixcbi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuIHtcbiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGJvcmRlci1yYWRpdXM6IDAuMnJlbTtcbn1cblxuLmlucHV0LWdyb3VwLWxnID4gLmN1c3RvbS1zZWxlY3QsXG4uaW5wdXQtZ3JvdXAtc20gPiAuY3VzdG9tLXNlbGVjdCB7XG4gIHBhZGRpbmctcmlnaHQ6IDEuNzVyZW07XG59XG5cbi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0bixcbi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuLFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmlucHV0LWdyb3VwLXRleHQsXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOmxhc3QtY2hpbGQgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpsYXN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpsYXN0LWNoaWxkKSB7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbn1cblxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4sXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4sXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6Zmlyc3QtY2hpbGQgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6Zmlyc3QtY2hpbGQgPiAuaW5wdXQtZ3JvdXAtdGV4dDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG59XG5cbi5jdXN0b20tY29udHJvbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1pbi1oZWlnaHQ6IDEuNXJlbTtcbiAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XG59XG5cbi5jdXN0b20tY29udHJvbC1pbmxpbmUge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xufVxuXG4uY3VzdG9tLWNvbnRyb2wtaW5wdXQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IC0xO1xuICB3aWR0aDogMXJlbTtcbiAgaGVpZ2h0OiAxLjI1cmVtO1xuICBvcGFjaXR5OiAwO1xufVxuXG4uY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbn1cblxuLmN1c3RvbS1jb250cm9sLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7XG59XG5cbi5jdXN0b20tY29udHJvbC1pbnB1dDpmb2N1czpub3QoOmNoZWNrZWQpIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICBib3JkZXItY29sb3I6ICM4MGJkZmY7XG59XG5cbi5jdXN0b20tY29udHJvbC1pbnB1dDpub3QoOmRpc2FibGVkKTphY3RpdmUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmO1xuICBib3JkZXItY29sb3I6ICNiM2Q3ZmY7XG59XG5cbi5jdXN0b20tY29udHJvbC1pbnB1dFtkaXNhYmxlZF0gfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwsIC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7XG4gIGNvbG9yOiAjNmM3NTdkO1xufVxuXG4uY3VzdG9tLWNvbnRyb2wtaW5wdXRbZGlzYWJsZWRdIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjtcbn1cblxuLmN1c3RvbS1jb250cm9sLWxhYmVsIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG4uY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwLjI1cmVtO1xuICBsZWZ0OiAtMS41cmVtO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJvcmRlcjogI2FkYjViZCBzb2xpZCAxcHg7XG59XG5cbi5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMC4yNXJlbTtcbiAgbGVmdDogLTEuNXJlbTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxcmVtO1xuICBoZWlnaHQ6IDFyZW07XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGJhY2tncm91bmQ6IG5vLXJlcGVhdCA1MCUgLyA1MCUgNTAlO1xufVxuXG4uY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzgnIGhlaWdodD0nOCcgdmlld0JveD0nMCAwIDggOCclM2UlM2NwYXRoIGZpbGw9JyUyM2ZmZicgZD0nTTYuNTY0Ljc1bC0zLjU5IDMuNjEyLTEuNTM4LTEuNTVMMCA0LjI2bDIuOTc0IDIuOTlMOCAyLjE5M3onLyUzZSUzYy9zdmclM2VcIik7XG59XG5cbi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbn1cblxuLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW5kZXRlcm1pbmF0ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzQnIGhlaWdodD0nNCcgdmlld0JveD0nMCAwIDQgNCclM2UlM2NwYXRoIHN0cm9rZT0nJTIzZmZmJyBkPSdNMCAyaDQnLyUzZSUzYy9zdmclM2VcIik7XG59XG5cbi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7XG59XG5cbi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7XG59XG5cbi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG5cbi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMicgaGVpZ2h0PScxMicgdmlld0JveD0nLTQgLTQgOCA4JyUzZSUzY2NpcmNsZSByPSczJyBmaWxsPSclMjNmZmYnLyUzZSUzYy9zdmclM2VcIik7XG59XG5cbi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7XG59XG5cbi5jdXN0b20tc3dpdGNoIHtcbiAgcGFkZGluZy1sZWZ0OiAyLjI1cmVtO1xufVxuXG4uY3VzdG9tLXN3aXRjaCAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gIGxlZnQ6IC0yLjI1cmVtO1xuICB3aWR0aDogMS43NXJlbTtcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xufVxuXG4uY3VzdG9tLXN3aXRjaCAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHtcbiAgdG9wOiBjYWxjKDAuMjVyZW0gKyAycHgpO1xuICBsZWZ0OiBjYWxjKC0yLjI1cmVtICsgMnB4KTtcbiAgd2lkdGg6IGNhbGMoMXJlbSAtIDRweCk7XG4gIGhlaWdodDogY2FsYygxcmVtIC0gNHB4KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FkYjViZDtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmN1c3RvbS1zd2l0Y2ggLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxufVxuXG4uY3VzdG9tLXN3aXRjaCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMC43NXJlbSk7XG59XG5cbi5jdXN0b20tc3dpdGNoIC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDEyMywgMjU1LCAwLjUpO1xufVxuXG4uY3VzdG9tLXNlbGVjdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogY2FsYygxLjVlbSArIDAuNzVyZW0gKyAycHgpO1xuICBwYWRkaW5nOiAwLjM3NXJlbSAxLjc1cmVtIDAuMzc1cmVtIDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgY29sb3I6ICM0OTUwNTc7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc0JyBoZWlnaHQ9JzUnIHZpZXdCb3g9JzAgMCA0IDUnJTNlJTNjcGF0aCBmaWxsPSclMjMzNDNhNDAnIGQ9J00yIDBMMCAyaDR6bTAgNUwwIDNoNHonLyUzZSUzYy9zdmclM2VcIikgbm8tcmVwZWF0IHJpZ2h0IDAuNzVyZW0gY2VudGVyLzhweCAxMHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhO1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xuICBhcHBlYXJhbmNlOiBub25lO1xufVxuXG4uY3VzdG9tLXNlbGVjdDpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogIzgwYmRmZjtcbiAgb3V0bGluZTogMDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpO1xufVxuXG4uY3VzdG9tLXNlbGVjdDpmb2N1czo6LW1zLXZhbHVlIHtcbiAgY29sb3I6ICM0OTUwNTc7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cbi5jdXN0b20tc2VsZWN0W211bHRpcGxlXSwgLmN1c3RvbS1zZWxlY3Rbc2l6ZV06bm90KFtzaXplPVwiMVwiXSkge1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG59XG5cbi5jdXN0b20tc2VsZWN0OmRpc2FibGVkIHtcbiAgY29sb3I6ICM2Yzc1N2Q7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG59XG5cbi5jdXN0b20tc2VsZWN0OjotbXMtZXhwYW5kIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmN1c3RvbS1zZWxlY3Q6LW1vei1mb2N1c3Jpbmcge1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHRleHQtc2hhZG93OiAwIDAgMCAjNDk1MDU3O1xufVxuXG4uY3VzdG9tLXNlbGVjdC1zbSB7XG4gIGhlaWdodDogY2FsYygxLjVlbSArIDAuNXJlbSArIDJweCk7XG4gIHBhZGRpbmctdG9wOiAwLjI1cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbTtcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5jdXN0b20tc2VsZWN0LWxnIHtcbiAgaGVpZ2h0OiBjYWxjKDEuNWVtICsgMXJlbSArIDJweCk7XG4gIHBhZGRpbmctdG9wOiAwLjVyZW07XG4gIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XG4gIHBhZGRpbmctbGVmdDogMXJlbTtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xufVxuXG4uY3VzdG9tLWZpbGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogY2FsYygxLjVlbSArIDAuNzVyZW0gKyAycHgpO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY3VzdG9tLWZpbGUtaW5wdXQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDI7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGNhbGMoMS41ZW0gKyAwLjc1cmVtICsgMnB4KTtcbiAgbWFyZ2luOiAwO1xuICBvcGFjaXR5OiAwO1xufVxuXG4uY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwge1xuICBib3JkZXItY29sb3I6ICM4MGJkZmY7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTtcbn1cblxuLmN1c3RvbS1maWxlLWlucHV0W2Rpc2FibGVkXSB+IC5jdXN0b20tZmlsZS1sYWJlbCxcbi5jdXN0b20tZmlsZS1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG59XG5cbi5jdXN0b20tZmlsZS1pbnB1dDpsYW5nKGVuKSB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIge1xuICBjb250ZW50OiBcIkJyb3dzZVwiO1xufVxuXG4uY3VzdG9tLWZpbGUtaW5wdXQgfiAuY3VzdG9tLWZpbGUtbGFiZWxbZGF0YS1icm93c2VdOjphZnRlciB7XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1icm93c2UpO1xufVxuXG4uY3VzdG9tLWZpbGUtbGFiZWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDE7XG4gIGhlaWdodDogY2FsYygxLjVlbSArIDAuNzVyZW0gKyAycHgpO1xuICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogIzQ5NTA1NztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICB6LWluZGV4OiAzO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiBjYWxjKDEuNWVtICsgMC43NXJlbSk7XG4gIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGNvbG9yOiAjNDk1MDU3O1xuICBjb250ZW50OiBcIkJyb3dzZVwiO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBib3JkZXItbGVmdDogaW5oZXJpdDtcbiAgYm9yZGVyLXJhZGl1czogMCAwLjI1cmVtIDAuMjVyZW0gMDtcbn1cblxuLmN1c3RvbS1yYW5nZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEuNHJlbTtcbiAgcGFkZGluZzogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi5jdXN0b20tcmFuZ2U6Zm9jdXMge1xuICBvdXRsaW5lOiBub25lO1xufVxuXG4uY3VzdG9tLXJhbmdlOmZvY3VzOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmZmLCAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7XG59XG5cbi5jdXN0b20tcmFuZ2U6Zm9jdXM6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpO1xufVxuXG4uY3VzdG9tLXJhbmdlOmZvY3VzOjotbXMtdGh1bWIge1xuICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpO1xufVxuXG4uY3VzdG9tLXJhbmdlOjotbW96LWZvY3VzLW91dGVyIHtcbiAgYm9yZGVyOiAwO1xufVxuXG4uY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gIHdpZHRoOiAxcmVtO1xuICBoZWlnaHQ6IDFyZW07XG4gIG1hcmdpbi10b3A6IC0wLjI1cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmN1c3RvbS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cbn1cblxuLmN1c3RvbS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWI6YWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IzZDdmZjtcbn1cblxuLmN1c3RvbS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAwLjVyZW07XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2O1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiAxcmVtO1xufVxuXG4uY3VzdG9tLXJhbmdlOjotbW96LXJhbmdlLXRodW1iIHtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cbn1cblxuLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10aHVtYjphY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmO1xufVxuXG4uY3VzdG9tLXJhbmdlOjotbW96LXJhbmdlLXRyYWNrIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMC41cmVtO1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogMXJlbTtcbn1cblxuLmN1c3RvbS1yYW5nZTo6LW1zLXRodW1iIHtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLXJpZ2h0OiAwLjJyZW07XG4gIG1hcmdpbi1sZWZ0OiAwLjJyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O1xuICBhcHBlYXJhbmNlOiBub25lO1xufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuY3VzdG9tLXJhbmdlOjotbXMtdGh1bWIge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cbn1cblxuLmN1c3RvbS1yYW5nZTo6LW1zLXRodW1iOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7XG59XG5cbi5jdXN0b20tcmFuZ2U6Oi1tcy10cmFjayB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDAuNXJlbTtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbn1cblxuLmN1c3RvbS1yYW5nZTo6LW1zLWZpbGwtbG93ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2O1xuICBib3JkZXItcmFkaXVzOiAxcmVtO1xufVxuXG4uY3VzdG9tLXJhbmdlOjotbXMtZmlsbC11cHBlciB7XG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjtcbiAgYm9yZGVyLXJhZGl1czogMXJlbTtcbn1cblxuLmN1c3RvbS1yYW5nZTpkaXNhYmxlZDo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWRiNWJkO1xufVxuXG4uY3VzdG9tLXJhbmdlOmRpc2FibGVkOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLmN1c3RvbS1yYW5nZTpkaXNhYmxlZDo6LW1vei1yYW5nZS10aHVtYiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhZGI1YmQ7XG59XG5cbi5jdXN0b20tcmFuZ2U6ZGlzYWJsZWQ6Oi1tb3otcmFuZ2UtdHJhY2sge1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5jdXN0b20tcmFuZ2U6ZGlzYWJsZWQ6Oi1tcy10aHVtYiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhZGI1YmQ7XG59XG5cbi5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLFxuLmN1c3RvbS1maWxlLWxhYmVsLFxuLmN1c3RvbS1zZWxlY3Qge1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLFxuICAuY3VzdG9tLWZpbGUtbGFiZWwsXG4gIC5jdXN0b20tc2VsZWN0IHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG59XG5cbi5uYXYge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLm5hdi1saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xufVxuXG4ubmF2LWxpbms6aG92ZXIsIC5uYXYtbGluazpmb2N1cyB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLm5hdi1saW5rLmRpc2FibGVkIHtcbiAgY29sb3I6ICM2Yzc1N2Q7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5uYXYtdGFicyB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGVlMmU2O1xufVxuXG4ubmF2LXRhYnMgLm5hdi1pdGVtIHtcbiAgbWFyZ2luLWJvdHRvbTogLTFweDtcbn1cblxuLm5hdi10YWJzIC5uYXYtbGluayB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcbn1cblxuLm5hdi10YWJzIC5uYXYtbGluazpob3ZlciwgLm5hdi10YWJzIC5uYXYtbGluazpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogI2U5ZWNlZiAjZTllY2VmICNkZWUyZTY7XG59XG5cbi5uYXYtdGFicyAubmF2LWxpbmsuZGlzYWJsZWQge1xuICBjb2xvcjogIzZjNzU3ZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5uYXYtdGFicyAubmF2LWxpbmsuYWN0aXZlLFxuLm5hdi10YWJzIC5uYXYtaXRlbS5zaG93IC5uYXYtbGluayB7XG4gIGNvbG9yOiAjNDk1MDU3O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBib3JkZXItY29sb3I6ICNkZWUyZTYgI2RlZTJlNiAjZmZmO1xufVxuXG4ubmF2LXRhYnMgLmRyb3Bkb3duLW1lbnUge1xuICBtYXJnaW4tdG9wOiAtMXB4O1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbn1cblxuLm5hdi1waWxscyAubmF2LWxpbmsge1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xufVxuXG4ubmF2LXBpbGxzIC5uYXYtbGluay5hY3RpdmUsXG4ubmF2LXBpbGxzIC5zaG93ID4gLm5hdi1saW5rIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG59XG5cbi5uYXYtZmlsbCAubmF2LWl0ZW0ge1xuICBmbGV4OiAxIDEgYXV0bztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ubmF2LWp1c3RpZmllZCAubmF2LWl0ZW0ge1xuICBmbGV4LWJhc2lzOiAwO1xuICBmbGV4LWdyb3c6IDE7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnRhYi1jb250ZW50ID4gLnRhYi1wYW5lIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnRhYi1jb250ZW50ID4gLmFjdGl2ZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubmF2YmFyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgcGFkZGluZzogMC41cmVtIDFyZW07XG59XG5cbi5uYXZiYXIgLmNvbnRhaW5lcixcbi5uYXZiYXIgLmNvbnRhaW5lci1mbHVpZCwgLm5hdmJhciAuY29udGFpbmVyLXNtLCAubmF2YmFyIC5jb250YWluZXItbWQsIC5uYXZiYXIgLmNvbnRhaW5lci1sZywgLm5hdmJhciAuY29udGFpbmVyLXhsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi5uYXZiYXItYnJhbmQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmctdG9wOiAwLjMxMjVyZW07XG4gIHBhZGRpbmctYm90dG9tOiAwLjMxMjVyZW07XG4gIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLm5hdmJhci1icmFuZDpob3ZlciwgLm5hdmJhci1icmFuZDpmb2N1cyB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLm5hdmJhci1uYXYge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi5uYXZiYXItbmF2IC5uYXYtbGluayB7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG4gIHBhZGRpbmctbGVmdDogMDtcbn1cblxuLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUge1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBmbG9hdDogbm9uZTtcbn1cblxuLm5hdmJhci10ZXh0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nLXRvcDogMC41cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xufVxuXG4ubmF2YmFyLWNvbGxhcHNlIHtcbiAgZmxleC1iYXNpczogMTAwJTtcbiAgZmxleC1ncm93OiAxO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubmF2YmFyLXRvZ2dsZXIge1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLm5hdmJhci10b2dnbGVyOmhvdmVyLCAubmF2YmFyLXRvZ2dsZXI6Zm9jdXMge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5uYXZiYXItdG9nZ2xlci1pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMS41ZW07XG4gIGhlaWdodDogMS41ZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGJhY2tncm91bmQ6IG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7XG4gIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lcixcbiAgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLWZsdWlkLCAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXItc20sIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lci1tZCwgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLWxnLCAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIteGwge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAubmF2YmFyLWV4cGFuZC1zbSB7XG4gICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgfVxuICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgfVxuICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG4gIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IC5uYXYtbGluayB7XG4gICAgcGFkZGluZy1yaWdodDogMC41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC41cmVtO1xuICB9XG4gIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lcixcbiAgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLWZsdWlkLCAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXItc20sIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lci1tZCwgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLWxnLCAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIteGwge1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICB9XG4gIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItY29sbGFwc2Uge1xuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICB9XG4gIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItdG9nZ2xlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHtcbiAgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLFxuICAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItZmx1aWQsIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lci1zbSwgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLW1kLCAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItbGcsIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lci14bCB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5uYXZiYXItZXhwYW5kLW1kIHtcbiAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICB9XG4gIC5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICB9XG4gIC5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cbiAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gIH1cbiAgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLFxuICAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItZmx1aWQsIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lci1zbSwgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLW1kLCAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItbGcsIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lci14bCB7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gIH1cbiAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1jb2xsYXBzZSB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gIH1cbiAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci10b2dnbGVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkge1xuICAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXIsXG4gIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1mbHVpZCwgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLXNtLCAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXItbWQsIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1sZywgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLXhsIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLm5hdmJhci1leHBhbmQtbGcge1xuICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIH1cbiAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIH1cbiAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgfVxuICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLW5hdiAubmF2LWxpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgfVxuICAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXIsXG4gIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1mbHVpZCwgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLXNtLCAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXItbWQsIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1sZywgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLXhsIHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgfVxuICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLWNvbGxhcHNlIHtcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgZmxleC1iYXNpczogYXV0bztcbiAgfVxuICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLXRvZ2dsZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkge1xuICAubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXIsXG4gIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1mbHVpZCwgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLXNtLCAubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXItbWQsIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1sZywgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLXhsIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5uYXZiYXItZXhwYW5kLXhsIHtcbiAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICB9XG4gIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICB9XG4gIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cbiAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gIH1cbiAgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLFxuICAubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXItZmx1aWQsIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1zbSwgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLW1kLCAubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXItbGcsIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci14bCB7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gIH1cbiAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1jb2xsYXBzZSB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gIH1cbiAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci10b2dnbGVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5uYXZiYXItZXhwYW5kIHtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG5cbi5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lcixcbi5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1mbHVpZCwgLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLXNtLCAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItbWQsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1sZywgLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLXhsIHtcbiAgcGFkZGluZy1yaWdodDogMDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xufVxuXG4ubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiB7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG59XG5cbi5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4ubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiAubmF2LWxpbmsge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gIHBhZGRpbmctbGVmdDogMC41cmVtO1xufVxuXG4ubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIsXG4ubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItZmx1aWQsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1zbSwgLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLW1kLCAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItbGcsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci14bCB7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xufVxuXG4ubmF2YmFyLWV4cGFuZCAubmF2YmFyLWNvbGxhcHNlIHtcbiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICBmbGV4LWJhc2lzOiBhdXRvO1xufVxuXG4ubmF2YmFyLWV4cGFuZCAubmF2YmFyLXRvZ2dsZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjkpO1xufVxuXG4ubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQ6aG92ZXIsIC5uYXZiYXItbGlnaHQgLm5hdmJhci1icmFuZDpmb2N1cyB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7XG59XG5cbi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbn1cblxuLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbms6aG92ZXIsIC5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rOmZvY3VzIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC43KTtcbn1cblxuLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsuZGlzYWJsZWQge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjMpO1xufVxuXG4ubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5zaG93ID4gLm5hdi1saW5rLFxuLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLFxuLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsuc2hvdyxcbi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLmFjdGl2ZSB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7XG59XG5cbi5uYXZiYXItbGlnaHQgLm5hdmJhci10b2dnbGVyIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi5uYXZiYXItbGlnaHQgLm5hdmJhci10b2dnbGVyLWljb24ge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzMwJyBoZWlnaHQ9JzMwJyB2aWV3Qm94PScwIDAgMzAgMzAnJTNlJTNjcGF0aCBzdHJva2U9J3JnYmEoMCwgMCwgMCwgMC41KScgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbWl0ZXJsaW1pdD0nMTAnIHN0cm9rZS13aWR0aD0nMicgZD0nTTQgN2gyMk00IDE1aDIyTTQgMjNoMjInLyUzZSUzYy9zdmclM2VcIik7XG59XG5cbi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbn1cblxuLm5hdmJhci1saWdodCAubmF2YmFyLXRleHQgYSB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7XG59XG5cbi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGE6aG92ZXIsIC5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGE6Zm9jdXMge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjkpO1xufVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZCB7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZDpob3ZlciwgLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQ6Zm9jdXMge1xuICBjb2xvcjogI2ZmZjtcbn1cblxuLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluayB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG59XG5cbi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6aG92ZXIsIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6Zm9jdXMge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTtcbn1cblxuLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluay5kaXNhYmxlZCB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpO1xufVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cgPiAubmF2LWxpbmssXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLmFjdGl2ZSA+IC5uYXYtbGluayxcbi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuc2hvdyxcbi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlIHtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi5uYXZiYXItZGFyayAubmF2YmFyLXRvZ2dsZXIge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbn1cblxuLm5hdmJhci1kYXJrIC5uYXZiYXItdG9nZ2xlci1pY29uIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSczMCcgaGVpZ2h0PSczMCcgdmlld0JveD0nMCAwIDMwIDMwJyUzZSUzY3BhdGggc3Ryb2tlPSdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSknIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBzdHJva2Utd2lkdGg9JzInIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8lM2UlM2Mvc3ZnJTNlXCIpO1xufVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci10ZXh0IHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbn1cblxuLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhIHtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYTpob3ZlciwgLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhOmZvY3VzIHtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi5jYXJkIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBtaW4td2lkdGg6IDA7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jbGlwOiBib3JkZXItYm94O1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTI1KTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLmNhcmQgPiBociB7XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbi5jYXJkID4gLmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW07XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xufVxuXG4uY2FyZCA+IC5saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW07XG59XG5cbi5jYXJkLWJvZHkge1xuICBmbGV4OiAxIDEgYXV0bztcbiAgbWluLWhlaWdodDogMXB4O1xuICBwYWRkaW5nOiAxLjI1cmVtO1xufVxuXG4uY2FyZC10aXRsZSB7XG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG59XG5cbi5jYXJkLXN1YnRpdGxlIHtcbiAgbWFyZ2luLXRvcDogLTAuMzc1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY2FyZC10ZXh0Omxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY2FyZC1saW5rOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uY2FyZC1saW5rICsgLmNhcmQtbGluayB7XG4gIG1hcmdpbi1sZWZ0OiAxLjI1cmVtO1xufVxuXG4uY2FyZC1oZWFkZXIge1xuICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wMyk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTI1KTtcbn1cblxuLmNhcmQtaGVhZGVyOmZpcnN0LWNoaWxkIHtcbiAgYm9yZGVyLXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KSBjYWxjKDAuMjVyZW0gLSAxcHgpIDAgMDtcbn1cblxuLmNhcmQtaGVhZGVyICsgLmxpc3QtZ3JvdXAgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7XG4gIGJvcmRlci10b3A6IDA7XG59XG5cbi5jYXJkLWZvb3RlciB7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzKTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMjUpO1xufVxuXG4uY2FyZC1mb290ZXI6bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCBjYWxjKDAuMjVyZW0gLSAxcHgpIGNhbGMoMC4yNXJlbSAtIDFweCk7XG59XG5cbi5jYXJkLWhlYWRlci10YWJzIHtcbiAgbWFyZ2luLXJpZ2h0OiAtMC42MjVyZW07XG4gIG1hcmdpbi1ib3R0b206IC0wLjc1cmVtO1xuICBtYXJnaW4tbGVmdDogLTAuNjI1cmVtO1xuICBib3JkZXItYm90dG9tOiAwO1xufVxuXG4uY2FyZC1oZWFkZXItcGlsbHMge1xuICBtYXJnaW4tcmlnaHQ6IC0wLjYyNXJlbTtcbiAgbWFyZ2luLWxlZnQ6IC0wLjYyNXJlbTtcbn1cblxuLmNhcmQtaW1nLW92ZXJsYXkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgcGFkZGluZzogMS4yNXJlbTtcbn1cblxuLmNhcmQtaW1nLFxuLmNhcmQtaW1nLXRvcCxcbi5jYXJkLWltZy1ib3R0b20ge1xuICBmbGV4LXNocmluazogMDtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5jYXJkLWltZyxcbi5jYXJkLWltZy10b3Age1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTtcbn1cblxuLmNhcmQtaW1nLFxuLmNhcmQtaW1nLWJvdHRvbSB7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpO1xufVxuXG4uY2FyZC1kZWNrIC5jYXJkIHtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5jYXJkLWRlY2sge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgICBtYXJnaW4tcmlnaHQ6IC0xNXB4O1xuICAgIG1hcmdpbi1sZWZ0OiAtMTVweDtcbiAgfVxuICAuY2FyZC1kZWNrIC5jYXJkIHtcbiAgICBmbGV4OiAxIDAgMCU7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gIH1cbn1cblxuLmNhcmQtZ3JvdXAgPiAuY2FyZCB7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAuY2FyZC1ncm91cCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICB9XG4gIC5jYXJkLWdyb3VwID4gLmNhcmQge1xuICAgIGZsZXg6IDEgMCAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG4gIC5jYXJkLWdyb3VwID4gLmNhcmQgKyAuY2FyZCB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gIH1cbiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgfVxuICAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6bGFzdC1jaGlsZCkgLmNhcmQtaW1nLXRvcCxcbiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmxhc3QtY2hpbGQpIC5jYXJkLWhlYWRlciB7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gIH1cbiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmxhc3QtY2hpbGQpIC5jYXJkLWltZy1ib3R0b20sXG4gIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpsYXN0LWNoaWxkKSAuY2FyZC1mb290ZXIge1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICB9XG4gIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgfVxuICAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpIC5jYXJkLWltZy10b3AsXG4gIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCkgLmNhcmQtaGVhZGVyIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICB9XG4gIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCkgLmNhcmQtaW1nLWJvdHRvbSxcbiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKSAuY2FyZC1mb290ZXIge1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gIH1cbn1cblxuLmNhcmQtY29sdW1ucyAuY2FyZCB7XG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAuY2FyZC1jb2x1bW5zIHtcbiAgICBjb2x1bW4tY291bnQ6IDM7XG4gICAgY29sdW1uLWdhcDogMS4yNXJlbTtcbiAgICBvcnBoYW5zOiAxO1xuICAgIHdpZG93czogMTtcbiAgfVxuICAuY2FyZC1jb2x1bW5zIC5jYXJkIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cblxuLmFjY29yZGlvbiA+IC5jYXJkIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmFjY29yZGlvbiA+IC5jYXJkOm5vdCg6bGFzdC1vZi10eXBlKSB7XG4gIGJvcmRlci1ib3R0b206IDA7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xufVxuXG4uYWNjb3JkaW9uID4gLmNhcmQ6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xufVxuXG4uYWNjb3JkaW9uID4gLmNhcmQgPiAuY2FyZC1oZWFkZXIge1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBtYXJnaW4tYm90dG9tOiAtMXB4O1xufVxuXG4uYnJlYWRjcnVtYiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgcGFkZGluZzogMC43NXJlbSAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xufVxuXG4uYnJlYWRjcnVtYi1pdGVtICsgLmJyZWFkY3J1bWItaXRlbSB7XG4gIHBhZGRpbmctbGVmdDogMC41cmVtO1xufVxuXG4uYnJlYWRjcnVtYi1pdGVtICsgLmJyZWFkY3J1bWItaXRlbTo6YmVmb3JlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gIGNvbG9yOiAjNmM3NTdkO1xuICBjb250ZW50OiBcIi9cIjtcbn1cblxuLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4uYnJlYWRjcnVtYi1pdGVtICsgLmJyZWFkY3J1bWItaXRlbTpob3Zlcjo6YmVmb3JlIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uYnJlYWRjcnVtYi1pdGVtLmFjdGl2ZSB7XG4gIGNvbG9yOiAjNmM3NTdkO1xufVxuXG4ucGFnaW5hdGlvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLnBhZ2UtbGluayB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICBtYXJnaW4tbGVmdDogLTFweDtcbiAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gIGNvbG9yOiAjMDA3YmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2O1xufVxuXG4ucGFnZS1saW5rOmhvdmVyIHtcbiAgei1pbmRleDogMjtcbiAgY29sb3I6ICMwMDU2YjM7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjtcbiAgYm9yZGVyLWNvbG9yOiAjZGVlMmU2O1xufVxuXG4ucGFnZS1saW5rOmZvY3VzIHtcbiAgei1pbmRleDogMztcbiAgb3V0bGluZTogMDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpO1xufVxuXG4ucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbTtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbTtcbn1cblxuLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmsge1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07XG59XG5cbi5wYWdlLWl0ZW0uYWN0aXZlIC5wYWdlLWxpbmsge1xuICB6LWluZGV4OiAzO1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmO1xufVxuXG4ucGFnZS1pdGVtLmRpc2FibGVkIC5wYWdlLWxpbmsge1xuICBjb2xvcjogIzZjNzU3ZDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGN1cnNvcjogYXV0bztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyLWNvbG9yOiAjZGVlMmU2O1xufVxuXG4ucGFnaW5hdGlvbi1sZyAucGFnZS1saW5rIHtcbiAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLnBhZ2luYXRpb24tbGcgLnBhZ2UtaXRlbTpmaXJzdC1jaGlsZCAucGFnZS1saW5rIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4zcmVtO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjNyZW07XG59XG5cbi5wYWdpbmF0aW9uLWxnIC5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5rIHtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuM3JlbTtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuM3JlbTtcbn1cblxuLnBhZ2luYXRpb24tc20gLnBhZ2UtbGluayB7XG4gIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBsaW5lLWhlaWdodDogMS41O1xufVxuXG4ucGFnaW5hdGlvbi1zbSAucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjJyZW07XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMnJlbTtcbn1cblxuLnBhZ2luYXRpb24tc20gLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmsge1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4ycmVtO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4ycmVtO1xufVxuXG4uYmFkZ2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDAuMjVlbSAwLjRlbTtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmJhZGdlIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG59XG5cbmEuYmFkZ2U6aG92ZXIsIGEuYmFkZ2U6Zm9jdXMge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5iYWRnZTplbXB0eSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5idG4gLmJhZGdlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IC0xcHg7XG59XG5cbi5iYWRnZS1waWxsIHtcbiAgcGFkZGluZy1yaWdodDogMC42ZW07XG4gIHBhZGRpbmctbGVmdDogMC42ZW07XG4gIGJvcmRlci1yYWRpdXM6IDEwcmVtO1xufVxuXG4uYmFkZ2UtcHJpbWFyeSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmO1xufVxuXG5hLmJhZGdlLXByaW1hcnk6aG92ZXIsIGEuYmFkZ2UtcHJpbWFyeTpmb2N1cyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2MmNjO1xufVxuXG5hLmJhZGdlLXByaW1hcnk6Zm9jdXMsIGEuYmFkZ2UtcHJpbWFyeS5mb2N1cyB7XG4gIG91dGxpbmU6IDA7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjUpO1xufVxuXG4uYmFkZ2Utc2Vjb25kYXJ5IHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7XG59XG5cbmEuYmFkZ2Utc2Vjb25kYXJ5OmhvdmVyLCBhLmJhZGdlLXNlY29uZGFyeTpmb2N1cyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ1YjYyO1xufVxuXG5hLmJhZGdlLXNlY29uZGFyeTpmb2N1cywgYS5iYWRnZS1zZWNvbmRhcnkuZm9jdXMge1xuICBvdXRsaW5lOiAwO1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgxMDgsIDExNywgMTI1LCAwLjUpO1xufVxuXG4uYmFkZ2Utc3VjY2VzcyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xufVxuXG5hLmJhZGdlLXN1Y2Nlc3M6aG92ZXIsIGEuYmFkZ2Utc3VjY2Vzczpmb2N1cyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWU3ZTM0O1xufVxuXG5hLmJhZGdlLXN1Y2Nlc3M6Zm9jdXMsIGEuYmFkZ2Utc3VjY2Vzcy5mb2N1cyB7XG4gIG91dGxpbmU6IDA7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpO1xufVxuXG4uYmFkZ2UtaW5mbyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4O1xufVxuXG5hLmJhZGdlLWluZm86aG92ZXIsIGEuYmFkZ2UtaW5mbzpmb2N1cyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE3YThiO1xufVxuXG5hLmJhZGdlLWluZm86Zm9jdXMsIGEuYmFkZ2UtaW5mby5mb2N1cyB7XG4gIG91dGxpbmU6IDA7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIzLCAxNjIsIDE4NCwgMC41KTtcbn1cblxuLmJhZGdlLXdhcm5pbmcge1xuICBjb2xvcjogIzIxMjUyOTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNztcbn1cblxuYS5iYWRnZS13YXJuaW5nOmhvdmVyLCBhLmJhZGdlLXdhcm5pbmc6Zm9jdXMge1xuICBjb2xvcjogIzIxMjUyOTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QzOWUwMDtcbn1cblxuYS5iYWRnZS13YXJuaW5nOmZvY3VzLCBhLmJhZGdlLXdhcm5pbmcuZm9jdXMge1xuICBvdXRsaW5lOiAwO1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTtcbn1cblxuLmJhZGdlLWRhbmdlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1O1xufVxuXG5hLmJhZGdlLWRhbmdlcjpob3ZlciwgYS5iYWRnZS1kYW5nZXI6Zm9jdXMge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMDtcbn1cblxuYS5iYWRnZS1kYW5nZXI6Zm9jdXMsIGEuYmFkZ2UtZGFuZ2VyLmZvY3VzIHtcbiAgb3V0bGluZTogMDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuNSk7XG59XG5cbi5iYWRnZS1saWdodCB7XG4gIGNvbG9yOiAjMjEyNTI5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xufVxuXG5hLmJhZGdlLWxpZ2h0OmhvdmVyLCBhLmJhZGdlLWxpZ2h0OmZvY3VzIHtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYWUwZTU7XG59XG5cbmEuYmFkZ2UtbGlnaHQ6Zm9jdXMsIGEuYmFkZ2UtbGlnaHQuZm9jdXMge1xuICBvdXRsaW5lOiAwO1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpO1xufVxuXG4uYmFkZ2UtZGFyayB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwO1xufVxuXG5hLmJhZGdlLWRhcms6aG92ZXIsIGEuYmFkZ2UtZGFyazpmb2N1cyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI0O1xufVxuXG5hLmJhZGdlLWRhcms6Zm9jdXMsIGEuYmFkZ2UtZGFyay5mb2N1cyB7XG4gIG91dGxpbmU6IDA7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDUyLCA1OCwgNjQsIDAuNSk7XG59XG5cbi5qdW1ib3Ryb24ge1xuICBwYWRkaW5nOiAycmVtIDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDJyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG4gIGJvcmRlci1yYWRpdXM6IDAuM3JlbTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5qdW1ib3Ryb24ge1xuICAgIHBhZGRpbmc6IDRyZW0gMnJlbTtcbiAgfVxufVxuXG4uanVtYm90cm9uLWZsdWlkIHtcbiAgcGFkZGluZy1yaWdodDogMDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBib3JkZXItcmFkaXVzOiAwO1xufVxuXG4uYWxlcnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG59XG5cbi5hbGVydC1oZWFkaW5nIHtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbi5hbGVydC1saW5rIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLmFsZXJ0LWRpc21pc3NpYmxlIHtcbiAgcGFkZGluZy1yaWdodDogNHJlbTtcbn1cblxuLmFsZXJ0LWRpc21pc3NpYmxlIC5jbG9zZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtO1xuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLmFsZXJ0LXByaW1hcnkge1xuICBjb2xvcjogIzAwNDA4NTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjZTVmZjtcbiAgYm9yZGVyLWNvbG9yOiAjYjhkYWZmO1xufVxuXG4uYWxlcnQtcHJpbWFyeSBociB7XG4gIGJvcmRlci10b3AtY29sb3I6ICM5ZmNkZmY7XG59XG5cbi5hbGVydC1wcmltYXJ5IC5hbGVydC1saW5rIHtcbiAgY29sb3I6ICMwMDI3NTI7XG59XG5cbi5hbGVydC1zZWNvbmRhcnkge1xuICBjb2xvcjogIzM4M2Q0MTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTNlNTtcbiAgYm9yZGVyLWNvbG9yOiAjZDZkOGRiO1xufVxuXG4uYWxlcnQtc2Vjb25kYXJ5IGhyIHtcbiAgYm9yZGVyLXRvcC1jb2xvcjogI2M4Y2JjZjtcbn1cblxuLmFsZXJ0LXNlY29uZGFyeSAuYWxlcnQtbGluayB7XG4gIGNvbG9yOiAjMjAyMzI2O1xufVxuXG4uYWxlcnQtc3VjY2VzcyB7XG4gIGNvbG9yOiAjMTU1NzI0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDRlZGRhO1xuICBib3JkZXItY29sb3I6ICNjM2U2Y2I7XG59XG5cbi5hbGVydC1zdWNjZXNzIGhyIHtcbiAgYm9yZGVyLXRvcC1jb2xvcjogI2IxZGZiYjtcbn1cblxuLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWxpbmsge1xuICBjb2xvcjogIzBiMmUxMztcbn1cblxuLmFsZXJ0LWluZm8ge1xuICBjb2xvcjogIzBjNTQ2MDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QxZWNmMTtcbiAgYm9yZGVyLWNvbG9yOiAjYmVlNWViO1xufVxuXG4uYWxlcnQtaW5mbyBociB7XG4gIGJvcmRlci10b3AtY29sb3I6ICNhYmRkZTU7XG59XG5cbi5hbGVydC1pbmZvIC5hbGVydC1saW5rIHtcbiAgY29sb3I6ICMwNjJjMzM7XG59XG5cbi5hbGVydC13YXJuaW5nIHtcbiAgY29sb3I6ICM4NTY0MDQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYzY2Q7XG4gIGJvcmRlci1jb2xvcjogI2ZmZWViYTtcbn1cblxuLmFsZXJ0LXdhcm5pbmcgaHIge1xuICBib3JkZXItdG9wLWNvbG9yOiAjZmZlOGExO1xufVxuXG4uYWxlcnQtd2FybmluZyAuYWxlcnQtbGluayB7XG4gIGNvbG9yOiAjNTMzZjAzO1xufVxuXG4uYWxlcnQtZGFuZ2VyIHtcbiAgY29sb3I6ICM3MjFjMjQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGQ3ZGE7XG4gIGJvcmRlci1jb2xvcjogI2Y1YzZjYjtcbn1cblxuLmFsZXJ0LWRhbmdlciBociB7XG4gIGJvcmRlci10b3AtY29sb3I6ICNmMWIwYjc7XG59XG5cbi5hbGVydC1kYW5nZXIgLmFsZXJ0LWxpbmsge1xuICBjb2xvcjogIzQ5MTIxNztcbn1cblxuLmFsZXJ0LWxpZ2h0IHtcbiAgY29sb3I6ICM4MTgxODI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZWZlZmU7XG4gIGJvcmRlci1jb2xvcjogI2ZkZmRmZTtcbn1cblxuLmFsZXJ0LWxpZ2h0IGhyIHtcbiAgYm9yZGVyLXRvcC1jb2xvcjogI2VjZWNmNjtcbn1cblxuLmFsZXJ0LWxpZ2h0IC5hbGVydC1saW5rIHtcbiAgY29sb3I6ICM2ODY4Njg7XG59XG5cbi5hbGVydC1kYXJrIHtcbiAgY29sb3I6ICMxYjFlMjE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkNmQ4ZDk7XG4gIGJvcmRlci1jb2xvcjogI2M2YzhjYTtcbn1cblxuLmFsZXJ0LWRhcmsgaHIge1xuICBib3JkZXItdG9wLWNvbG9yOiAjYjliYmJlO1xufVxuXG4uYWxlcnQtZGFyayAuYWxlcnQtbGluayB7XG4gIGNvbG9yOiAjMDQwNTA1O1xufVxuXG5Aa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHtcbiAgZnJvbSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMXJlbSAwO1xuICB9XG4gIHRvIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7XG4gIH1cbn1cblxuLnByb2dyZXNzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAxcmVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG59XG5cbi5wcm9ncmVzcy1iYXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgdHJhbnNpdGlvbjogd2lkdGggMC42cyBlYXNlO1xufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAucHJvZ3Jlc3MtYmFyIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG59XG5cbi5wcm9ncmVzcy1iYXItc3RyaXBlZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO1xuICBiYWNrZ3JvdW5kLXNpemU6IDFyZW0gMXJlbTtcbn1cblxuLnByb2dyZXNzLWJhci1hbmltYXRlZCB7XG4gIGFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMXMgbGluZWFyIGluZmluaXRlO1xufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAucHJvZ3Jlc3MtYmFyLWFuaW1hdGVkIHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cbn1cblxuLm1lZGlhIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG5cbi5tZWRpYS1ib2R5IHtcbiAgZmxleDogMTtcbn1cblxuLmxpc3QtZ3JvdXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGNvbG9yOiAjNDk1MDU3O1xuICB0ZXh0LWFsaWduOiBpbmhlcml0O1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMge1xuICB6LWluZGV4OiAxO1xuICBjb2xvcjogIzQ5NTA1NztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLWFjdGlvbjphY3RpdmUge1xuICBjb2xvcjogIzIxMjUyOTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW07XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQsIC5saXN0LWdyb3VwLWl0ZW06ZGlzYWJsZWQge1xuICBjb2xvcjogIzZjNzU3ZDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHtcbiAgei1pbmRleDogMjtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbSArIC5saXN0LWdyb3VwLWl0ZW0ge1xuICBib3JkZXItdG9wLXdpZHRoOiAwO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtICsgLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUge1xuICBtYXJnaW4tdG9wOiAtMXB4O1xuICBib3JkZXItdG9wLXdpZHRoOiAxcHg7XG59XG5cbi5saXN0LWdyb3VwLWhvcml6b250YWwge1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuXG4ubGlzdC1ncm91cC1ob3Jpem9udGFsIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQge1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbn1cblxuLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbCAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQge1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbCAubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5cbi5saXN0LWdyb3VwLWhvcml6b250YWwgLmxpc3QtZ3JvdXAtaXRlbSArIC5saXN0LWdyb3VwLWl0ZW0ge1xuICBib3JkZXItdG9wLXdpZHRoOiAxcHg7XG4gIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xufVxuXG4ubGlzdC1ncm91cC1ob3Jpem9udGFsIC5saXN0LWdyb3VwLWl0ZW0gKyAubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSB7XG4gIG1hcmdpbi1sZWZ0OiAtMXB4O1xuICBib3JkZXItbGVmdC13aWR0aDogMXB4O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1zbSB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgfVxuICAubGlzdC1ncm91cC1ob3Jpem9udGFsLXNtIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW07XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gIH1cbiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1zbSAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gIH1cbiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1zbSAubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICAubGlzdC1ncm91cC1ob3Jpem9udGFsLXNtIC5saXN0LWdyb3VwLWl0ZW0gKyAubGlzdC1ncm91cC1pdGVtIHtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAxcHg7XG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gIH1cbiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1zbSAubGlzdC1ncm91cC1pdGVtICsgLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUge1xuICAgIG1hcmdpbi1sZWZ0OiAtMXB4O1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwtbWQge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIH1cbiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1tZCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICB9XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwtbWQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICB9XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwtbWQgLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1tZCAubGlzdC1ncm91cC1pdGVtICsgLmxpc3QtZ3JvdXAtaXRlbSB7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogMXB4O1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICB9XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwtbWQgLmxpc3QtZ3JvdXAtaXRlbSArIC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHtcbiAgICBtYXJnaW4tbGVmdDogLTFweDtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMXB4O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAubGlzdC1ncm91cC1ob3Jpem9udGFsLWxnIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICB9XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwtbGcgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbTtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgfVxuICAubGlzdC1ncm91cC1ob3Jpem9udGFsLWxnIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMjVyZW07XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgfVxuICAubGlzdC1ncm91cC1ob3Jpem9udGFsLWxnIC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwtbGcgLmxpc3QtZ3JvdXAtaXRlbSArIC5saXN0LWdyb3VwLWl0ZW0ge1xuICAgIGJvcmRlci10b3Atd2lkdGg6IDFweDtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgfVxuICAubGlzdC1ncm91cC1ob3Jpem9udGFsLWxnIC5saXN0LWdyb3VwLWl0ZW0gKyAubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcHg7XG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDFweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwteGwge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIH1cbiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC14bCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICB9XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwteGwgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICB9XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwteGwgLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC14bCAubGlzdC1ncm91cC1pdGVtICsgLmxpc3QtZ3JvdXAtaXRlbSB7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogMXB4O1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICB9XG4gIC5saXN0LWdyb3VwLWhvcml6b250YWwteGwgLmxpc3QtZ3JvdXAtaXRlbSArIC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHtcbiAgICBtYXJnaW4tbGVmdDogLTFweDtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMXB4O1xuICB9XG59XG5cbi5saXN0LWdyb3VwLWZsdXNoIC5saXN0LWdyb3VwLWl0ZW0ge1xuICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICBib3JkZXItcmFkaXVzOiAwO1xufVxuXG4ubGlzdC1ncm91cC1mbHVzaCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHtcbiAgYm9yZGVyLXRvcC13aWR0aDogMDtcbn1cblxuLmxpc3QtZ3JvdXAtZmx1c2g6bGFzdC1jaGlsZCAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQge1xuICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLXByaW1hcnkge1xuICBjb2xvcjogIzAwNDA4NTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I4ZGFmZjtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHtcbiAgY29sb3I6ICMwMDQwODU7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5ZmNkZmY7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0MDg1O1xuICBib3JkZXItY29sb3I6ICMwMDQwODU7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5IHtcbiAgY29sb3I6ICMzODNkNDE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkNmQ4ZGI7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMge1xuICBjb2xvcjogIzM4M2Q0MTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M4Y2JjZjtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM4M2Q0MTtcbiAgYm9yZGVyLWNvbG9yOiAjMzgzZDQxO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3Mge1xuICBjb2xvcjogIzE1NTcyNDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2MzZTZjYjtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHtcbiAgY29sb3I6ICMxNTU3MjQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiMWRmYmI7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTU1NzI0O1xuICBib3JkZXItY29sb3I6ICMxNTU3MjQ7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0taW5mbyB7XG4gIGNvbG9yOiAjMGM1NDYwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmVlNWViO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLWluZm8ubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMge1xuICBjb2xvcjogIzBjNTQ2MDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2FiZGRlNTtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwYzU0NjA7XG4gIGJvcmRlci1jb2xvcjogIzBjNTQ2MDtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nIHtcbiAgY29sb3I6ICM4NTY0MDQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmVlYmE7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7XG4gIGNvbG9yOiAjODU2NDA0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlOGExO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzg1NjQwNDtcbiAgYm9yZGVyLWNvbG9yOiAjODU2NDA0O1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLWRhbmdlciB7XG4gIGNvbG9yOiAjNzIxYzI0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVjNmNiO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHtcbiAgY29sb3I6ICM3MjFjMjQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMWIwYjc7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICM3MjFjMjQ7XG4gIGJvcmRlci1jb2xvcjogIzcyMWMyNDtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbS1saWdodCB7XG4gIGNvbG9yOiAjODE4MTgyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRmZGZlO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tbGlnaHQubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7XG4gIGNvbG9yOiAjODE4MTgyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlY2Y2O1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MTgxODI7XG4gIGJvcmRlci1jb2xvcjogIzgxODE4Mjtcbn1cblxuLmxpc3QtZ3JvdXAtaXRlbS1kYXJrIHtcbiAgY29sb3I6ICMxYjFlMjE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjNmM4Y2E7XG59XG5cbi5saXN0LWdyb3VwLWl0ZW0tZGFyay5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWRhcmsubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7XG4gIGNvbG9yOiAjMWIxZTIxO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjliYmJlO1xufVxuXG4ubGlzdC1ncm91cC1pdGVtLWRhcmsubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFiMWUyMTtcbiAgYm9yZGVyLWNvbG9yOiAjMWIxZTIxO1xufVxuXG4uY2xvc2Uge1xuICBmbG9hdDogcmlnaHQ7XG4gIGZvbnQtc2l6ZTogMS41cmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6ICMwMDA7XG4gIHRleHQtc2hhZG93OiAwIDFweCAwICNmZmY7XG4gIG9wYWNpdHk6IC41O1xufVxuXG4uY2xvc2U6aG92ZXIge1xuICBjb2xvcjogIzAwMDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uY2xvc2U6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIsIC5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpmb2N1cyB7XG4gIG9wYWNpdHk6IC43NTtcbn1cblxuYnV0dG9uLmNsb3NlIHtcbiAgcGFkZGluZzogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuYS5jbG9zZS5kaXNhYmxlZCB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4udG9hc3Qge1xuICBtYXgtd2lkdGg6IDM1MHB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIGJveC1zaGFkb3c6IDAgMC4yNXJlbSAwLjc1cmVtIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICBvcGFjaXR5OiAwO1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xufVxuXG4udG9hc3Q6bm90KDpsYXN0LWNoaWxkKSB7XG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG59XG5cbi50b2FzdC5zaG93aW5nIHtcbiAgb3BhY2l0eTogMTtcbn1cblxuLnRvYXN0LnNob3cge1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3BhY2l0eTogMTtcbn1cblxuLnRvYXN0LmhpZGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4udG9hc3QtaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMC4yNXJlbSAwLjc1cmVtO1xuICBjb2xvcjogIzZjNzU3ZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KTtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wNSk7XG59XG5cbi50b2FzdC1ib2R5IHtcbiAgcGFkZGluZzogMC43NXJlbTtcbn1cblxuLm1vZGFsLW9wZW4ge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ubW9kYWwtb3BlbiAubW9kYWwge1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5tb2RhbCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAxMDUwO1xuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBvdXRsaW5lOiAwO1xufVxuXG4ubW9kYWwtZGlhbG9nIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogYXV0bztcbiAgbWFyZ2luOiAwLjVyZW07XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9nIHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MHB4KTtcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLm1vZGFsLmZhZGUgLm1vZGFsLWRpYWxvZyB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxufVxuXG4ubW9kYWwuc2hvdyAubW9kYWwtZGlhbG9nIHtcbiAgdHJhbnNmb3JtOiBub25lO1xufVxuXG4ubW9kYWwubW9kYWwtc3RhdGljIC5tb2RhbC1kaWFsb2cge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMDIpO1xufVxuXG4ubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAxcmVtKTtcbn1cblxuLm1vZGFsLWRpYWxvZy1zY3JvbGxhYmxlIC5tb2RhbC1jb250ZW50IHtcbiAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDFyZW0pO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUgLm1vZGFsLWhlYWRlcixcbi5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSAubW9kYWwtZm9vdGVyIHtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSAubW9kYWwtYm9keSB7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5tb2RhbC1kaWFsb2ctY2VudGVyZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSAxcmVtKTtcbn1cblxuLm1vZGFsLWRpYWxvZy1jZW50ZXJlZDo6YmVmb3JlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogY2FsYygxMDB2aCAtIDFyZW0pO1xuICBjb250ZW50OiBcIlwiO1xufVxuXG4ubW9kYWwtZGlhbG9nLWNlbnRlcmVkLm1vZGFsLWRpYWxvZy1zY3JvbGxhYmxlIHtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuLm1vZGFsLWRpYWxvZy1jZW50ZXJlZC5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSAubW9kYWwtY29udGVudCB7XG4gIG1heC1oZWlnaHQ6IG5vbmU7XG59XG5cbi5tb2RhbC1kaWFsb2ctY2VudGVyZWQubW9kYWwtZGlhbG9nLXNjcm9sbGFibGU6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IG5vbmU7XG59XG5cbi5tb2RhbC1jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwJTtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgYm9yZGVyLXJhZGl1czogMC4zcmVtO1xuICBvdXRsaW5lOiAwO1xufVxuXG4ubW9kYWwtYmFja2Ryb3Age1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTA0MDtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IDEwMHZoO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwO1xufVxuXG4ubW9kYWwtYmFja2Ryb3AuZmFkZSB7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5tb2RhbC1iYWNrZHJvcC5zaG93IHtcbiAgb3BhY2l0eTogMC41O1xufVxuXG4ubW9kYWwtaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgcGFkZGluZzogMXJlbSAxcmVtO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RlZTJlNjtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogY2FsYygwLjNyZW0gLSAxcHgpO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYygwLjNyZW0gLSAxcHgpO1xufVxuXG4ubW9kYWwtaGVhZGVyIC5jbG9zZSB7XG4gIHBhZGRpbmc6IDFyZW0gMXJlbTtcbiAgbWFyZ2luOiAtMXJlbSAtMXJlbSAtMXJlbSBhdXRvO1xufVxuXG4ubW9kYWwtdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBsaW5lLWhlaWdodDogMS41O1xufVxuXG4ubW9kYWwtYm9keSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxleDogMSAxIGF1dG87XG4gIHBhZGRpbmc6IDFyZW07XG59XG5cbi5tb2RhbC1mb290ZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHBhZGRpbmc6IDAuNzVyZW07XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGVlMmU2O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogY2FsYygwLjNyZW0gLSAxcHgpO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBjYWxjKDAuM3JlbSAtIDFweCk7XG59XG5cbi5tb2RhbC1mb290ZXIgPiAqIHtcbiAgbWFyZ2luOiAwLjI1cmVtO1xufVxuXG4ubW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTk5OTlweDtcbiAgd2lkdGg6IDUwcHg7XG4gIGhlaWdodDogNTBweDtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5tb2RhbC1kaWFsb2cge1xuICAgIG1heC13aWR0aDogNTAwcHg7XG4gICAgbWFyZ2luOiAxLjc1cmVtIGF1dG87XG4gIH1cbiAgLm1vZGFsLWRpYWxvZy1zY3JvbGxhYmxlIHtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAzLjVyZW0pO1xuICB9XG4gIC5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSAubW9kYWwtY29udGVudCB7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDMuNXJlbSk7XG4gIH1cbiAgLm1vZGFsLWRpYWxvZy1jZW50ZXJlZCB7XG4gICAgbWluLWhlaWdodDogY2FsYygxMDAlIC0gMy41cmVtKTtcbiAgfVxuICAubW9kYWwtZGlhbG9nLWNlbnRlcmVkOjpiZWZvcmUge1xuICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDMuNXJlbSk7XG4gIH1cbiAgLm1vZGFsLXNtIHtcbiAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAubW9kYWwtbGcsXG4gIC5tb2RhbC14bCB7XG4gICAgbWF4LXdpZHRoOiA4MDBweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5tb2RhbC14bCB7XG4gICAgbWF4LXdpZHRoOiAxMTQwcHg7XG4gIH1cbn1cblxuLnRvb2x0aXAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDEwNzA7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDA7XG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBcIk5vdG8gU2Fuc1wiLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJTZWdvZSBVSSBTeW1ib2xcIiwgXCJOb3RvIENvbG9yIEVtb2ppXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG4gIHdvcmQtc3BhY2luZzogbm9ybWFsO1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICBsaW5lLWJyZWFrOiBhdXRvO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi50b29sdGlwLnNob3cge1xuICBvcGFjaXR5OiAwLjk7XG59XG5cbi50b29sdGlwIC5hcnJvdyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwLjhyZW07XG4gIGhlaWdodDogMC40cmVtO1xufVxuXG4udG9vbHRpcCAuYXJyb3c6OmJlZm9yZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY29udGVudDogXCJcIjtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbn1cblxuLmJzLXRvb2x0aXAtdG9wLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cInRvcFwiXSB7XG4gIHBhZGRpbmc6IDAuNHJlbSAwO1xufVxuXG4uYnMtdG9vbHRpcC10b3AgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cInRvcFwiXSAuYXJyb3cge1xuICBib3R0b206IDA7XG59XG5cbi5icy10b29sdGlwLXRvcCAuYXJyb3c6OmJlZm9yZSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XCJ0b3BcIl0gLmFycm93OjpiZWZvcmUge1xuICB0b3A6IDA7XG4gIGJvcmRlci13aWR0aDogMC40cmVtIDAuNHJlbSAwO1xuICBib3JkZXItdG9wLWNvbG9yOiAjMDAwO1xufVxuXG4uYnMtdG9vbHRpcC1yaWdodCwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XCJyaWdodFwiXSB7XG4gIHBhZGRpbmc6IDAgMC40cmVtO1xufVxuXG4uYnMtdG9vbHRpcC1yaWdodCAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwicmlnaHRcIl0gLmFycm93IHtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDAuNHJlbTtcbiAgaGVpZ2h0OiAwLjhyZW07XG59XG5cbi5icy10b29sdGlwLXJpZ2h0IC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cInJpZ2h0XCJdIC5hcnJvdzo6YmVmb3JlIHtcbiAgcmlnaHQ6IDA7XG4gIGJvcmRlci13aWR0aDogMC40cmVtIDAuNHJlbSAwLjRyZW0gMDtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjMDAwO1xufVxuXG4uYnMtdG9vbHRpcC1ib3R0b20sIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwiYm90dG9tXCJdIHtcbiAgcGFkZGluZzogMC40cmVtIDA7XG59XG5cbi5icy10b29sdGlwLWJvdHRvbSAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwiYm90dG9tXCJdIC5hcnJvdyB7XG4gIHRvcDogMDtcbn1cblxuLmJzLXRvb2x0aXAtYm90dG9tIC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cImJvdHRvbVwiXSAuYXJyb3c6OmJlZm9yZSB7XG4gIGJvdHRvbTogMDtcbiAgYm9yZGVyLXdpZHRoOiAwIDAuNHJlbSAwLjRyZW07XG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMDA7XG59XG5cbi5icy10b29sdGlwLWxlZnQsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwibGVmdFwiXSB7XG4gIHBhZGRpbmc6IDAgMC40cmVtO1xufVxuXG4uYnMtdG9vbHRpcC1sZWZ0IC5hcnJvdywgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XCJsZWZ0XCJdIC5hcnJvdyB7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMC40cmVtO1xuICBoZWlnaHQ6IDAuOHJlbTtcbn1cblxuLmJzLXRvb2x0aXAtbGVmdCAuYXJyb3c6OmJlZm9yZSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XCJsZWZ0XCJdIC5hcnJvdzo6YmVmb3JlIHtcbiAgbGVmdDogMDtcbiAgYm9yZGVyLXdpZHRoOiAwLjRyZW0gMCAwLjRyZW0gMC40cmVtO1xuICBib3JkZXItbGVmdC1jb2xvcjogIzAwMDtcbn1cblxuLnRvb2x0aXAtaW5uZXIge1xuICBtYXgtd2lkdGg6IDIwMHB4O1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbn1cblxuLnBvcG92ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTA2MDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1heC13aWR0aDogMjc2cHg7XG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBcIk5vdG8gU2Fuc1wiLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJTZWdvZSBVSSBTeW1ib2xcIiwgXCJOb3RvIENvbG9yIEVtb2ppXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG4gIHdvcmQtc3BhY2luZzogbm9ybWFsO1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICBsaW5lLWJyZWFrOiBhdXRvO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgYm9yZGVyLXJhZGl1czogMC4zcmVtO1xufVxuXG4ucG9wb3ZlciAuYXJyb3cge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMXJlbTtcbiAgaGVpZ2h0OiAwLjVyZW07XG4gIG1hcmdpbjogMCAwLjNyZW07XG59XG5cbi5wb3BvdmVyIC5hcnJvdzo6YmVmb3JlLCAucG9wb3ZlciAuYXJyb3c6OmFmdGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgY29udGVudDogXCJcIjtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbn1cblxuLmJzLXBvcG92ZXItdG9wLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cInRvcFwiXSB7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cblxuLmJzLXBvcG92ZXItdG9wID4gLmFycm93LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cInRvcFwiXSA+IC5hcnJvdyB7XG4gIGJvdHRvbTogY2FsYygtMC41cmVtIC0gMXB4KTtcbn1cblxuLmJzLXBvcG92ZXItdG9wID4gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVwidG9wXCJdID4gLmFycm93OjpiZWZvcmUge1xuICBib3R0b206IDA7XG4gIGJvcmRlci13aWR0aDogMC41cmVtIDAuNXJlbSAwO1xuICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xufVxuXG4uYnMtcG9wb3Zlci10b3AgPiAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cInRvcFwiXSA+IC5hcnJvdzo6YWZ0ZXIge1xuICBib3R0b206IDFweDtcbiAgYm9yZGVyLXdpZHRoOiAwLjVyZW0gMC41cmVtIDA7XG4gIGJvcmRlci10b3AtY29sb3I6ICNmZmY7XG59XG5cbi5icy1wb3BvdmVyLXJpZ2h0LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cInJpZ2h0XCJdIHtcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbn1cblxuLmJzLXBvcG92ZXItcmlnaHQgPiAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVwicmlnaHRcIl0gPiAuYXJyb3cge1xuICBsZWZ0OiBjYWxjKC0wLjVyZW0gLSAxcHgpO1xuICB3aWR0aDogMC41cmVtO1xuICBoZWlnaHQ6IDFyZW07XG4gIG1hcmdpbjogMC4zcmVtIDA7XG59XG5cbi5icy1wb3BvdmVyLXJpZ2h0ID4gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVwicmlnaHRcIl0gPiAuYXJyb3c6OmJlZm9yZSB7XG4gIGxlZnQ6IDA7XG4gIGJvcmRlci13aWR0aDogMC41cmVtIDAuNXJlbSAwLjVyZW0gMDtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xufVxuXG4uYnMtcG9wb3Zlci1yaWdodCA+IC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVwicmlnaHRcIl0gPiAuYXJyb3c6OmFmdGVyIHtcbiAgbGVmdDogMXB4O1xuICBib3JkZXItd2lkdGg6IDAuNXJlbSAwLjVyZW0gMC41cmVtIDA7XG4gIGJvcmRlci1yaWdodC1jb2xvcjogI2ZmZjtcbn1cblxuLmJzLXBvcG92ZXItYm90dG9tLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cImJvdHRvbVwiXSB7XG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcbn1cblxuLmJzLXBvcG92ZXItYm90dG9tID4gLmFycm93LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cImJvdHRvbVwiXSA+IC5hcnJvdyB7XG4gIHRvcDogY2FsYygtMC41cmVtIC0gMXB4KTtcbn1cblxuLmJzLXBvcG92ZXItYm90dG9tID4gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePVwiYm90dG9tXCJdID4gLmFycm93OjpiZWZvcmUge1xuICB0b3A6IDA7XG4gIGJvcmRlci13aWR0aDogMCAwLjVyZW0gMC41cmVtIDAuNXJlbTtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTtcbn1cblxuLmJzLXBvcG92ZXItYm90dG9tID4gLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49XCJib3R0b21cIl0gPiAuYXJyb3c6OmFmdGVyIHtcbiAgdG9wOiAxcHg7XG4gIGJvcmRlci13aWR0aDogMCAwLjVyZW0gMC41cmVtIDAuNXJlbTtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjtcbn1cblxuLmJzLXBvcG92ZXItYm90dG9tIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cImJvdHRvbVwiXSAucG9wb3Zlci1oZWFkZXI6OmJlZm9yZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiA1MCU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMXJlbTtcbiAgbWFyZ2luLWxlZnQ6IC0wLjVyZW07XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjdmN2Y3O1xufVxuXG4uYnMtcG9wb3Zlci1sZWZ0LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cImxlZnRcIl0ge1xuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbn1cblxuLmJzLXBvcG92ZXItbGVmdCA+IC5hcnJvdywgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49XCJsZWZ0XCJdID4gLmFycm93IHtcbiAgcmlnaHQ6IGNhbGMoLTAuNXJlbSAtIDFweCk7XG4gIHdpZHRoOiAwLjVyZW07XG4gIGhlaWdodDogMXJlbTtcbiAgbWFyZ2luOiAwLjNyZW0gMDtcbn1cblxuLmJzLXBvcG92ZXItbGVmdCA+IC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj1cImxlZnRcIl0gPiAuYXJyb3c6OmJlZm9yZSB7XG4gIHJpZ2h0OiAwO1xuICBib3JkZXItd2lkdGg6IDAuNXJlbSAwIDAuNXJlbSAwLjVyZW07XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xufVxuXG4uYnMtcG9wb3Zlci1sZWZ0ID4gLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49XCJsZWZ0XCJdID4gLmFycm93OjphZnRlciB7XG4gIHJpZ2h0OiAxcHg7XG4gIGJvcmRlci13aWR0aDogMC41cmVtIDAgMC41cmVtIDAuNXJlbTtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNmZmY7XG59XG5cbi5wb3BvdmVyLWhlYWRlciB7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBmb250LXNpemU6IDFyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWJlYmViO1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBjYWxjKDAuM3JlbSAtIDFweCk7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBjYWxjKDAuM3JlbSAtIDFweCk7XG59XG5cbi5wb3BvdmVyLWhlYWRlcjplbXB0eSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5wb3BvdmVyLWJvZHkge1xuICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTtcbiAgY29sb3I6ICMyMTI1Mjk7XG59XG5cbi5jYXJvdXNlbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmNhcm91c2VsLnBvaW50ZXItZXZlbnQge1xuICB0b3VjaC1hY3Rpb246IHBhbi15O1xufVxuXG4uY2Fyb3VzZWwtaW5uZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uY2Fyb3VzZWwtaW5uZXI6OmFmdGVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGNsZWFyOiBib3RoO1xuICBjb250ZW50OiBcIlwiO1xufVxuXG4uY2Fyb3VzZWwtaXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogbm9uZTtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjZzIGVhc2UtaW4tb3V0O1xufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAuY2Fyb3VzZWwtaXRlbSB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxufVxuXG4uY2Fyb3VzZWwtaXRlbS5hY3RpdmUsXG4uY2Fyb3VzZWwtaXRlbS1uZXh0LFxuLmNhcm91c2VsLWl0ZW0tcHJldiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uY2Fyb3VzZWwtaXRlbS1uZXh0Om5vdCguY2Fyb3VzZWwtaXRlbS1sZWZ0KSxcbi5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cblxuLmNhcm91c2VsLWl0ZW0tcHJldjpub3QoLmNhcm91c2VsLWl0ZW0tcmlnaHQpLFxuLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xufVxuXG4uY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbSB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IG9wYWNpdHk7XG4gIHRyYW5zZm9ybTogbm9uZTtcbn1cblxuLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0uYWN0aXZlLFxuLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0tbmV4dC5jYXJvdXNlbC1pdGVtLWxlZnQsXG4uY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQge1xuICB6LWluZGV4OiAxO1xuICBvcGFjaXR5OiAxO1xufVxuXG4uY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCxcbi5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7XG4gIHotaW5kZXg6IDA7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMHMgMC42cztcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQsXG4gIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxufVxuXG4uY2Fyb3VzZWwtY29udHJvbC1wcmV2LFxuLmNhcm91c2VsLWNvbnRyb2wtbmV4dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHotaW5kZXg6IDE7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMTUlO1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBvcGFjaXR5OiAwLjU7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTtcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmNhcm91c2VsLWNvbnRyb2wtcHJldixcbiAgLmNhcm91c2VsLWNvbnRyb2wtbmV4dCB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxufVxuXG4uY2Fyb3VzZWwtY29udHJvbC1wcmV2OmhvdmVyLCAuY2Fyb3VzZWwtY29udHJvbC1wcmV2OmZvY3VzLFxuLmNhcm91c2VsLWNvbnRyb2wtbmV4dDpob3Zlcixcbi5jYXJvdXNlbC1jb250cm9sLW5leHQ6Zm9jdXMge1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBvdXRsaW5lOiAwO1xuICBvcGFjaXR5OiAwLjk7XG59XG5cbi5jYXJvdXNlbC1jb250cm9sLXByZXYge1xuICBsZWZ0OiAwO1xufVxuXG4uY2Fyb3VzZWwtY29udHJvbC1uZXh0IHtcbiAgcmlnaHQ6IDA7XG59XG5cbi5jYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbixcbi5jYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgYmFja2dyb3VuZDogbm8tcmVwZWF0IDUwJSAvIDEwMCUgMTAwJTtcbn1cblxuLmNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyM2ZmZicgd2lkdGg9JzgnIGhlaWdodD0nOCcgdmlld0JveD0nMCAwIDggOCclM2UlM2NwYXRoIGQ9J001LjI1IDBsLTQgNCA0IDQgMS41LTEuNUw0LjI1IDRsMi41LTIuNUw1LjI1IDB6Jy8lM2UlM2Mvc3ZnJTNlXCIpO1xufVxuXG4uY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24ge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbD0nJTIzZmZmJyB3aWR0aD0nOCcgaGVpZ2h0PSc4JyB2aWV3Qm94PScwIDAgOCA4JyUzZSUzY3BhdGggZD0nTTIuNzUgMGwtMS41IDEuNUwzLjc1IDRsLTIuNSAyLjVMMi43NSA4bDQtNC00LTR6Jy8lM2UlM2Mvc3ZnJTNlXCIpO1xufVxuXG4uY2Fyb3VzZWwtaW5kaWNhdG9ycyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbi1yaWdodDogMTUlO1xuICBtYXJnaW4tbGVmdDogMTUlO1xuICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG4uY2Fyb3VzZWwtaW5kaWNhdG9ycyBsaSB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBmbGV4OiAwIDEgYXV0bztcbiAgd2lkdGg6IDMwcHg7XG4gIGhlaWdodDogM3B4O1xuICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgbWFyZ2luLWxlZnQ6IDNweDtcbiAgdGV4dC1pbmRlbnQ6IC05OTlweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXItdG9wOiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItYm90dG9tOiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBvcGFjaXR5OiAuNTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjZzIGVhc2U7XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG59XG5cbi5jYXJvdXNlbC1pbmRpY2F0b3JzIC5hY3RpdmUge1xuICBvcGFjaXR5OiAxO1xufVxuXG4uY2Fyb3VzZWwtY2FwdGlvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDE1JTtcbiAgYm90dG9tOiAyMHB4O1xuICBsZWZ0OiAxNSU7XG4gIHotaW5kZXg6IDEwO1xuICBwYWRkaW5nLXRvcDogMjBweDtcbiAgcGFkZGluZy1ib3R0b206IDIwcHg7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbkBrZXlmcmFtZXMgc3Bpbm5lci1ib3JkZXIge1xuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuXG4uc3Bpbm5lci1ib3JkZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAycmVtO1xuICBoZWlnaHQ6IDJyZW07XG4gIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTtcbiAgYm9yZGVyOiAwLjI1ZW0gc29saWQgY3VycmVudENvbG9yO1xuICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGFuaW1hdGlvbjogc3Bpbm5lci1ib3JkZXIgLjc1cyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbi5zcGlubmVyLWJvcmRlci1zbSB7XG4gIHdpZHRoOiAxcmVtO1xuICBoZWlnaHQ6IDFyZW07XG4gIGJvcmRlci13aWR0aDogMC4yZW07XG59XG5cbkBrZXlmcmFtZXMgc3Bpbm5lci1ncm93IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbi5zcGlubmVyLWdyb3cge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAycmVtO1xuICBoZWlnaHQ6IDJyZW07XG4gIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIG9wYWNpdHk6IDA7XG4gIGFuaW1hdGlvbjogc3Bpbm5lci1ncm93IC43NXMgbGluZWFyIGluZmluaXRlO1xufVxuXG4uc3Bpbm5lci1ncm93LXNtIHtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbn1cblxuLmFsaWduLWJhc2VsaW5lIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi10b3Age1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1taWRkbGUge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1ib3R0b20ge1xuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi10ZXh0LWJvdHRvbSB7XG4gIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbSAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24tdGV4dC10b3Age1xuICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3AgIWltcG9ydGFudDtcbn1cblxuLmJnLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7XG59XG5cbmEuYmctcHJpbWFyeTpob3ZlciwgYS5iZy1wcmltYXJ5OmZvY3VzLFxuYnV0dG9uLmJnLXByaW1hcnk6aG92ZXIsXG5idXR0b24uYmctcHJpbWFyeTpmb2N1cyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDYyY2MgIWltcG9ydGFudDtcbn1cblxuLmJnLXNlY29uZGFyeSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDtcbn1cblxuYS5iZy1zZWNvbmRhcnk6aG92ZXIsIGEuYmctc2Vjb25kYXJ5OmZvY3VzLFxuYnV0dG9uLmJnLXNlY29uZGFyeTpob3ZlcixcbmJ1dHRvbi5iZy1zZWNvbmRhcnk6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ1YjYyICFpbXBvcnRhbnQ7XG59XG5cbi5iZy1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50O1xufVxuXG5hLmJnLXN1Y2Nlc3M6aG92ZXIsIGEuYmctc3VjY2Vzczpmb2N1cyxcbmJ1dHRvbi5iZy1zdWNjZXNzOmhvdmVyLFxuYnV0dG9uLmJnLXN1Y2Nlc3M6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWU3ZTM0ICFpbXBvcnRhbnQ7XG59XG5cbi5iZy1pbmZvIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiOCAhaW1wb3J0YW50O1xufVxuXG5hLmJnLWluZm86aG92ZXIsIGEuYmctaW5mbzpmb2N1cyxcbmJ1dHRvbi5iZy1pbmZvOmhvdmVyLFxuYnV0dG9uLmJnLWluZm86Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE3YThiICFpbXBvcnRhbnQ7XG59XG5cbi5iZy13YXJuaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50O1xufVxuXG5hLmJnLXdhcm5pbmc6aG92ZXIsIGEuYmctd2FybmluZzpmb2N1cyxcbmJ1dHRvbi5iZy13YXJuaW5nOmhvdmVyLFxuYnV0dG9uLmJnLXdhcm5pbmc6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDM5ZTAwICFpbXBvcnRhbnQ7XG59XG5cbi5iZy1kYW5nZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7XG59XG5cbmEuYmctZGFuZ2VyOmhvdmVyLCBhLmJnLWRhbmdlcjpmb2N1cyxcbmJ1dHRvbi5iZy1kYW5nZXI6aG92ZXIsXG5idXR0b24uYmctZGFuZ2VyOmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMCAhaW1wb3J0YW50O1xufVxuXG4uYmctbGlnaHQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7XG59XG5cbmEuYmctbGlnaHQ6aG92ZXIsIGEuYmctbGlnaHQ6Zm9jdXMsXG5idXR0b24uYmctbGlnaHQ6aG92ZXIsXG5idXR0b24uYmctbGlnaHQ6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFlMGU1ICFpbXBvcnRhbnQ7XG59XG5cbi5iZy1kYXJrIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50O1xufVxuXG5hLmJnLWRhcms6aG92ZXIsIGEuYmctZGFyazpmb2N1cyxcbmJ1dHRvbi5iZy1kYXJrOmhvdmVyLFxuYnV0dG9uLmJnLWRhcms6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI0ICFpbXBvcnRhbnQ7XG59XG5cbi5iZy13aGl0ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbn1cblxuLmJnLXRyYW5zcGFyZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cblxuLmJvcmRlciB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTYgIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci10b3Age1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50O1xufVxuXG4uYm9yZGVyLXJpZ2h0IHtcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50O1xufVxuXG4uYm9yZGVyLWJvdHRvbSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGVlMmU2ICFpbXBvcnRhbnQ7XG59XG5cbi5ib3JkZXItbGVmdCB7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50O1xufVxuXG4uYm9yZGVyLTAge1xuICBib3JkZXI6IDAgIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci10b3AtMCB7XG4gIGJvcmRlci10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci1yaWdodC0wIHtcbiAgYm9yZGVyLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG59XG5cbi5ib3JkZXItYm90dG9tLTAge1xuICBib3JkZXItYm90dG9tOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5ib3JkZXItbGVmdC0wIHtcbiAgYm9yZGVyLWxlZnQ6IDAgIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci1wcmltYXJ5IHtcbiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7XG59XG5cbi5ib3JkZXItc2Vjb25kYXJ5IHtcbiAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkICFpbXBvcnRhbnQ7XG59XG5cbi5ib3JkZXItc3VjY2VzcyB7XG4gIGJvcmRlci1jb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50O1xufVxuXG4uYm9yZGVyLWluZm8ge1xuICBib3JkZXItY29sb3I6ICMxN2EyYjggIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci13YXJuaW5nIHtcbiAgYm9yZGVyLWNvbG9yOiAjZmZjMTA3ICFpbXBvcnRhbnQ7XG59XG5cbi5ib3JkZXItZGFuZ2VyIHtcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7XG59XG5cbi5ib3JkZXItbGlnaHQge1xuICBib3JkZXItY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDtcbn1cblxuLmJvcmRlci1kYXJrIHtcbiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwICFpbXBvcnRhbnQ7XG59XG5cbi5ib3JkZXItd2hpdGUge1xuICBib3JkZXItY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQtc20ge1xuICBib3JkZXItcmFkaXVzOiAwLjJyZW0gIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQge1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLXRvcCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQtcmlnaHQge1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC1ib3R0b20ge1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50O1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLWxlZnQge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQtbGcge1xuICBib3JkZXItcmFkaXVzOiAwLjNyZW0gIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQtY2lyY2xlIHtcbiAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLXBpbGwge1xuICBib3JkZXItcmFkaXVzOiA1MHJlbSAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC0wIHtcbiAgYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xufVxuXG4uY2xlYXJmaXg6OmFmdGVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGNsZWFyOiBib3RoO1xuICBjb250ZW50OiBcIlwiO1xufVxuXG4uZC1ub25lIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uZC1pbmxpbmUge1xuICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcbn1cblxuLmQtaW5saW5lLWJsb2NrIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG59XG5cbi5kLWJsb2NrIHtcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbn1cblxuLmQtdGFibGUge1xuICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50O1xufVxuXG4uZC10YWJsZS1yb3cge1xuICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDtcbn1cblxuLmQtdGFibGUtY2VsbCB7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDtcbn1cblxuLmQtZmxleCB7XG4gIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbn1cblxuLmQtaW5saW5lLWZsZXgge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmQtc20tbm9uZSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC5kLXNtLWlubGluZSB7XG4gICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtc20taW5saW5lLWJsb2NrIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDtcbiAgfVxuICAuZC1zbS1ibG9jayB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgfVxuICAuZC1zbS10YWJsZSB7XG4gICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDtcbiAgfVxuICAuZC1zbS10YWJsZS1yb3cge1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50O1xuICB9XG4gIC5kLXNtLXRhYmxlLWNlbGwge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDtcbiAgfVxuICAuZC1zbS1mbGV4IHtcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtc20taW5saW5lLWZsZXgge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5kLW1kLW5vbmUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAuZC1tZC1pbmxpbmUge1xuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xuICB9XG4gIC5kLW1kLWlubGluZS1ibG9jayB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtbWQtYmxvY2sge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtbWQtdGFibGUge1xuICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtbWQtdGFibGUtcm93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDtcbiAgfVxuICAuZC1tZC10YWJsZS1jZWxsIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtbWQtZmxleCB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICB9XG4gIC5kLW1kLWlubGluZS1mbGV4IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuZC1sZy1ub25lIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtbGctaW5saW5lIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcbiAgfVxuICAuZC1sZy1pbmxpbmUtYmxvY2sge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xuICB9XG4gIC5kLWxnLWJsb2NrIHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICB9XG4gIC5kLWxnLXRhYmxlIHtcbiAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50O1xuICB9XG4gIC5kLWxnLXRhYmxlLXJvdyB7XG4gICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtbGctdGFibGUtY2VsbCB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50O1xuICB9XG4gIC5kLWxnLWZsZXgge1xuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgfVxuICAuZC1sZy1pbmxpbmUtZmxleCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5kLXhsLW5vbmUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAuZC14bC1pbmxpbmUge1xuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xuICB9XG4gIC5kLXhsLWlubGluZS1ibG9jayB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQteGwtYmxvY2sge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQteGwtdGFibGUge1xuICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQteGwtdGFibGUtcm93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDtcbiAgfVxuICAuZC14bC10YWJsZS1jZWxsIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQteGwtZmxleCB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICB9XG4gIC5kLXhsLWlubGluZS1mbGV4IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSBwcmludCB7XG4gIC5kLXByaW50LW5vbmUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAuZC1wcmludC1pbmxpbmUge1xuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xuICB9XG4gIC5kLXByaW50LWlubGluZS1ibG9jayB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtcHJpbnQtYmxvY2sge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtcHJpbnQtdGFibGUge1xuICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtcHJpbnQtdGFibGUtcm93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDtcbiAgfVxuICAuZC1wcmludC10YWJsZS1jZWxsIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmQtcHJpbnQtZmxleCB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICB9XG4gIC5kLXByaW50LWlubGluZS1mbGV4IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5lbWJlZC1yZXNwb25zaXZlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5lbWJlZC1yZXNwb25zaXZlOjpiZWZvcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgY29udGVudDogXCJcIjtcbn1cblxuLmVtYmVkLXJlc3BvbnNpdmUgLmVtYmVkLXJlc3BvbnNpdmUtaXRlbSxcbi5lbWJlZC1yZXNwb25zaXZlIGlmcmFtZSxcbi5lbWJlZC1yZXNwb25zaXZlIGVtYmVkLFxuLmVtYmVkLXJlc3BvbnNpdmUgb2JqZWN0LFxuLmVtYmVkLXJlc3BvbnNpdmUgdmlkZW8ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3JkZXI6IDA7XG59XG5cbi5lbWJlZC1yZXNwb25zaXZlLTIxYnk5OjpiZWZvcmUge1xuICBwYWRkaW5nLXRvcDogNDIuODU3MTQzJTtcbn1cblxuLmVtYmVkLXJlc3BvbnNpdmUtMTZieTk6OmJlZm9yZSB7XG4gIHBhZGRpbmctdG9wOiA1Ni4yNSU7XG59XG5cbi5lbWJlZC1yZXNwb25zaXZlLTRieTM6OmJlZm9yZSB7XG4gIHBhZGRpbmctdG9wOiA3NSU7XG59XG5cbi5lbWJlZC1yZXNwb25zaXZlLTFieTE6OmJlZm9yZSB7XG4gIHBhZGRpbmctdG9wOiAxMDAlO1xufVxuXG4uZmxleC1yb3cge1xuICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7XG59XG5cbi5mbGV4LWNvbHVtbiB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDtcbn1cblxuLmZsZXgtcm93LXJldmVyc2Uge1xuICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDtcbn1cblxuLmZsZXgtY29sdW1uLXJldmVyc2Uge1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDtcbn1cblxuLmZsZXgtd3JhcCB7XG4gIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50O1xufVxuXG4uZmxleC1ub3dyYXAge1xuICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50O1xufVxuXG4uZmxleC13cmFwLXJldmVyc2Uge1xuICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50O1xufVxuXG4uZmxleC1maWxsIHtcbiAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmZsZXgtZ3Jvdy0wIHtcbiAgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7XG59XG5cbi5mbGV4LWdyb3ctMSB7XG4gIGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50O1xufVxuXG4uZmxleC1zaHJpbmstMCB7XG4gIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5mbGV4LXNocmluay0xIHtcbiAgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDtcbn1cblxuLmp1c3RpZnktY29udGVudC1zdGFydCB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50O1xufVxuXG4uanVzdGlmeS1jb250ZW50LWVuZCB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDtcbn1cblxuLmp1c3RpZnktY29udGVudC1jZW50ZXIge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xufVxuXG4uanVzdGlmeS1jb250ZW50LWJldHdlZW4ge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDtcbn1cblxuLmp1c3RpZnktY29udGVudC1hcm91bmQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24taXRlbXMtc3RhcnQge1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24taXRlbXMtZW5kIHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1pdGVtcy1jZW50ZXIge1xuICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1pdGVtcy1iYXNlbGluZSB7XG4gIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24taXRlbXMtc3RyZXRjaCB7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1jb250ZW50LXN0YXJ0IHtcbiAgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24tY29udGVudC1lbmQge1xuICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24tY29udGVudC1jZW50ZXIge1xuICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbn1cblxuLmFsaWduLWNvbnRlbnQtYmV0d2VlbiB7XG4gIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDtcbn1cblxuLmFsaWduLWNvbnRlbnQtYXJvdW5kIHtcbiAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1jb250ZW50LXN0cmV0Y2gge1xuICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1zZWxmLWF1dG8ge1xuICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi5hbGlnbi1zZWxmLXN0YXJ0IHtcbiAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24tc2VsZi1lbmQge1xuICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24tc2VsZi1jZW50ZXIge1xuICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDtcbn1cblxuLmFsaWduLXNlbGYtYmFzZWxpbmUge1xuICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50O1xufVxuXG4uYWxpZ24tc2VsZi1zdHJldGNoIHtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmZsZXgtc20tcm93IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtc20tY29sdW1uIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtc20tcm93LXJldmVyc2Uge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LXNtLWNvbHVtbi1yZXZlcnNlIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1zbS13cmFwIHtcbiAgICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1zbS1ub3dyYXAge1xuICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtc20td3JhcC1yZXZlcnNlIHtcbiAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LXNtLWZpbGwge1xuICAgIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtc20tZ3Jvdy0wIHtcbiAgICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1zbS1ncm93LTEge1xuICAgIGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LXNtLXNocmluay0wIHtcbiAgICBmbGV4LXNocmluazogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LXNtLXNocmluay0xIHtcbiAgICBmbGV4LXNocmluazogMSAhaW1wb3J0YW50O1xuICB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtc20tc3RhcnQge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtc20tZW5kIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmp1c3RpZnktY29udGVudC1zbS1jZW50ZXIge1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmp1c3RpZnktY29udGVudC1zbS1iZXR3ZWVuIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDtcbiAgfVxuICAuanVzdGlmeS1jb250ZW50LXNtLWFyb3VuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24taXRlbXMtc20tc3RhcnQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWl0ZW1zLXNtLWVuZCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWl0ZW1zLXNtLWNlbnRlciB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1pdGVtcy1zbS1iYXNlbGluZSB7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWl0ZW1zLXNtLXN0cmV0Y2gge1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQtc20tc3RhcnQge1xuICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tY29udGVudC1zbS1lbmQge1xuICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQtc20tY2VudGVyIHtcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tY29udGVudC1zbS1iZXR3ZWVuIHtcbiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQtc20tYXJvdW5kIHtcbiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tY29udGVudC1zbS1zdHJldGNoIHtcbiAgICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLXNlbGYtc20tYXV0byB7XG4gICAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLXNtLXN0YXJ0IHtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLXNlbGYtc20tZW5kIHtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLXNtLWNlbnRlciB7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLXNlbGYtc20tYmFzZWxpbmUge1xuICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLXNlbGYtc20tc3RyZXRjaCB7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuZmxleC1tZC1yb3cge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1tZC1jb2x1bW4ge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1tZC1yb3ctcmV2ZXJzZSB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtbWQtY29sdW1uLXJldmVyc2Uge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LW1kLXdyYXAge1xuICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LW1kLW5vd3JhcCB7XG4gICAgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1tZC13cmFwLXJldmVyc2Uge1xuICAgIGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtbWQtZmlsbCB7XG4gICAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1tZC1ncm93LTAge1xuICAgIGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LW1kLWdyb3ctMSB7XG4gICAgZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtbWQtc2hyaW5rLTAge1xuICAgIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtbWQtc2hyaW5rLTEge1xuICAgIGZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmp1c3RpZnktY29udGVudC1tZC1zdGFydCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmp1c3RpZnktY29udGVudC1tZC1lbmQge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDtcbiAgfVxuICAuanVzdGlmeS1jb250ZW50LW1kLWNlbnRlciB7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbiAgfVxuICAuanVzdGlmeS1jb250ZW50LW1kLWJldHdlZW4ge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50O1xuICB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtbWQtYXJvdW5kIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1pdGVtcy1tZC1zdGFydCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24taXRlbXMtbWQtZW5kIHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24taXRlbXMtbWQtY2VudGVyIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWl0ZW1zLW1kLWJhc2VsaW5lIHtcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24taXRlbXMtbWQtc3RyZXRjaCB7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tY29udGVudC1tZC1zdGFydCB7XG4gICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LW1kLWVuZCB7XG4gICAgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tY29udGVudC1tZC1jZW50ZXIge1xuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LW1kLWJldHdlZW4ge1xuICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tY29udGVudC1tZC1hcm91bmQge1xuICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LW1kLXN0cmV0Y2gge1xuICAgIGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tc2VsZi1tZC1hdXRvIHtcbiAgICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLXNlbGYtbWQtc3RhcnQge1xuICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tc2VsZi1tZC1lbmQge1xuICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLXNlbGYtbWQtY2VudGVyIHtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tc2VsZi1tZC1iYXNlbGluZSB7XG4gICAgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tc2VsZi1tZC1zdHJldGNoIHtcbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5mbGV4LWxnLXJvdyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LWxnLWNvbHVtbiB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LWxnLXJvdy1yZXZlcnNlIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1sZy1jb2x1bW4tcmV2ZXJzZSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtbGctd3JhcCB7XG4gICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtbGctbm93cmFwIHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LWxnLXdyYXAtcmV2ZXJzZSB7XG4gICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1sZy1maWxsIHtcbiAgICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LWxnLWdyb3ctMCB7XG4gICAgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgtbGctZ3Jvdy0xIHtcbiAgICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1sZy1zaHJpbmstMCB7XG4gICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC1sZy1zaHJpbmstMSB7XG4gICAgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDtcbiAgfVxuICAuanVzdGlmeS1jb250ZW50LWxnLXN0YXJ0IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgfVxuICAuanVzdGlmeS1jb250ZW50LWxnLWVuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtbGctY2VudGVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtbGctYmV0d2VlbiB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmp1c3RpZnktY29udGVudC1sZy1hcm91bmQge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWl0ZW1zLWxnLXN0YXJ0IHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1pdGVtcy1sZy1lbmQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1pdGVtcy1sZy1jZW50ZXIge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24taXRlbXMtbGctYmFzZWxpbmUge1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1pdGVtcy1sZy1zdHJldGNoIHtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LWxnLXN0YXJ0IHtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQtbGctZW5kIHtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LWxnLWNlbnRlciB7XG4gICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQtbGctYmV0d2VlbiB7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LWxnLWFyb3VuZCB7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQtbGctc3RyZXRjaCB7XG4gICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLWxnLWF1dG8ge1xuICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tc2VsZi1sZy1zdGFydCB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLWxnLWVuZCB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tc2VsZi1sZy1jZW50ZXIge1xuICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLWxnLWJhc2VsaW5lIHtcbiAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLWxnLXN0cmV0Y2gge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5mbGV4LXhsLXJvdyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LXhsLWNvbHVtbiB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LXhsLXJvdy1yZXZlcnNlIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC14bC1jb2x1bW4tcmV2ZXJzZSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgteGwtd3JhcCB7XG4gICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgteGwtbm93cmFwIHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LXhsLXdyYXAtcmV2ZXJzZSB7XG4gICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC14bC1maWxsIHtcbiAgICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5mbGV4LXhsLWdyb3ctMCB7XG4gICAgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsZXgteGwtZ3Jvdy0xIHtcbiAgICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC14bC1zaHJpbmstMCB7XG4gICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDtcbiAgfVxuICAuZmxleC14bC1zaHJpbmstMSB7XG4gICAgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDtcbiAgfVxuICAuanVzdGlmeS1jb250ZW50LXhsLXN0YXJ0IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgfVxuICAuanVzdGlmeS1jb250ZW50LXhsLWVuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQteGwtY2VudGVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQteGwtYmV0d2VlbiB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmp1c3RpZnktY29udGVudC14bC1hcm91bmQge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWl0ZW1zLXhsLXN0YXJ0IHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1pdGVtcy14bC1lbmQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1pdGVtcy14bC1jZW50ZXIge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24taXRlbXMteGwtYmFzZWxpbmUge1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1pdGVtcy14bC1zdHJldGNoIHtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LXhsLXN0YXJ0IHtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQteGwtZW5kIHtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LXhsLWNlbnRlciB7XG4gICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQteGwtYmV0d2VlbiB7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1jb250ZW50LXhsLWFyb3VuZCB7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmFsaWduLWNvbnRlbnQteGwtc3RyZXRjaCB7XG4gICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLXhsLWF1dG8ge1xuICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tc2VsZi14bC1zdGFydCB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLXhsLWVuZCB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDtcbiAgfVxuICAuYWxpZ24tc2VsZi14bC1jZW50ZXIge1xuICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLXhsLWJhc2VsaW5lIHtcbiAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50O1xuICB9XG4gIC5hbGlnbi1zZWxmLXhsLXN0cmV0Y2gge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDtcbiAgfVxufVxuXG4uZmxvYXQtbGVmdCB7XG4gIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7XG59XG5cbi5mbG9hdC1yaWdodCB7XG4gIGZsb2F0OiByaWdodCAhaW1wb3J0YW50O1xufVxuXG4uZmxvYXQtbm9uZSB7XG4gIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAuZmxvYXQtc20tbGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDtcbiAgfVxuICAuZmxvYXQtc20tcmlnaHQge1xuICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50O1xuICB9XG4gIC5mbG9hdC1zbS1ub25lIHtcbiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuZmxvYXQtbWQtbGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDtcbiAgfVxuICAuZmxvYXQtbWQtcmlnaHQge1xuICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50O1xuICB9XG4gIC5mbG9hdC1tZC1ub25lIHtcbiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuZmxvYXQtbGctbGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDtcbiAgfVxuICAuZmxvYXQtbGctcmlnaHQge1xuICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50O1xuICB9XG4gIC5mbG9hdC1sZy1ub25lIHtcbiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLmZsb2F0LXhsLWxlZnQge1xuICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmZsb2F0LXhsLXJpZ2h0IHtcbiAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDtcbiAgfVxuICAuZmxvYXQteGwtbm9uZSB7XG4gICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4ub3ZlcmZsb3ctYXV0byB7XG4gIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi5vdmVyZmxvdy1oaWRkZW4ge1xuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG59XG5cbi5wb3NpdGlvbi1zdGF0aWMge1xuICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7XG59XG5cbi5wb3NpdGlvbi1yZWxhdGl2ZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xufVxuXG4ucG9zaXRpb24tYWJzb2x1dGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbn1cblxuLnBvc2l0aW9uLWZpeGVkIHtcbiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7XG59XG5cbi5wb3NpdGlvbi1zdGlja3kge1xuICBwb3NpdGlvbjogc3RpY2t5ICFpbXBvcnRhbnQ7XG59XG5cbi5maXhlZC10b3Age1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDEwMzA7XG59XG5cbi5maXhlZC1ib3R0b20ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDEwMzA7XG59XG5cbkBzdXBwb3J0cyAocG9zaXRpb246IHN0aWNreSkge1xuICAuc3RpY2t5LXRvcCB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IDA7XG4gICAgei1pbmRleDogMTAyMDtcbiAgfVxufVxuXG4uc3Itb25seSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgYm9yZGVyOiAwO1xufVxuXG4uc3Itb25seS1mb2N1c2FibGU6YWN0aXZlLCAuc3Itb25seS1mb2N1c2FibGU6Zm9jdXMge1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiBhdXRvO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgY2xpcDogYXV0bztcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cblxuLnNoYWRvdy1zbSB7XG4gIGJveC1zaGFkb3c6IDAgMC4xMjVyZW0gMC4yNXJlbSByZ2JhKDAsIDAsIDAsIDAuMDc1KSAhaW1wb3J0YW50O1xufVxuXG4uc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAwLjVyZW0gMXJlbSByZ2JhKDAsIDAsIDAsIDAuMTUpICFpbXBvcnRhbnQ7XG59XG5cbi5zaGFkb3ctbGcge1xuICBib3gtc2hhZG93OiAwIDFyZW0gM3JlbSByZ2JhKDAsIDAsIDAsIDAuMTc1KSAhaW1wb3J0YW50O1xufVxuXG4uc2hhZG93LW5vbmUge1xuICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi53LTI1IHtcbiAgd2lkdGg6IDI1JSAhaW1wb3J0YW50O1xufVxuXG4udy01MCB7XG4gIHdpZHRoOiA1MCUgIWltcG9ydGFudDtcbn1cblxuLnctNzUge1xuICB3aWR0aDogNzUlICFpbXBvcnRhbnQ7XG59XG5cbi53LTEwMCB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi53LWF1dG8ge1xuICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xufVxuXG4uaC0yNSB7XG4gIGhlaWdodDogMjUlICFpbXBvcnRhbnQ7XG59XG5cbi5oLTUwIHtcbiAgaGVpZ2h0OiA1MCUgIWltcG9ydGFudDtcbn1cblxuLmgtNzUge1xuICBoZWlnaHQ6IDc1JSAhaW1wb3J0YW50O1xufVxuXG4uaC0xMDAge1xuICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbn1cblxuLmgtYXV0byB7XG4gIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuXG4ubXctMTAwIHtcbiAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi5taC0xMDAge1xuICBtYXgtaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi5taW4tdnctMTAwIHtcbiAgbWluLXdpZHRoOiAxMDB2dyAhaW1wb3J0YW50O1xufVxuXG4ubWluLXZoLTEwMCB7XG4gIG1pbi1oZWlnaHQ6IDEwMHZoICFpbXBvcnRhbnQ7XG59XG5cbi52dy0xMDAge1xuICB3aWR0aDogMTAwdncgIWltcG9ydGFudDtcbn1cblxuLnZoLTEwMCB7XG4gIGhlaWdodDogMTAwdmggIWltcG9ydGFudDtcbn1cblxuLnN0cmV0Y2hlZC1saW5rOjphZnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAxO1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgY29udGVudDogXCJcIjtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcbn1cblxuLm0tMCB7XG4gIG1hcmdpbjogMCAhaW1wb3J0YW50O1xufVxuXG4ubXQtMCxcbi5teS0wIHtcbiAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xufVxuXG4ubXItMCxcbi5teC0wIHtcbiAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG59XG5cbi5tYi0wLFxuLm15LTAge1xuICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5tbC0wLFxuLm14LTAge1xuICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xufVxuXG4ubS0xIHtcbiAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tdC0xLFxuLm15LTEge1xuICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tci0xLFxuLm14LTEge1xuICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDtcbn1cblxuLm1iLTEsXG4ubXktMSB7XG4gIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDtcbn1cblxuLm1sLTEsXG4ubXgtMSB7XG4gIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tLTIge1xuICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXQtMixcbi5teS0yIHtcbiAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tci0yLFxuLm14LTIge1xuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubWItMixcbi5teS0yIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tbC0yLFxuLm14LTIge1xuICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tLTMge1xuICBtYXJnaW46IDFyZW0gIWltcG9ydGFudDtcbn1cblxuLm10LTMsXG4ubXktMyB7XG4gIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDtcbn1cblxuLm1yLTMsXG4ubXgtMyB7XG4gIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubWItMyxcbi5teS0zIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubWwtMyxcbi5teC0zIHtcbiAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDtcbn1cblxuLm0tNCB7XG4gIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tdC00LFxuLm15LTQge1xuICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLm1yLTQsXG4ubXgtNCB7XG4gIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tYi00LFxuLm15LTQge1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLm1sLTQsXG4ubXgtNCB7XG4gIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLm0tNSB7XG4gIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50O1xufVxuXG4ubXQtNSxcbi5teS01IHtcbiAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50O1xufVxuXG4ubXItNSxcbi5teC01IHtcbiAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tYi01LFxuLm15LTUge1xuICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tbC01LFxuLm14LTUge1xuICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50O1xufVxuXG4ucC0wIHtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4ucHQtMCxcbi5weS0wIHtcbiAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuLnByLTAsXG4ucHgtMCB7XG4gIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcbn1cblxuLnBiLTAsXG4ucHktMCB7XG4gIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5wbC0wLFxuLnB4LTAge1xuICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcbn1cblxuLnAtMSB7XG4gIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnB0LTEsXG4ucHktMSB7XG4gIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wci0xLFxuLnB4LTEge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wYi0xLFxuLnB5LTEge1xuICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucGwtMSxcbi5weC0xIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wLTIge1xuICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnB0LTIsXG4ucHktMiB7XG4gIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnByLTIsXG4ucHgtMiB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucGItMixcbi5weS0yIHtcbiAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucGwtMixcbi5weC0yIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnAtMyB7XG4gIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDtcbn1cblxuLnB0LTMsXG4ucHktMyB7XG4gIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wci0zLFxuLnB4LTMge1xuICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wYi0zLFxuLnB5LTMge1xuICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucGwtMyxcbi5weC0zIHtcbiAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wLTQge1xuICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnB0LTQsXG4ucHktNCB7XG4gIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnByLTQsXG4ucHgtNCB7XG4gIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucGItNCxcbi5weS00IHtcbiAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ucGwtNCxcbi5weC00IHtcbiAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDtcbn1cblxuLnAtNSB7XG4gIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDtcbn1cblxuLnB0LTUsXG4ucHktNSB7XG4gIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wci01LFxuLnB4LTUge1xuICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wYi01LFxuLnB5LTUge1xuICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50O1xufVxuXG4ucGwtNSxcbi5weC01IHtcbiAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tLW4xIHtcbiAgbWFyZ2luOiAtMC4yNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXQtbjEsXG4ubXktbjEge1xuICBtYXJnaW4tdG9wOiAtMC4yNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXItbjEsXG4ubXgtbjEge1xuICBtYXJnaW4tcmlnaHQ6IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tYi1uMSxcbi5teS1uMSB7XG4gIG1hcmdpbi1ib3R0b206IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tbC1uMSxcbi5teC1uMSB7XG4gIG1hcmdpbi1sZWZ0OiAtMC4yNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubS1uMiB7XG4gIG1hcmdpbjogLTAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXQtbjIsXG4ubXktbjIge1xuICBtYXJnaW4tdG9wOiAtMC41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tci1uMixcbi5teC1uMiB7XG4gIG1hcmdpbi1yaWdodDogLTAuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubWItbjIsXG4ubXktbjIge1xuICBtYXJnaW4tYm90dG9tOiAtMC41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tbC1uMixcbi5teC1uMiB7XG4gIG1hcmdpbi1sZWZ0OiAtMC41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tLW4zIHtcbiAgbWFyZ2luOiAtMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXQtbjMsXG4ubXktbjMge1xuICBtYXJnaW4tdG9wOiAtMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXItbjMsXG4ubXgtbjMge1xuICBtYXJnaW4tcmlnaHQ6IC0xcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tYi1uMyxcbi5teS1uMyB7XG4gIG1hcmdpbi1ib3R0b206IC0xcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tbC1uMyxcbi5teC1uMyB7XG4gIG1hcmdpbi1sZWZ0OiAtMXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubS1uNCB7XG4gIG1hcmdpbjogLTEuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubXQtbjQsXG4ubXktbjQge1xuICBtYXJnaW4tdG9wOiAtMS41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tci1uNCxcbi5teC1uNCB7XG4gIG1hcmdpbi1yaWdodDogLTEuNXJlbSAhaW1wb3J0YW50O1xufVxuXG4ubWItbjQsXG4ubXktbjQge1xuICBtYXJnaW4tYm90dG9tOiAtMS41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tbC1uNCxcbi5teC1uNCB7XG4gIG1hcmdpbi1sZWZ0OiAtMS41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tLW41IHtcbiAgbWFyZ2luOiAtM3JlbSAhaW1wb3J0YW50O1xufVxuXG4ubXQtbjUsXG4ubXktbjUge1xuICBtYXJnaW4tdG9wOiAtM3JlbSAhaW1wb3J0YW50O1xufVxuXG4ubXItbjUsXG4ubXgtbjUge1xuICBtYXJnaW4tcmlnaHQ6IC0zcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tYi1uNSxcbi5teS1uNSB7XG4gIG1hcmdpbi1ib3R0b206IC0zcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tbC1uNSxcbi5teC1uNSB7XG4gIG1hcmdpbi1sZWZ0OiAtM3JlbSAhaW1wb3J0YW50O1xufVxuXG4ubS1hdXRvIHtcbiAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi5tdC1hdXRvLFxuLm15LWF1dG8ge1xuICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi5tci1hdXRvLFxuLm14LWF1dG8ge1xuICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLm1iLWF1dG8sXG4ubXktYXV0byB7XG4gIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLm1sLWF1dG8sXG4ubXgtYXV0byB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAubS1zbS0wIHtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgfVxuICAubXQtc20tMCxcbiAgLm15LXNtLTAge1xuICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcbiAgfVxuICAubXItc20tMCxcbiAgLm14LXNtLTAge1xuICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1zbS0wLFxuICAubXktc20tMCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1zbS0wLFxuICAubXgtc20tMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgfVxuICAubS1zbS0xIHtcbiAgICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtc20tMSxcbiAgLm15LXNtLTEge1xuICAgIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItc20tMSxcbiAgLm14LXNtLTEge1xuICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1zbS0xLFxuICAubXktc20tMSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1zbS0xLFxuICAubXgtc20tMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1zbS0yIHtcbiAgICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1zbS0yLFxuICAubXktc20tMiB7XG4gICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLXNtLTIsXG4gIC5teC1zbS0yIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1zbS0yLFxuICAubXktc20tMiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLXNtLTIsXG4gIC5teC1zbS0yIHtcbiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tc20tMyB7XG4gICAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXNtLTMsXG4gIC5teS1zbS0zIHtcbiAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLXNtLTMsXG4gIC5teC1zbS0zIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItc20tMyxcbiAgLm15LXNtLTMge1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtc20tMyxcbiAgLm14LXNtLTMge1xuICAgIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tc20tNCB7XG4gICAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtc20tNCxcbiAgLm15LXNtLTQge1xuICAgIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1zbS00LFxuICAubXgtc20tNCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItc20tNCxcbiAgLm15LXNtLTQge1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1zbS00LFxuICAubXgtc20tNCB7XG4gICAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLXNtLTUge1xuICAgIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1zbS01LFxuICAubXktc20tNSB7XG4gICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1zbS01LFxuICAubXgtc20tNSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLXNtLTUsXG4gIC5teS1zbS01IHtcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLXNtLTUsXG4gIC5teC1zbS01IHtcbiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wLXNtLTAge1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgfVxuICAucHQtc20tMCxcbiAgLnB5LXNtLTAge1xuICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnByLXNtLTAsXG4gIC5weC1zbS0wIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBiLXNtLTAsXG4gIC5weS1zbS0wIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5wbC1zbS0wLFxuICAucHgtc20tMCB7XG4gICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnAtc20tMSB7XG4gICAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wdC1zbS0xLFxuICAucHktc20tMSB7XG4gICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHItc20tMSxcbiAgLnB4LXNtLTEge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGItc20tMSxcbiAgLnB5LXNtLTEge1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBsLXNtLTEsXG4gIC5weC1zbS0xIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucC1zbS0yIHtcbiAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHQtc20tMixcbiAgLnB5LXNtLTIge1xuICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHItc20tMixcbiAgLnB4LXNtLTIge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi1zbS0yLFxuICAucHktc20tMiB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wbC1zbS0yLFxuICAucHgtc20tMiB7XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucC1zbS0zIHtcbiAgICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LXNtLTMsXG4gIC5weS1zbS0zIHtcbiAgICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wci1zbS0zLFxuICAucHgtc20tMyB7XG4gICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi1zbS0zLFxuICAucHktc20tMyB7XG4gICAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGwtc20tMyxcbiAgLnB4LXNtLTMge1xuICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wLXNtLTQge1xuICAgIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wdC1zbS00LFxuICAucHktc20tNCB7XG4gICAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wci1zbS00LFxuICAucHgtc20tNCB7XG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBiLXNtLTQsXG4gIC5weS1zbS00IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBsLXNtLTQsXG4gIC5weC1zbS00IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wLXNtLTUge1xuICAgIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHQtc20tNSxcbiAgLnB5LXNtLTUge1xuICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnByLXNtLTUsXG4gIC5weC1zbS01IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBiLXNtLTUsXG4gIC5weS1zbS01IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wbC1zbS01LFxuICAucHgtc20tNSB7XG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tc20tbjEge1xuICAgIG1hcmdpbjogLTAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtc20tbjEsXG4gIC5teS1zbS1uMSB7XG4gICAgbWFyZ2luLXRvcDogLTAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItc20tbjEsXG4gIC5teC1zbS1uMSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1zbS1uMSxcbiAgLm15LXNtLW4xIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1zbS1uMSxcbiAgLm14LXNtLW4xIHtcbiAgICBtYXJnaW4tbGVmdDogLTAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1zbS1uMiB7XG4gICAgbWFyZ2luOiAtMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXNtLW4yLFxuICAubXktc20tbjIge1xuICAgIG1hcmdpbi10b3A6IC0wLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItc20tbjIsXG4gIC5teC1zbS1uMiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLXNtLW4yLFxuICAubXktc20tbjIge1xuICAgIG1hcmdpbi1ib3R0b206IC0wLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtc20tbjIsXG4gIC5teC1zbS1uMiB7XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1zbS1uMyB7XG4gICAgbWFyZ2luOiAtMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1zbS1uMyxcbiAgLm15LXNtLW4zIHtcbiAgICBtYXJnaW4tdG9wOiAtMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1zbS1uMyxcbiAgLm14LXNtLW4zIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0xcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLXNtLW4zLFxuICAubXktc20tbjMge1xuICAgIG1hcmdpbi1ib3R0b206IC0xcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLXNtLW4zLFxuICAubXgtc20tbjMge1xuICAgIG1hcmdpbi1sZWZ0OiAtMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLXNtLW40IHtcbiAgICBtYXJnaW46IC0xLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtc20tbjQsXG4gIC5teS1zbS1uNCB7XG4gICAgbWFyZ2luLXRvcDogLTEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1zbS1uNCxcbiAgLm14LXNtLW40IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0xLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItc20tbjQsXG4gIC5teS1zbS1uNCB7XG4gICAgbWFyZ2luLWJvdHRvbTogLTEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1zbS1uNCxcbiAgLm14LXNtLW40IHtcbiAgICBtYXJnaW4tbGVmdDogLTEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLXNtLW41IHtcbiAgICBtYXJnaW46IC0zcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXNtLW41LFxuICAubXktc20tbjUge1xuICAgIG1hcmdpbi10b3A6IC0zcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLXNtLW41LFxuICAubXgtc20tbjUge1xuICAgIG1hcmdpbi1yaWdodDogLTNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItc20tbjUsXG4gIC5teS1zbS1uNSB7XG4gICAgbWFyZ2luLWJvdHRvbTogLTNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtc20tbjUsXG4gIC5teC1zbS1uNSB7XG4gICAgbWFyZ2luLWxlZnQ6IC0zcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tc20tYXV0byB7XG4gICAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXNtLWF1dG8sXG4gIC5teS1zbS1hdXRvIHtcbiAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLXNtLWF1dG8sXG4gIC5teC1zbS1hdXRvIHtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgfVxuICAubWItc20tYXV0byxcbiAgLm15LXNtLWF1dG8ge1xuICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDtcbiAgfVxuICAubWwtc20tYXV0byxcbiAgLm14LXNtLWF1dG8ge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5tLW1kLTAge1xuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1tZC0wLFxuICAubXktbWQtMCB7XG4gICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1tZC0wLFxuICAubXgtbWQtMCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLW1kLTAsXG4gIC5teS1tZC0wIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLW1kLTAsXG4gIC5teC1tZC0wIHtcbiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5tLW1kLTEge1xuICAgIG1hcmdpbjogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1tZC0xLFxuICAubXktbWQtMSB7XG4gICAgbWFyZ2luLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1tZC0xLFxuICAubXgtbWQtMSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLW1kLTEsXG4gIC5teS1tZC0xIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLW1kLTEsXG4gIC5teC1tZC0xIHtcbiAgICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLW1kLTIge1xuICAgIG1hcmdpbjogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LW1kLTIsXG4gIC5teS1tZC0yIHtcbiAgICBtYXJnaW4tdG9wOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItbWQtMixcbiAgLm14LW1kLTIge1xuICAgIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLW1kLTIsXG4gIC5teS1tZC0yIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtbWQtMixcbiAgLm14LW1kLTIge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1tZC0zIHtcbiAgICBtYXJnaW46IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtbWQtMyxcbiAgLm15LW1kLTMge1xuICAgIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItbWQtMyxcbiAgLm14LW1kLTMge1xuICAgIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1tZC0zLFxuICAubXktbWQtMyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1tZC0zLFxuICAubXgtbWQtMyB7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1tZC00IHtcbiAgICBtYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1tZC00LFxuICAubXktbWQtNCB7XG4gICAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLW1kLTQsXG4gIC5teC1tZC00IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1tZC00LFxuICAubXktbWQtNCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLW1kLTQsXG4gIC5teC1tZC00IHtcbiAgICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tbWQtNSB7XG4gICAgbWFyZ2luOiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LW1kLTUsXG4gIC5teS1tZC01IHtcbiAgICBtYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLW1kLTUsXG4gIC5teC1tZC01IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItbWQtNSxcbiAgLm15LW1kLTUge1xuICAgIG1hcmdpbi1ib3R0b206IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtbWQtNSxcbiAgLm14LW1kLTUge1xuICAgIG1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnAtbWQtMCB7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5wdC1tZC0wLFxuICAucHktbWQtMCB7XG4gICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcbiAgfVxuICAucHItbWQtMCxcbiAgLnB4LW1kLTAge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgfVxuICAucGItbWQtMCxcbiAgLnB5LW1kLTAge1xuICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBsLW1kLTAsXG4gIC5weC1tZC0wIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgfVxuICAucC1tZC0xIHtcbiAgICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LW1kLTEsXG4gIC5weS1tZC0xIHtcbiAgICBwYWRkaW5nLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wci1tZC0xLFxuICAucHgtbWQtMSB7XG4gICAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi1tZC0xLFxuICAucHktbWQtMSB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGwtbWQtMSxcbiAgLnB4LW1kLTEge1xuICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wLW1kLTIge1xuICAgIHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wdC1tZC0yLFxuICAucHktbWQtMiB7XG4gICAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wci1tZC0yLFxuICAucHgtbWQtMiB7XG4gICAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBiLW1kLTIsXG4gIC5weS1tZC0yIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBsLW1kLTIsXG4gIC5weC1tZC0yIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wLW1kLTMge1xuICAgIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHQtbWQtMyxcbiAgLnB5LW1kLTMge1xuICAgIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnByLW1kLTMsXG4gIC5weC1tZC0zIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBiLW1kLTMsXG4gIC5weS1tZC0zIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wbC1tZC0zLFxuICAucHgtbWQtMyB7XG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnAtbWQtNCB7XG4gICAgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LW1kLTQsXG4gIC5weS1tZC00IHtcbiAgICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnByLW1kLTQsXG4gIC5weC1tZC00IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGItbWQtNCxcbiAgLnB5LW1kLTQge1xuICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGwtbWQtNCxcbiAgLnB4LW1kLTQge1xuICAgIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnAtbWQtNSB7XG4gICAgcGFkZGluZzogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wdC1tZC01LFxuICAucHktbWQtNSB7XG4gICAgcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHItbWQtNSxcbiAgLnB4LW1kLTUge1xuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGItbWQtNSxcbiAgLnB5LW1kLTUge1xuICAgIHBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBsLW1kLTUsXG4gIC5weC1tZC01IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1tZC1uMSB7XG4gICAgbWFyZ2luOiAtMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1tZC1uMSxcbiAgLm15LW1kLW4xIHtcbiAgICBtYXJnaW4tdG9wOiAtMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1tZC1uMSxcbiAgLm14LW1kLW4xIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLW1kLW4xLFxuICAubXktbWQtbjEge1xuICAgIG1hcmdpbi1ib3R0b206IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLW1kLW4xLFxuICAubXgtbWQtbjEge1xuICAgIG1hcmdpbi1sZWZ0OiAtMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLW1kLW4yIHtcbiAgICBtYXJnaW46IC0wLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtbWQtbjIsXG4gIC5teS1tZC1uMiB7XG4gICAgbWFyZ2luLXRvcDogLTAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1tZC1uMixcbiAgLm14LW1kLW4yIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItbWQtbjIsXG4gIC5teS1tZC1uMiB7XG4gICAgbWFyZ2luLWJvdHRvbTogLTAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1tZC1uMixcbiAgLm14LW1kLW4yIHtcbiAgICBtYXJnaW4tbGVmdDogLTAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLW1kLW4zIHtcbiAgICBtYXJnaW46IC0xcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LW1kLW4zLFxuICAubXktbWQtbjMge1xuICAgIG1hcmdpbi10b3A6IC0xcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLW1kLW4zLFxuICAubXgtbWQtbjMge1xuICAgIG1hcmdpbi1yaWdodDogLTFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItbWQtbjMsXG4gIC5teS1tZC1uMyB7XG4gICAgbWFyZ2luLWJvdHRvbTogLTFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtbWQtbjMsXG4gIC5teC1tZC1uMyB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tbWQtbjQge1xuICAgIG1hcmdpbjogLTEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1tZC1uNCxcbiAgLm15LW1kLW40IHtcbiAgICBtYXJnaW4tdG9wOiAtMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLW1kLW40LFxuICAubXgtbWQtbjQge1xuICAgIG1hcmdpbi1yaWdodDogLTEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1tZC1uNCxcbiAgLm15LW1kLW40IHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLW1kLW40LFxuICAubXgtbWQtbjQge1xuICAgIG1hcmdpbi1sZWZ0OiAtMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tbWQtbjUge1xuICAgIG1hcmdpbjogLTNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtbWQtbjUsXG4gIC5teS1tZC1uNSB7XG4gICAgbWFyZ2luLXRvcDogLTNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItbWQtbjUsXG4gIC5teC1tZC1uNSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1tZC1uNSxcbiAgLm15LW1kLW41IHtcbiAgICBtYXJnaW4tYm90dG9tOiAtM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1tZC1uNSxcbiAgLm14LW1kLW41IHtcbiAgICBtYXJnaW4tbGVmdDogLTNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1tZC1hdXRvIHtcbiAgICBtYXJnaW46IGF1dG8gIWltcG9ydGFudDtcbiAgfVxuICAubXQtbWQtYXV0byxcbiAgLm15LW1kLWF1dG8ge1xuICAgIG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDtcbiAgfVxuICAubXItbWQtYXV0byxcbiAgLm14LW1kLWF1dG8ge1xuICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1tZC1hdXRvLFxuICAubXktbWQtYXV0byB7XG4gICAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1tZC1hdXRvLFxuICAubXgtbWQtYXV0byB7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLm0tbGctMCB7XG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LWxnLTAsXG4gIC5teS1sZy0wIHtcbiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLWxnLTAsXG4gIC5teC1sZy0wIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgfVxuICAubWItbGctMCxcbiAgLm15LWxnLTAge1xuICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgfVxuICAubWwtbGctMCxcbiAgLm14LWxnLTAge1xuICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tbGctMSB7XG4gICAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LWxnLTEsXG4gIC5teS1sZy0xIHtcbiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLWxnLTEsXG4gIC5teC1sZy0xIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItbGctMSxcbiAgLm15LWxnLTEge1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtbGctMSxcbiAgLm14LWxnLTEge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tbGctMiB7XG4gICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtbGctMixcbiAgLm15LWxnLTIge1xuICAgIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1sZy0yLFxuICAubXgtbGctMiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItbGctMixcbiAgLm15LWxnLTIge1xuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1sZy0yLFxuICAubXgtbGctMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLWxnLTMge1xuICAgIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1sZy0zLFxuICAubXktbGctMyB7XG4gICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1sZy0zLFxuICAubXgtbGctMyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLWxnLTMsXG4gIC5teS1sZy0zIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLWxnLTMsXG4gIC5teC1sZy0zIHtcbiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLWxnLTQge1xuICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LWxnLTQsXG4gIC5teS1sZy00IHtcbiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItbGctNCxcbiAgLm14LWxnLTQge1xuICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLWxnLTQsXG4gIC5teS1sZy00IHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtbGctNCxcbiAgLm14LWxnLTQge1xuICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1sZy01IHtcbiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtbGctNSxcbiAgLm15LWxnLTUge1xuICAgIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItbGctNSxcbiAgLm14LWxnLTUge1xuICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1sZy01LFxuICAubXktbGctNSB7XG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1sZy01LFxuICAubXgtbGctNSB7XG4gICAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucC1sZy0wIHtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LWxnLTAsXG4gIC5weS1sZy0wIHtcbiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5wci1sZy0wLFxuICAucHgtbGctMCB7XG4gICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi1sZy0wLFxuICAucHktbGctMCB7XG4gICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgfVxuICAucGwtbGctMCxcbiAgLnB4LWxnLTAge1xuICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5wLWxnLTEge1xuICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHQtbGctMSxcbiAgLnB5LWxnLTEge1xuICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnByLWxnLTEsXG4gIC5weC1sZy0xIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBiLWxnLTEsXG4gIC5weS1sZy0xIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wbC1sZy0xLFxuICAucHgtbGctMSB7XG4gICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnAtbGctMiB7XG4gICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LWxnLTIsXG4gIC5weS1sZy0yIHtcbiAgICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnByLWxnLTIsXG4gIC5weC1sZy0yIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGItbGctMixcbiAgLnB5LWxnLTIge1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGwtbGctMixcbiAgLnB4LWxnLTIge1xuICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnAtbGctMyB7XG4gICAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wdC1sZy0zLFxuICAucHktbGctMyB7XG4gICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHItbGctMyxcbiAgLnB4LWxnLTMge1xuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGItbGctMyxcbiAgLnB5LWxnLTMge1xuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBsLWxnLTMsXG4gIC5weC1sZy0zIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucC1sZy00IHtcbiAgICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHQtbGctNCxcbiAgLnB5LWxnLTQge1xuICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHItbGctNCxcbiAgLnB4LWxnLTQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi1sZy00LFxuICAucHktbGctNCB7XG4gICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wbC1sZy00LFxuICAucHgtbGctNCB7XG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucC1sZy01IHtcbiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LWxnLTUsXG4gIC5weS1sZy01IHtcbiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wci1sZy01LFxuICAucHgtbGctNSB7XG4gICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi1sZy01LFxuICAucHktbGctNSB7XG4gICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGwtbGctNSxcbiAgLnB4LWxnLTUge1xuICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLWxnLW4xIHtcbiAgICBtYXJnaW46IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LWxnLW4xLFxuICAubXktbGctbjEge1xuICAgIG1hcmdpbi10b3A6IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLWxnLW4xLFxuICAubXgtbGctbjEge1xuICAgIG1hcmdpbi1yaWdodDogLTAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWItbGctbjEsXG4gIC5teS1sZy1uMSB7XG4gICAgbWFyZ2luLWJvdHRvbTogLTAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtbGctbjEsXG4gIC5teC1sZy1uMSB7XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tbGctbjIge1xuICAgIG1hcmdpbjogLTAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1sZy1uMixcbiAgLm15LWxnLW4yIHtcbiAgICBtYXJnaW4tdG9wOiAtMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLWxnLW4yLFxuICAubXgtbGctbjIge1xuICAgIG1hcmdpbi1yaWdodDogLTAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1sZy1uMixcbiAgLm15LWxnLW4yIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLWxnLW4yLFxuICAubXgtbGctbjIge1xuICAgIG1hcmdpbi1sZWZ0OiAtMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0tbGctbjMge1xuICAgIG1hcmdpbjogLTFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQtbGctbjMsXG4gIC5teS1sZy1uMyB7XG4gICAgbWFyZ2luLXRvcDogLTFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItbGctbjMsXG4gIC5teC1sZy1uMyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi1sZy1uMyxcbiAgLm15LWxnLW4zIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC1sZy1uMyxcbiAgLm14LWxnLW4zIHtcbiAgICBtYXJnaW4tbGVmdDogLTFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1sZy1uNCB7XG4gICAgbWFyZ2luOiAtMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LWxnLW40LFxuICAubXktbGctbjQge1xuICAgIG1hcmdpbi10b3A6IC0xLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXItbGctbjQsXG4gIC5teC1sZy1uNCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLWxnLW40LFxuICAubXktbGctbjQge1xuICAgIG1hcmdpbi1ib3R0b206IC0xLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwtbGctbjQsXG4gIC5teC1sZy1uNCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS1sZy1uNSB7XG4gICAgbWFyZ2luOiAtM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1sZy1uNSxcbiAgLm15LWxnLW41IHtcbiAgICBtYXJnaW4tdG9wOiAtM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1sZy1uNSxcbiAgLm14LWxnLW41IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0zcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLWxnLW41LFxuICAubXktbGctbjUge1xuICAgIG1hcmdpbi1ib3R0b206IC0zcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLWxnLW41LFxuICAubXgtbGctbjUge1xuICAgIG1hcmdpbi1sZWZ0OiAtM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLWxnLWF1dG8ge1xuICAgIG1hcmdpbjogYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC1sZy1hdXRvLFxuICAubXktbGctYXV0byB7XG4gICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5tci1sZy1hdXRvLFxuICAubXgtbGctYXV0byB7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLWxnLWF1dG8sXG4gIC5teS1sZy1hdXRvIHtcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLWxnLWF1dG8sXG4gIC5teC1sZy1hdXRvIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLm0teGwtMCB7XG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXhsLTAsXG4gIC5teS14bC0wIHtcbiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLXhsLTAsXG4gIC5teC14bC0wIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgfVxuICAubWIteGwtMCxcbiAgLm15LXhsLTAge1xuICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgfVxuICAubWwteGwtMCxcbiAgLm14LXhsLTAge1xuICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0teGwtMSB7XG4gICAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXhsLTEsXG4gIC5teS14bC0xIHtcbiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLXhsLTEsXG4gIC5teC14bC0xIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWIteGwtMSxcbiAgLm15LXhsLTEge1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwteGwtMSxcbiAgLm14LXhsLTEge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0teGwtMiB7XG4gICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQteGwtMixcbiAgLm15LXhsLTIge1xuICAgIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci14bC0yLFxuICAubXgteGwtMiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWIteGwtMixcbiAgLm15LXhsLTIge1xuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC14bC0yLFxuICAubXgteGwtMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLXhsLTMge1xuICAgIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC14bC0zLFxuICAubXkteGwtMyB7XG4gICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci14bC0zLFxuICAubXgteGwtMyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLXhsLTMsXG4gIC5teS14bC0zIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLXhsLTMsXG4gIC5teC14bC0zIHtcbiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLXhsLTQge1xuICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXhsLTQsXG4gIC5teS14bC00IHtcbiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXIteGwtNCxcbiAgLm14LXhsLTQge1xuICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLXhsLTQsXG4gIC5teS14bC00IHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwteGwtNCxcbiAgLm14LXhsLTQge1xuICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS14bC01IHtcbiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQteGwtNSxcbiAgLm15LXhsLTUge1xuICAgIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXIteGwtNSxcbiAgLm14LXhsLTUge1xuICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi14bC01LFxuICAubXkteGwtNSB7XG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC14bC01LFxuICAubXgteGwtNSB7XG4gICAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucC14bC0wIHtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LXhsLTAsXG4gIC5weS14bC0wIHtcbiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5wci14bC0wLFxuICAucHgteGwtMCB7XG4gICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi14bC0wLFxuICAucHkteGwtMCB7XG4gICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgfVxuICAucGwteGwtMCxcbiAgLnB4LXhsLTAge1xuICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xuICB9XG4gIC5wLXhsLTEge1xuICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHQteGwtMSxcbiAgLnB5LXhsLTEge1xuICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnByLXhsLTEsXG4gIC5weC14bC0xIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBiLXhsLTEsXG4gIC5weS14bC0xIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wbC14bC0xLFxuICAucHgteGwtMSB7XG4gICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnAteGwtMiB7XG4gICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LXhsLTIsXG4gIC5weS14bC0yIHtcbiAgICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnByLXhsLTIsXG4gIC5weC14bC0yIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGIteGwtMixcbiAgLnB5LXhsLTIge1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGwteGwtMixcbiAgLnB4LXhsLTIge1xuICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnAteGwtMyB7XG4gICAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wdC14bC0zLFxuICAucHkteGwtMyB7XG4gICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHIteGwtMyxcbiAgLnB4LXhsLTMge1xuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGIteGwtMyxcbiAgLnB5LXhsLTMge1xuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnBsLXhsLTMsXG4gIC5weC14bC0zIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucC14bC00IHtcbiAgICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHQteGwtNCxcbiAgLnB5LXhsLTQge1xuICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucHIteGwtNCxcbiAgLnB4LXhsLTQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi14bC00LFxuICAucHkteGwtNCB7XG4gICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wbC14bC00LFxuICAucHgteGwtNCB7XG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucC14bC01IHtcbiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnB0LXhsLTUsXG4gIC5weS14bC01IHtcbiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wci14bC01LFxuICAucHgteGwtNSB7XG4gICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5wYi14bC01LFxuICAucHkteGwtNSB7XG4gICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDtcbiAgfVxuICAucGwteGwtNSxcbiAgLnB4LXhsLTUge1xuICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLXhsLW4xIHtcbiAgICBtYXJnaW46IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXhsLW4xLFxuICAubXkteGwtbjEge1xuICAgIG1hcmdpbi10b3A6IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLXhsLW4xLFxuICAubXgteGwtbjEge1xuICAgIG1hcmdpbi1yaWdodDogLTAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWIteGwtbjEsXG4gIC5teS14bC1uMSB7XG4gICAgbWFyZ2luLWJvdHRvbTogLTAuMjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwteGwtbjEsXG4gIC5teC14bC1uMSB7XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjI1cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0teGwtbjIge1xuICAgIG1hcmdpbjogLTAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC14bC1uMixcbiAgLm15LXhsLW4yIHtcbiAgICBtYXJnaW4tdG9wOiAtMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1yLXhsLW4yLFxuICAubXgteGwtbjIge1xuICAgIG1hcmdpbi1yaWdodDogLTAuNXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi14bC1uMixcbiAgLm15LXhsLW4yIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLXhsLW4yLFxuICAubXgteGwtbjIge1xuICAgIG1hcmdpbi1sZWZ0OiAtMC41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm0teGwtbjMge1xuICAgIG1hcmdpbjogLTFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXQteGwtbjMsXG4gIC5teS14bC1uMyB7XG4gICAgbWFyZ2luLXRvcDogLTFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXIteGwtbjMsXG4gIC5teC14bC1uMyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tYi14bC1uMyxcbiAgLm15LXhsLW4zIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMXJlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tbC14bC1uMyxcbiAgLm14LXhsLW4zIHtcbiAgICBtYXJnaW4tbGVmdDogLTFyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS14bC1uNCB7XG4gICAgbWFyZ2luOiAtMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm10LXhsLW40LFxuICAubXkteGwtbjQge1xuICAgIG1hcmdpbi10b3A6IC0xLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubXIteGwtbjQsXG4gIC5teC14bC1uNCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMS41cmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLXhsLW40LFxuICAubXkteGwtbjQge1xuICAgIG1hcmdpbi1ib3R0b206IC0xLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubWwteGwtbjQsXG4gIC5teC14bC1uNCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xLjVyZW0gIWltcG9ydGFudDtcbiAgfVxuICAubS14bC1uNSB7XG4gICAgbWFyZ2luOiAtM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC14bC1uNSxcbiAgLm15LXhsLW41IHtcbiAgICBtYXJnaW4tdG9wOiAtM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tci14bC1uNSxcbiAgLm14LXhsLW41IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0zcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLXhsLW41LFxuICAubXkteGwtbjUge1xuICAgIG1hcmdpbi1ib3R0b206IC0zcmVtICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLXhsLW41LFxuICAubXgteGwtbjUge1xuICAgIG1hcmdpbi1sZWZ0OiAtM3JlbSAhaW1wb3J0YW50O1xuICB9XG4gIC5tLXhsLWF1dG8ge1xuICAgIG1hcmdpbjogYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5tdC14bC1hdXRvLFxuICAubXkteGwtYXV0byB7XG4gICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50O1xuICB9XG4gIC5tci14bC1hdXRvLFxuICAubXgteGwtYXV0byB7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1iLXhsLWF1dG8sXG4gIC5teS14bC1hdXRvIHtcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm1sLXhsLWF1dG8sXG4gIC5teC14bC1hdXRvIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICB9XG59XG5cbi50ZXh0LW1vbm9zcGFjZSB7XG4gIGZvbnQtZmFtaWx5OiBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiQ291cmllciBOZXdcIiwgbW9ub3NwYWNlICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LWp1c3RpZnkge1xuICB0ZXh0LWFsaWduOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LXdyYXAge1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LW5vd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcbn1cblxuLnRleHQtdHJ1bmNhdGUge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnRleHQtbGVmdCB7XG4gIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDtcbn1cblxuLnRleHQtcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC50ZXh0LXNtLWxlZnQge1xuICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDtcbiAgfVxuICAudGV4dC1zbS1yaWdodCB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDtcbiAgfVxuICAudGV4dC1zbS1jZW50ZXIge1xuICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAudGV4dC1tZC1sZWZ0IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnRleHQtbWQtcmlnaHQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnRleHQtbWQtY2VudGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLnRleHQtbGctbGVmdCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50O1xuICB9XG4gIC50ZXh0LWxnLXJpZ2h0IHtcbiAgICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50O1xuICB9XG4gIC50ZXh0LWxnLWNlbnRlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAudGV4dC14bC1sZWZ0IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnRleHQteGwtcmlnaHQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnRleHQteGwtY2VudGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgfVxufVxuXG4udGV4dC1sb3dlcmNhc2Uge1xuICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LXVwcGVyY2FzZSB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDtcbn1cblxuLnRleHQtY2FwaXRhbGl6ZSB7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplICFpbXBvcnRhbnQ7XG59XG5cbi5mb250LXdlaWdodC1saWdodCB7XG4gIGZvbnQtd2VpZ2h0OiAzMDAgIWltcG9ydGFudDtcbn1cblxuLmZvbnQtd2VpZ2h0LWxpZ2h0ZXIge1xuICBmb250LXdlaWdodDogbGlnaHRlciAhaW1wb3J0YW50O1xufVxuXG4uZm9udC13ZWlnaHQtbm9ybWFsIHtcbiAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50O1xufVxuXG4uZm9udC13ZWlnaHQtYm9sZCB7XG4gIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDtcbn1cblxuLmZvbnQtd2VpZ2h0LWJvbGRlciB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXIgIWltcG9ydGFudDtcbn1cblxuLmZvbnQtaXRhbGljIHtcbiAgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LXdoaXRlIHtcbiAgY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbn1cblxuLnRleHQtcHJpbWFyeSB7XG4gIGNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7XG59XG5cbmEudGV4dC1wcmltYXJ5OmhvdmVyLCBhLnRleHQtcHJpbWFyeTpmb2N1cyB7XG4gIGNvbG9yOiAjMDA1NmIzICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LXNlY29uZGFyeSB7XG4gIGNvbG9yOiAjNmM3NTdkICFpbXBvcnRhbnQ7XG59XG5cbmEudGV4dC1zZWNvbmRhcnk6aG92ZXIsIGEudGV4dC1zZWNvbmRhcnk6Zm9jdXMge1xuICBjb2xvcjogIzQ5NGY1NCAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1zdWNjZXNzIHtcbiAgY29sb3I6ICMyOGE3NDUgIWltcG9ydGFudDtcbn1cblxuYS50ZXh0LXN1Y2Nlc3M6aG92ZXIsIGEudGV4dC1zdWNjZXNzOmZvY3VzIHtcbiAgY29sb3I6ICMxOTY5MmMgIWltcG9ydGFudDtcbn1cblxuLnRleHQtaW5mbyB7XG4gIGNvbG9yOiAjMTdhMmI4ICFpbXBvcnRhbnQ7XG59XG5cbmEudGV4dC1pbmZvOmhvdmVyLCBhLnRleHQtaW5mbzpmb2N1cyB7XG4gIGNvbG9yOiAjMGY2Njc0ICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LXdhcm5pbmcge1xuICBjb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50O1xufVxuXG5hLnRleHQtd2FybmluZzpob3ZlciwgYS50ZXh0LXdhcm5pbmc6Zm9jdXMge1xuICBjb2xvcjogI2JhOGIwMCAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1kYW5nZXIge1xuICBjb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50O1xufVxuXG5hLnRleHQtZGFuZ2VyOmhvdmVyLCBhLnRleHQtZGFuZ2VyOmZvY3VzIHtcbiAgY29sb3I6ICNhNzFkMmEgIWltcG9ydGFudDtcbn1cblxuLnRleHQtbGlnaHQge1xuICBjb2xvcjogI2Y4ZjlmYSAhaW1wb3J0YW50O1xufVxuXG5hLnRleHQtbGlnaHQ6aG92ZXIsIGEudGV4dC1saWdodDpmb2N1cyB7XG4gIGNvbG9yOiAjY2JkM2RhICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LWRhcmsge1xuICBjb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50O1xufVxuXG5hLnRleHQtZGFyazpob3ZlciwgYS50ZXh0LWRhcms6Zm9jdXMge1xuICBjb2xvcjogIzEyMTQxNiAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1ib2R5IHtcbiAgY29sb3I6ICMyMTI1MjkgIWltcG9ydGFudDtcbn1cblxuLnRleHQtbXV0ZWQge1xuICBjb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1ibGFjay01MCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSkgIWltcG9ydGFudDtcbn1cblxuLnRleHQtd2hpdGUtNTAge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LWhpZGUge1xuICBmb250OiAwLzAgYTtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbn1cblxuLnRleHQtZGVjb3JhdGlvbi1ub25lIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LWJyZWFrIHtcbiAgd29yZC1icmVhazogYnJlYWstd29yZCAhaW1wb3J0YW50O1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LXJlc2V0IHtcbiAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbn1cblxuLnZpc2libGUge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG59XG5cbi5pbnZpc2libGUge1xuICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cblxuQG1lZGlhIHByaW50IHtcbiAgKixcbiAgKjo6YmVmb3JlLFxuICAqOjphZnRlciB7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgYTpub3QoLmJ0bikge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB9XG4gIGFiYnJbdGl0bGVdOjphZnRlciB7XG4gICAgY29udGVudDogXCIgKFwiIGF0dHIodGl0bGUpIFwiKVwiO1xuICB9XG4gIHByZSB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwICFpbXBvcnRhbnQ7XG4gIH1cbiAgcHJlLFxuICBibG9ja3F1b3RlIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYWRiNWJkO1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgfVxuICB0aGVhZCB7XG4gICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwO1xuICB9XG4gIHRyLFxuICBpbWcge1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgfVxuICBwLFxuICBoMixcbiAgaDMge1xuICAgIG9ycGhhbnM6IDM7XG4gICAgd2lkb3dzOiAzO1xuICB9XG4gIGgyLFxuICBoMyB7XG4gICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7XG4gIH1cbiAgQHBhZ2Uge1xuICAgIHNpemU6IGEzO1xuICB9XG4gIGJvZHkge1xuICAgIG1pbi13aWR0aDogOTkycHggIWltcG9ydGFudDtcbiAgfVxuICAuY29udGFpbmVyIHtcbiAgICBtaW4td2lkdGg6IDk5MnB4ICFpbXBvcnRhbnQ7XG4gIH1cbiAgLm5hdmJhciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAuYmFkZ2Uge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7XG4gIH1cbiAgLnRhYmxlIHtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnRhYmxlIHRkLFxuICAudGFibGUgdGgge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgfVxuICAudGFibGUtYm9yZGVyZWQgdGgsXG4gIC50YWJsZS1ib3JkZXJlZCB0ZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50O1xuICB9XG4gIC50YWJsZS1kYXJrIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgfVxuICAudGFibGUtZGFyayB0aCxcbiAgLnRhYmxlLWRhcmsgdGQsXG4gIC50YWJsZS1kYXJrIHRoZWFkIHRoLFxuICAudGFibGUtZGFyayB0Ym9keSArIHRib2R5IHtcbiAgICBib3JkZXItY29sb3I6ICNkZWUyZTY7XG4gIH1cbiAgLnRhYmxlIC50aGVhZC1kYXJrIHRoIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBib3JkZXItY29sb3I6ICNkZWUyZTY7XG4gIH1cbn1cblxuLyojIHNvdXJjZU1hcHBpbmdVUkw9Ym9vdHN0cmFwLmNzcy5tYXAgKi8iLCIvLyBEbyBub3QgZm9yZ2V0IHRvIHVwZGF0ZSBnZXR0aW5nLXN0YXJ0ZWQvdGhlbWluZy5tZCFcbjpyb290IHtcbiAgLy8gQ3VzdG9tIHZhcmlhYmxlIHZhbHVlcyBvbmx5IHN1cHBvcnQgU2Fzc1NjcmlwdCBpbnNpZGUgYCN7fWAuXG4gIEBlYWNoICRjb2xvciwgJHZhbHVlIGluICRjb2xvcnMge1xuICAgIC0tI3skY29sb3J9OiAjeyR2YWx1ZX07XG4gIH1cblxuICBAZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgICAtLSN7JGNvbG9yfTogI3skdmFsdWV9O1xuICB9XG5cbiAgQGVhY2ggJGJwLCAkdmFsdWUgaW4gJGdyaWQtYnJlYWtwb2ludHMge1xuICAgIC0tYnJlYWtwb2ludC0jeyRicH06ICN7JHZhbHVlfTtcbiAgfVxuXG4gIC8vIFVzZSBgaW5zcGVjdGAgZm9yIGxpc3RzIHNvIHRoYXQgcXVvdGVkIGl0ZW1zIGtlZXAgdGhlIHF1b3Rlcy5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL3Nhc3MvaXNzdWVzLzIzODMjaXNzdWVjb21tZW50LTMzNjM0OTE3MlxuICAtLWZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6ICN7aW5zcGVjdCgkZm9udC1mYW1pbHktc2Fucy1zZXJpZil9O1xuICAtLWZvbnQtZmFtaWx5LW1vbm9zcGFjZTogI3tpbnNwZWN0KCRmb250LWZhbWlseS1tb25vc3BhY2UpfTtcbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGF0LXJ1bGUtbm8tdmVuZG9yLXByZWZpeCwgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50LCBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGUsIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblxuLy8gUmVib290XG4vL1xuLy8gTm9ybWFsaXphdGlvbiBvZiBIVE1MIGVsZW1lbnRzLCBtYW51YWxseSBmb3JrZWQgZnJvbSBOb3JtYWxpemUuY3NzIHRvIHJlbW92ZVxuLy8gc3R5bGVzIHRhcmdldGluZyBpcnJlbGV2YW50IGJyb3dzZXJzIHdoaWxlIGFwcGx5aW5nIG5ldyBzdHlsZXMuXG4vL1xuLy8gTm9ybWFsaXplIGlzIGxpY2Vuc2VkIE1JVC4gaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzc1xuXG5cbi8vIERvY3VtZW50XG4vL1xuLy8gMS4gQ2hhbmdlIGZyb20gYGJveC1zaXppbmc6IGNvbnRlbnQtYm94YCBzbyB0aGF0IGB3aWR0aGAgaXMgbm90IGFmZmVjdGVkIGJ5IGBwYWRkaW5nYCBvciBgYm9yZGVyYC5cbi8vIDIuIENoYW5nZSB0aGUgZGVmYXVsdCBmb250IGZhbWlseSBpbiBhbGwgYnJvd3NlcnMuXG4vLyAzLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4vLyA0LiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIElFIG9uIFdpbmRvd3MgUGhvbmUgYW5kIGluIGlPUy5cbi8vIDUuIENoYW5nZSB0aGUgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IHRvIGJlIGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQgaW4gaU9TLlxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvLyAxXG59XG5cbmh0bWwge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLy8gMlxuICBsaW5lLWhlaWdodDogMS4xNTsgLy8gM1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8vIDRcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKCRibGFjaywgMCk7IC8vIDVcbn1cblxuLy8gU2hpbSBmb3IgXCJuZXdcIiBIVE1MNSBzdHJ1Y3R1cmFsIGVsZW1lbnRzIHRvIGRpc3BsYXkgY29ycmVjdGx5IChJRTEwLCBvbGRlciBicm93c2Vycylcbi8vIFRPRE86IHJlbW92ZSBpbiB2NVxuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLWxpc3QtY29tbWEtbmV3bGluZS1hZnRlclxuYXJ0aWNsZSwgYXNpZGUsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbmF2LCBzZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8vIEJvZHlcbi8vXG4vLyAxLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXG4vLyAyLiBBcyBhIGJlc3QgcHJhY3RpY2UsIGFwcGx5IGEgZGVmYXVsdCBgYmFja2dyb3VuZC1jb2xvcmAuXG4vLyAzLiBTZXQgYW4gZXhwbGljaXQgaW5pdGlhbCB0ZXh0LWFsaWduIHZhbHVlIHNvIHRoYXQgd2UgY2FuIGxhdGVyIHVzZVxuLy8gICAgdGhlIGBpbmhlcml0YCB2YWx1ZSBvbiB0aGluZ3MgbGlrZSBgPHRoPmAgZWxlbWVudHMuXG5cbmJvZHkge1xuICBtYXJnaW46IDA7IC8vIDFcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1iYXNlO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGZvbnQtc2l6ZS1iYXNlKTtcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1iYXNlO1xuICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWJhc2U7XG4gIGNvbG9yOiAkYm9keS1jb2xvcjtcbiAgdGV4dC1hbGlnbjogbGVmdDsgLy8gM1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYm9keS1iZzsgLy8gMlxufVxuXG4vLyBGdXR1cmUtcHJvb2YgcnVsZTogaW4gYnJvd3NlcnMgdGhhdCBzdXBwb3J0IDpmb2N1cy12aXNpYmxlLCBzdXBwcmVzcyB0aGUgZm9jdXMgb3V0bGluZVxuLy8gb24gZWxlbWVudHMgdGhhdCBwcm9ncmFtbWF0aWNhbGx5IHJlY2VpdmUgZm9jdXMgYnV0IHdvdWxkbid0IG5vcm1hbGx5IHNob3cgYSB2aXNpYmxlXG4vLyBmb2N1cyBvdXRsaW5lLiBJbiBnZW5lcmFsLCB0aGlzIHdvdWxkIG1lYW4gdGhhdCB0aGUgb3V0bGluZSBpcyBvbmx5IGFwcGxpZWQgaWYgdGhlXG4vLyBpbnRlcmFjdGlvbiB0aGF0IGxlZCB0byB0aGUgZWxlbWVudCByZWNlaXZpbmcgcHJvZ3JhbW1hdGljIGZvY3VzIHdhcyBhIGtleWJvYXJkIGludGVyYWN0aW9uLFxuLy8gb3IgdGhlIGJyb3dzZXIgaGFzIHNvbWVob3cgZGV0ZXJtaW5lZCB0aGF0IHRoZSB1c2VyIGlzIHByaW1hcmlseSBhIGtleWJvYXJkIHVzZXIgYW5kL29yXG4vLyB3YW50cyBmb2N1cyBvdXRsaW5lcyB0byBhbHdheXMgYmUgcHJlc2VudGVkLlxuLy9cbi8vIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvOmZvY3VzLXZpc2libGVcbi8vIGFuZCBodHRwczovL2RldmVsb3Blci5wYWNpZWxsb2dyb3VwLmNvbS9ibG9nLzIwMTgvMDMvZm9jdXMtdmlzaWJsZS1hbmQtYmFja3dhcmRzLWNvbXBhdGliaWxpdHkvXG5bdGFiaW5kZXg9XCItMVwiXTpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcbiAgb3V0bGluZTogMCAhaW1wb3J0YW50O1xufVxuXG5cbi8vIENvbnRlbnQgZ3JvdXBpbmdcbi8vXG4vLyAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94LlxuLy8gMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8vIDFcbiAgaGVpZ2h0OiAwOyAvLyAxXG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvLyAyXG59XG5cblxuLy9cbi8vIFR5cG9ncmFwaHlcbi8vXG5cbi8vIFJlbW92ZSB0b3AgbWFyZ2lucyBmcm9tIGhlYWRpbmdzXG4vL1xuLy8gQnkgZGVmYXVsdCwgYDxoMT5gLWA8aDY+YCBhbGwgcmVjZWl2ZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zLiBXZSBudWtlIHRoZSB0b3Bcbi8vIG1hcmdpbiBmb3IgZWFzaWVyIGNvbnRyb2wgd2l0aGluIHR5cGUgc2NhbGVzIGFzIGl0IGF2b2lkcyBtYXJnaW4gY29sbGFwc2luZy5cbi8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWxlY3Rvci1saXN0LWNvbW1hLW5ld2xpbmUtYWZ0ZXJcbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAkaGVhZGluZ3MtbWFyZ2luLWJvdHRvbTtcbn1cblxuLy8gUmVzZXQgbWFyZ2lucyBvbiBwYXJhZ3JhcGhzXG4vL1xuLy8gU2ltaWxhcmx5LCB0aGUgdG9wIG1hcmdpbiBvbiBgPHA+YHMgZ2V0IHJlc2V0LiBIb3dldmVyLCB3ZSBhbHNvIHJlc2V0IHRoZVxuLy8gYm90dG9tIG1hcmdpbiB0byB1c2UgYHJlbWAgdW5pdHMgaW5zdGVhZCBvZiBgZW1gLlxucCB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206ICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTtcbn1cblxuLy8gQWJicmV2aWF0aW9uc1xuLy9cbi8vIDEuIER1cGxpY2F0ZSBiZWhhdmlvciB0byB0aGUgZGF0YS0qIGF0dHJpYnV0ZSBmb3Igb3VyIHRvb2x0aXAgcGx1Z2luXG4vLyAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxuLy8gMy4gQWRkIGV4cGxpY2l0IGN1cnNvciB0byBpbmRpY2F0ZSBjaGFuZ2VkIGJlaGF2aW9yLlxuLy8gNC4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIEZpcmVmb3ggMzktLlxuLy8gNS4gUHJldmVudCB0aGUgdGV4dC1kZWNvcmF0aW9uIHRvIGJlIHNraXBwZWQuXG5cbmFiYnJbdGl0bGVdLFxuYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXSB7IC8vIDFcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8vIDJcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvLyAyXG4gIGN1cnNvcjogaGVscDsgLy8gM1xuICBib3JkZXItYm90dG9tOiAwOyAvLyA0XG4gIHRleHQtZGVjb3JhdGlvbi1za2lwLWluazogbm9uZTsgLy8gNVxufVxuXG5hZGRyZXNzIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbn1cblxub2wsXG51bCxcbmRsIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxub2wgb2wsXG51bCB1bCxcbm9sIHVsLFxudWwgb2wge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG5kdCB7XG4gIGZvbnQtd2VpZ2h0OiAkZHQtZm9udC13ZWlnaHQ7XG59XG5cbmRkIHtcbiAgbWFyZ2luLWJvdHRvbTogLjVyZW07XG4gIG1hcmdpbi1sZWZ0OiAwOyAvLyBVbmRvIGJyb3dzZXIgZGVmYXVsdFxufVxuXG5ibG9ja3F1b3RlIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZGVyOyAvLyBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpXG59XG5cbnNtYWxsIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKDgwJSk7IC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzXG59XG5cbi8vXG4vLyBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbi8vIGFsbCBicm93c2Vycy5cbi8vXG5cbnN1YixcbnN1cCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKDc1JSk7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1YiB7IGJvdHRvbTogLS4yNWVtOyB9XG5zdXAgeyB0b3A6IC0uNWVtOyB9XG5cblxuLy9cbi8vIExpbmtzXG4vL1xuXG5hIHtcbiAgY29sb3I6ICRsaW5rLWNvbG9yO1xuICB0ZXh0LWRlY29yYXRpb246ICRsaW5rLWRlY29yYXRpb247XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAvLyBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG5cbiAgQGluY2x1ZGUgaG92ZXIoKSB7XG4gICAgY29sb3I6ICRsaW5rLWhvdmVyLWNvbG9yO1xuICAgIHRleHQtZGVjb3JhdGlvbjogJGxpbmstaG92ZXItZGVjb3JhdGlvbjtcbiAgfVxufVxuXG4vLyBBbmQgdW5kbyB0aGVzZSBzdHlsZXMgZm9yIHBsYWNlaG9sZGVyIGxpbmtzL25hbWVkIGFuY2hvcnMgKHdpdGhvdXQgaHJlZikuXG4vLyBJdCB3b3VsZCBiZSBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCB0byBqdXN0IHVzZSBhW2hyZWZdIGluIHByZXZpb3VzIGJsb2NrLCBidXQgdGhhdFxuLy8gY2F1c2VzIHNwZWNpZmljaXR5IGlzc3VlcyBpbiBtYW55IG90aGVyIHN0eWxlcyB0aGF0IGFyZSB0b28gY29tcGxleCB0byBmaXguXG4vLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xOTQwMlxuXG5hOm5vdChbaHJlZl0pIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICBAaW5jbHVkZSBob3ZlcigpIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cbn1cblxuXG4vL1xuLy8gQ29kZVxuLy9cblxucHJlLFxuY29kZSxcbmtiZCxcbnNhbXAge1xuICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKDFlbSk7IC8vIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbn1cblxucHJlIHtcbiAgLy8gUmVtb3ZlIGJyb3dzZXIgZGVmYXVsdCB0b3AgbWFyZ2luXG4gIG1hcmdpbi10b3A6IDA7XG4gIC8vIFJlc2V0IGJyb3dzZXIgZGVmYXVsdCBvZiBgMWVtYCB0byB1c2UgYHJlbWBzXG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIC8vIERvbid0IGFsbG93IGNvbnRlbnQgdG8gYnJlYWsgb3V0c2lkZVxuICBvdmVyZmxvdzogYXV0bztcbn1cblxuXG4vL1xuLy8gRmlndXJlc1xuLy9cblxuZmlndXJlIHtcbiAgLy8gQXBwbHkgYSBjb25zaXN0ZW50IG1hcmdpbiBzdHJhdGVneSAobWF0Y2hlcyBvdXIgdHlwZSBzdHlsZXMpLlxuICBtYXJnaW46IDAgMCAxcmVtO1xufVxuXG5cbi8vXG4vLyBJbWFnZXMgYW5kIGNvbnRlbnRcbi8vXG5cbmltZyB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGJvcmRlci1zdHlsZTogbm9uZTsgLy8gUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC0uXG59XG5cbnN2ZyB7XG4gIC8vIFdvcmthcm91bmQgZm9yIHRoZSBTVkcgb3ZlcmZsb3cgYnVnIGluIElFMTAvMTEgaXMgc3RpbGwgcmVxdWlyZWQuXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI2ODc4XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cblxuLy9cbi8vIFRhYmxlc1xuLy9cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyAvLyBQcmV2ZW50IGRvdWJsZSBib3JkZXJzXG59XG5cbmNhcHRpb24ge1xuICBwYWRkaW5nLXRvcDogJHRhYmxlLWNlbGwtcGFkZGluZztcbiAgcGFkZGluZy1ib3R0b206ICR0YWJsZS1jZWxsLXBhZGRpbmc7XG4gIGNvbG9yOiAkdGFibGUtY2FwdGlvbi1jb2xvcjtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgY2FwdGlvbi1zaWRlOiBib3R0b207XG59XG5cbnRoIHtcbiAgLy8gTWF0Y2hlcyBkZWZhdWx0IGA8dGQ+YCBhbGlnbm1lbnQgYnkgaW5oZXJpdGluZyBmcm9tIHRoZSBgPGJvZHk+YCwgb3IgdGhlXG4gIC8vIGNsb3Nlc3QgcGFyZW50IHdpdGggYSBzZXQgYHRleHQtYWxpZ25gLlxuICB0ZXh0LWFsaWduOiBpbmhlcml0O1xufVxuXG5cbi8vXG4vLyBGb3Jtc1xuLy9cblxubGFiZWwge1xuICAvLyBBbGxvdyBsYWJlbHMgdG8gdXNlIGBtYXJnaW5gIGZvciBzcGFjaW5nLlxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206ICRsYWJlbC1tYXJnaW4tYm90dG9tO1xufVxuXG4vLyBSZW1vdmUgdGhlIGRlZmF1bHQgYGJvcmRlci1yYWRpdXNgIHRoYXQgbWFjT1MgQ2hyb21lIGFkZHMuXG4vL1xuLy8gRGV0YWlscyBhdCBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI0MDkzXG5idXR0b24ge1xuICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktYmxhY2tsaXN0XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG5cbi8vIFdvcmsgYXJvdW5kIGEgRmlyZWZveC9JRSBidWcgd2hlcmUgdGhlIHRyYW5zcGFyZW50IGBidXR0b25gIGJhY2tncm91bmRcbi8vIHJlc3VsdHMgaW4gYSBsb3NzIG9mIHRoZSBkZWZhdWx0IGBidXR0b25gIGZvY3VzIHN0eWxlcy5cbi8vXG4vLyBDcmVkaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdWl0Y3NzL2Jhc2UvXG5idXR0b246Zm9jdXMge1xuICBvdXRsaW5lOiAxcHggZG90dGVkO1xuICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbmlucHV0LFxuYnV0dG9uLFxuc2VsZWN0LFxub3B0Z3JvdXAsXG50ZXh0YXJlYSB7XG4gIG1hcmdpbjogMDsgLy8gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBAaW5jbHVkZSBmb250LXNpemUoaW5oZXJpdCk7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG5idXR0b24sXG5pbnB1dCB7XG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvLyBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlXG59XG5cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lOyAvLyBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3hcbn1cblxuLy8gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB3b3JkLXdyYXAgaW4gU2FmYXJpLlxuLy9cbi8vIERldGFpbHMgYXQgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNDk5MFxuc2VsZWN0IHtcbiAgd29yZC13cmFwOiBub3JtYWw7XG59XG5cblxuLy8gMS4gUHJldmVudCBhIFdlYktpdCBidWcgd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gIGFuZCBgdmlkZW9gXG4vLyAgICBjb250cm9scyBpbiBBbmRyb2lkIDQuXG4vLyAyLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuYnV0dG9uLFxuW3R5cGU9XCJidXR0b25cIl0sIC8vIDFcblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvLyAyXG59XG5cbi8vIE9waW5pb25hdGVkOiBhZGQgXCJoYW5kXCIgY3Vyc29yIHRvIG5vbi1kaXNhYmxlZCBidXR0b24gZWxlbWVudHMuXG5AaWYgJGVuYWJsZS1wb2ludGVyLWN1cnNvci1mb3ItYnV0dG9ucyB7XG4gIGJ1dHRvbixcbiAgW3R5cGU9XCJidXR0b25cIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0sXG4gIFt0eXBlPVwic3VibWl0XCJdIHtcbiAgICAmOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gIH1cbn1cblxuLy8gUmVtb3ZlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBmcm9tIEZpcmVmb3gsIGJ1dCBkb24ndCByZXN0b3JlIHRoZSBvdXRsaW5lIGxpa2UgTm9ybWFsaXplLlxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbmlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLVxuICBwYWRkaW5nOiAwOyAvLyAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAtXG59XG5cblxuaW5wdXRbdHlwZT1cImRhdGVcIl0sXG5pbnB1dFt0eXBlPVwidGltZVwiXSxcbmlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXSxcbmlucHV0W3R5cGU9XCJtb250aFwiXSB7XG4gIC8vIFJlbW92ZSB0aGUgZGVmYXVsdCBhcHBlYXJhbmNlIG9mIHRlbXBvcmFsIGlucHV0cyB0byBhdm9pZCBhIE1vYmlsZSBTYWZhcmlcbiAgLy8gYnVnIHdoZXJlIHNldHRpbmcgYSBjdXN0b20gbGluZS1oZWlnaHQgcHJldmVudHMgdGV4dCBmcm9tIGJlaW5nIHZlcnRpY2FsbHlcbiAgLy8gY2VudGVyZWQgd2l0aGluIHRoZSBpbnB1dC5cbiAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk4NDhcbiAgLy8gYW5kIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTEyNjZcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBsaXN0Ym94O1xufVxuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvOyAvLyBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFLlxuICAvLyBUZXh0YXJlYXMgc2hvdWxkIHJlYWxseSBvbmx5IHJlc2l6ZSB2ZXJ0aWNhbGx5IHNvIHRoZXkgZG9uJ3QgYnJlYWsgdGhlaXIgKGhvcml6b250YWwpIGNvbnRhaW5lcnMuXG4gIHJlc2l6ZTogdmVydGljYWw7XG59XG5cbmZpZWxkc2V0IHtcbiAgLy8gQnJvd3NlcnMgc2V0IGEgZGVmYXVsdCBgbWluLXdpZHRoOiBtaW4tY29udGVudDtgIG9uIGZpZWxkc2V0cyxcbiAgLy8gdW5saWtlIGUuZy4gYDxkaXY+YHMsIHdoaWNoIGhhdmUgYG1pbi13aWR0aDogMDtgIGJ5IGRlZmF1bHQuXG4gIC8vIFNvIHdlIHJlc2V0IHRoYXQgdG8gZW5zdXJlIGZpZWxkc2V0cyBiZWhhdmUgbW9yZSBsaWtlIGEgc3RhbmRhcmQgYmxvY2sgZWxlbWVudC5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTIzNTlcbiAgLy8gYW5kIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlLyN0aGUtZmllbGRzZXQtYW5kLWxlZ2VuZC1lbGVtZW50c1xuICBtaW4td2lkdGg6IDA7XG4gIC8vIFJlc2V0IHRoZSBkZWZhdWx0IG91dGxpbmUgYmVoYXZpb3Igb2YgZmllbGRzZXRzIHNvIHRoZXkgZG9uJ3QgYWZmZWN0IHBhZ2UgbGF5b3V0LlxuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGJvcmRlcjogMDtcbn1cblxuLy8gMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbi8vIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbmxlZ2VuZCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlOyAvLyAxXG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbi1ib3R0b206IC41cmVtO1xuICBAaW5jbHVkZSBmb250LXNpemUoMS41cmVtKTtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIGNvbG9yOiBpbmhlcml0OyAvLyAyXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8vIDFcbn1cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8vIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG59XG5cbi8vIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLy8gVGhpcyBvdmVycmlkZXMgdGhlIGV4dHJhIHJvdW5kZWQgY29ybmVycyBvbiBzZWFyY2ggaW5wdXRzIGluIGlPUyBzbyB0aGF0IG91clxuICAvLyBgLmZvcm0tY29udHJvbGAgY2xhc3MgY2FuIHByb3Blcmx5IHN0eWxlIHRoZW0uIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCBzaW1wbHlcbiAgLy8gYmUgYWRkZWQgdG8gYC5mb3JtLWNvbnRyb2xgIGFzIGl0J3Mgbm90IHNwZWNpZmljIGVub3VnaC4gRm9yIGRldGFpbHMsIHNlZVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzExNTg2LlxuICBvdXRsaW5lLW9mZnNldDogLTJweDsgLy8gMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLy9cbi8vIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cbi8vXG5cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vL1xuLy8gMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbi8vIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbi8vXG5cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICBmb250OiBpbmhlcml0OyAvLyAyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvLyAxXG59XG5cbi8vXG4vLyBDb3JyZWN0IGVsZW1lbnQgZGlzcGxheXNcbi8vXG5cbm91dHB1dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTsgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzXG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lOyAvLyBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRVxufVxuXG4vLyBBbHdheXMgaGlkZSBhbiBlbGVtZW50IHdpdGggdGhlIGBoaWRkZW5gIEhUTUwgYXR0cmlidXRlIChmcm9tIFB1cmVDU1MpLlxuLy8gTmVlZGVkIGZvciBwcm9wZXIgZGlzcGxheSBpbiBJRSAxMC0uXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbiIsIi8vIFZhcmlhYmxlc1xuLy9cbi8vIFZhcmlhYmxlcyBzaG91bGQgZm9sbG93IHRoZSBgJGNvbXBvbmVudC1zdGF0ZS1wcm9wZXJ0eS1zaXplYCBmb3JtdWxhIGZvclxuLy8gY29uc2lzdGVudCBuYW1pbmcuIEV4OiAkbmF2LWxpbmstZGlzYWJsZWQtY29sb3IgYW5kICRtb2RhbC1jb250ZW50LWJveC1zaGFkb3cteHMuXG5cbi8vIENvbG9yIHN5c3RlbVxuXG4kd2hpdGU6ICAgICNmZmYgIWRlZmF1bHQ7XG4kZ3JheS0xMDA6ICNmOGY5ZmEgIWRlZmF1bHQ7XG4kZ3JheS0yMDA6ICNlOWVjZWYgIWRlZmF1bHQ7XG4kZ3JheS0zMDA6ICNkZWUyZTYgIWRlZmF1bHQ7XG4kZ3JheS00MDA6ICNjZWQ0ZGEgIWRlZmF1bHQ7XG4kZ3JheS01MDA6ICNhZGI1YmQgIWRlZmF1bHQ7XG4kZ3JheS02MDA6ICM2Yzc1N2QgIWRlZmF1bHQ7XG4kZ3JheS03MDA6ICM0OTUwNTcgIWRlZmF1bHQ7XG4kZ3JheS04MDA6ICMzNDNhNDAgIWRlZmF1bHQ7XG4kZ3JheS05MDA6ICMyMTI1MjkgIWRlZmF1bHQ7XG4kYmxhY2s6ICAgICMwMDAgIWRlZmF1bHQ7XG5cbiRncmF5czogKCkgIWRlZmF1bHQ7XG4vLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2Nzcy9kb2xsYXItdmFyaWFibGUtZGVmYXVsdFxuJGdyYXlzOiBtYXAtbWVyZ2UoXG4gIChcbiAgICBcIjEwMFwiOiAkZ3JheS0xMDAsXG4gICAgXCIyMDBcIjogJGdyYXktMjAwLFxuICAgIFwiMzAwXCI6ICRncmF5LTMwMCxcbiAgICBcIjQwMFwiOiAkZ3JheS00MDAsXG4gICAgXCI1MDBcIjogJGdyYXktNTAwLFxuICAgIFwiNjAwXCI6ICRncmF5LTYwMCxcbiAgICBcIjcwMFwiOiAkZ3JheS03MDAsXG4gICAgXCI4MDBcIjogJGdyYXktODAwLFxuICAgIFwiOTAwXCI6ICRncmF5LTkwMFxuICApLFxuICAkZ3JheXNcbik7XG5cbiRibHVlOiAgICAjMDA3YmZmICFkZWZhdWx0O1xuJGluZGlnbzogICM2NjEwZjIgIWRlZmF1bHQ7XG4kcHVycGxlOiAgIzZmNDJjMSAhZGVmYXVsdDtcbiRwaW5rOiAgICAjZTgzZThjICFkZWZhdWx0O1xuJHJlZDogICAgICNkYzM1NDUgIWRlZmF1bHQ7XG4kb3JhbmdlOiAgI2ZkN2UxNCAhZGVmYXVsdDtcbiR5ZWxsb3c6ICAjZmZjMTA3ICFkZWZhdWx0O1xuJGdyZWVuOiAgICMyOGE3NDUgIWRlZmF1bHQ7XG4kdGVhbDogICAgIzIwYzk5NyAhZGVmYXVsdDtcbiRjeWFuOiAgICAjMTdhMmI4ICFkZWZhdWx0O1xuXG4kY29sb3JzOiAoKSAhZGVmYXVsdDtcbi8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzY3NzL2RvbGxhci12YXJpYWJsZS1kZWZhdWx0XG4kY29sb3JzOiBtYXAtbWVyZ2UoXG4gIChcbiAgICBcImJsdWVcIjogICAgICAgJGJsdWUsXG4gICAgXCJpbmRpZ29cIjogICAgICRpbmRpZ28sXG4gICAgXCJwdXJwbGVcIjogICAgICRwdXJwbGUsXG4gICAgXCJwaW5rXCI6ICAgICAgICRwaW5rLFxuICAgIFwicmVkXCI6ICAgICAgICAkcmVkLFxuICAgIFwib3JhbmdlXCI6ICAgICAkb3JhbmdlLFxuICAgIFwieWVsbG93XCI6ICAgICAkeWVsbG93LFxuICAgIFwiZ3JlZW5cIjogICAgICAkZ3JlZW4sXG4gICAgXCJ0ZWFsXCI6ICAgICAgICR0ZWFsLFxuICAgIFwiY3lhblwiOiAgICAgICAkY3lhbixcbiAgICBcIndoaXRlXCI6ICAgICAgJHdoaXRlLFxuICAgIFwiZ3JheVwiOiAgICAgICAkZ3JheS02MDAsXG4gICAgXCJncmF5LWRhcmtcIjogICRncmF5LTgwMFxuICApLFxuICAkY29sb3JzXG4pO1xuXG4kcHJpbWFyeTogICAgICAgJGJsdWUgIWRlZmF1bHQ7XG4kc2Vjb25kYXJ5OiAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJHN1Y2Nlc3M6ICAgICAgICRncmVlbiAhZGVmYXVsdDtcbiRpbmZvOiAgICAgICAgICAkY3lhbiAhZGVmYXVsdDtcbiR3YXJuaW5nOiAgICAgICAkeWVsbG93ICFkZWZhdWx0O1xuJGRhbmdlcjogICAgICAgICRyZWQgIWRlZmF1bHQ7XG4kbGlnaHQ6ICAgICAgICAgJGdyYXktMTAwICFkZWZhdWx0O1xuJGRhcms6ICAgICAgICAgICRncmF5LTgwMCAhZGVmYXVsdDtcblxuJHRoZW1lLWNvbG9yczogKCkgIWRlZmF1bHQ7XG4vLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2Nzcy9kb2xsYXItdmFyaWFibGUtZGVmYXVsdFxuJHRoZW1lLWNvbG9yczogbWFwLW1lcmdlKFxuICAoXG4gICAgXCJwcmltYXJ5XCI6ICAgICRwcmltYXJ5LFxuICAgIFwic2Vjb25kYXJ5XCI6ICAkc2Vjb25kYXJ5LFxuICAgIFwic3VjY2Vzc1wiOiAgICAkc3VjY2VzcyxcbiAgICBcImluZm9cIjogICAgICAgJGluZm8sXG4gICAgXCJ3YXJuaW5nXCI6ICAgICR3YXJuaW5nLFxuICAgIFwiZGFuZ2VyXCI6ICAgICAkZGFuZ2VyLFxuICAgIFwibGlnaHRcIjogICAgICAkbGlnaHQsXG4gICAgXCJkYXJrXCI6ICAgICAgICRkYXJrXG4gICksXG4gICR0aGVtZS1jb2xvcnNcbik7XG5cbi8vIFNldCBhIHNwZWNpZmljIGp1bXAgcG9pbnQgZm9yIHJlcXVlc3RpbmcgY29sb3IganVtcHNcbiR0aGVtZS1jb2xvci1pbnRlcnZhbDogICAgICA4JSAhZGVmYXVsdDtcblxuLy8gVGhlIHlpcSBsaWdodG5lc3MgdmFsdWUgdGhhdCBkZXRlcm1pbmVzIHdoZW4gdGhlIGxpZ2h0bmVzcyBvZiBjb2xvciBjaGFuZ2VzIGZyb20gXCJkYXJrXCIgdG8gXCJsaWdodFwiLiBBY2NlcHRhYmxlIHZhbHVlcyBhcmUgYmV0d2VlbiAwIGFuZCAyNTUuXG4keWlxLWNvbnRyYXN0ZWQtdGhyZXNob2xkOiAgMTUwICFkZWZhdWx0O1xuXG4vLyBDdXN0b21pemUgdGhlIGxpZ2h0IGFuZCBkYXJrIHRleHQgY29sb3JzIGZvciB1c2UgaW4gb3VyIFlJUSBjb2xvciBjb250cmFzdCBmdW5jdGlvbi5cbiR5aXEtdGV4dC1kYXJrOiAgICAgICAgICAgICAkZ3JheS05MDAgIWRlZmF1bHQ7XG4keWlxLXRleHQtbGlnaHQ6ICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuXG4vLyBDaGFyYWN0ZXJzIHdoaWNoIGFyZSBlc2NhcGVkIGJ5IHRoZSBlc2NhcGUtc3ZnIGZ1bmN0aW9uXG4kZXNjYXBlZC1jaGFyYWN0ZXJzOiAoXG4gIChcIjxcIixcIiUzY1wiKSxcbiAgKFwiPlwiLFwiJTNlXCIpLFxuICAoXCIjXCIsXCIlMjNcIiksXG4pICFkZWZhdWx0O1xuXG5cbi8vIE9wdGlvbnNcbi8vXG4vLyBRdWlja2x5IG1vZGlmeSBnbG9iYWwgc3R5bGluZyBieSBlbmFibGluZyBvciBkaXNhYmxpbmcgb3B0aW9uYWwgZmVhdHVyZXMuXG5cbiRlbmFibGUtY2FyZXQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1yb3VuZGVkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLXNoYWRvd3M6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kZW5hYmxlLWdyYWRpZW50czogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kZW5hYmxlLXRyYW5zaXRpb25zOiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1tZWRpYS1xdWVyeTogICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1ob3Zlci1tZWRpYS1xdWVyeTogICAgICAgICAgICAgICAgICAgIGZhbHNlICFkZWZhdWx0OyAvLyBEZXByZWNhdGVkLCBubyBsb25nZXIgYWZmZWN0cyBhbnkgY29tcGlsZWQgQ1NTXG4kZW5hYmxlLWdyaWQtY2xhc3NlczogICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtcG9pbnRlci1jdXJzb3ItZm9yLWJ1dHRvbnM6ICAgICAgICAgICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1wcmludC1zdHlsZXM6ICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLXJlc3BvbnNpdmUtZm9udC1zaXplczogICAgICAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kZW5hYmxlLXZhbGlkYXRpb24taWNvbnM6ICAgICAgICAgICAgICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtZGVwcmVjYXRpb24tbWVzc2FnZXM6ICAgICAgICAgICAgICAgICB0cnVlICFkZWZhdWx0O1xuXG5cbi8vIFNwYWNpbmdcbi8vXG4vLyBDb250cm9sIHRoZSBkZWZhdWx0IHN0eWxpbmcgb2YgbW9zdCBCb290c3RyYXAgZWxlbWVudHMgYnkgbW9kaWZ5aW5nIHRoZXNlXG4vLyB2YXJpYWJsZXMuIE1vc3RseSBmb2N1c2VkIG9uIHNwYWNpbmcuXG4vLyBZb3UgY2FuIGFkZCBtb3JlIGVudHJpZXMgdG8gdGhlICRzcGFjZXJzIG1hcCwgc2hvdWxkIHlvdSBuZWVkIG1vcmUgdmFyaWF0aW9uLlxuXG4kc3BhY2VyOiAxcmVtICFkZWZhdWx0O1xuJHNwYWNlcnM6ICgpICFkZWZhdWx0O1xuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3MvZG9sbGFyLXZhcmlhYmxlLWRlZmF1bHRcbiRzcGFjZXJzOiBtYXAtbWVyZ2UoXG4gIChcbiAgICAwOiAwLFxuICAgIDE6ICgkc3BhY2VyICogLjI1KSxcbiAgICAyOiAoJHNwYWNlciAqIC41KSxcbiAgICAzOiAkc3BhY2VyLFxuICAgIDQ6ICgkc3BhY2VyICogMS41KSxcbiAgICA1OiAoJHNwYWNlciAqIDMpXG4gICksXG4gICRzcGFjZXJzXG4pO1xuXG4vLyBUaGlzIHZhcmlhYmxlIGFmZmVjdHMgdGhlIGAuaC0qYCBhbmQgYC53LSpgIGNsYXNzZXMuXG4kc2l6ZXM6ICgpICFkZWZhdWx0O1xuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3MvZG9sbGFyLXZhcmlhYmxlLWRlZmF1bHRcbiRzaXplczogbWFwLW1lcmdlKFxuICAoXG4gICAgMjU6IDI1JSxcbiAgICA1MDogNTAlLFxuICAgIDc1OiA3NSUsXG4gICAgMTAwOiAxMDAlLFxuICAgIGF1dG86IGF1dG9cbiAgKSxcbiAgJHNpemVzXG4pO1xuXG5cbi8vIEJvZHlcbi8vXG4vLyBTZXR0aW5ncyBmb3IgdGhlIGA8Ym9keT5gIGVsZW1lbnQuXG5cbiRib2R5LWJnOiAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kYm9keS1jb2xvcjogICAgICAgICAgICAgICAgJGdyYXktOTAwICFkZWZhdWx0O1xuXG5cbi8vIExpbmtzXG4vL1xuLy8gU3R5bGUgYW5jaG9yIGVsZW1lbnRzLlxuXG4kbGluay1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZS1jb2xvcihcInByaW1hcnlcIikgIWRlZmF1bHQ7XG4kbGluay1kZWNvcmF0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICBub25lICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgZGFya2VuKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogICAgICAgICAgICAgICAgICAgdW5kZXJsaW5lICFkZWZhdWx0O1xuLy8gRGFya2VuIHBlcmNlbnRhZ2UgZm9yIGxpbmtzIHdpdGggYC50ZXh0LSpgIGNsYXNzIChlLmcuIGAudGV4dC1zdWNjZXNzYClcbiRlbXBoYXNpemVkLWxpbmstaG92ZXItZGFya2VuLXBlcmNlbnRhZ2U6IDE1JSAhZGVmYXVsdDtcblxuLy8gUGFyYWdyYXBoc1xuLy9cbi8vIFN0eWxlIHAgZWxlbWVudC5cblxuJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tOiAgIDFyZW0gIWRlZmF1bHQ7XG5cblxuLy8gR3JpZCBicmVha3BvaW50c1xuLy9cbi8vIERlZmluZSB0aGUgbWluaW11bSBkaW1lbnNpb25zIGF0IHdoaWNoIHlvdXIgbGF5b3V0IHdpbGwgY2hhbmdlLFxuLy8gYWRhcHRpbmcgdG8gZGlmZmVyZW50IHNjcmVlbiBzaXplcywgZm9yIHVzZSBpbiBtZWRpYSBxdWVyaWVzLlxuXG4kZ3JpZC1icmVha3BvaW50czogKFxuICB4czogMCxcbiAgc206IDU3NnB4LFxuICBtZDogNzY4cHgsXG4gIGxnOiA5OTJweCxcbiAgeGw6IDEyMDBweFxuKSAhZGVmYXVsdDtcblxuQGluY2x1ZGUgX2Fzc2VydC1hc2NlbmRpbmcoJGdyaWQtYnJlYWtwb2ludHMsIFwiJGdyaWQtYnJlYWtwb2ludHNcIik7XG5AaW5jbHVkZSBfYXNzZXJ0LXN0YXJ0cy1hdC16ZXJvKCRncmlkLWJyZWFrcG9pbnRzLCBcIiRncmlkLWJyZWFrcG9pbnRzXCIpO1xuXG5cbi8vIEdyaWQgY29udGFpbmVyc1xuLy9cbi8vIERlZmluZSB0aGUgbWF4aW11bSB3aWR0aCBvZiBgLmNvbnRhaW5lcmAgZm9yIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMuXG5cbiRjb250YWluZXItbWF4LXdpZHRoczogKFxuICBzbTogNTQwcHgsXG4gIG1kOiA3MjBweCxcbiAgbGc6IDk2MHB4LFxuICB4bDogMTE0MHB4XG4pICFkZWZhdWx0O1xuXG5AaW5jbHVkZSBfYXNzZXJ0LWFzY2VuZGluZygkY29udGFpbmVyLW1heC13aWR0aHMsIFwiJGNvbnRhaW5lci1tYXgtd2lkdGhzXCIpO1xuXG5cbi8vIEdyaWQgY29sdW1uc1xuLy9cbi8vIFNldCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYW5kIHNwZWNpZnkgdGhlIHdpZHRoIG9mIHRoZSBndXR0ZXJzLlxuXG4kZ3JpZC1jb2x1bW5zOiAgICAgICAgICAgICAgICAxMiAhZGVmYXVsdDtcbiRncmlkLWd1dHRlci13aWR0aDogICAgICAgICAgIDMwcHggIWRlZmF1bHQ7XG4kZ3JpZC1yb3ctY29sdW1uczogICAgICAgICAgICA2ICFkZWZhdWx0O1xuXG5cbi8vIENvbXBvbmVudHNcbi8vXG4vLyBEZWZpbmUgY29tbW9uIHBhZGRpbmcgYW5kIGJvcmRlciByYWRpdXMgc2l6ZXMgYW5kIG1vcmUuXG5cbiRsaW5lLWhlaWdodC1sZzogICAgICAgICAgICAgIDEuNSAhZGVmYXVsdDtcbiRsaW5lLWhlaWdodC1zbTogICAgICAgICAgICAgIDEuNSAhZGVmYXVsdDtcblxuJGJvcmRlci13aWR0aDogICAgICAgICAgICAgICAgMXB4ICFkZWZhdWx0O1xuJGJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgJGdyYXktMzAwICFkZWZhdWx0O1xuXG4kYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kYm9yZGVyLXJhZGl1cy1sZzogICAgICAgICAgICAuM3JlbSAhZGVmYXVsdDtcbiRib3JkZXItcmFkaXVzLXNtOiAgICAgICAgICAgIC4ycmVtICFkZWZhdWx0O1xuXG4kcm91bmRlZC1waWxsOiAgICAgICAgICAgICAgICA1MHJlbSAhZGVmYXVsdDtcblxuJGJveC1zaGFkb3ctc206ICAgICAgICAgICAgICAgMCAuMTI1cmVtIC4yNXJlbSByZ2JhKCRibGFjaywgLjA3NSkgIWRlZmF1bHQ7XG4kYm94LXNoYWRvdzogICAgICAgICAgICAgICAgICAwIC41cmVtIDFyZW0gcmdiYSgkYmxhY2ssIC4xNSkgIWRlZmF1bHQ7XG4kYm94LXNoYWRvdy1sZzogICAgICAgICAgICAgICAwIDFyZW0gM3JlbSByZ2JhKCRibGFjaywgLjE3NSkgIWRlZmF1bHQ7XG5cbiRjb21wb25lbnQtYWN0aXZlLWNvbG9yOiAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRjb21wb25lbnQtYWN0aXZlLWJnOiAgICAgICAgIHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSAhZGVmYXVsdDtcblxuJGNhcmV0LXdpZHRoOiAgICAgICAgICAgICAgICAgLjNlbSAhZGVmYXVsdDtcbiRjYXJldC12ZXJ0aWNhbC1hbGlnbjogICAgICAgICRjYXJldC13aWR0aCAqIC44NSAhZGVmYXVsdDtcbiRjYXJldC1zcGFjaW5nOiAgICAgICAgICAgICAgICRjYXJldC13aWR0aCAqIC44NSAhZGVmYXVsdDtcblxuJHRyYW5zaXRpb24tYmFzZTogICAgICAgICAgICAgYWxsIC4ycyBlYXNlLWluLW91dCAhZGVmYXVsdDtcbiR0cmFuc2l0aW9uLWZhZGU6ICAgICAgICAgICAgIG9wYWNpdHkgLjE1cyBsaW5lYXIgIWRlZmF1bHQ7XG4kdHJhbnNpdGlvbi1jb2xsYXBzZTogICAgICAgICBoZWlnaHQgLjM1cyBlYXNlICFkZWZhdWx0O1xuXG4kZW1iZWQtcmVzcG9uc2l2ZS1hc3BlY3QtcmF0aW9zOiAoKSAhZGVmYXVsdDtcbi8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBzY3NzL2RvbGxhci12YXJpYWJsZS1kZWZhdWx0XG4kZW1iZWQtcmVzcG9uc2l2ZS1hc3BlY3QtcmF0aW9zOiBqb2luKFxuICAoXG4gICAgKDIxIDkpLFxuICAgICgxNiA5KSxcbiAgICAoNCAzKSxcbiAgICAoMSAxKSxcbiAgKSxcbiAgJGVtYmVkLXJlc3BvbnNpdmUtYXNwZWN0LXJhdGlvc1xuKTtcblxuLy8gVHlwb2dyYXBoeVxuLy9cbi8vIEZvbnQsIGxpbmUtaGVpZ2h0LCBhbmQgY29sb3IgZm9yIGJvZHkgdGV4dCwgaGVhZGluZ3MsIGFuZCBtb3JlLlxuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSB2YWx1ZS1rZXl3b3JkLWNhc2VcbiRmb250LWZhbWlseS1zYW5zLXNlcmlmOiAgICAgIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIFwiTm90byBTYW5zXCIsIHNhbnMtc2VyaWYsIFwiQXBwbGUgQ29sb3IgRW1vamlcIiwgXCJTZWdvZSBVSSBFbW9qaVwiLCBcIlNlZ29lIFVJIFN5bWJvbFwiLCBcIk5vdG8gQ29sb3IgRW1vamlcIiAhZGVmYXVsdDtcbiRmb250LWZhbWlseS1tb25vc3BhY2U6ICAgICAgIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgXCJMaWJlcmF0aW9uIE1vbm9cIiwgXCJDb3VyaWVyIE5ld1wiLCBtb25vc3BhY2UgIWRlZmF1bHQ7XG4kZm9udC1mYW1pbHktYmFzZTogICAgICAgICAgICAkZm9udC1mYW1pbHktc2Fucy1zZXJpZiAhZGVmYXVsdDtcbi8vIHN0eWxlbGludC1lbmFibGUgdmFsdWUta2V5d29yZC1jYXNlXG5cbiRmb250LXNpemUtYmFzZTogICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7IC8vIEFzc3VtZXMgdGhlIGJyb3dzZXIgZGVmYXVsdCwgdHlwaWNhbGx5IGAxNnB4YFxuJGZvbnQtc2l6ZS1sZzogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMS4yNSAhZGVmYXVsdDtcbiRmb250LXNpemUtc206ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIC44NzUgIWRlZmF1bHQ7XG5cbiRmb250LXdlaWdodC1saWdodGVyOiAgICAgICAgIGxpZ2h0ZXIgIWRlZmF1bHQ7XG4kZm9udC13ZWlnaHQtbGlnaHQ6ICAgICAgICAgICAzMDAgIWRlZmF1bHQ7XG4kZm9udC13ZWlnaHQtbm9ybWFsOiAgICAgICAgICA0MDAgIWRlZmF1bHQ7XG4kZm9udC13ZWlnaHQtYm9sZDogICAgICAgICAgICA3MDAgIWRlZmF1bHQ7XG4kZm9udC13ZWlnaHQtYm9sZGVyOiAgICAgICAgICBib2xkZXIgIWRlZmF1bHQ7XG5cbiRmb250LXdlaWdodC1iYXNlOiAgICAgICAgICAgICRmb250LXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG4kbGluZS1oZWlnaHQtYmFzZTogICAgICAgICAgICAxLjUgIWRlZmF1bHQ7XG5cbiRoMS1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDIuNSAhZGVmYXVsdDtcbiRoMi1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDIgIWRlZmF1bHQ7XG4kaDMtZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjc1ICFkZWZhdWx0O1xuJGg0LWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMS41ICFkZWZhdWx0O1xuJGg1LWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMS4yNSAhZGVmYXVsdDtcbiRoNi1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAhZGVmYXVsdDtcblxuJGhlYWRpbmdzLW1hcmdpbi1ib3R0b206ICAgICAgJHNwYWNlciAvIDIgIWRlZmF1bHQ7XG4kaGVhZGluZ3MtZm9udC1mYW1pbHk6ICAgICAgICBudWxsICFkZWZhdWx0O1xuJGhlYWRpbmdzLWZvbnQtd2VpZ2h0OiAgICAgICAgNTAwICFkZWZhdWx0O1xuJGhlYWRpbmdzLWxpbmUtaGVpZ2h0OiAgICAgICAgMS4yICFkZWZhdWx0O1xuJGhlYWRpbmdzLWNvbG9yOiAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcblxuJGRpc3BsYXkxLXNpemU6ICAgICAgICAgICAgICAgNnJlbSAhZGVmYXVsdDtcbiRkaXNwbGF5Mi1zaXplOiAgICAgICAgICAgICAgIDUuNXJlbSAhZGVmYXVsdDtcbiRkaXNwbGF5My1zaXplOiAgICAgICAgICAgICAgIDQuNXJlbSAhZGVmYXVsdDtcbiRkaXNwbGF5NC1zaXplOiAgICAgICAgICAgICAgIDMuNXJlbSAhZGVmYXVsdDtcblxuJGRpc3BsYXkxLXdlaWdodDogICAgICAgICAgICAgMzAwICFkZWZhdWx0O1xuJGRpc3BsYXkyLXdlaWdodDogICAgICAgICAgICAgMzAwICFkZWZhdWx0O1xuJGRpc3BsYXkzLXdlaWdodDogICAgICAgICAgICAgMzAwICFkZWZhdWx0O1xuJGRpc3BsYXk0LXdlaWdodDogICAgICAgICAgICAgMzAwICFkZWZhdWx0O1xuJGRpc3BsYXktbGluZS1oZWlnaHQ6ICAgICAgICAgJGhlYWRpbmdzLWxpbmUtaGVpZ2h0ICFkZWZhdWx0O1xuXG4kbGVhZC1mb250LXNpemU6ICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjI1ICFkZWZhdWx0O1xuJGxlYWQtZm9udC13ZWlnaHQ6ICAgICAgICAgICAgMzAwICFkZWZhdWx0O1xuXG4kc21hbGwtZm9udC1zaXplOiAgICAgICAgICAgICA4MCUgIWRlZmF1bHQ7XG5cbiR0ZXh0LW11dGVkOiAgICAgICAgICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcblxuJGJsb2NrcXVvdGUtc21hbGwtY29sb3I6ICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJGJsb2NrcXVvdGUtc21hbGwtZm9udC1zaXplOiAgJHNtYWxsLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRibG9ja3F1b3RlLWZvbnQtc2l6ZTogICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuMjUgIWRlZmF1bHQ7XG5cbiRoci1ib3JkZXItY29sb3I6ICAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAuMSkgIWRlZmF1bHQ7XG4kaHItYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuXG4kbWFyay1wYWRkaW5nOiAgICAgICAgICAgICAgICAuMmVtICFkZWZhdWx0O1xuXG4kZHQtZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICAkZm9udC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcblxuJGtiZC1ib3gtc2hhZG93OiAgICAgICAgICAgICAgaW5zZXQgMCAtLjFyZW0gMCByZ2JhKCRibGFjaywgLjI1KSAhZGVmYXVsdDtcbiRuZXN0ZWQta2JkLWZvbnQtd2VpZ2h0OiAgICAgICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xuXG4kbGlzdC1pbmxpbmUtcGFkZGluZzogICAgICAgICAuNXJlbSAhZGVmYXVsdDtcblxuJG1hcmstYmc6ICAgICAgICAgICAgICAgICAgICAgI2ZjZjhlMyAhZGVmYXVsdDtcblxuJGhyLW1hcmdpbi15OiAgICAgICAgICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcblxuXG4vLyBUYWJsZXNcbi8vXG4vLyBDdXN0b21pemVzIHRoZSBgLnRhYmxlYCBjb21wb25lbnQgd2l0aCBiYXNpYyB2YWx1ZXMsIGVhY2ggdXNlZCBhY3Jvc3MgYWxsIHRhYmxlIHZhcmlhdGlvbnMuXG5cbiR0YWJsZS1jZWxsLXBhZGRpbmc6ICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiR0YWJsZS1jZWxsLXBhZGRpbmctc206ICAgICAgIC4zcmVtICFkZWZhdWx0O1xuXG4kdGFibGUtY29sb3I6ICAgICAgICAgICAgICAgICAkYm9keS1jb2xvciAhZGVmYXVsdDtcbiR0YWJsZS1iZzogICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kdGFibGUtYWNjZW50LWJnOiAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjA1KSAhZGVmYXVsdDtcbiR0YWJsZS1ob3Zlci1jb2xvcjogICAgICAgICAgICR0YWJsZS1jb2xvciAhZGVmYXVsdDtcbiR0YWJsZS1ob3Zlci1iZzogICAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAuMDc1KSAhZGVmYXVsdDtcbiR0YWJsZS1hY3RpdmUtYmc6ICAgICAgICAgICAgICR0YWJsZS1ob3Zlci1iZyAhZGVmYXVsdDtcblxuJHRhYmxlLWJvcmRlci13aWR0aDogICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiR0YWJsZS1ib3JkZXItY29sb3I6ICAgICAgICAgICRib3JkZXItY29sb3IgIWRlZmF1bHQ7XG5cbiR0YWJsZS1oZWFkLWJnOiAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiR0YWJsZS1oZWFkLWNvbG9yOiAgICAgICAgICAgICRncmF5LTcwMCAhZGVmYXVsdDtcblxuJHRhYmxlLWRhcmstY29sb3I6ICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJHRhYmxlLWRhcmstYmc6ICAgICAgICAgICAgICAgJGdyYXktODAwICFkZWZhdWx0O1xuJHRhYmxlLWRhcmstYWNjZW50LWJnOiAgICAgICAgcmdiYSgkd2hpdGUsIC4wNSkgIWRlZmF1bHQ7XG4kdGFibGUtZGFyay1ob3Zlci1jb2xvcjogICAgICAkdGFibGUtZGFyay1jb2xvciAhZGVmYXVsdDtcbiR0YWJsZS1kYXJrLWhvdmVyLWJnOiAgICAgICAgIHJnYmEoJHdoaXRlLCAuMDc1KSAhZGVmYXVsdDtcbiR0YWJsZS1kYXJrLWJvcmRlci1jb2xvcjogICAgIGxpZ2h0ZW4oJHRhYmxlLWRhcmstYmcsIDcuNSUpICFkZWZhdWx0O1xuXG4kdGFibGUtc3RyaXBlZC1vcmRlcjogICAgICAgICBvZGQgIWRlZmF1bHQ7XG5cbiR0YWJsZS1jYXB0aW9uLWNvbG9yOiAgICAgICAgICR0ZXh0LW11dGVkICFkZWZhdWx0O1xuXG4kdGFibGUtYmctbGV2ZWw6ICAgICAgICAgICAgICAtOSAhZGVmYXVsdDtcbiR0YWJsZS1ib3JkZXItbGV2ZWw6ICAgICAgICAgIC02ICFkZWZhdWx0O1xuXG5cbi8vIEJ1dHRvbnMgKyBGb3Jtc1xuLy9cbi8vIFNoYXJlZCB2YXJpYWJsZXMgdGhhdCBhcmUgcmVhc3NpZ25lZCB0byBgJGlucHV0LWAgYW5kIGAkYnRuLWAgc3BlY2lmaWMgdmFyaWFibGVzLlxuXG4kaW5wdXQtYnRuLXBhZGRpbmcteTogICAgICAgICAuMzc1cmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1wYWRkaW5nLXg6ICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1mb250LWZhbWlseTogICAgICAgbnVsbCAhZGVmYXVsdDtcbiRpbnB1dC1idG4tZm9udC1zaXplOiAgICAgICAgICRmb250LXNpemUtYmFzZSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tbGluZS1oZWlnaHQ6ICAgICAgICRsaW5lLWhlaWdodC1iYXNlICFkZWZhdWx0O1xuXG4kaW5wdXQtYnRuLWZvY3VzLXdpZHRoOiAgICAgICAuMnJlbSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tZm9jdXMtY29sb3I6ICAgICAgIHJnYmEoJGNvbXBvbmVudC1hY3RpdmUtYmcsIC4yNSkgIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLWZvY3VzLWJveC1zaGFkb3c6ICAwIDAgMCAkaW5wdXQtYnRuLWZvY3VzLXdpZHRoICRpbnB1dC1idG4tZm9jdXMtY29sb3IgIWRlZmF1bHQ7XG5cbiRpbnB1dC1idG4tcGFkZGluZy15LXNtOiAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tcGFkZGluZy14LXNtOiAgICAgIC41cmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1mb250LXNpemUtc206ICAgICAgJGZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tbGluZS1oZWlnaHQtc206ICAgICRsaW5lLWhlaWdodC1zbSAhZGVmYXVsdDtcblxuJGlucHV0LWJ0bi1wYWRkaW5nLXktbGc6ICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLXBhZGRpbmcteC1sZzogICAgICAxcmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1mb250LXNpemUtbGc6ICAgICAgJGZvbnQtc2l6ZS1sZyAhZGVmYXVsdDtcbiRpbnB1dC1idG4tbGluZS1oZWlnaHQtbGc6ICAgICRsaW5lLWhlaWdodC1sZyAhZGVmYXVsdDtcblxuJGlucHV0LWJ0bi1ib3JkZXItd2lkdGg6ICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcblxuXG4vLyBCdXR0b25zXG4vL1xuLy8gRm9yIGVhY2ggb2YgQm9vdHN0cmFwJ3MgYnV0dG9ucywgZGVmaW5lIHRleHQsIGJhY2tncm91bmQsIGFuZCBib3JkZXIgY29sb3IuXG5cbiRidG4tcGFkZGluZy15OiAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15ICFkZWZhdWx0O1xuJGJ0bi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kYnRuLWZvbnQtZmFtaWx5OiAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtZmFtaWx5ICFkZWZhdWx0O1xuJGJ0bi1mb250LXNpemU6ICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUgIWRlZmF1bHQ7XG4kYnRuLWxpbmUtaGVpZ2h0OiAgICAgICAgICAgICAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0ICFkZWZhdWx0O1xuJGJ0bi13aGl0ZS1zcGFjZTogICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDsgLy8gU2V0IHRvIGBub3dyYXBgIHRvIHByZXZlbnQgdGV4dCB3cmFwcGluZ1xuXG4kYnRuLXBhZGRpbmcteS1zbTogICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteS1zbSAhZGVmYXVsdDtcbiRidG4tcGFkZGluZy14LXNtOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy14LXNtICFkZWZhdWx0O1xuJGJ0bi1mb250LXNpemUtc206ICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUtc20gIWRlZmF1bHQ7XG4kYnRuLWxpbmUtaGVpZ2h0LXNtOiAgICAgICAgICAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0LXNtICFkZWZhdWx0O1xuXG4kYnRuLXBhZGRpbmcteS1sZzogICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteS1sZyAhZGVmYXVsdDtcbiRidG4tcGFkZGluZy14LWxnOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy14LWxnICFkZWZhdWx0O1xuJGJ0bi1mb250LXNpemUtbGc6ICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUtbGcgIWRlZmF1bHQ7XG4kYnRuLWxpbmUtaGVpZ2h0LWxnOiAgICAgICAgICAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0LWxnICFkZWZhdWx0O1xuXG4kYnRuLWJvcmRlci13aWR0aDogICAgICAgICAgICAkaW5wdXQtYnRuLWJvcmRlci13aWR0aCAhZGVmYXVsdDtcblxuJGJ0bi1mb250LXdlaWdodDogICAgICAgICAgICAgJGZvbnQtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcbiRidG4tYm94LXNoYWRvdzogICAgICAgICAgICAgIGluc2V0IDAgMXB4IDAgcmdiYSgkd2hpdGUsIC4xNSksIDAgMXB4IDFweCByZ2JhKCRibGFjaywgLjA3NSkgIWRlZmF1bHQ7XG4kYnRuLWZvY3VzLXdpZHRoOiAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvY3VzLXdpZHRoICFkZWZhdWx0O1xuJGJ0bi1mb2N1cy1ib3gtc2hhZG93OiAgICAgICAgJGlucHV0LWJ0bi1mb2N1cy1ib3gtc2hhZG93ICFkZWZhdWx0O1xuJGJ0bi1kaXNhYmxlZC1vcGFjaXR5OiAgICAgICAgLjY1ICFkZWZhdWx0O1xuJGJ0bi1hY3RpdmUtYm94LXNoYWRvdzogICAgICAgaW5zZXQgMCAzcHggNXB4IHJnYmEoJGJsYWNrLCAuMTI1KSAhZGVmYXVsdDtcblxuJGJ0bi1saW5rLWRpc2FibGVkLWNvbG9yOiAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kYnRuLWJsb2NrLXNwYWNpbmcteTogICAgICAgICAuNXJlbSAhZGVmYXVsdDtcblxuLy8gQWxsb3dzIGZvciBjdXN0b21pemluZyBidXR0b24gcmFkaXVzIGluZGVwZW5kZW50bHkgZnJvbSBnbG9iYWwgYm9yZGVyIHJhZGl1c1xuJGJ0bi1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kYnRuLWJvcmRlci1yYWRpdXMtbGc6ICAgICAgICAkYm9yZGVyLXJhZGl1cy1sZyAhZGVmYXVsdDtcbiRidG4tYm9yZGVyLXJhZGl1cy1zbTogICAgICAgICRib3JkZXItcmFkaXVzLXNtICFkZWZhdWx0O1xuXG4kYnRuLXRyYW5zaXRpb246ICAgICAgICAgICAgICBjb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cblxuLy8gRm9ybXNcblxuJGxhYmVsLW1hcmdpbi1ib3R0b206ICAgICAgICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuXG4kaW5wdXQtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXkgIWRlZmF1bHQ7XG4kaW5wdXQtcGFkZGluZy14OiAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kaW5wdXQtZm9udC1mYW1pbHk6ICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LWZhbWlseSAhZGVmYXVsdDtcbiRpbnB1dC1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRpbnB1dC1mb250LXdlaWdodDogICAgICAgICAgICAgICAgICAgICAkZm9udC13ZWlnaHQtYmFzZSAhZGVmYXVsdDtcbiRpbnB1dC1saW5lLWhlaWdodDogICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0ICFkZWZhdWx0O1xuXG4kaW5wdXQtcGFkZGluZy15LXNtOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXktc20gIWRlZmF1bHQ7XG4kaW5wdXQtcGFkZGluZy14LXNtOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXgtc20gIWRlZmF1bHQ7XG4kaW5wdXQtZm9udC1zaXplLXNtOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUtc20gIWRlZmF1bHQ7XG4kaW5wdXQtbGluZS1oZWlnaHQtc206ICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1saW5lLWhlaWdodC1zbSAhZGVmYXVsdDtcblxuJGlucHV0LXBhZGRpbmcteS1sZzogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15LWxnICFkZWZhdWx0O1xuJGlucHV0LXBhZGRpbmcteC1sZzogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy14LWxnICFkZWZhdWx0O1xuJGlucHV0LWZvbnQtc2l6ZS1sZzogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tZm9udC1zaXplLWxnICFkZWZhdWx0O1xuJGlucHV0LWxpbmUtaGVpZ2h0LWxnOiAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQtbGcgIWRlZmF1bHQ7XG5cbiRpbnB1dC1iZzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kaW5wdXQtZGlzYWJsZWQtYmc6ICAgICAgICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuXG4kaW5wdXQtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdyYXktNzAwICFkZWZhdWx0O1xuJGlucHV0LWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgICAgICRncmF5LTQwMCAhZGVmYXVsdDtcbiRpbnB1dC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRpbnB1dC1ib3gtc2hhZG93OiAgICAgICAgICAgICAgICAgICAgICBpbnNldCAwIDFweCAxcHggcmdiYSgkYmxhY2ssIC4wNzUpICFkZWZhdWx0O1xuXG4kaW5wdXQtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kaW5wdXQtYm9yZGVyLXJhZGl1cy1sZzogICAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMtbGcgIWRlZmF1bHQ7XG4kaW5wdXQtYm9yZGVyLXJhZGl1cy1zbTogICAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMtc20gIWRlZmF1bHQ7XG5cbiRpbnB1dC1mb2N1cy1iZzogICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYmcgIWRlZmF1bHQ7XG4kaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgbGlnaHRlbigkY29tcG9uZW50LWFjdGl2ZS1iZywgMjUlKSAhZGVmYXVsdDtcbiRpbnB1dC1mb2N1cy1jb2xvcjogICAgICAgICAgICAgICAgICAgICAkaW5wdXQtY29sb3IgIWRlZmF1bHQ7XG4kaW5wdXQtZm9jdXMtd2lkdGg6ICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb2N1cy13aWR0aCAhZGVmYXVsdDtcbiRpbnB1dC1mb2N1cy1ib3gtc2hhZG93OiAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvY3VzLWJveC1zaGFkb3cgIWRlZmF1bHQ7XG5cbiRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjogICAgICAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kaW5wdXQtcGxhaW50ZXh0LWNvbG9yOiAgICAgICAgICAgICAgICAgJGJvZHktY29sb3IgIWRlZmF1bHQ7XG5cbiRpbnB1dC1oZWlnaHQtYm9yZGVyOiAgICAgICAgICAgICAgICAgICAkaW5wdXQtYm9yZGVyLXdpZHRoICogMiAhZGVmYXVsdDtcblxuJGlucHV0LWhlaWdodC1pbm5lcjogICAgICAgICAgICAgICAgICAgIGFkZCgkaW5wdXQtbGluZS1oZWlnaHQgKiAxZW0sICRpbnB1dC1wYWRkaW5nLXkgKiAyKSAhZGVmYXVsdDtcbiRpbnB1dC1oZWlnaHQtaW5uZXItaGFsZjogICAgICAgICAgICAgICBhZGQoJGlucHV0LWxpbmUtaGVpZ2h0ICogLjVlbSwgJGlucHV0LXBhZGRpbmcteSkgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LWlubmVyLXF1YXJ0ZXI6ICAgICAgICAgICAgYWRkKCRpbnB1dC1saW5lLWhlaWdodCAqIC4yNWVtLCAkaW5wdXQtcGFkZGluZy15IC8gMikgIWRlZmF1bHQ7XG5cbiRpbnB1dC1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQoJGlucHV0LWxpbmUtaGVpZ2h0ICogMWVtLCBhZGQoJGlucHV0LXBhZGRpbmcteSAqIDIsICRpbnB1dC1oZWlnaHQtYm9yZGVyLCBmYWxzZSkpICFkZWZhdWx0O1xuJGlucHV0LWhlaWdodC1zbTogICAgICAgICAgICAgICAgICAgICAgIGFkZCgkaW5wdXQtbGluZS1oZWlnaHQtc20gKiAxZW0sIGFkZCgkaW5wdXQtcGFkZGluZy15LXNtICogMiwgJGlucHV0LWhlaWdodC1ib3JkZXIsIGZhbHNlKSkgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LWxnOiAgICAgICAgICAgICAgICAgICAgICAgYWRkKCRpbnB1dC1saW5lLWhlaWdodC1sZyAqIDFlbSwgYWRkKCRpbnB1dC1wYWRkaW5nLXktbGcgKiAyLCAkaW5wdXQtaGVpZ2h0LWJvcmRlciwgZmFsc2UpKSAhZGVmYXVsdDtcblxuJGlucHV0LXRyYW5zaXRpb246ICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cbiRmb3JtLXRleHQtbWFyZ2luLXRvcDogICAgICAgICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG5cbiRmb3JtLWNoZWNrLWlucHV0LWd1dHRlcjogICAgICAgICAgICAgICAxLjI1cmVtICFkZWZhdWx0O1xuJGZvcm0tY2hlY2staW5wdXQtbWFyZ2luLXk6ICAgICAgICAgICAgIC4zcmVtICFkZWZhdWx0O1xuJGZvcm0tY2hlY2staW5wdXQtbWFyZ2luLXg6ICAgICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcblxuJGZvcm0tY2hlY2staW5saW5lLW1hcmdpbi14OiAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLWlubGluZS1pbnB1dC1tYXJnaW4teDogICAgICAuMzEyNXJlbSAhZGVmYXVsdDtcblxuJGZvcm0tZ3JpZC1ndXR0ZXItd2lkdGg6ICAgICAgICAgICAgICAgIDEwcHggIWRlZmF1bHQ7XG4kZm9ybS1ncm91cC1tYXJnaW4tYm90dG9tOiAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcblxuJGlucHV0LWdyb3VwLWFkZG9uLWNvbG9yOiAgICAgICAgICAgICAgICRpbnB1dC1jb2xvciAhZGVmYXVsdDtcbiRpbnB1dC1ncm91cC1hZGRvbi1iZzogICAgICAgICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG4kaW5wdXQtZ3JvdXAtYWRkb24tYm9yZGVyLWNvbG9yOiAgICAgICAgJGlucHV0LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcblxuJGN1c3RvbS1mb3Jtcy10cmFuc2l0aW9uOiAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dCAhZGVmYXVsdDtcblxuJGN1c3RvbS1jb250cm9sLWd1dHRlcjogICAgICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLXNwYWNlci14OiAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtY3Vyc29yOiAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcblxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplOiAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnOiAgICAgICAgICAgJGlucHV0LWJnICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnLXNpemU6ICAgICAgNTAlIDUwJSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm94LXNoYWRvdzogICAkaW5wdXQtYm94LXNoYWRvdyAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm9yZGVyLWNvbG9yOiAkZ3JheS01MDAgIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJvcmRlci13aWR0aDogJGlucHV0LWJvcmRlci13aWR0aCAhZGVmYXVsdDtcblxuJGN1c3RvbS1jb250cm9sLWxhYmVsLWNvbG9yOiAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG5cbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItZGlzYWJsZWQtYmc6ICAgICAgICAgICRpbnB1dC1kaXNhYmxlZC1iZyAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1sYWJlbC1kaXNhYmxlZC1jb2xvcjogICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcblxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWNvbG9yOiAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtYmc6ICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1kaXNhYmxlZC1iZzogIHJnYmEodGhlbWUtY29sb3IoXCJwcmltYXJ5XCIpLCAuNSkgIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtYm94LXNoYWRvdzogICBub25lICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWJvcmRlci1jb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWJnICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWZvY3VzLWJveC1zaGFkb3c6ICAgICAkaW5wdXQtZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItZm9jdXMtYm9yZGVyLWNvbG9yOiAgICRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG5cbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYWN0aXZlLWNvbG9yOiAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1hY3RpdmUtYmc6ICAgICAgICAgICAgbGlnaHRlbigkY29tcG9uZW50LWFjdGl2ZS1iZywgMzUlKSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYWN0aXZlLWJveC1zaGFkb3c6ICAgIG5vbmUgIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1ib3JkZXItY29sb3I6ICAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1iZyAhZGVmYXVsdDtcblxuJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItYm9yZGVyLXJhZGl1czogICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pY29uLWNoZWNrZWQ6ICAgICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc4JyBoZWlnaHQ9JzgnIHZpZXdCb3g9JzAgMCA4IDgnPjxwYXRoIGZpbGw9JyN7JGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWNvbG9yfScgZD0nTTYuNTY0Ljc1bC0zLjU5IDMuNjEyLTEuNTM4LTEuNTVMMCA0LjI2bDIuOTc0IDIuOTlMOCAyLjE5M3onLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG5cbiRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWluZGV0ZXJtaW5hdGUtYmc6ICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWluZGV0ZXJtaW5hdGUtY29sb3I6ICAgICAgICAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtY29sb3IgIWRlZmF1bHQ7XG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pY29uLWluZGV0ZXJtaW5hdGU6ICAgICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nNCcgaGVpZ2h0PSc0JyB2aWV3Qm94PScwIDAgNCA0Jz48cGF0aCBzdHJva2U9JyN7JGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1jb2xvcn0nIGQ9J00wIDJoNCcvPjwvc3ZnPlwiKSAhZGVmYXVsdDtcbiRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWluZGV0ZXJtaW5hdGUtYm94LXNoYWRvdzogICBub25lICFkZWZhdWx0O1xuJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1ib3JkZXItY29sb3I6ICRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWluZGV0ZXJtaW5hdGUtYmcgIWRlZmF1bHQ7XG5cbiRjdXN0b20tcmFkaW8taW5kaWNhdG9yLWJvcmRlci1yYWRpdXM6ICAgICAgICAgIDUwJSAhZGVmYXVsdDtcbiRjdXN0b20tcmFkaW8taW5kaWNhdG9yLWljb24tY2hlY2tlZDogICAgICAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEyJyBoZWlnaHQ9JzEyJyB2aWV3Qm94PSctNCAtNCA4IDgnPjxjaXJjbGUgcj0nMycgZmlsbD0nI3skY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtY29sb3J9Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuXG4kY3VzdG9tLXN3aXRjaC13aWR0aDogICAgICAgICAgICAgICAgICAgICAgICAgICAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemUgKiAxLjc1ICFkZWZhdWx0O1xuJGN1c3RvbS1zd2l0Y2gtaW5kaWNhdG9yLWJvcmRlci1yYWRpdXM6ICAgICAgICAgJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplIC8gMiAhZGVmYXVsdDtcbiRjdXN0b20tc3dpdGNoLWluZGljYXRvci1zaXplOiAgICAgICAgICAgICAgICAgIHN1YnRyYWN0KCRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZSwgJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1ib3JkZXItd2lkdGggKiA0KSAhZGVmYXVsdDtcblxuJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15OiAgICAgICAgICAgJGlucHV0LXBhZGRpbmcteSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LXBhZGRpbmcteDogICAgICAgICAgICRpbnB1dC1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1mb250LWZhbWlseTogICAgICAgICAkaW5wdXQtZm9udC1mYW1pbHkgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1mb250LXNpemU6ICAgICAgICAgICAkaW5wdXQtZm9udC1zaXplICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtaGVpZ2h0OiAgICAgICAgICAgICAgJGlucHV0LWhlaWdodCAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWluZGljYXRvci1wYWRkaW5nOiAgIDFyZW0gIWRlZmF1bHQ7IC8vIEV4dHJhIHBhZGRpbmcgdG8gYWNjb3VudCBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSBiYWNrZ3JvdW5kLWltYWdlIGJhc2VkIGluZGljYXRvclxuJGN1c3RvbS1zZWxlY3QtZm9udC13ZWlnaHQ6ICAgICAgICAgJGlucHV0LWZvbnQtd2VpZ2h0ICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtbGluZS1oZWlnaHQ6ICAgICAgICAgJGlucHV0LWxpbmUtaGVpZ2h0ICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtY29sb3I6ICAgICAgICAgICAgICAgJGlucHV0LWNvbG9yICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtZGlzYWJsZWQtY29sb3I6ICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtYmc6ICAgICAgICAgICAgICAgICAgJGlucHV0LWJnICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtZGlzYWJsZWQtYmc6ICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtYmctc2l6ZTogICAgICAgICAgICAgOHB4IDEwcHggIWRlZmF1bHQ7IC8vIEluIHBpeGVscyBiZWNhdXNlIGltYWdlIGRpbWVuc2lvbnNcbiRjdXN0b20tc2VsZWN0LWluZGljYXRvci1jb2xvcjogICAgICRncmF5LTgwMCAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWluZGljYXRvcjogICAgICAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzQnIGhlaWdodD0nNScgdmlld0JveD0nMCAwIDQgNSc+PHBhdGggZmlsbD0nI3skY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3ItY29sb3J9JyBkPSdNMiAwTDAgMmg0em0wIDVMMCAzaDR6Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtYmFja2dyb3VuZDogICAgICAgICAgZXNjYXBlLXN2ZygkY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3IpIG5vLXJlcGVhdCByaWdodCAkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXggY2VudGVyIC8gJGN1c3RvbS1zZWxlY3QtYmctc2l6ZSAhZGVmYXVsdDsgLy8gVXNlZCBzbyB3ZSBjYW4gaGF2ZSBtdWx0aXBsZSBiYWNrZ3JvdW5kIGVsZW1lbnRzIChlLmcuLCBhcnJvdyBhbmQgZmVlZGJhY2sgaWNvbilcblxuJGN1c3RvbS1zZWxlY3QtZmVlZGJhY2staWNvbi1wYWRkaW5nLXJpZ2h0OiBhZGQoMWVtICogLjc1LCAoMiAqICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteSAqIC43NSkgKyAkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXggKyAkY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZykgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1mZWVkYmFjay1pY29uLXBvc2l0aW9uOiAgICAgIGNlbnRlciByaWdodCAoJGN1c3RvbS1zZWxlY3QtcGFkZGluZy14ICsgJGN1c3RvbS1zZWxlY3QtaW5kaWNhdG9yLXBhZGRpbmcpICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtZmVlZGJhY2staWNvbi1zaXplOiAgICAgICAgICAkaW5wdXQtaGVpZ2h0LWlubmVyLWhhbGYgJGlucHV0LWhlaWdodC1pbm5lci1oYWxmICFkZWZhdWx0O1xuXG4kY3VzdG9tLXNlbGVjdC1ib3JkZXItd2lkdGg6ICAgICAgICAkaW5wdXQtYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtYm9yZGVyLWNvbG9yOiAgICAgICAgJGlucHV0LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWJvcmRlci1yYWRpdXM6ICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtYm94LXNoYWRvdzogICAgICAgICAgaW5zZXQgMCAxcHggMnB4IHJnYmEoJGJsYWNrLCAuMDc1KSAhZGVmYXVsdDtcblxuJGN1c3RvbS1zZWxlY3QtZm9jdXMtYm9yZGVyLWNvbG9yOiAgJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWZvY3VzLXdpZHRoOiAgICAgICAgICRpbnB1dC1mb2N1cy13aWR0aCAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWZvY3VzLWJveC1zaGFkb3c6ICAgIDAgMCAwICRjdXN0b20tc2VsZWN0LWZvY3VzLXdpZHRoICRpbnB1dC1idG4tZm9jdXMtY29sb3IgIWRlZmF1bHQ7XG5cbiRjdXN0b20tc2VsZWN0LXBhZGRpbmcteS1zbTogICAgICAgICRpbnB1dC1wYWRkaW5nLXktc20gIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXgtc206ICAgICAgICAkaW5wdXQtcGFkZGluZy14LXNtICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtZm9udC1zaXplLXNtOiAgICAgICAgJGlucHV0LWZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWhlaWdodC1zbTogICAgICAgICAgICRpbnB1dC1oZWlnaHQtc20gIWRlZmF1bHQ7XG5cbiRjdXN0b20tc2VsZWN0LXBhZGRpbmcteS1sZzogICAgICAgICRpbnB1dC1wYWRkaW5nLXktbGcgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXgtbGc6ICAgICAgICAkaW5wdXQtcGFkZGluZy14LWxnICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtZm9udC1zaXplLWxnOiAgICAgICAgJGlucHV0LWZvbnQtc2l6ZS1sZyAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWhlaWdodC1sZzogICAgICAgICAgICRpbnB1dC1oZWlnaHQtbGcgIWRlZmF1bHQ7XG5cbiRjdXN0b20tcmFuZ2UtdHJhY2std2lkdGg6ICAgICAgICAgIDEwMCUgIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRyYWNrLWhlaWdodDogICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRjdXN0b20tcmFuZ2UtdHJhY2stY3Vyc29yOiAgICAgICAgIHBvaW50ZXIgIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRyYWNrLWJnOiAgICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRyYWNrLWJvcmRlci1yYWRpdXM6ICAxcmVtICFkZWZhdWx0O1xuJGN1c3RvbS1yYW5nZS10cmFjay1ib3gtc2hhZG93OiAgICAgaW5zZXQgMCAuMjVyZW0gLjI1cmVtIHJnYmEoJGJsYWNrLCAuMSkgIWRlZmF1bHQ7XG5cbiRjdXN0b20tcmFuZ2UtdGh1bWItd2lkdGg6ICAgICAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRodW1iLWhlaWdodDogICAgICAgICAgICAgICAgICAkY3VzdG9tLXJhbmdlLXRodW1iLXdpZHRoICFkZWZhdWx0O1xuJGN1c3RvbS1yYW5nZS10aHVtYi1iZzogICAgICAgICAgICAgICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRodW1iLWJvcmRlcjogICAgICAgICAgICAgICAgICAwICFkZWZhdWx0O1xuJGN1c3RvbS1yYW5nZS10aHVtYi1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRjdXN0b20tcmFuZ2UtdGh1bWItYm94LXNoYWRvdzogICAgICAgICAgICAgIDAgLjFyZW0gLjI1cmVtIHJnYmEoJGJsYWNrLCAuMSkgIWRlZmF1bHQ7XG4kY3VzdG9tLXJhbmdlLXRodW1iLWZvY3VzLWJveC1zaGFkb3c6ICAgICAgICAwIDAgMCAxcHggJGJvZHktYmcsICRpbnB1dC1mb2N1cy1ib3gtc2hhZG93ICFkZWZhdWx0O1xuJGN1c3RvbS1yYW5nZS10aHVtYi1mb2N1cy1ib3gtc2hhZG93LXdpZHRoOiAgJGlucHV0LWZvY3VzLXdpZHRoICFkZWZhdWx0OyAvLyBGb3IgZm9jdXMgYm94IHNoYWRvdyBpc3N1ZSBpbiBJRS9FZGdlXG4kY3VzdG9tLXJhbmdlLXRodW1iLWFjdGl2ZS1iZzogICAgICAgICAgICAgICBsaWdodGVuKCRjb21wb25lbnQtYWN0aXZlLWJnLCAzNSUpICFkZWZhdWx0O1xuJGN1c3RvbS1yYW5nZS10aHVtYi1kaXNhYmxlZC1iZzogICAgICAgICAgICAgJGdyYXktNTAwICFkZWZhdWx0O1xuXG4kY3VzdG9tLWZpbGUtaGVpZ2h0OiAgICAgICAgICAgICAgICAkaW5wdXQtaGVpZ2h0ICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWhlaWdodC1pbm5lcjogICAgICAgICAgJGlucHV0LWhlaWdodC1pbm5lciAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1mb2N1cy1ib3JkZXItY29sb3I6ICAgICRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtZm9jdXMtYm94LXNoYWRvdzogICAgICAkaW5wdXQtZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1kaXNhYmxlZC1iZzogICAgICAgICAgICRpbnB1dC1kaXNhYmxlZC1iZyAhZGVmYXVsdDtcblxuJGN1c3RvbS1maWxlLXBhZGRpbmcteTogICAgICAgICAgICAgJGlucHV0LXBhZGRpbmcteSAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1wYWRkaW5nLXg6ICAgICAgICAgICAgICRpbnB1dC1wYWRkaW5nLXggIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtbGluZS1oZWlnaHQ6ICAgICAgICAgICAkaW5wdXQtbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtZm9udC1mYW1pbHk6ICAgICAgICAgICAkaW5wdXQtZm9udC1mYW1pbHkgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtZm9udC13ZWlnaHQ6ICAgICAgICAgICAkaW5wdXQtZm9udC13ZWlnaHQgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtY29sb3I6ICAgICAgICAgICAgICAgICAkaW5wdXQtY29sb3IgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtYmc6ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYmcgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtYm9yZGVyLXdpZHRoOiAgICAgICAgICAkaW5wdXQtYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWJvcmRlci1jb2xvcjogICAgICAgICAgJGlucHV0LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1ib3JkZXItcmFkaXVzOiAgICAgICAgICRpbnB1dC1ib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWJveC1zaGFkb3c6ICAgICAgICAgICAgJGlucHV0LWJveC1zaGFkb3cgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtYnV0dG9uLWNvbG9yOiAgICAgICAgICAkY3VzdG9tLWZpbGUtY29sb3IgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtYnV0dG9uLWJnOiAgICAgICAgICAgICAkaW5wdXQtZ3JvdXAtYWRkb24tYmcgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtdGV4dDogKFxuICBlbjogXCJCcm93c2VcIlxuKSAhZGVmYXVsdDtcblxuXG4vLyBGb3JtIHZhbGlkYXRpb25cblxuJGZvcm0tZmVlZGJhY2stbWFyZ2luLXRvcDogICAgICAgICAgJGZvcm0tdGV4dC1tYXJnaW4tdG9wICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stZm9udC1zaXplOiAgICAgICAgICAgJHNtYWxsLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLXZhbGlkLWNvbG9yOiAgICAgICAgIHRoZW1lLWNvbG9yKFwic3VjY2Vzc1wiKSAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLWludmFsaWQtY29sb3I6ICAgICAgIHRoZW1lLWNvbG9yKFwiZGFuZ2VyXCIpICFkZWZhdWx0O1xuXG4kZm9ybS1mZWVkYmFjay1pY29uLXZhbGlkLWNvbG9yOiAgICAkZm9ybS1mZWVkYmFjay12YWxpZC1jb2xvciAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLWljb24tdmFsaWQ6ICAgICAgICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzgnIGhlaWdodD0nOCcgdmlld0JveD0nMCAwIDggOCc+PHBhdGggZmlsbD0nI3skZm9ybS1mZWVkYmFjay1pY29uLXZhbGlkLWNvbG9yfScgZD0nTTIuMyA2LjczTC42IDQuNTNjLS40LTEuMDQuNDYtMS40IDEuMS0uOGwxLjEgMS40IDMuNC0zLjhjLjYtLjYzIDEuNi0uMjcgMS4yLjdsLTQgNC42Yy0uNDMuNS0uOC40LTEuMS4xeicvPjwvc3ZnPlwiKSAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLWljb24taW52YWxpZC1jb2xvcjogICRmb3JtLWZlZWRiYWNrLWludmFsaWQtY29sb3IgIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay1pY29uLWludmFsaWQ6ICAgICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMicgaGVpZ2h0PScxMicgZmlsbD0nbm9uZScgc3Ryb2tlPScjeyRmb3JtLWZlZWRiYWNrLWljb24taW52YWxpZC1jb2xvcn0nIHZpZXdCb3g9JzAgMCAxMiAxMic+PGNpcmNsZSBjeD0nNicgY3k9JzYnIHI9JzQuNScvPjxwYXRoIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIGQ9J001LjggMy42aC40TDYgNi41eicvPjxjaXJjbGUgY3g9JzYnIGN5PSc4LjInIHI9Jy42JyBmaWxsPScjeyRmb3JtLWZlZWRiYWNrLWljb24taW52YWxpZC1jb2xvcn0nIHN0cm9rZT0nbm9uZScvPjwvc3ZnPlwiKSAhZGVmYXVsdDtcblxuJGZvcm0tdmFsaWRhdGlvbi1zdGF0ZXM6ICgpICFkZWZhdWx0O1xuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNjc3MvZG9sbGFyLXZhcmlhYmxlLWRlZmF1bHRcbiRmb3JtLXZhbGlkYXRpb24tc3RhdGVzOiBtYXAtbWVyZ2UoXG4gIChcbiAgICBcInZhbGlkXCI6IChcbiAgICAgIFwiY29sb3JcIjogJGZvcm0tZmVlZGJhY2stdmFsaWQtY29sb3IsXG4gICAgICBcImljb25cIjogJGZvcm0tZmVlZGJhY2staWNvbi12YWxpZFxuICAgICksXG4gICAgXCJpbnZhbGlkXCI6IChcbiAgICAgIFwiY29sb3JcIjogJGZvcm0tZmVlZGJhY2staW52YWxpZC1jb2xvcixcbiAgICAgIFwiaWNvblwiOiAkZm9ybS1mZWVkYmFjay1pY29uLWludmFsaWRcbiAgICApLFxuICApLFxuICAkZm9ybS12YWxpZGF0aW9uLXN0YXRlc1xuKTtcblxuLy8gWi1pbmRleCBtYXN0ZXIgbGlzdFxuLy9cbi8vIFdhcm5pbmc6IEF2b2lkIGN1c3RvbWl6aW5nIHRoZXNlIHZhbHVlcy4gVGhleSdyZSB1c2VkIGZvciBhIGJpcmQncyBleWUgdmlld1xuLy8gb2YgY29tcG9uZW50cyBkZXBlbmRlbnQgb24gdGhlIHotYXhpcyBhbmQgYXJlIGRlc2lnbmVkIHRvIGFsbCB3b3JrIHRvZ2V0aGVyLlxuXG4kemluZGV4LWRyb3Bkb3duOiAgICAgICAgICAgICAgICAgICAxMDAwICFkZWZhdWx0O1xuJHppbmRleC1zdGlja3k6ICAgICAgICAgICAgICAgICAgICAgMTAyMCAhZGVmYXVsdDtcbiR6aW5kZXgtZml4ZWQ6ICAgICAgICAgICAgICAgICAgICAgIDEwMzAgIWRlZmF1bHQ7XG4kemluZGV4LW1vZGFsLWJhY2tkcm9wOiAgICAgICAgICAgICAxMDQwICFkZWZhdWx0O1xuJHppbmRleC1tb2RhbDogICAgICAgICAgICAgICAgICAgICAgMTA1MCAhZGVmYXVsdDtcbiR6aW5kZXgtcG9wb3ZlcjogICAgICAgICAgICAgICAgICAgIDEwNjAgIWRlZmF1bHQ7XG4kemluZGV4LXRvb2x0aXA6ICAgICAgICAgICAgICAgICAgICAxMDcwICFkZWZhdWx0O1xuXG5cbi8vIE5hdnNcblxuJG5hdi1saW5rLXBhZGRpbmcteTogICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kbmF2LWxpbmstcGFkZGluZy14OiAgICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJG5hdi1saW5rLWRpc2FibGVkLWNvbG9yOiAgICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kbmF2LXRhYnMtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJG5hdi10YWJzLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6ICAkZ3JheS0yMDAgJGdyYXktMjAwICRuYXYtdGFicy1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtbGluay1hY3RpdmUtY29sb3I6ICAgICAgICAkZ3JheS03MDAgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtbGluay1hY3RpdmUtYmc6ICAgICAgICAgICAkYm9keS1iZyAhZGVmYXVsdDtcbiRuYXYtdGFicy1saW5rLWFjdGl2ZS1ib3JkZXItY29sb3I6ICRncmF5LTMwMCAkZ3JheS0zMDAgJG5hdi10YWJzLWxpbmstYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kbmF2LXBpbGxzLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRuYXYtcGlsbHMtbGluay1hY3RpdmUtY29sb3I6ICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJG5hdi1waWxscy1saW5rLWFjdGl2ZS1iZzogICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XG5cbiRuYXYtZGl2aWRlci1jb2xvcjogICAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRuYXYtZGl2aWRlci1tYXJnaW4teTogICAgICAgICAgICAgICRzcGFjZXIgLyAyICFkZWZhdWx0O1xuXG5cbi8vIE5hdmJhclxuXG4kbmF2YmFyLXBhZGRpbmcteTogICAgICAgICAgICAgICAgICAkc3BhY2VyIC8gMiAhZGVmYXVsdDtcbiRuYXZiYXItcGFkZGluZy14OiAgICAgICAgICAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XG5cbiRuYXZiYXItbmF2LWxpbmstcGFkZGluZy14OiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuXG4kbmF2YmFyLWJyYW5kLWZvbnQtc2l6ZTogICAgICAgICAgICAkZm9udC1zaXplLWxnICFkZWZhdWx0O1xuLy8gQ29tcHV0ZSB0aGUgbmF2YmFyLWJyYW5kIHBhZGRpbmcteSBzbyB0aGUgbmF2YmFyLWJyYW5kIHdpbGwgaGF2ZSB0aGUgc2FtZSBoZWlnaHQgYXMgbmF2YmFyLXRleHQgYW5kIG5hdi1saW5rXG4kbmF2LWxpbmstaGVpZ2h0OiAgICAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAkbGluZS1oZWlnaHQtYmFzZSArICRuYXYtbGluay1wYWRkaW5nLXkgKiAyICFkZWZhdWx0O1xuJG5hdmJhci1icmFuZC1oZWlnaHQ6ICAgICAgICAgICAgICAgJG5hdmJhci1icmFuZC1mb250LXNpemUgKiAkbGluZS1oZWlnaHQtYmFzZSAhZGVmYXVsdDtcbiRuYXZiYXItYnJhbmQtcGFkZGluZy15OiAgICAgICAgICAgICgkbmF2LWxpbmstaGVpZ2h0IC0gJG5hdmJhci1icmFuZC1oZWlnaHQpIC8gMiAhZGVmYXVsdDtcblxuJG5hdmJhci10b2dnbGVyLXBhZGRpbmcteTogICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJG5hdmJhci10b2dnbGVyLXBhZGRpbmcteDogICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJG5hdmJhci10b2dnbGVyLWZvbnQtc2l6ZTogICAgICAgICAgJGZvbnQtc2l6ZS1sZyAhZGVmYXVsdDtcbiRuYXZiYXItdG9nZ2xlci1ib3JkZXItcmFkaXVzOiAgICAgICRidG4tYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcblxuJG5hdmJhci1kYXJrLWNvbG9yOiAgICAgICAgICAgICAgICAgcmdiYSgkd2hpdGUsIC41KSAhZGVmYXVsdDtcbiRuYXZiYXItZGFyay1ob3Zlci1jb2xvcjogICAgICAgICAgIHJnYmEoJHdoaXRlLCAuNzUpICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLWFjdGl2ZS1jb2xvcjogICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLWRpc2FibGVkLWNvbG9yOiAgICAgICAgcmdiYSgkd2hpdGUsIC4yNSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstdG9nZ2xlci1pY29uLWJnOiAgICAgICB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSczMCcgaGVpZ2h0PSczMCcgdmlld0JveD0nMCAwIDMwIDMwJz48cGF0aCBzdHJva2U9JyN7JG5hdmJhci1kYXJrLWNvbG9yfScgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbWl0ZXJsaW1pdD0nMTAnIHN0cm9rZS13aWR0aD0nMicgZD0nTTQgN2gyMk00IDE1aDIyTTQgMjNoMjInLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstdG9nZ2xlci1ib3JkZXItY29sb3I6ICByZ2JhKCR3aGl0ZSwgLjEpICFkZWZhdWx0O1xuXG4kbmF2YmFyLWxpZ2h0LWNvbG9yOiAgICAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjUpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1ob3Zlci1jb2xvcjogICAgICAgICAgcmdiYSgkYmxhY2ssIC43KSAhZGVmYXVsdDtcbiRuYXZiYXItbGlnaHQtYWN0aXZlLWNvbG9yOiAgICAgICAgIHJnYmEoJGJsYWNrLCAuOSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWxpZ2h0LWRpc2FibGVkLWNvbG9yOiAgICAgICByZ2JhKCRibGFjaywgLjMpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC10b2dnbGVyLWljb24tYmc6ICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMzAnIGhlaWdodD0nMzAnIHZpZXdCb3g9JzAgMCAzMCAzMCc+PHBhdGggc3Ryb2tlPScjeyRuYXZiYXItbGlnaHQtY29sb3J9JyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgc3Ryb2tlLXdpZHRoPScyJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvPjwvc3ZnPlwiKSAhZGVmYXVsdDtcbiRuYXZiYXItbGlnaHQtdG9nZ2xlci1ib3JkZXItY29sb3I6IHJnYmEoJGJsYWNrLCAuMSkgIWRlZmF1bHQ7XG5cbiRuYXZiYXItbGlnaHQtYnJhbmQtY29sb3I6ICAgICAgICAgICAgICAgICRuYXZiYXItbGlnaHQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1icmFuZC1ob3Zlci1jb2xvcjogICAgICAgICAgJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstYnJhbmQtY29sb3I6ICAgICAgICAgICAgICAgICAkbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLWJyYW5kLWhvdmVyLWNvbG9yOiAgICAgICAgICAgJG5hdmJhci1kYXJrLWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcblxuXG4vLyBEcm9wZG93bnNcbi8vXG4vLyBEcm9wZG93biBtZW51IGNvbnRhaW5lciBhbmQgY29udGVudHMuXG5cbiRkcm9wZG93bi1taW4td2lkdGg6ICAgICAgICAgICAgICAgIDEwcmVtICFkZWZhdWx0O1xuJGRyb3Bkb3duLXBhZGRpbmcteTogICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24tc3BhY2VyOiAgICAgICAgICAgICAgICAgICAuMTI1cmVtICFkZWZhdWx0O1xuJGRyb3Bkb3duLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICFkZWZhdWx0O1xuJGRyb3Bkb3duLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgJGJvZHktY29sb3IgIWRlZmF1bHQ7XG4kZHJvcGRvd24tYmc6ICAgICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kZHJvcGRvd24tYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjE1KSAhZGVmYXVsdDtcbiRkcm9wZG93bi1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJGRyb3Bkb3duLWJvcmRlci13aWR0aDogICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRkcm9wZG93bi1pbm5lci1ib3JkZXItcmFkaXVzOiAgICAgIHN1YnRyYWN0KCRkcm9wZG93bi1ib3JkZXItcmFkaXVzLCAkZHJvcGRvd24tYm9yZGVyLXdpZHRoKSAhZGVmYXVsdDtcbiRkcm9wZG93bi1kaXZpZGVyLWJnOiAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRkcm9wZG93bi1kaXZpZGVyLW1hcmdpbi15OiAgICAgICAgICRuYXYtZGl2aWRlci1tYXJnaW4teSAhZGVmYXVsdDtcbiRkcm9wZG93bi1ib3gtc2hhZG93OiAgICAgICAgICAgICAgIDAgLjVyZW0gMXJlbSByZ2JhKCRibGFjaywgLjE3NSkgIWRlZmF1bHQ7XG5cbiRkcm9wZG93bi1saW5rLWNvbG9yOiAgICAgICAgICAgICAgICRncmF5LTkwMCAhZGVmYXVsdDtcbiRkcm9wZG93bi1saW5rLWhvdmVyLWNvbG9yOiAgICAgICAgIGRhcmtlbigkZ3JheS05MDAsIDUlKSAhZGVmYXVsdDtcbiRkcm9wZG93bi1saW5rLWhvdmVyLWJnOiAgICAgICAgICAgICRncmF5LTEwMCAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWxpbmstYWN0aXZlLWNvbG9yOiAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XG4kZHJvcGRvd24tbGluay1hY3RpdmUtYmc6ICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWxpbmstZGlzYWJsZWQtY29sb3I6ICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kZHJvcGRvd24taXRlbS1wYWRkaW5nLXk6ICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24taXRlbS1wYWRkaW5nLXg6ICAgICAgICAgICAxLjVyZW0gIWRlZmF1bHQ7XG5cbiRkcm9wZG93bi1oZWFkZXItY29sb3I6ICAgICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcblxuXG4vLyBQYWdpbmF0aW9uXG5cbiRwYWdpbmF0aW9uLXBhZGRpbmcteTogICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy14OiAgICAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy15LXNtOiAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy14LXNtOiAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1wYWRkaW5nLXktbGc6ICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1wYWRkaW5nLXgtbGc6ICAgICAgICAgICAxLjVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1saW5lLWhlaWdodDogICAgICAgICAgICAxLjI1ICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi1jb2xvcjogICAgICAgICAgICAgICAgICAkbGluay1jb2xvciAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJnOiAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJvcmRlci13aWR0aDogICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1ib3JkZXItY29sb3I6ICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWZvY3VzLWJveC1zaGFkb3c6ICAgICAgICRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWZvY3VzLW91dGxpbmU6ICAgICAgICAgIDAgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWhvdmVyLWNvbG9yOiAgICAgICAgICAgICRsaW5rLWhvdmVyLWNvbG9yICFkZWZhdWx0O1xuJHBhZ2luYXRpb24taG92ZXItYmc6ICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJHBhZ2luYXRpb24taG92ZXItYm9yZGVyLWNvbG9yOiAgICAgJGdyYXktMzAwICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi1hY3RpdmUtY29sb3I6ICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWFjdGl2ZS1iZzogICAgICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tYWN0aXZlLWJvcmRlci1jb2xvcjogICAgJHBhZ2luYXRpb24tYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1jb2xvcjogICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1iZzogICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICAkZ3JheS0zMDAgIWRlZmF1bHQ7XG5cblxuLy8gSnVtYm90cm9uXG5cbiRqdW1ib3Ryb24tcGFkZGluZzogICAgICAgICAgICAgICAgIDJyZW0gIWRlZmF1bHQ7XG4kanVtYm90cm9uLWNvbG9yOiAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGp1bWJvdHJvbi1iZzogICAgICAgICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuXG5cbi8vIENhcmRzXG5cbiRjYXJkLXNwYWNlci15OiAgICAgICAgICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRjYXJkLXNwYWNlci14OiAgICAgICAgICAgICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XG4kY2FyZC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGNhcmQtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kY2FyZC1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjEyNSkgIWRlZmF1bHQ7XG4kY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzOiAgICAgICAgICBzdWJ0cmFjdCgkY2FyZC1ib3JkZXItcmFkaXVzLCAkY2FyZC1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJGNhcmQtY2FwLWJnOiAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgkYmxhY2ssIC4wMykgIWRlZmF1bHQ7XG4kY2FyZC1jYXAtY29sb3I6ICAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGNhcmQtaGVpZ2h0OiAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcbiRjYXJkLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kY2FyZC1iZzogICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG5cbiRjYXJkLWltZy1vdmVybGF5LXBhZGRpbmc6ICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XG5cbiRjYXJkLWdyb3VwLW1hcmdpbjogICAgICAgICAgICAgICAgICRncmlkLWd1dHRlci13aWR0aCAvIDIgIWRlZmF1bHQ7XG4kY2FyZC1kZWNrLW1hcmdpbjogICAgICAgICAgICAgICAgICAkY2FyZC1ncm91cC1tYXJnaW4gIWRlZmF1bHQ7XG5cbiRjYXJkLWNvbHVtbnMtY291bnQ6ICAgICAgICAgICAgICAgIDMgIWRlZmF1bHQ7XG4kY2FyZC1jb2x1bW5zLWdhcDogICAgICAgICAgICAgICAgICAxLjI1cmVtICFkZWZhdWx0O1xuJGNhcmQtY29sdW1ucy1tYXJnaW46ICAgICAgICAgICAgICAgJGNhcmQtc3BhY2VyLXkgIWRlZmF1bHQ7XG5cblxuLy8gVG9vbHRpcHNcblxuJHRvb2x0aXAtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcbiR0b29sdGlwLW1heC13aWR0aDogICAgICAgICAgICAgICAgIDIwMHB4ICFkZWZhdWx0O1xuJHRvb2x0aXAtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJHRvb2x0aXAtYmc6ICAgICAgICAgICAgICAgICAgICAgICAgJGJsYWNrICFkZWZhdWx0O1xuJHRvb2x0aXAtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kdG9vbHRpcC1vcGFjaXR5OiAgICAgICAgICAgICAgICAgICAuOSAhZGVmYXVsdDtcbiR0b29sdGlwLXBhZGRpbmcteTogICAgICAgICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiR0b29sdGlwLXBhZGRpbmcteDogICAgICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJHRvb2x0aXAtbWFyZ2luOiAgICAgICAgICAgICAgICAgICAgMCAhZGVmYXVsdDtcblxuJHRvb2x0aXAtYXJyb3ctd2lkdGg6ICAgICAgICAgICAgICAgLjhyZW0gIWRlZmF1bHQ7XG4kdG9vbHRpcC1hcnJvdy1oZWlnaHQ6ICAgICAgICAgICAgICAuNHJlbSAhZGVmYXVsdDtcbiR0b29sdGlwLWFycm93LWNvbG9yOiAgICAgICAgICAgICAgICR0b29sdGlwLWJnICFkZWZhdWx0O1xuXG4vLyBGb3JtIHRvb2x0aXBzIG11c3QgY29tZSBhZnRlciByZWd1bGFyIHRvb2x0aXBzXG4kZm9ybS1mZWVkYmFjay10b29sdGlwLXBhZGRpbmcteTogICAgICR0b29sdGlwLXBhZGRpbmcteSAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtcGFkZGluZy14OiAgICAgJHRvb2x0aXAtcGFkZGluZy14ICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1mb250LXNpemU6ICAgICAkdG9vbHRpcC1mb250LXNpemUgIWRlZmF1bHQ7XG4kZm9ybS1mZWVkYmFjay10b29sdGlwLWxpbmUtaGVpZ2h0OiAgICRsaW5lLWhlaWdodC1iYXNlICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1vcGFjaXR5OiAgICAgICAkdG9vbHRpcC1vcGFjaXR5ICFkZWZhdWx0O1xuJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1ib3JkZXItcmFkaXVzOiAkdG9vbHRpcC1ib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuXG5cbi8vIFBvcG92ZXJzXG5cbiRwb3BvdmVyLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICRmb250LXNpemUtc20gIWRlZmF1bHQ7XG4kcG9wb3Zlci1iZzogICAgICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kcG9wb3Zlci1tYXgtd2lkdGg6ICAgICAgICAgICAgICAgICAyNzZweCAhZGVmYXVsdDtcbiRwb3BvdmVyLWJvcmRlci13aWR0aDogICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjIpICFkZWZhdWx0O1xuJHBvcG92ZXItYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMtbGcgIWRlZmF1bHQ7XG4kcG9wb3Zlci1pbm5lci1ib3JkZXItcmFkaXVzOiAgICAgICBzdWJ0cmFjdCgkcG9wb3Zlci1ib3JkZXItcmFkaXVzLCAkcG9wb3Zlci1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xuJHBvcG92ZXItYm94LXNoYWRvdzogICAgICAgICAgICAgICAgMCAuMjVyZW0gLjVyZW0gcmdiYSgkYmxhY2ssIC4yKSAhZGVmYXVsdDtcblxuJHBvcG92ZXItaGVhZGVyLWJnOiAgICAgICAgICAgICAgICAgZGFya2VuKCRwb3BvdmVyLWJnLCAzJSkgIWRlZmF1bHQ7XG4kcG9wb3Zlci1oZWFkZXItY29sb3I6ICAgICAgICAgICAgICAkaGVhZGluZ3MtY29sb3IgIWRlZmF1bHQ7XG4kcG9wb3Zlci1oZWFkZXItcGFkZGluZy15OiAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRwb3BvdmVyLWhlYWRlci1wYWRkaW5nLXg6ICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcblxuJHBvcG92ZXItYm9keS1jb2xvcjogICAgICAgICAgICAgICAgJGJvZHktY29sb3IgIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib2R5LXBhZGRpbmcteTogICAgICAgICAgICAkcG9wb3Zlci1oZWFkZXItcGFkZGluZy15ICFkZWZhdWx0O1xuJHBvcG92ZXItYm9keS1wYWRkaW5nLXg6ICAgICAgICAgICAgJHBvcG92ZXItaGVhZGVyLXBhZGRpbmcteCAhZGVmYXVsdDtcblxuJHBvcG92ZXItYXJyb3ctd2lkdGg6ICAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRwb3BvdmVyLWFycm93LWhlaWdodDogICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJHBvcG92ZXItYXJyb3ctY29sb3I6ICAgICAgICAgICAgICAgJHBvcG92ZXItYmcgIWRlZmF1bHQ7XG5cbiRwb3BvdmVyLWFycm93LW91dGVyLWNvbG9yOiAgICAgICAgIGZhZGUtaW4oJHBvcG92ZXItYm9yZGVyLWNvbG9yLCAuMDUpICFkZWZhdWx0O1xuXG5cbi8vIFRvYXN0c1xuXG4kdG9hc3QtbWF4LXdpZHRoOiAgICAgICAgICAgICAgICAgICAzNTBweCAhZGVmYXVsdDtcbiR0b2FzdC1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiR0b2FzdC1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiR0b2FzdC1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgIC44NzVyZW0gIWRlZmF1bHQ7XG4kdG9hc3QtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJHRvYXN0LWJhY2tncm91bmQtY29sb3I6ICAgICAgICAgICAgcmdiYSgkd2hpdGUsIC44NSkgIWRlZmF1bHQ7XG4kdG9hc3QtYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgICAxcHggIWRlZmF1bHQ7XG4kdG9hc3QtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICByZ2JhKDAsIDAsIDAsIC4xKSAhZGVmYXVsdDtcbiR0b2FzdC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiR0b2FzdC1ib3gtc2hhZG93OiAgICAgICAgICAgICAgICAgIDAgLjI1cmVtIC43NXJlbSByZ2JhKCRibGFjaywgLjEpICFkZWZhdWx0O1xuXG4kdG9hc3QtaGVhZGVyLWNvbG9yOiAgICAgICAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kdG9hc3QtaGVhZGVyLWJhY2tncm91bmQtY29sb3I6ICAgICByZ2JhKCR3aGl0ZSwgLjg1KSAhZGVmYXVsdDtcbiR0b2FzdC1oZWFkZXItYm9yZGVyLWNvbG9yOiAgICAgICAgIHJnYmEoMCwgMCwgMCwgLjA1KSAhZGVmYXVsdDtcblxuXG4vLyBCYWRnZXNcblxuJGJhZGdlLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICAgNzUlICFkZWZhdWx0O1xuJGJhZGdlLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICAgICAgJGZvbnQtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG4kYmFkZ2UtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICAuMjVlbSAhZGVmYXVsdDtcbiRiYWRnZS1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgIC40ZW0gIWRlZmF1bHQ7XG4kYmFkZ2UtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcblxuJGJhZGdlLXRyYW5zaXRpb246ICAgICAgICAgICAgICAgICAgJGJ0bi10cmFuc2l0aW9uICFkZWZhdWx0O1xuJGJhZGdlLWZvY3VzLXdpZHRoOiAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb2N1cy13aWR0aCAhZGVmYXVsdDtcblxuJGJhZGdlLXBpbGwtcGFkZGluZy14OiAgICAgICAgICAgICAgLjZlbSAhZGVmYXVsdDtcbi8vIFVzZSBhIGhpZ2hlciB0aGFuIG5vcm1hbCB2YWx1ZSB0byBlbnN1cmUgY29tcGxldGVseSByb3VuZGVkIGVkZ2VzIHdoZW5cbi8vIGN1c3RvbWl6aW5nIHBhZGRpbmcgb3IgZm9udC1zaXplIG9uIGxhYmVscy5cbiRiYWRnZS1waWxsLWJvcmRlci1yYWRpdXM6ICAgICAgICAgIDEwcmVtICFkZWZhdWx0O1xuXG5cbi8vIE1vZGFsc1xuXG4vLyBQYWRkaW5nIGFwcGxpZWQgdG8gdGhlIG1vZGFsIGJvZHlcbiRtb2RhbC1pbm5lci1wYWRkaW5nOiAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG5cbi8vIE1hcmdpbiBiZXR3ZWVuIGVsZW1lbnRzIGluIGZvb3RlciwgbXVzdCBiZSBsb3dlciB0aGFuIG9yIGVxdWFsIHRvIDIgKiAkbW9kYWwtaW5uZXItcGFkZGluZ1xuJG1vZGFsLWZvb3Rlci1tYXJnaW4tYmV0d2VlbjogICAgICAgLjVyZW0gIWRlZmF1bHQ7XG5cbiRtb2RhbC1kaWFsb2ctbWFyZ2luOiAgICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xuJG1vZGFsLWRpYWxvZy1tYXJnaW4teS1zbS11cDogICAgICAgMS43NXJlbSAhZGVmYXVsdDtcblxuJG1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0OiAgICAgICAgICAgJGxpbmUtaGVpZ2h0LWJhc2UgIWRlZmF1bHQ7XG5cbiRtb2RhbC1jb250ZW50LWNvbG9yOiAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XG4kbW9kYWwtY29udGVudC1iZzogICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kbW9kYWwtY29udGVudC1ib3JkZXItY29sb3I6ICAgICAgICByZ2JhKCRibGFjaywgLjIpICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXdpZHRoOiAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJvcmRlci1yYWRpdXM6ICAgICAgICRib3JkZXItcmFkaXVzLWxnICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtaW5uZXItYm9yZGVyLXJhZGl1czogc3VidHJhY3QoJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXJhZGl1cywgJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXdpZHRoKSAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJveC1zaGFkb3cteHM6ICAgICAgIDAgLjI1cmVtIC41cmVtIHJnYmEoJGJsYWNrLCAuNSkgIWRlZmF1bHQ7XG4kbW9kYWwtY29udGVudC1ib3gtc2hhZG93LXNtLXVwOiAgICAwIC41cmVtIDFyZW0gcmdiYSgkYmxhY2ssIC41KSAhZGVmYXVsdDtcblxuJG1vZGFsLWJhY2tkcm9wLWJnOiAgICAgICAgICAgICAgICAgJGJsYWNrICFkZWZhdWx0O1xuJG1vZGFsLWJhY2tkcm9wLW9wYWNpdHk6ICAgICAgICAgICAgLjUgIWRlZmF1bHQ7XG4kbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcjogICAgICAgICAkYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJG1vZGFsLWZvb3Rlci1ib3JkZXItY29sb3I6ICAgICAgICAgJG1vZGFsLWhlYWRlci1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG4kbW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aDogICAgICAgICAkbW9kYWwtY29udGVudC1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kbW9kYWwtZm9vdGVyLWJvcmRlci13aWR0aDogICAgICAgICAkbW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRtb2RhbC1oZWFkZXItcGFkZGluZy15OiAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kbW9kYWwtaGVhZGVyLXBhZGRpbmcteDogICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJG1vZGFsLWhlYWRlci1wYWRkaW5nOiAgICAgICAgICAgICAgJG1vZGFsLWhlYWRlci1wYWRkaW5nLXkgJG1vZGFsLWhlYWRlci1wYWRkaW5nLXggIWRlZmF1bHQ7IC8vIEtlZXAgdGhpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuJG1vZGFsLXhsOiAgICAgICAgICAgICAgICAgICAgICAgICAgMTE0MHB4ICFkZWZhdWx0O1xuJG1vZGFsLWxnOiAgICAgICAgICAgICAgICAgICAgICAgICAgODAwcHggIWRlZmF1bHQ7XG4kbW9kYWwtbWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICA1MDBweCAhZGVmYXVsdDtcbiRtb2RhbC1zbTogICAgICAgICAgICAgICAgICAgICAgICAgIDMwMHB4ICFkZWZhdWx0O1xuXG4kbW9kYWwtZmFkZS10cmFuc2Zvcm06ICAgICAgICAgICAgICB0cmFuc2xhdGUoMCwgLTUwcHgpICFkZWZhdWx0O1xuJG1vZGFsLXNob3ctdHJhbnNmb3JtOiAgICAgICAgICAgICAgbm9uZSAhZGVmYXVsdDtcbiRtb2RhbC10cmFuc2l0aW9uOiAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybSAuM3MgZWFzZS1vdXQgIWRlZmF1bHQ7XG4kbW9kYWwtc2NhbGUtdHJhbnNmb3JtOiAgICAgICAgICAgICBzY2FsZSgxLjAyKSAhZGVmYXVsdDtcblxuXG4vLyBBbGVydHNcbi8vXG4vLyBEZWZpbmUgYWxlcnQgY29sb3JzLCBib3JkZXIgcmFkaXVzLCBhbmQgcGFkZGluZy5cblxuJGFsZXJ0LXBhZGRpbmcteTogICAgICAgICAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJGFsZXJ0LXBhZGRpbmcteDogICAgICAgICAgICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcbiRhbGVydC1tYXJnaW4tYm90dG9tOiAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG4kYWxlcnQtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRhbGVydC1saW5rLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xuJGFsZXJ0LWJvcmRlci13aWR0aDogICAgICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcblxuJGFsZXJ0LWJnLWxldmVsOiAgICAgICAgICAgICAgICAgICAgLTEwICFkZWZhdWx0O1xuJGFsZXJ0LWJvcmRlci1sZXZlbDogICAgICAgICAgICAgICAgLTkgIWRlZmF1bHQ7XG4kYWxlcnQtY29sb3ItbGV2ZWw6ICAgICAgICAgICAgICAgICA2ICFkZWZhdWx0O1xuXG5cbi8vIFByb2dyZXNzIGJhcnNcblxuJHByb2dyZXNzLWhlaWdodDogICAgICAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRwcm9ncmVzcy1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIC43NSAhZGVmYXVsdDtcbiRwcm9ncmVzcy1iZzogICAgICAgICAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRwcm9ncmVzcy1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJHByb2dyZXNzLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgaW5zZXQgMCAuMXJlbSAuMXJlbSByZ2JhKCRibGFjaywgLjEpICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci1jb2xvcjogICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci1iZzogICAgICAgICAgICAgICAgICAgdGhlbWUtY29sb3IoXCJwcmltYXJ5XCIpICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci1hbmltYXRpb24tdGltaW5nOiAgICAgMXMgbGluZWFyIGluZmluaXRlICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci10cmFuc2l0aW9uOiAgICAgICAgICAgd2lkdGggLjZzIGVhc2UgIWRlZmF1bHQ7XG5cblxuLy8gTGlzdCBncm91cFxuXG4kbGlzdC1ncm91cC1jb2xvcjogICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYmc6ICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgcmdiYSgkYmxhY2ssIC4xMjUpICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoOiAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuXG4kbGlzdC1ncm91cC1pdGVtLXBhZGRpbmcteTogICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1pdGVtLXBhZGRpbmcteDogICAgICAgICAxLjI1cmVtICFkZWZhdWx0O1xuXG4kbGlzdC1ncm91cC1ob3Zlci1iZzogICAgICAgICAgICAgICAkZ3JheS0xMDAgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1hY3RpdmUtY29sb3I6ICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWFjdGl2ZS1iZzogICAgICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYWN0aXZlLWJvcmRlci1jb2xvcjogICAgJGxpc3QtZ3JvdXAtYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kbGlzdC1ncm91cC1kaXNhYmxlZC1jb2xvcjogICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1kaXNhYmxlZC1iZzogICAgICAgICAgICAkbGlzdC1ncm91cC1iZyAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtYWN0aW9uLWNvbG9yOiAgICAgICAgICAgJGdyYXktNzAwICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWNvbG9yOiAgICAgJGxpc3QtZ3JvdXAtYWN0aW9uLWNvbG9yICFkZWZhdWx0O1xuXG4kbGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWNvbG9yOiAgICAkYm9keS1jb2xvciAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtYmc6ICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcblxuXG4vLyBJbWFnZSB0aHVtYm5haWxzXG5cbiR0aHVtYm5haWwtcGFkZGluZzogICAgICAgICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiR0aHVtYm5haWwtYmc6ICAgICAgICAgICAgICAgICAgICAgICRib2R5LWJnICFkZWZhdWx0O1xuJHRodW1ibmFpbC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiR0aHVtYm5haWwtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICRncmF5LTMwMCAhZGVmYXVsdDtcbiR0aHVtYm5haWwtYm9yZGVyLXJhZGl1czogICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJHRodW1ibmFpbC1ib3gtc2hhZG93OiAgICAgICAgICAgICAgMCAxcHggMnB4IHJnYmEoJGJsYWNrLCAuMDc1KSAhZGVmYXVsdDtcblxuXG4vLyBGaWd1cmVzXG5cbiRmaWd1cmUtY2FwdGlvbi1mb250LXNpemU6ICAgICAgICAgIDkwJSAhZGVmYXVsdDtcbiRmaWd1cmUtY2FwdGlvbi1jb2xvcjogICAgICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcblxuXG4vLyBCcmVhZGNydW1ic1xuXG4kYnJlYWRjcnVtYi1mb250LXNpemU6ICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xuXG4kYnJlYWRjcnVtYi1wYWRkaW5nLXk6ICAgICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItaXRlbS1wYWRkaW5nOiAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG5cbiRicmVhZGNydW1iLW1hcmdpbi1ib3R0b206ICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XG5cbiRicmVhZGNydW1iLWJnOiAgICAgICAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRicmVhZGNydW1iLWRpdmlkZXItY29sb3I6ICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiRicmVhZGNydW1iLWFjdGl2ZS1jb2xvcjogICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiRicmVhZGNydW1iLWRpdmlkZXI6ICAgICAgICAgICAgICAgIHF1b3RlKFwiL1wiKSAhZGVmYXVsdDtcblxuJGJyZWFkY3J1bWItYm9yZGVyLXJhZGl1czogICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG5cblxuLy8gQ2Fyb3VzZWxcblxuJGNhcm91c2VsLWNvbnRyb2wtY29sb3I6ICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jb250cm9sLXdpZHRoOiAgICAgICAgICAgICAxNSUgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC1vcGFjaXR5OiAgICAgICAgICAgLjUgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC1ob3Zlci1vcGFjaXR5OiAgICAgLjkgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC10cmFuc2l0aW9uOiAgICAgICAgb3BhY2l0eSAuMTVzIGVhc2UgIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC1pbmRpY2F0b3Itd2lkdGg6ICAgICAgICAgICAzMHB4ICFkZWZhdWx0O1xuJGNhcm91c2VsLWluZGljYXRvci1oZWlnaHQ6ICAgICAgICAgIDNweCAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3ItaGl0LWFyZWEtaGVpZ2h0OiAxMHB4ICFkZWZhdWx0O1xuJGNhcm91c2VsLWluZGljYXRvci1zcGFjZXI6ICAgICAgICAgIDNweCAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3ItYWN0aXZlLWJnOiAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtaW5kaWNhdG9yLXRyYW5zaXRpb246ICAgICAgb3BhY2l0eSAuNnMgZWFzZSAhZGVmYXVsdDtcblxuJGNhcm91c2VsLWNhcHRpb24td2lkdGg6ICAgICAgICAgICAgIDcwJSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jYXB0aW9uLWNvbG9yOiAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC1jb250cm9sLWljb24td2lkdGg6ICAgICAgICAyMHB4ICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24tYmc6ICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPScjeyRjYXJvdXNlbC1jb250cm9sLWNvbG9yfScgd2lkdGg9JzgnIGhlaWdodD0nOCcgdmlld0JveD0nMCAwIDggOCc+PHBhdGggZD0nTTUuMjUgMGwtNCA0IDQgNCAxLjUtMS41TDQuMjUgNGwyLjUtMi41TDUuMjUgMHonLz48L3N2Zz5cIikgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24tYmc6ICAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPScjeyRjYXJvdXNlbC1jb250cm9sLWNvbG9yfScgd2lkdGg9JzgnIGhlaWdodD0nOCcgdmlld0JveD0nMCAwIDggOCc+PHBhdGggZD0nTTIuNzUgMGwtMS41IDEuNUwzLjc1IDRsLTIuNSAyLjVMMi43NSA4bDQtNC00LTR6Jy8+PC9zdmc+XCIpICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtdHJhbnNpdGlvbi1kdXJhdGlvbjogICAgICAgLjZzICFkZWZhdWx0O1xuJGNhcm91c2VsLXRyYW5zaXRpb246ICAgICAgICAgICAgICAgIHRyYW5zZm9ybSAkY2Fyb3VzZWwtdHJhbnNpdGlvbi1kdXJhdGlvbiBlYXNlLWluLW91dCAhZGVmYXVsdDsgLy8gRGVmaW5lIHRyYW5zZm9ybSB0cmFuc2l0aW9uIGZpcnN0IGlmIHVzaW5nIG11bHRpcGxlIHRyYW5zaXRpb25zIChlLmcuLCBgdHJhbnNmb3JtIDJzIGVhc2UsIG9wYWNpdHkgLjVzIGVhc2Utb3V0YClcblxuXG4vLyBTcGlubmVyc1xuXG4kc3Bpbm5lci13aWR0aDogICAgICAgICAycmVtICFkZWZhdWx0O1xuJHNwaW5uZXItaGVpZ2h0OiAgICAgICAgJHNwaW5uZXItd2lkdGggIWRlZmF1bHQ7XG4kc3Bpbm5lci1ib3JkZXItd2lkdGg6ICAuMjVlbSAhZGVmYXVsdDtcblxuJHNwaW5uZXItd2lkdGgtc206ICAgICAgICAxcmVtICFkZWZhdWx0O1xuJHNwaW5uZXItaGVpZ2h0LXNtOiAgICAgICAkc3Bpbm5lci13aWR0aC1zbSAhZGVmYXVsdDtcbiRzcGlubmVyLWJvcmRlci13aWR0aC1zbTogLjJlbSAhZGVmYXVsdDtcblxuXG4vLyBDbG9zZVxuXG4kY2xvc2UtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjUgIWRlZmF1bHQ7XG4kY2xvc2UtZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICAgICAkZm9udC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcbiRjbG9zZS1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICRibGFjayAhZGVmYXVsdDtcbiRjbG9zZS10ZXh0LXNoYWRvdzogICAgICAgICAgICAgICAgIDAgMXB4IDAgJHdoaXRlICFkZWZhdWx0O1xuXG5cbi8vIENvZGVcblxuJGNvZGUtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgICAgODcuNSUgIWRlZmF1bHQ7XG4kY29kZS1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAkcGluayAhZGVmYXVsdDtcblxuJGtiZC1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAgICAgLjJyZW0gIWRlZmF1bHQ7XG4ka2JkLXBhZGRpbmcteDogICAgICAgICAgICAgICAgICAgICAuNHJlbSAhZGVmYXVsdDtcbiRrYmQtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgICAgICRjb2RlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRrYmQtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRrYmQtYmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRncmF5LTkwMCAhZGVmYXVsdDtcblxuJHByZS1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgJGdyYXktOTAwICFkZWZhdWx0O1xuJHByZS1zY3JvbGxhYmxlLW1heC1oZWlnaHQ6ICAgICAgICAgMzQwcHggIWRlZmF1bHQ7XG5cblxuLy8gVXRpbGl0aWVzXG5cbiRkaXNwbGF5czogbm9uZSwgaW5saW5lLCBpbmxpbmUtYmxvY2ssIGJsb2NrLCB0YWJsZSwgdGFibGUtcm93LCB0YWJsZS1jZWxsLCBmbGV4LCBpbmxpbmUtZmxleCAhZGVmYXVsdDtcbiRvdmVyZmxvd3M6IGF1dG8sIGhpZGRlbiAhZGVmYXVsdDtcbiRwb3NpdGlvbnM6IHN0YXRpYywgcmVsYXRpdmUsIGFic29sdXRlLCBmaXhlZCwgc3RpY2t5ICFkZWZhdWx0O1xuXG5cbi8vIFByaW50aW5nXG5cbiRwcmludC1wYWdlLXNpemU6ICAgICAgICAgICAgICAgICAgIGEzICFkZWZhdWx0O1xuJHByaW50LWJvZHktbWluLXdpZHRoOiAgICAgICAgICAgICAgbWFwLWdldCgkZ3JpZC1icmVha3BvaW50cywgXCJsZ1wiKSAhZGVmYXVsdDtcbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIHByb3BlcnR5LWJsYWNrbGlzdCwgc2Nzcy9kb2xsYXItdmFyaWFibGUtZGVmYXVsdFxuXG4vLyBTQ1NTIFJGUyBtaXhpblxuLy9cbi8vIEF1dG9tYXRlZCBmb250LXJlc2l6aW5nXG4vL1xuLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL3Jmc1xuXG4vLyBDb25maWd1cmF0aW9uXG5cbi8vIEJhc2UgZm9udCBzaXplXG4kcmZzLWJhc2UtZm9udC1zaXplOiAxLjI1cmVtICFkZWZhdWx0O1xuJHJmcy1mb250LXNpemUtdW5pdDogcmVtICFkZWZhdWx0O1xuXG4vLyBCcmVha3BvaW50IGF0IHdoZXJlIGZvbnQtc2l6ZSBzdGFydHMgZGVjcmVhc2luZyBpZiBzY3JlZW4gd2lkdGggaXMgc21hbGxlclxuJHJmcy1icmVha3BvaW50OiAxMjAwcHggIWRlZmF1bHQ7XG4kcmZzLWJyZWFrcG9pbnQtdW5pdDogcHggIWRlZmF1bHQ7XG5cbi8vIFJlc2l6ZSBmb250LXNpemUgYmFzZWQgb24gc2NyZWVuIGhlaWdodCBhbmQgd2lkdGhcbiRyZnMtdHdvLWRpbWVuc2lvbmFsOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gRmFjdG9yIG9mIGRlY3JlYXNlXG4kcmZzLWZhY3RvcjogMTAgIWRlZmF1bHQ7XG5cbkBpZiB0eXBlLW9mKCRyZnMtZmFjdG9yKSAhPSBcIm51bWJlclwiIG9yICRyZnMtZmFjdG9yIDw9IDEge1xuICBAZXJyb3IgXCJgI3skcmZzLWZhY3Rvcn1gIGlzIG5vdCBhIHZhbGlkICAkcmZzLWZhY3RvciwgaXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMS5cIjtcbn1cblxuLy8gR2VuZXJhdGUgZW5hYmxlIG9yIGRpc2FibGUgY2xhc3Nlcy4gUG9zc2liaWxpdGllczogZmFsc2UsIFwiZW5hYmxlXCIgb3IgXCJkaXNhYmxlXCJcbiRyZnMtY2xhc3M6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyAxIHJlbSA9ICRyZnMtcmVtLXZhbHVlIHB4XG4kcmZzLXJlbS12YWx1ZTogMTYgIWRlZmF1bHQ7XG5cbi8vIFNhZmFyaSBpZnJhbWUgcmVzaXplIGJ1ZzogaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvcmZzL2lzc3Vlcy8xNFxuJHJmcy1zYWZhcmktaWZyYW1lLXJlc2l6ZS1idWctZml4OiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gRGlzYWJsZSBSRlMgYnkgc2V0dGluZyAkZW5hYmxlLXJlc3BvbnNpdmUtZm9udC1zaXplcyB0byBmYWxzZVxuJGVuYWJsZS1yZXNwb25zaXZlLWZvbnQtc2l6ZXM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIENhY2hlICRyZnMtYmFzZS1mb250LXNpemUgdW5pdFxuJHJmcy1iYXNlLWZvbnQtc2l6ZS11bml0OiB1bml0KCRyZnMtYmFzZS1mb250LXNpemUpO1xuXG4vLyBSZW1vdmUgcHgtdW5pdCBmcm9tICRyZnMtYmFzZS1mb250LXNpemUgZm9yIGNhbGN1bGF0aW9uc1xuQGlmICRyZnMtYmFzZS1mb250LXNpemUtdW5pdCA9PSBcInB4XCIge1xuICAkcmZzLWJhc2UtZm9udC1zaXplOiAkcmZzLWJhc2UtZm9udC1zaXplIC8gKCRyZnMtYmFzZS1mb250LXNpemUgKiAwICsgMSk7XG59XG5AZWxzZSBpZiAkcmZzLWJhc2UtZm9udC1zaXplLXVuaXQgPT0gXCJyZW1cIiB7XG4gICRyZnMtYmFzZS1mb250LXNpemU6ICRyZnMtYmFzZS1mb250LXNpemUgLyAoJHJmcy1iYXNlLWZvbnQtc2l6ZSAqIDAgKyAxIC8gJHJmcy1yZW0tdmFsdWUpO1xufVxuXG4vLyBDYWNoZSAkcmZzLWJyZWFrcG9pbnQgdW5pdCB0byBwcmV2ZW50IG11bHRpcGxlIGNhbGxzXG4kcmZzLWJyZWFrcG9pbnQtdW5pdC1jYWNoZTogdW5pdCgkcmZzLWJyZWFrcG9pbnQpO1xuXG4vLyBSZW1vdmUgdW5pdCBmcm9tICRyZnMtYnJlYWtwb2ludCBmb3IgY2FsY3VsYXRpb25zXG5AaWYgJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGUgPT0gXCJweFwiIHtcbiAgJHJmcy1icmVha3BvaW50OiAkcmZzLWJyZWFrcG9pbnQgLyAoJHJmcy1icmVha3BvaW50ICogMCArIDEpO1xufVxuQGVsc2UgaWYgJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGUgPT0gXCJyZW1cIiBvciAkcmZzLWJyZWFrcG9pbnQtdW5pdC1jYWNoZSA9PSBcImVtXCIge1xuICAkcmZzLWJyZWFrcG9pbnQ6ICRyZnMtYnJlYWtwb2ludCAvICgkcmZzLWJyZWFrcG9pbnQgKiAwICsgMSAvICRyZnMtcmVtLXZhbHVlKTtcbn1cblxuLy8gUmVzcG9uc2l2ZSBmb250LXNpemUgbWl4aW5cbkBtaXhpbiByZnMoJGZzLCAkaW1wb3J0YW50OiBmYWxzZSkge1xuICAvLyBDYWNoZSAkZnMgdW5pdFxuICAkZnMtdW5pdDogaWYodHlwZS1vZigkZnMpID09IFwibnVtYmVyXCIsIHVuaXQoJGZzKSwgZmFsc2UpO1xuXG4gIC8vIEFkZCAhaW1wb3J0YW50IHN1ZmZpeCBpZiBuZWVkZWRcbiAgJHJmcy1zdWZmaXg6IGlmKCRpbXBvcnRhbnQsIFwiICFpbXBvcnRhbnRcIiwgXCJcIik7XG5cbiAgLy8gSWYgJGZzIGlzbid0IGEgbnVtYmVyIChsaWtlIGluaGVyaXQpIG9yICRmcyBoYXMgYSB1bml0IChub3QgcHggb3IgcmVtLCBsaWtlIDEuNWVtKSBvciAkIGlzIDAsIGp1c3QgcHJpbnQgdGhlIHZhbHVlXG4gIEBpZiBub3QgJGZzLXVuaXQgb3IgJGZzLXVuaXQgIT0gXCJcIiBhbmQgJGZzLXVuaXQgIT0gXCJweFwiIGFuZCAkZnMtdW5pdCAhPSBcInJlbVwiIG9yICRmcyA9PSAwIHtcbiAgICBmb250LXNpemU6ICN7JGZzfSN7JHJmcy1zdWZmaXh9O1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBWYXJpYWJsZXMgZm9yIHN0b3Jpbmcgc3RhdGljIGFuZCBmbHVpZCByZXNjYWxpbmdcbiAgICAkcmZzLXN0YXRpYzogbnVsbDtcbiAgICAkcmZzLWZsdWlkOiBudWxsO1xuXG4gICAgLy8gUmVtb3ZlIHB4LXVuaXQgZnJvbSAkZnMgZm9yIGNhbGN1bGF0aW9uc1xuICAgIEBpZiAkZnMtdW5pdCA9PSBcInB4XCIge1xuICAgICAgJGZzOiAkZnMgLyAoJGZzICogMCArIDEpO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZnMtdW5pdCA9PSBcInJlbVwiIHtcbiAgICAgICRmczogJGZzIC8gKCRmcyAqIDAgKyAxIC8gJHJmcy1yZW0tdmFsdWUpO1xuICAgIH1cblxuICAgIC8vIFNldCBkZWZhdWx0IGZvbnQtc2l6ZVxuICAgIEBpZiAkcmZzLWZvbnQtc2l6ZS11bml0ID09IHJlbSB7XG4gICAgICAkcmZzLXN0YXRpYzogI3skZnMgLyAkcmZzLXJlbS12YWx1ZX1yZW0jeyRyZnMtc3VmZml4fTtcbiAgICB9XG4gICAgQGVsc2UgaWYgJHJmcy1mb250LXNpemUtdW5pdCA9PSBweCB7XG4gICAgICAkcmZzLXN0YXRpYzogI3skZnN9cHgjeyRyZnMtc3VmZml4fTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGVycm9yIFwiYCN7JHJmcy1mb250LXNpemUtdW5pdH1gIGlzIG5vdCBhIHZhbGlkIHVuaXQgZm9yICRyZnMtZm9udC1zaXplLXVuaXQuIFVzZSBgcHhgIG9yIGByZW1gLlwiO1xuICAgIH1cblxuICAgIC8vIE9ubHkgYWRkIG1lZGlhIHF1ZXJ5IGlmIGZvbnQtc2l6ZSBpcyBiaWdnZXIgYXMgdGhlIG1pbmltdW0gZm9udC1zaXplXG4gICAgLy8gSWYgJHJmcy1mYWN0b3IgPT0gMSwgbm8gcmVzY2FsaW5nIHdpbGwgdGFrZSBwbGFjZVxuICAgIEBpZiAkZnMgPiAkcmZzLWJhc2UtZm9udC1zaXplIGFuZCAkZW5hYmxlLXJlc3BvbnNpdmUtZm9udC1zaXplcyB7XG4gICAgICAkbWluLXdpZHRoOiBudWxsO1xuICAgICAgJHZhcmlhYmxlLXVuaXQ6IG51bGw7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSBtaW5pbXVtIGZvbnQtc2l6ZSBmb3IgZ2l2ZW4gZm9udC1zaXplXG4gICAgICAkZnMtbWluOiAkcmZzLWJhc2UtZm9udC1zaXplICsgKCRmcyAtICRyZnMtYmFzZS1mb250LXNpemUpIC8gJHJmcy1mYWN0b3I7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSBkaWZmZXJlbmNlIGJldHdlZW4gZ2l2ZW4gZm9udC1zaXplIGFuZCBtaW5pbXVtIGZvbnQtc2l6ZSBmb3IgZ2l2ZW4gZm9udC1zaXplXG4gICAgICAkZnMtZGlmZjogJGZzIC0gJGZzLW1pbjtcblxuICAgICAgLy8gQmFzZSBmb250LXNpemUgZm9ybWF0dGluZ1xuICAgICAgLy8gTm8gbmVlZCB0byBjaGVjayBpZiB0aGUgdW5pdCBpcyB2YWxpZCwgYmVjYXVzZSB3ZSBkaWQgdGhhdCBiZWZvcmVcbiAgICAgICRtaW4td2lkdGg6IGlmKCRyZnMtZm9udC1zaXplLXVuaXQgPT0gcmVtLCAjeyRmcy1taW4gLyAkcmZzLXJlbS12YWx1ZX1yZW0sICN7JGZzLW1pbn1weCk7XG5cbiAgICAgIC8vIElmIHR3by1kaW1lbnNpb25hbCwgdXNlIHNtYWxsZXN0IG9mIHNjcmVlbiB3aWR0aCBhbmQgaGVpZ2h0XG4gICAgICAkdmFyaWFibGUtdW5pdDogaWYoJHJmcy10d28tZGltZW5zaW9uYWwsIHZtaW4sIHZ3KTtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSB2YXJpYWJsZSB3aWR0aCBiZXR3ZWVuIDAgYW5kICRyZnMtYnJlYWtwb2ludFxuICAgICAgJHZhcmlhYmxlLXdpZHRoOiAjeyRmcy1kaWZmICogMTAwIC8gJHJmcy1icmVha3BvaW50fSN7JHZhcmlhYmxlLXVuaXR9O1xuXG4gICAgICAvLyBTZXQgdGhlIGNhbGN1bGF0ZWQgZm9udC1zaXplLlxuICAgICAgJHJmcy1mbHVpZDogY2FsYygjeyRtaW4td2lkdGh9ICsgI3skdmFyaWFibGUtd2lkdGh9KSAjeyRyZnMtc3VmZml4fTtcbiAgICB9XG5cbiAgICAvLyBSZW5kZXJpbmdcbiAgICBAaWYgJHJmcy1mbHVpZCA9PSBudWxsIHtcbiAgICAgIC8vIE9ubHkgcmVuZGVyIHN0YXRpYyBmb250LXNpemUgaWYgbm8gZmx1aWQgZm9udC1zaXplIGlzIGF2YWlsYWJsZVxuICAgICAgZm9udC1zaXplOiAkcmZzLXN0YXRpYztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJG1xLXZhbHVlOiBudWxsO1xuXG4gICAgICAvLyBSRlMgYnJlYWtwb2ludCBmb3JtYXR0aW5nXG4gICAgICBAaWYgJHJmcy1icmVha3BvaW50LXVuaXQgPT0gZW0gb3IgJHJmcy1icmVha3BvaW50LXVuaXQgPT0gcmVtIHtcbiAgICAgICAgJG1xLXZhbHVlOiAjeyRyZnMtYnJlYWtwb2ludCAvICRyZnMtcmVtLXZhbHVlfSN7JHJmcy1icmVha3BvaW50LXVuaXR9O1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHJmcy1icmVha3BvaW50LXVuaXQgPT0gcHgge1xuICAgICAgICAkbXEtdmFsdWU6ICN7JHJmcy1icmVha3BvaW50fXB4O1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAZXJyb3IgXCJgI3skcmZzLWJyZWFrcG9pbnQtdW5pdH1gIGlzIG5vdCBhIHZhbGlkIHVuaXQgZm9yICRyZnMtYnJlYWtwb2ludC11bml0LiBVc2UgYHB4YCwgYGVtYCBvciBgcmVtYC5cIjtcbiAgICAgIH1cblxuICAgICAgQGlmICRyZnMtY2xhc3MgPT0gXCJkaXNhYmxlXCIge1xuICAgICAgICAvLyBBZGRpbmcgYW4gZXh0cmEgY2xhc3MgaW5jcmVhc2VzIHNwZWNpZmljaXR5LFxuICAgICAgICAvLyB3aGljaCBwcmV2ZW50cyB0aGUgbWVkaWEgcXVlcnkgdG8gb3ZlcnJpZGUgdGhlIGZvbnQgc2l6ZVxuICAgICAgICAmLFxuICAgICAgICAuZGlzYWJsZS1yZXNwb25zaXZlLWZvbnQtc2l6ZSAmLFxuICAgICAgICAmLmRpc2FibGUtcmVzcG9uc2l2ZS1mb250LXNpemUge1xuICAgICAgICAgIGZvbnQtc2l6ZTogJHJmcy1zdGF0aWM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgZm9udC1zaXplOiAkcmZzLXN0YXRpYztcbiAgICAgIH1cblxuICAgICAgQGlmICRyZnMtdHdvLWRpbWVuc2lvbmFsIHtcbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICN7JG1xLXZhbHVlfSksIChtYXgtaGVpZ2h0OiAjeyRtcS12YWx1ZX0pIHtcbiAgICAgICAgICBAaWYgJHJmcy1jbGFzcyA9PSBcImVuYWJsZVwiIHtcbiAgICAgICAgICAgIC5lbmFibGUtcmVzcG9uc2l2ZS1mb250LXNpemUgJixcbiAgICAgICAgICAgICYuZW5hYmxlLXJlc3BvbnNpdmUtZm9udC1zaXplIHtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAkcmZzLWZsdWlkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRyZnMtZmx1aWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmICRyZnMtc2FmYXJpLWlmcmFtZS1yZXNpemUtYnVnLWZpeCB7XG4gICAgICAgICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbGVuZ3RoLXplcm8tbm8tdW5pdFxuICAgICAgICAgICAgbWluLXdpZHRoOiAwdnc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAjeyRtcS12YWx1ZX0pIHtcbiAgICAgICAgICBAaWYgJHJmcy1jbGFzcyA9PSBcImVuYWJsZVwiIHtcbiAgICAgICAgICAgIC5lbmFibGUtcmVzcG9uc2l2ZS1mb250LXNpemUgJixcbiAgICAgICAgICAgICYuZW5hYmxlLXJlc3BvbnNpdmUtZm9udC1zaXplIHtcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAkcmZzLWZsdWlkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRyZnMtZmx1aWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmICRyZnMtc2FmYXJpLWlmcmFtZS1yZXNpemUtYnVnLWZpeCB7XG4gICAgICAgICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbGVuZ3RoLXplcm8tbm8tdW5pdFxuICAgICAgICAgICAgbWluLXdpZHRoOiAwdnc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFRoZSBmb250LXNpemUgJiByZXNwb25zaXZlLWZvbnQtc2l6ZSBtaXhpbiB1c2VzIFJGUyB0byByZXNjYWxlIGZvbnQgc2l6ZXNcbkBtaXhpbiBmb250LXNpemUoJGZzLCAkaW1wb3J0YW50OiBmYWxzZSkge1xuICBAaW5jbHVkZSByZnMoJGZzLCAkaW1wb3J0YW50KTtcbn1cblxuQG1peGluIHJlc3BvbnNpdmUtZm9udC1zaXplKCRmcywgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgQGluY2x1ZGUgcmZzKCRmcywgJGltcG9ydGFudCk7XG59XG4iLCIvLyBIb3ZlciBtaXhpbiBhbmQgYCRlbmFibGUtaG92ZXItbWVkaWEtcXVlcnlgIGFyZSBkZXByZWNhdGVkLlxuLy9cbi8vIE9yaWdpbmFsbHkgYWRkZWQgZHVyaW5nIG91ciBhbHBoYXMgYW5kIG1haW50YWluZWQgZHVyaW5nIGJldGFzLCB0aGlzIG1peGluIHdhc1xuLy8gZGVzaWduZWQgdG8gcHJldmVudCBgOmhvdmVyYCBzdGlja2luZXNzIG9uIGlPUy1hbiBpc3N1ZSB3aGVyZSBob3ZlciBzdHlsZXNcbi8vIHdvdWxkIHBlcnNpc3QgYWZ0ZXIgaW5pdGlhbCB0b3VjaC5cbi8vXG4vLyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgd2UndmUga2VwdCB0aGVzZSBtaXhpbnMgYW5kIHVwZGF0ZWQgdGhlbSB0b1xuLy8gYWx3YXlzIHJldHVybiB0aGVpciByZWd1bGFyIHBzZXVkby1jbGFzc2VzIGluc3RlYWQgb2YgYSBzaGltbWVkIG1lZGlhIHF1ZXJ5LlxuLy9cbi8vIElzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI1MTk1XG5cbkBtaXhpbiBob3ZlcigpIHtcbiAgJjpob3ZlciB7IEBjb250ZW50OyB9XG59XG5cbkBtaXhpbiBob3Zlci1mb2N1cygpIHtcbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIHBsYWluLWhvdmVyLWZvY3VzKCkge1xuICAmLFxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gaG92ZXItZm9jdXMtYWN0aXZlKCkge1xuICAmOmhvdmVyLFxuICAmOmZvY3VzLFxuICAmOmFjdGl2ZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudCwgc2VsZWN0b3ItbGlzdC1jb21tYS1uZXdsaW5lLWFmdGVyXG5cbi8vXG4vLyBIZWFkaW5nc1xuLy9cblxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNixcbi5oMSwgLmgyLCAuaDMsIC5oNCwgLmg1LCAuaDYge1xuICBtYXJnaW4tYm90dG9tOiAkaGVhZGluZ3MtbWFyZ2luLWJvdHRvbTtcbiAgZm9udC1mYW1pbHk6ICRoZWFkaW5ncy1mb250LWZhbWlseTtcbiAgZm9udC13ZWlnaHQ6ICRoZWFkaW5ncy1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRoZWFkaW5ncy1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRoZWFkaW5ncy1jb2xvcjtcbn1cblxuaDEsIC5oMSB7IEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDEtZm9udC1zaXplKTsgfVxuaDIsIC5oMiB7IEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDItZm9udC1zaXplKTsgfVxuaDMsIC5oMyB7IEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDMtZm9udC1zaXplKTsgfVxuaDQsIC5oNCB7IEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDQtZm9udC1zaXplKTsgfVxuaDUsIC5oNSB7IEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDUtZm9udC1zaXplKTsgfVxuaDYsIC5oNiB7IEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDYtZm9udC1zaXplKTsgfVxuXG4ubGVhZCB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkbGVhZC1mb250LXNpemUpO1xuICBmb250LXdlaWdodDogJGxlYWQtZm9udC13ZWlnaHQ7XG59XG5cbi8vIFR5cGUgZGlzcGxheSBjbGFzc2VzXG4uZGlzcGxheS0xIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRkaXNwbGF5MS1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRkaXNwbGF5MS13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkZGlzcGxheS1saW5lLWhlaWdodDtcbn1cbi5kaXNwbGF5LTIge1xuICBAaW5jbHVkZSBmb250LXNpemUoJGRpc3BsYXkyLXNpemUpO1xuICBmb250LXdlaWdodDogJGRpc3BsYXkyLXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRkaXNwbGF5LWxpbmUtaGVpZ2h0O1xufVxuLmRpc3BsYXktMyB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZGlzcGxheTMtc2l6ZSk7XG4gIGZvbnQtd2VpZ2h0OiAkZGlzcGxheTMtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGRpc3BsYXktbGluZS1oZWlnaHQ7XG59XG4uZGlzcGxheS00IHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRkaXNwbGF5NC1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRkaXNwbGF5NC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkZGlzcGxheS1saW5lLWhlaWdodDtcbn1cblxuXG4vL1xuLy8gSG9yaXpvbnRhbCBydWxlc1xuLy9cblxuaHIge1xuICBtYXJnaW4tdG9wOiAkaHItbWFyZ2luLXk7XG4gIG1hcmdpbi1ib3R0b206ICRoci1tYXJnaW4teTtcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItdG9wOiAkaHItYm9yZGVyLXdpZHRoIHNvbGlkICRoci1ib3JkZXItY29sb3I7XG59XG5cblxuLy9cbi8vIEVtcGhhc2lzXG4vL1xuXG5zbWFsbCxcbi5zbWFsbCB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkc21hbGwtZm9udC1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG59XG5cbm1hcmssXG4ubWFyayB7XG4gIHBhZGRpbmc6ICRtYXJrLXBhZGRpbmc7XG4gIGJhY2tncm91bmQtY29sb3I6ICRtYXJrLWJnO1xufVxuXG5cbi8vXG4vLyBMaXN0c1xuLy9cblxuLmxpc3QtdW5zdHlsZWQge1xuICBAaW5jbHVkZSBsaXN0LXVuc3R5bGVkKCk7XG59XG5cbi8vIElubGluZSB0dXJucyBsaXN0IGl0ZW1zIGludG8gaW5saW5lLWJsb2NrXG4ubGlzdC1pbmxpbmUge1xuICBAaW5jbHVkZSBsaXN0LXVuc3R5bGVkKCk7XG59XG4ubGlzdC1pbmxpbmUtaXRlbSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIG1hcmdpbi1yaWdodDogJGxpc3QtaW5saW5lLXBhZGRpbmc7XG4gIH1cbn1cblxuXG4vL1xuLy8gTWlzY1xuLy9cblxuLy8gQnVpbGRzIG9uIGBhYmJyYFxuLmluaXRpYWxpc20ge1xuICBAaW5jbHVkZSBmb250LXNpemUoOTAlKTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLy8gQmxvY2txdW90ZXNcbi5ibG9ja3F1b3RlIHtcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNlcjtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRibG9ja3F1b3RlLWZvbnQtc2l6ZSk7XG59XG5cbi5ibG9ja3F1b3RlLWZvb3RlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGJsb2NrcXVvdGUtc21hbGwtZm9udC1zaXplKTtcbiAgY29sb3I6ICRibG9ja3F1b3RlLXNtYWxsLWNvbG9yO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXDIwMTRcXDAwQTBcIjsgLy8gZW0gZGFzaCwgbmJzcFxuICB9XG59XG4iLCIvLyBMaXN0c1xuXG4vLyBVbnN0eWxlZCBrZWVwcyBsaXN0IGl0ZW1zIGJsb2NrIGxldmVsLCBqdXN0IHJlbW92ZXMgZGVmYXVsdCBicm93c2VyIHBhZGRpbmcgYW5kIGxpc3Qtc3R5bGVcbkBtaXhpbiBsaXN0LXVuc3R5bGVkKCkge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG4iLCIvLyBSZXNwb25zaXZlIGltYWdlcyAoZW5zdXJlIGltYWdlcyBkb24ndCBzY2FsZSBiZXlvbmQgdGhlaXIgcGFyZW50cylcbi8vXG4vLyBUaGlzIGlzIHB1cnBvc2VmdWxseSBvcHQtaW4gdmlhIGFuIGV4cGxpY2l0IGNsYXNzIHJhdGhlciB0aGFuIGJlaW5nIHRoZSBkZWZhdWx0IGZvciBhbGwgYDxpbWc+YHMuXG4vLyBXZSBwcmV2aW91c2x5IHRyaWVkIHRoZSBcImltYWdlcyBhcmUgcmVzcG9uc2l2ZSBieSBkZWZhdWx0XCIgYXBwcm9hY2ggaW4gQm9vdHN0cmFwIHYyLFxuLy8gYW5kIGFiYW5kb25lZCBpdCBpbiBCb290c3RyYXAgdjMgYmVjYXVzZSBpdCBicmVha3MgbG90cyBvZiB0aGlyZC1wYXJ0eSB3aWRnZXRzIChpbmNsdWRpbmcgR29vZ2xlIE1hcHMpXG4vLyB3aGljaCB3ZXJlbid0IGV4cGVjdGluZyB0aGUgaW1hZ2VzIHdpdGhpbiB0aGVtc2VsdmVzIHRvIGJlIGludm9sdW50YXJpbHkgcmVzaXplZC5cbi8vIFNlZSBhbHNvIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTgxNzhcbi5pbWctZmx1aWQge1xuICBAaW5jbHVkZSBpbWctZmx1aWQoKTtcbn1cblxuXG4vLyBJbWFnZSB0aHVtYm5haWxzXG4uaW1nLXRodW1ibmFpbCB7XG4gIHBhZGRpbmc6ICR0aHVtYm5haWwtcGFkZGluZztcbiAgYmFja2dyb3VuZC1jb2xvcjogJHRodW1ibmFpbC1iZztcbiAgYm9yZGVyOiAkdGh1bWJuYWlsLWJvcmRlci13aWR0aCBzb2xpZCAkdGh1bWJuYWlsLWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkdGh1bWJuYWlsLWJvcmRlci1yYWRpdXMpO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KCR0aHVtYm5haWwtYm94LXNoYWRvdyk7XG5cbiAgLy8gS2VlcCB0aGVtIGF0IG1vc3QgMTAwJSB3aWRlXG4gIEBpbmNsdWRlIGltZy1mbHVpZCgpO1xufVxuXG4vL1xuLy8gRmlndXJlc1xuLy9cblxuLmZpZ3VyZSB7XG4gIC8vIEVuc3VyZXMgdGhlIGNhcHRpb24ncyB0ZXh0IGFsaWducyB3aXRoIHRoZSBpbWFnZS5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZmlndXJlLWltZyB7XG4gIG1hcmdpbi1ib3R0b206ICRzcGFjZXIgLyAyO1xuICBsaW5lLWhlaWdodDogMTtcbn1cblxuLmZpZ3VyZS1jYXB0aW9uIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRmaWd1cmUtY2FwdGlvbi1mb250LXNpemUpO1xuICBjb2xvcjogJGZpZ3VyZS1jYXB0aW9uLWNvbG9yO1xufVxuIiwiLy8gSW1hZ2UgTWl4aW5zXG4vLyAtIFJlc3BvbnNpdmUgaW1hZ2Vcbi8vIC0gUmV0aW5hIGltYWdlXG5cblxuLy8gUmVzcG9uc2l2ZSBpbWFnZVxuLy9cbi8vIEtlZXAgaW1hZ2VzIGZyb20gc2NhbGluZyBiZXlvbmQgdGhlIHdpZHRoIG9mIHRoZWlyIHBhcmVudHMuXG5cbkBtaXhpbiBpbWctZmx1aWQoKSB7XG4gIC8vIFBhcnQgMTogU2V0IGEgbWF4aW11bSByZWxhdGl2ZSB0byB0aGUgcGFyZW50XG4gIG1heC13aWR0aDogMTAwJTtcbiAgLy8gUGFydCAyOiBPdmVycmlkZSB0aGUgaGVpZ2h0IHRvIGF1dG8sIG90aGVyd2lzZSBpbWFnZXMgd2lsbCBiZSBzdHJldGNoZWRcbiAgLy8gd2hlbiBzZXR0aW5nIGEgd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGUgb24gdGhlIGltZyBlbGVtZW50LlxuICBoZWlnaHQ6IGF1dG87XG59XG5cblxuLy8gUmV0aW5hIGltYWdlXG4vL1xuLy8gU2hvcnQgcmV0aW5hIG1peGluIGZvciBzZXR0aW5nIGJhY2tncm91bmQtaW1hZ2UgYW5kIC1zaXplLlxuXG5AbWl4aW4gaW1nLXJldGluYSgkZmlsZS0xeCwgJGZpbGUtMngsICR3aWR0aC0xeCwgJGhlaWdodC0xeCkge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJGZpbGUtMXgpO1xuXG4gIC8vIEF1dG9wcmVmaXhlciB0YWtlcyBjYXJlIG9mIGFkZGluZyAtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW8gYW5kIC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW8sXG4gIC8vIGJ1dCBkb2Vzbid0IGNvbnZlcnQgZHBweD0+ZHBpLlxuICAvLyBUaGVyZSdzIG5vIHN1Y2ggdGhpbmcgYXMgdW5wcmVmaXhlZCBtaW4tZGV2aWNlLXBpeGVsLXJhdGlvIHNpbmNlIGl0J3Mgbm9uc3RhbmRhcmQuXG4gIC8vIENvbXBhdGliaWxpdHkgaW5mbzogaHR0cHM6Ly9jYW5pdXNlLmNvbS8jZmVhdD1jc3MtbWVkaWEtcmVzb2x1dGlvblxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSwgLy8gSUU5LTExIGRvbid0IHN1cHBvcnQgZHBweFxuICAgIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246IDJkcHB4KSB7IC8vIFN0YW5kYXJkaXplZFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgkZmlsZS0yeCk7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkd2lkdGgtMXggJGhlaWdodC0xeDtcbiAgfVxuICBAaW5jbHVkZSBkZXByZWNhdGUoXCJgaW1nLXJldGluYSgpYFwiLCBcInY0LjMuMFwiLCBcInY1XCIpO1xufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgcHJvcGVydHktYmxhY2tsaXN0XG4vLyBTaW5nbGUgc2lkZSBib3JkZXItcmFkaXVzXG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzLCAkZmFsbGJhY2stYm9yZGVyLXJhZGl1czogZmFsc2UpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbiAgfVxuICBAZWxzZSBpZiAkZmFsbGJhY2stYm9yZGVyLXJhZGl1cyAhPSBmYWxzZSB7XG4gICAgYm9yZGVyLXJhZGl1czogJGZhbGxiYWNrLWJvcmRlci1yYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci10b3AtcmFkaXVzKCRyYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGl1cztcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLXJpZ2h0LXJhZGl1cygkcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkcmFkaXVzO1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaXVzO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLXJhZGl1cygkcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaXVzO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1sZWZ0LXJhZGl1cygkcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRyYWRpdXM7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogJHJhZGl1cztcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cygkcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzKCRyYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzKCRyYWRpdXMpIHtcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMoJHJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaXVzO1xuICB9XG59XG4iLCIvLyBJbmxpbmUgY29kZVxuY29kZSB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkY29kZS1mb250LXNpemUpO1xuICBjb2xvcjogJGNvZGUtY29sb3I7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcblxuICAvLyBTdHJlYW1saW5lIHRoZSBzdHlsZSB3aGVuIGluc2lkZSBhbmNob3JzIHRvIGF2b2lkIGJyb2tlbiB1bmRlcmxpbmUgYW5kIG1vcmVcbiAgYSA+ICYge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICB9XG59XG5cbi8vIFVzZXIgaW5wdXQgdHlwaWNhbGx5IGVudGVyZWQgdmlhIGtleWJvYXJkXG5rYmQge1xuICBwYWRkaW5nOiAka2JkLXBhZGRpbmcteSAka2JkLXBhZGRpbmcteDtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRrYmQtZm9udC1zaXplKTtcbiAgY29sb3I6ICRrYmQtY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRrYmQtYmc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMtc20pO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KCRrYmQtYm94LXNoYWRvdyk7XG5cbiAga2JkIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxMDAlKTtcbiAgICBmb250LXdlaWdodDogJG5lc3RlZC1rYmQtZm9udC13ZWlnaHQ7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgfVxufVxuXG4vLyBCbG9ja3Mgb2YgY29kZVxucHJlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkY29kZS1mb250LXNpemUpO1xuICBjb2xvcjogJHByZS1jb2xvcjtcblxuICAvLyBBY2NvdW50IGZvciBzb21lIGNvZGUgb3V0cHV0cyB0aGF0IHBsYWNlIGNvZGUgdGFncyBpbiBwcmUgdGFnc1xuICBjb2RlIHtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoaW5oZXJpdCk7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgd29yZC1icmVhazogbm9ybWFsO1xuICB9XG59XG5cbi8vIEVuYWJsZSBzY3JvbGxhYmxlIGJsb2NrcyBvZiBjb2RlXG4ucHJlLXNjcm9sbGFibGUge1xuICBtYXgtaGVpZ2h0OiAkcHJlLXNjcm9sbGFibGUtbWF4LWhlaWdodDtcbiAgb3ZlcmZsb3cteTogc2Nyb2xsO1xufVxuIiwiLy8gQ29udGFpbmVyIHdpZHRoc1xuLy9cbi8vIFNldCB0aGUgY29udGFpbmVyIHdpZHRoLCBhbmQgb3ZlcnJpZGUgaXQgZm9yIGZpeGVkIG5hdmJhcnMgaW4gbWVkaWEgcXVlcmllcy5cblxuQGlmICRlbmFibGUtZ3JpZC1jbGFzc2VzIHtcbiAgLy8gU2luZ2xlIGNvbnRhaW5lciBjbGFzcyB3aXRoIGJyZWFrcG9pbnQgbWF4LXdpZHRoc1xuICAuY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBtYWtlLWNvbnRhaW5lcigpO1xuICAgIEBpbmNsdWRlIG1ha2UtY29udGFpbmVyLW1heC13aWR0aHMoKTtcbiAgfVxuXG4gIC8vIDEwMCUgd2lkZSBjb250YWluZXIgYXQgYWxsIGJyZWFrcG9pbnRzXG4gIC5jb250YWluZXItZmx1aWQge1xuICAgIEBpbmNsdWRlIG1ha2UtY29udGFpbmVyKCk7XG4gIH1cblxuICAvLyBSZXNwb25zaXZlIGNvbnRhaW5lcnMgdGhhdCBhcmUgMTAwJSB3aWRlIHVudGlsIGEgYnJlYWtwb2ludFxuICBAZWFjaCAkYnJlYWtwb2ludCwgJGNvbnRhaW5lci1tYXgtd2lkdGggaW4gJGNvbnRhaW5lci1tYXgtd2lkdGhzIHtcbiAgICAuY29udGFpbmVyLSN7JGJyZWFrcG9pbnR9IHtcbiAgICAgIEBleHRlbmQgLmNvbnRhaW5lci1mbHVpZDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cykge1xuICAgICAgJXJlc3BvbnNpdmUtY29udGFpbmVyLSN7JGJyZWFrcG9pbnR9IHtcbiAgICAgICAgbWF4LXdpZHRoOiAkY29udGFpbmVyLW1heC13aWR0aDtcbiAgICAgIH1cblxuICAgICAgQGVhY2ggJG5hbWUsICR3aWR0aCBpbiAkZ3JpZC1icmVha3BvaW50cyB7XG4gICAgICAgIEBpZiAoJGNvbnRhaW5lci1tYXgtd2lkdGggPiAkd2lkdGggb3IgJGJyZWFrcG9pbnQgPT0gJG5hbWUpIHtcbiAgICAgICAgICAuY29udGFpbmVyI3ticmVha3BvaW50LWluZml4KCRuYW1lLCAkZ3JpZC1icmVha3BvaW50cyl9IHtcbiAgICAgICAgICAgIEBleHRlbmQgJXJlc3BvbnNpdmUtY29udGFpbmVyLSN7JGJyZWFrcG9pbnR9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi8vIFJvd1xuLy9cbi8vIFJvd3MgY29udGFpbiB5b3VyIGNvbHVtbnMuXG5cbkBpZiAkZW5hYmxlLWdyaWQtY2xhc3NlcyB7XG4gIC5yb3cge1xuICAgIEBpbmNsdWRlIG1ha2Utcm93KCk7XG4gIH1cblxuICAvLyBSZW1vdmUgdGhlIG5lZ2F0aXZlIG1hcmdpbiBmcm9tIGRlZmF1bHQgLnJvdywgdGhlbiB0aGUgaG9yaXpvbnRhbCBwYWRkaW5nXG4gIC8vIGZyb20gYWxsIGltbWVkaWF0ZSBjaGlsZHJlbiBjb2x1bW5zICh0byBwcmV2ZW50IHJ1bmF3YXkgc3R5bGUgaW5oZXJpdGFuY2UpLlxuICAubm8tZ3V0dGVycyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuXG4gICAgPiAuY29sLFxuICAgID4gW2NsYXNzKj1cImNvbC1cIl0ge1xuICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICB9XG4gIH1cbn1cblxuLy8gQ29sdW1uc1xuLy9cbi8vIENvbW1vbiBzdHlsZXMgZm9yIHNtYWxsIGFuZCBsYXJnZSBncmlkIGNvbHVtbnNcblxuQGlmICRlbmFibGUtZ3JpZC1jbGFzc2VzIHtcbiAgQGluY2x1ZGUgbWFrZS1ncmlkLWNvbHVtbnMoKTtcbn1cbiIsIi8vLyBHcmlkIHN5c3RlbVxuLy9cbi8vIEdlbmVyYXRlIHNlbWFudGljIGdyaWQgY29sdW1ucyB3aXRoIHRoZXNlIG1peGlucy5cblxuQG1peGluIG1ha2UtY29udGFpbmVyKCRndXR0ZXI6ICRncmlkLWd1dHRlci13aWR0aCkge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1yaWdodDogJGd1dHRlciAvIDI7XG4gIHBhZGRpbmctbGVmdDogJGd1dHRlciAvIDI7XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG59XG5cblxuLy8gRm9yIGVhY2ggYnJlYWtwb2ludCwgZGVmaW5lIHRoZSBtYXhpbXVtIHdpZHRoIG9mIHRoZSBjb250YWluZXIgaW4gYSBtZWRpYSBxdWVyeVxuQG1peGluIG1ha2UtY29udGFpbmVyLW1heC13aWR0aHMoJG1heC13aWR0aHM6ICRjb250YWluZXItbWF4LXdpZHRocywgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICBAZWFjaCAkYnJlYWtwb2ludCwgJGNvbnRhaW5lci1tYXgtd2lkdGggaW4gJG1heC13aWR0aHMge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQsICRicmVha3BvaW50cykge1xuICAgICAgbWF4LXdpZHRoOiAkY29udGFpbmVyLW1heC13aWR0aDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1ha2Utcm93KCRndXR0ZXI6ICRncmlkLWd1dHRlci13aWR0aCkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG1hcmdpbi1yaWdodDogLSRndXR0ZXIgLyAyO1xuICBtYXJnaW4tbGVmdDogLSRndXR0ZXIgLyAyO1xufVxuXG5AbWl4aW4gbWFrZS1jb2wtcmVhZHkoJGd1dHRlcjogJGdyaWQtZ3V0dGVyLXdpZHRoKSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLy8gUHJldmVudCBjb2x1bW5zIGZyb20gYmVjb21pbmcgdG9vIG5hcnJvdyB3aGVuIGF0IHNtYWxsZXIgZ3JpZCB0aWVycyBieVxuICAvLyBhbHdheXMgc2V0dGluZyBgd2lkdGg6IDEwMCU7YC4gVGhpcyB3b3JrcyBiZWNhdXNlIHdlIHVzZSBgZmxleGAgdmFsdWVzXG4gIC8vIGxhdGVyIG9uIHRvIG92ZXJyaWRlIHRoaXMgaW5pdGlhbCB3aWR0aC5cbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmctcmlnaHQ6ICRndXR0ZXIgLyAyO1xuICBwYWRkaW5nLWxlZnQ6ICRndXR0ZXIgLyAyO1xufVxuXG5AbWl4aW4gbWFrZS1jb2woJHNpemUsICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW5zKSB7XG4gIGZsZXg6IDAgMCBwZXJjZW50YWdlKCRzaXplIC8gJGNvbHVtbnMpO1xuICAvLyBBZGQgYSBgbWF4LXdpZHRoYCB0byBlbnN1cmUgY29udGVudCB3aXRoaW4gZWFjaCBjb2x1bW4gZG9lcyBub3QgYmxvdyBvdXRcbiAgLy8gdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4uIEFwcGxpZXMgdG8gSUUxMCsgYW5kIEZpcmVmb3guIENocm9tZSBhbmQgU2FmYXJpXG4gIC8vIGRvIG5vdCBhcHBlYXIgdG8gcmVxdWlyZSB0aGlzLlxuICBtYXgtd2lkdGg6IHBlcmNlbnRhZ2UoJHNpemUgLyAkY29sdW1ucyk7XG59XG5cbkBtaXhpbiBtYWtlLWNvbC1hdXRvKCkge1xuICBmbGV4OiAwIDAgYXV0bztcbiAgd2lkdGg6IGF1dG87XG4gIG1heC13aWR0aDogMTAwJTsgLy8gUmVzZXQgZWFybGllciBncmlkIHRpZXJzXG59XG5cbkBtaXhpbiBtYWtlLWNvbC1vZmZzZXQoJHNpemUsICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW5zKSB7XG4gICRudW06ICRzaXplIC8gJGNvbHVtbnM7XG4gIG1hcmdpbi1sZWZ0OiBpZigkbnVtID09IDAsIDAsIHBlcmNlbnRhZ2UoJG51bSkpO1xufVxuXG4vLyBSb3cgY29sdW1uc1xuLy9cbi8vIFNwZWNpZnkgb24gYSBwYXJlbnQgZWxlbWVudChlLmcuLCAucm93KSB0byBmb3JjZSBpbW1lZGlhdGUgY2hpbGRyZW4gaW50byBOTlxuLy8gbnVtYmVyb2YgY29sdW1ucy4gU3VwcG9ydHMgd3JhcHBpbmcgdG8gbmV3IGxpbmVzLCBidXQgZG9lcyBub3QgZG8gYSBNYXNvbnJ5XG4vLyBzdHlsZSBncmlkLlxuQG1peGluIHJvdy1jb2xzKCRjb3VudCkge1xuICAmID4gKiB7XG4gICAgZmxleDogMCAwIDEwMCUgLyAkY291bnQ7XG4gICAgbWF4LXdpZHRoOiAxMDAlIC8gJGNvdW50O1xuICB9XG59XG4iLCIvLyBCcmVha3BvaW50IHZpZXdwb3J0IHNpemVzIGFuZCBtZWRpYSBxdWVyaWVzLlxuLy9cbi8vIEJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIGFzIGEgbWFwIG9mIChuYW1lOiBtaW5pbXVtIHdpZHRoKSwgb3JkZXIgZnJvbSBzbWFsbCB0byBsYXJnZTpcbi8vXG4vLyAgICAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpXG4vL1xuLy8gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIGFzIHRoZSBgJGJyZWFrcG9pbnRzYCBhcmd1bWVudCBieSBkZWZhdWx0LlxuXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICRicmVha3BvaW50LW5hbWVzOiAoeHMgc20gbWQgbGcgeGwpKVxuLy8gICAgbWRcbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRuICE9IG51bGwgYW5kICRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuLy8gTWluaW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgc21hbGxlc3QgKGZpcnN0KSBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWluKHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgNTc2cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XG59XG5cbi8vIE1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIGxhcmdlc3QgKGxhc3QpIGJyZWFrcG9pbnQuXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyBjYWxjdWxhdGVkIGFzIHRoZSBtaW5pbXVtIG9mIHRoZSBuZXh0IG9uZSBsZXNzIDAuMDJweFxuLy8gdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb25zIG9mIGBtaW4tYCBhbmQgYG1heC1gIHByZWZpeGVzIGFuZCB2aWV3cG9ydHMgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy5cbi8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvbWVkaWFxdWVyaWVzLTQvI21xLW1pbi1tYXhcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cbi8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjYxXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICA3NjcuOThweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEByZXR1cm4gaWYoJG5leHQsIGJyZWFrcG9pbnQtbWluKCRuZXh0LCAkYnJlYWtwb2ludHMpIC0gLjAyLCBudWxsKTtcbn1cblxuLy8gUmV0dXJucyBhIGJsYW5rIHN0cmluZyBpZiBzbWFsbGVzdCBicmVha3BvaW50LCBvdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSB3aXRoIGEgZGFzaCBpbiBmcm9udC5cbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIlwiICAoUmV0dXJucyBhIGJsYW5rIHN0cmluZylcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIi1zbVwiXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICBAcmV0dXJuIGlmKGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpID09IG51bGwsIFwiXCIsIFwiLSN7JG5hbWV9XCIpO1xufVxuXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIHdpZGVyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSBvZiBhdCBtb3N0IHRoZSBtYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgbGFyZ2VzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWF4IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSB0aGF0IHNwYW5zIG11bHRpcGxlIGJyZWFrcG9pbnQgd2lkdGhzLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1iZXR3ZWVuKCRsb3dlciwgJHVwcGVyLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRsb3dlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJHVwcGVyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBNZWRpYSBiZXR3ZWVuIHRoZSBicmVha3BvaW50J3MgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMuXG4vLyBObyBtaW5pbXVtIGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCwgYW5kIG5vIG1heGltdW0gZm9yIHRoZSBsYXJnZXN0IG9uZS5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBvbmx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50LCBub3Qgdmlld3BvcnRzIGFueSB3aWRlciBvciBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LW9ubHkoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZyYW1ld29yayBncmlkIGdlbmVyYXRpb25cbi8vXG4vLyBVc2VkIG9ubHkgYnkgQm9vdHN0cmFwIHRvIGdlbmVyYXRlIHRoZSBjb3JyZWN0IG51bWJlciBvZiBncmlkIGNsYXNzZXMgZ2l2ZW5cbi8vIGFueSB2YWx1ZSBvZiBgJGdyaWQtY29sdW1uc2AuXG5cbkBtaXhpbiBtYWtlLWdyaWQtY29sdW1ucygkY29sdW1uczogJGdyaWQtY29sdW1ucywgJGd1dHRlcjogJGdyaWQtZ3V0dGVyLXdpZHRoLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIC8vIENvbW1vbiBwcm9wZXJ0aWVzIGZvciBhbGwgYnJlYWtwb2ludHNcbiAgJWdyaWQtY29sdW1uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZy1yaWdodDogJGd1dHRlciAvIDI7XG4gICAgcGFkZGluZy1sZWZ0OiAkZ3V0dGVyIC8gMjtcbiAgfVxuXG4gIEBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRicmVha3BvaW50cykge1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcblxuICAgIC8vIEFsbG93IGNvbHVtbnMgdG8gc3RyZXRjaCBmdWxsIHdpZHRoIGJlbG93IHRoZWlyIGJyZWFrcG9pbnRzXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkY29sdW1ucyB7XG4gICAgICAuY29sI3skaW5maXh9LSN7JGl9IHtcbiAgICAgICAgQGV4dGVuZCAlZ3JpZC1jb2x1bW47XG4gICAgICB9XG4gICAgfVxuICAgIC5jb2wjeyRpbmZpeH0sXG4gICAgLmNvbCN7JGluZml4fS1hdXRvIHtcbiAgICAgIEBleHRlbmQgJWdyaWQtY29sdW1uO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQsICRicmVha3BvaW50cykge1xuICAgICAgLy8gUHJvdmlkZSBiYXNpYyBgLmNvbC17YnB9YCBjbGFzc2VzIGZvciBlcXVhbC13aWR0aCBmbGV4Ym94IGNvbHVtbnNcbiAgICAgIC5jb2wjeyRpbmZpeH0ge1xuICAgICAgICBmbGV4LWJhc2lzOiAwO1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1yb3ctY29sdW1ucyB7XG4gICAgICAgIC5yb3ctY29scyN7JGluZml4fS0jeyRpfSB7XG4gICAgICAgICAgQGluY2x1ZGUgcm93LWNvbHMoJGkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jb2wjeyRpbmZpeH0tYXV0byB7XG4gICAgICAgIEBpbmNsdWRlIG1ha2UtY29sLWF1dG8oKTtcbiAgICAgIH1cblxuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkY29sdW1ucyB7XG4gICAgICAgIC5jb2wjeyRpbmZpeH0tI3skaX0ge1xuICAgICAgICAgIEBpbmNsdWRlIG1ha2UtY29sKCRpLCAkY29sdW1ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLm9yZGVyI3skaW5maXh9LWZpcnN0IHsgb3JkZXI6IC0xOyB9XG5cbiAgICAgIC5vcmRlciN7JGluZml4fS1sYXN0IHsgb3JkZXI6ICRjb2x1bW5zICsgMTsgfVxuXG4gICAgICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRjb2x1bW5zIHtcbiAgICAgICAgLm9yZGVyI3skaW5maXh9LSN7JGl9IHsgb3JkZXI6ICRpOyB9XG4gICAgICB9XG5cbiAgICAgIC8vIGAkY29sdW1ucyAtIDFgIGJlY2F1c2Ugb2Zmc2V0dGluZyBieSB0aGUgd2lkdGggb2YgYW4gZW50aXJlIHJvdyBpc24ndCBwb3NzaWJsZVxuICAgICAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAoJGNvbHVtbnMgLSAxKSB7XG4gICAgICAgIEBpZiBub3QgKCRpbmZpeCA9PSBcIlwiIGFuZCAkaSA9PSAwKSB7IC8vIEF2b2lkIGVtaXR0aW5nIHVzZWxlc3MgLm9mZnNldC0wXG4gICAgICAgICAgLm9mZnNldCN7JGluZml4fS0jeyRpfSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtYWtlLWNvbC1vZmZzZXQoJGksICRjb2x1bW5zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBCYXNpYyBCb290c3RyYXAgdGFibGVcbi8vXG5cbi50YWJsZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAkc3BhY2VyO1xuICBjb2xvcjogJHRhYmxlLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmc7IC8vIFJlc2V0IGZvciBuZXN0aW5nIHdpdGhpbiBwYXJlbnRzIHdpdGggYGJhY2tncm91bmQtY29sb3JgLlxuXG4gIHRoLFxuICB0ZCB7XG4gICAgcGFkZGluZzogJHRhYmxlLWNlbGwtcGFkZGluZztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgIGJvcmRlci10b3A6ICR0YWJsZS1ib3JkZXItd2lkdGggc29saWQgJHRhYmxlLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIHRoZWFkIHRoIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIGJvcmRlci1ib3R0b206ICgyICogJHRhYmxlLWJvcmRlci13aWR0aCkgc29saWQgJHRhYmxlLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIHRib2R5ICsgdGJvZHkge1xuICAgIGJvcmRlci10b3A6ICgyICogJHRhYmxlLWJvcmRlci13aWR0aCkgc29saWQgJHRhYmxlLWJvcmRlci1jb2xvcjtcbiAgfVxufVxuXG5cbi8vXG4vLyBDb25kZW5zZWQgdGFibGUgdy8gaGFsZiBwYWRkaW5nXG4vL1xuXG4udGFibGUtc20ge1xuICB0aCxcbiAgdGQge1xuICAgIHBhZGRpbmc6ICR0YWJsZS1jZWxsLXBhZGRpbmctc207XG4gIH1cbn1cblxuXG4vLyBCb3JkZXIgdmVyc2lvbnNcbi8vXG4vLyBBZGQgb3IgcmVtb3ZlIGJvcmRlcnMgYWxsIGFyb3VuZCB0aGUgdGFibGUgYW5kIGJldHdlZW4gYWxsIHRoZSBjb2x1bW5zLlxuXG4udGFibGUtYm9yZGVyZWQge1xuICBib3JkZXI6ICR0YWJsZS1ib3JkZXItd2lkdGggc29saWQgJHRhYmxlLWJvcmRlci1jb2xvcjtcblxuICB0aCxcbiAgdGQge1xuICAgIGJvcmRlcjogJHRhYmxlLWJvcmRlci13aWR0aCBzb2xpZCAkdGFibGUtYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgdGhlYWQge1xuICAgIHRoLFxuICAgIHRkIHtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDIgKiAkdGFibGUtYm9yZGVyLXdpZHRoO1xuICAgIH1cbiAgfVxufVxuXG4udGFibGUtYm9yZGVybGVzcyB7XG4gIHRoLFxuICB0ZCxcbiAgdGhlYWQgdGgsXG4gIHRib2R5ICsgdGJvZHkge1xuICAgIGJvcmRlcjogMDtcbiAgfVxufVxuXG4vLyBaZWJyYS1zdHJpcGluZ1xuLy9cbi8vIERlZmF1bHQgemVicmEtc3RyaXBlIHN0eWxlcyAoYWx0ZXJuYXRpbmcgZ3JheSBhbmQgdHJhbnNwYXJlbnQgYmFja2dyb3VuZHMpXG5cbi50YWJsZS1zdHJpcGVkIHtcbiAgdGJvZHkgdHI6bnRoLW9mLXR5cGUoI3skdGFibGUtc3RyaXBlZC1vcmRlcn0pIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYWNjZW50LWJnO1xuICB9XG59XG5cblxuLy8gSG92ZXIgZWZmZWN0XG4vL1xuLy8gUGxhY2VkIGhlcmUgc2luY2UgaXQgaGFzIHRvIGNvbWUgYWZ0ZXIgdGhlIHBvdGVudGlhbCB6ZWJyYSBzdHJpcGluZ1xuXG4udGFibGUtaG92ZXIge1xuICB0Ym9keSB0ciB7XG4gICAgQGluY2x1ZGUgaG92ZXIoKSB7XG4gICAgICBjb2xvcjogJHRhYmxlLWhvdmVyLWNvbG9yO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWhvdmVyLWJnO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFRhYmxlIGJhY2tncm91bmRzXG4vL1xuLy8gRXhhY3Qgc2VsZWN0b3JzIGJlbG93IHJlcXVpcmVkIHRvIG92ZXJyaWRlIGAudGFibGUtc3RyaXBlZGAgYW5kIHByZXZlbnRcbi8vIGluaGVyaXRhbmNlIHRvIG5lc3RlZCB0YWJsZXMuXG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICBAaW5jbHVkZSB0YWJsZS1yb3ctdmFyaWFudCgkY29sb3IsIHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvciwgJHRhYmxlLWJnLWxldmVsKSwgdGhlbWUtY29sb3ItbGV2ZWwoJGNvbG9yLCAkdGFibGUtYm9yZGVyLWxldmVsKSk7XG59XG5cbkBpbmNsdWRlIHRhYmxlLXJvdy12YXJpYW50KGFjdGl2ZSwgJHRhYmxlLWFjdGl2ZS1iZyk7XG5cblxuLy8gRGFyayBzdHlsZXNcbi8vXG4vLyBTYW1lIHRhYmxlIG1hcmt1cCwgYnV0IGludmVydGVkIGNvbG9yIHNjaGVtZTogZGFyayBiYWNrZ3JvdW5kIGFuZCBsaWdodCB0ZXh0LlxuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZHVwbGljYXRlLXNlbGVjdG9yc1xuLnRhYmxlIHtcbiAgLnRoZWFkLWRhcmsge1xuICAgIHRoIHtcbiAgICAgIGNvbG9yOiAkdGFibGUtZGFyay1jb2xvcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1kYXJrLWJnO1xuICAgICAgYm9yZGVyLWNvbG9yOiAkdGFibGUtZGFyay1ib3JkZXItY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLnRoZWFkLWxpZ2h0IHtcbiAgICB0aCB7XG4gICAgICBjb2xvcjogJHRhYmxlLWhlYWQtY29sb3I7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtaGVhZC1iZztcbiAgICAgIGJvcmRlci1jb2xvcjogJHRhYmxlLWJvcmRlci1jb2xvcjtcbiAgICB9XG4gIH1cbn1cblxuLnRhYmxlLWRhcmsge1xuICBjb2xvcjogJHRhYmxlLWRhcmstY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1kYXJrLWJnO1xuXG4gIHRoLFxuICB0ZCxcbiAgdGhlYWQgdGgge1xuICAgIGJvcmRlci1jb2xvcjogJHRhYmxlLWRhcmstYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgJi50YWJsZS1ib3JkZXJlZCB7XG4gICAgYm9yZGVyOiAwO1xuICB9XG5cbiAgJi50YWJsZS1zdHJpcGVkIHtcbiAgICB0Ym9keSB0cjpudGgtb2YtdHlwZSgjeyR0YWJsZS1zdHJpcGVkLW9yZGVyfSkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWRhcmstYWNjZW50LWJnO1xuICAgIH1cbiAgfVxuXG4gICYudGFibGUtaG92ZXIge1xuICAgIHRib2R5IHRyIHtcbiAgICAgIEBpbmNsdWRlIGhvdmVyKCkge1xuICAgICAgICBjb2xvcjogJHRhYmxlLWRhcmstaG92ZXItY29sb3I7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1kYXJrLWhvdmVyLWJnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi8vIFJlc3BvbnNpdmUgdGFibGVzXG4vL1xuLy8gR2VuZXJhdGUgc2VyaWVzIG9mIGAudGFibGUtcmVzcG9uc2l2ZS0qYCBjbGFzc2VzIGZvciBjb25maWd1cmluZyB0aGUgc2NyZWVuXG4vLyBzaXplIG9mIHdoZXJlIHlvdXIgdGFibGUgd2lsbCBvdmVyZmxvdy5cblxuLnRhYmxlLXJlc3BvbnNpdmUge1xuICBAZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICAgICRuZXh0OiBicmVha3BvaW50LW5leHQoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJG5leHQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgICYjeyRpbmZpeH0ge1xuICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCRicmVha3BvaW50KSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXG4gICAgICAgIC8vIFByZXZlbnQgZG91YmxlIGJvcmRlciBvbiBob3Jpem9udGFsIHNjcm9sbCBkdWUgdG8gdXNlIG9mIGBkaXNwbGF5OiBibG9jaztgXG4gICAgICAgID4gLnRhYmxlLWJvcmRlcmVkIHtcbiAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIFRhYmxlc1xuXG5AbWl4aW4gdGFibGUtcm93LXZhcmlhbnQoJHN0YXRlLCAkYmFja2dyb3VuZCwgJGJvcmRlcjogbnVsbCkge1xuICAvLyBFeGFjdCBzZWxlY3RvcnMgYmVsb3cgcmVxdWlyZWQgdG8gb3ZlcnJpZGUgYC50YWJsZS1zdHJpcGVkYCBhbmQgcHJldmVudFxuICAvLyBpbmhlcml0YW5jZSB0byBuZXN0ZWQgdGFibGVzLlxuICAudGFibGUtI3skc3RhdGV9IHtcbiAgICAmLFxuICAgID4gdGgsXG4gICAgPiB0ZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICBAaWYgJGJvcmRlciAhPSBudWxsIHtcbiAgICAgIHRoLFxuICAgICAgdGQsXG4gICAgICB0aGVhZCB0aCxcbiAgICAgIHRib2R5ICsgdGJvZHkge1xuICAgICAgICBib3JkZXItY29sb3I6ICRib3JkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSG92ZXIgc3RhdGVzIGZvciBgLnRhYmxlLWhvdmVyYFxuICAvLyBOb3RlOiB0aGlzIGlzIG5vdCBhdmFpbGFibGUgZm9yIGNlbGxzIG9yIHJvd3Mgd2l0aGluIGB0aGVhZGAgb3IgYHRmb290YC5cbiAgLnRhYmxlLWhvdmVyIHtcbiAgICAkaG92ZXItYmFja2dyb3VuZDogZGFya2VuKCRiYWNrZ3JvdW5kLCA1JSk7XG5cbiAgICAudGFibGUtI3skc3RhdGV9IHtcbiAgICAgIEBpbmNsdWRlIGhvdmVyKCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaG92ZXItYmFja2dyb3VuZDtcblxuICAgICAgICA+IHRkLFxuICAgICAgICA+IHRoIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaG92ZXItYmFja2dyb3VuZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gQm9vdHN0cmFwIGZ1bmN0aW9uc1xuLy9cbi8vIFV0aWxpdHkgbWl4aW5zIGFuZCBmdW5jdGlvbnMgZm9yIGV2YWx1YXRpbmcgc291cmNlIGNvZGUgYWNyb3NzIG91ciB2YXJpYWJsZXMsIG1hcHMsIGFuZCBtaXhpbnMuXG5cbi8vIEFzY2VuZGluZ1xuLy8gVXNlZCB0byBldmFsdWF0ZSBTYXNzIG1hcHMgbGlrZSBvdXIgZ3JpZCBicmVha3BvaW50cy5cbkBtaXhpbiBfYXNzZXJ0LWFzY2VuZGluZygkbWFwLCAkbWFwLW5hbWUpIHtcbiAgJHByZXYta2V5OiBudWxsO1xuICAkcHJldi1udW06IG51bGw7XG4gIEBlYWNoICRrZXksICRudW0gaW4gJG1hcCB7XG4gICAgQGlmICRwcmV2LW51bSA9PSBudWxsIG9yIHVuaXQoJG51bSkgPT0gXCIlXCIgb3IgdW5pdCgkcHJldi1udW0pID09IFwiJVwiIHtcbiAgICAgIC8vIERvIG5vdGhpbmdcbiAgICB9IEBlbHNlIGlmIG5vdCBjb21wYXJhYmxlKCRwcmV2LW51bSwgJG51bSkge1xuICAgICAgQHdhcm4gXCJQb3RlbnRpYWxseSBpbnZhbGlkIHZhbHVlIGZvciAjeyRtYXAtbmFtZX06IFRoaXMgbWFwIG11c3QgYmUgaW4gYXNjZW5kaW5nIG9yZGVyLCBidXQga2V5ICcjeyRrZXl9JyBoYXMgdmFsdWUgI3skbnVtfSB3aG9zZSB1bml0IG1ha2VzIGl0IGluY29tcGFyYWJsZSB0byAjeyRwcmV2LW51bX0sIHRoZSB2YWx1ZSBvZiB0aGUgcHJldmlvdXMga2V5ICcjeyRwcmV2LWtleX0nICFcIjtcbiAgICB9IEBlbHNlIGlmICRwcmV2LW51bSA+PSAkbnVtIHtcbiAgICAgIEB3YXJuIFwiSW52YWxpZCB2YWx1ZSBmb3IgI3skbWFwLW5hbWV9OiBUaGlzIG1hcCBtdXN0IGJlIGluIGFzY2VuZGluZyBvcmRlciwgYnV0IGtleSAnI3ska2V5fScgaGFzIHZhbHVlICN7JG51bX0gd2hpY2ggaXNuJ3QgZ3JlYXRlciB0aGFuICN7JHByZXYtbnVtfSwgdGhlIHZhbHVlIG9mIHRoZSBwcmV2aW91cyBrZXkgJyN7JHByZXYta2V5fScgIVwiO1xuICAgIH1cbiAgICAkcHJldi1rZXk6ICRrZXk7XG4gICAgJHByZXYtbnVtOiAkbnVtO1xuICB9XG59XG5cbi8vIFN0YXJ0cyBhdCB6ZXJvXG4vLyBVc2VkIHRvIGVuc3VyZSB0aGUgbWluLXdpZHRoIG9mIHRoZSBsb3dlc3QgYnJlYWtwb2ludCBzdGFydHMgYXQgMC5cbkBtaXhpbiBfYXNzZXJ0LXN0YXJ0cy1hdC16ZXJvKCRtYXAsICRtYXAtbmFtZTogXCIkZ3JpZC1icmVha3BvaW50c1wiKSB7XG4gICR2YWx1ZXM6IG1hcC12YWx1ZXMoJG1hcCk7XG4gICRmaXJzdC12YWx1ZTogbnRoKCR2YWx1ZXMsIDEpO1xuICBAaWYgJGZpcnN0LXZhbHVlICE9IDAge1xuICAgIEB3YXJuIFwiRmlyc3QgYnJlYWtwb2ludCBpbiAjeyRtYXAtbmFtZX0gbXVzdCBzdGFydCBhdCAwLCBidXQgc3RhcnRzIGF0ICN7JGZpcnN0LXZhbHVlfS5cIjtcbiAgfVxufVxuXG4vLyBSZXBsYWNlIGAkc2VhcmNoYCB3aXRoIGAkcmVwbGFjZWAgaW4gYCRzdHJpbmdgXG4vLyBVc2VkIG9uIG91ciBTVkcgaWNvbiBiYWNrZ3JvdW5kcyBmb3IgY3VzdG9tIGZvcm1zLlxuLy9cbi8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHJpbmcgLSBJbml0aWFsIHN0cmluZ1xuLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWFyY2ggLSBTdWJzdHJpbmcgdG8gcmVwbGFjZVxuLy8gQHBhcmFtIHtTdHJpbmd9ICRyZXBsYWNlICgnJykgLSBOZXcgdmFsdWVcbi8vIEByZXR1cm4ge1N0cmluZ30gLSBVcGRhdGVkIHN0cmluZ1xuQGZ1bmN0aW9uIHN0ci1yZXBsYWNlKCRzdHJpbmcsICRzZWFyY2gsICRyZXBsYWNlOiBcIlwiKSB7XG4gICRpbmRleDogc3RyLWluZGV4KCRzdHJpbmcsICRzZWFyY2gpO1xuXG4gIEBpZiAkaW5kZXgge1xuICAgIEByZXR1cm4gc3RyLXNsaWNlKCRzdHJpbmcsIDEsICRpbmRleCAtIDEpICsgJHJlcGxhY2UgKyBzdHItcmVwbGFjZShzdHItc2xpY2UoJHN0cmluZywgJGluZGV4ICsgc3RyLWxlbmd0aCgkc2VhcmNoKSksICRzZWFyY2gsICRyZXBsYWNlKTtcbiAgfVxuXG4gIEByZXR1cm4gJHN0cmluZztcbn1cblxuLy8gU2VlIGh0dHBzOi8vY29kZXBlbi5pby9rZXZpbndlYmVyL3Blbi9kWFdvUndcbkBmdW5jdGlvbiBlc2NhcGUtc3ZnKCRzdHJpbmcpIHtcbiAgQGlmIHN0ci1pbmRleCgkc3RyaW5nLCBcImRhdGE6aW1hZ2Uvc3ZnK3htbFwiKSB7XG4gICAgQGVhY2ggJGNoYXIsICRlbmNvZGVkIGluICRlc2NhcGVkLWNoYXJhY3RlcnMge1xuICAgICAgJHN0cmluZzogc3RyLXJlcGxhY2UoJHN0cmluZywgJGNoYXIsICRlbmNvZGVkKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdHJpbmc7XG59XG5cbi8vIENvbG9yIGNvbnRyYXN0XG5AZnVuY3Rpb24gY29sb3IteWlxKCRjb2xvciwgJGRhcms6ICR5aXEtdGV4dC1kYXJrLCAkbGlnaHQ6ICR5aXEtdGV4dC1saWdodCkge1xuICAkcjogcmVkKCRjb2xvcik7XG4gICRnOiBncmVlbigkY29sb3IpO1xuICAkYjogYmx1ZSgkY29sb3IpO1xuXG4gICR5aXE6ICgoJHIgKiAyOTkpICsgKCRnICogNTg3KSArICgkYiAqIDExNCkpIC8gMTAwMDtcblxuICBAaWYgKCR5aXEgPj0gJHlpcS1jb250cmFzdGVkLXRocmVzaG9sZCkge1xuICAgIEByZXR1cm4gJGRhcms7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJGxpZ2h0O1xuICB9XG59XG5cbi8vIFJldHJpZXZlIGNvbG9yIFNhc3MgbWFwc1xuQGZ1bmN0aW9uIGNvbG9yKCRrZXk6IFwiYmx1ZVwiKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkY29sb3JzLCAka2V5KTtcbn1cblxuQGZ1bmN0aW9uIHRoZW1lLWNvbG9yKCRrZXk6IFwicHJpbWFyeVwiKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkdGhlbWUtY29sb3JzLCAka2V5KTtcbn1cblxuQGZ1bmN0aW9uIGdyYXkoJGtleTogXCIxMDBcIikge1xuICBAcmV0dXJuIG1hcC1nZXQoJGdyYXlzLCAka2V5KTtcbn1cblxuLy8gUmVxdWVzdCBhIHRoZW1lIGNvbG9yIGxldmVsXG5AZnVuY3Rpb24gdGhlbWUtY29sb3ItbGV2ZWwoJGNvbG9yLW5hbWU6IFwicHJpbWFyeVwiLCAkbGV2ZWw6IDApIHtcbiAgJGNvbG9yOiB0aGVtZS1jb2xvcigkY29sb3ItbmFtZSk7XG4gICRjb2xvci1iYXNlOiBpZigkbGV2ZWwgPiAwLCAkYmxhY2ssICR3aGl0ZSk7XG4gICRsZXZlbDogYWJzKCRsZXZlbCk7XG5cbiAgQHJldHVybiBtaXgoJGNvbG9yLWJhc2UsICRjb2xvciwgJGxldmVsICogJHRoZW1lLWNvbG9yLWludGVydmFsKTtcbn1cblxuLy8gUmV0dXJuIHZhbGlkIGNhbGNcbkBmdW5jdGlvbiBhZGQoJHZhbHVlMSwgJHZhbHVlMiwgJHJldHVybi1jYWxjOiB0cnVlKSB7XG4gIEBpZiAkdmFsdWUxID09IG51bGwge1xuICAgIEByZXR1cm4gJHZhbHVlMjtcbiAgfVxuXG4gIEBpZiAkdmFsdWUyID09IG51bGwge1xuICAgIEByZXR1cm4gJHZhbHVlMTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZTEpID09IG51bWJlciBhbmQgdHlwZS1vZigkdmFsdWUyKSA9PSBudW1iZXIgYW5kIGNvbXBhcmFibGUoJHZhbHVlMSwgJHZhbHVlMikge1xuICAgIEByZXR1cm4gJHZhbHVlMSArICR2YWx1ZTI7XG4gIH1cblxuICBAcmV0dXJuIGlmKCRyZXR1cm4tY2FsYyA9PSB0cnVlLCBjYWxjKCN7JHZhbHVlMX0gKyAjeyR2YWx1ZTJ9KSwgJHZhbHVlMSArIHVucXVvdGUoXCIgKyBcIikgKyAkdmFsdWUyKTtcbn1cblxuQGZ1bmN0aW9uIHN1YnRyYWN0KCR2YWx1ZTEsICR2YWx1ZTIsICRyZXR1cm4tY2FsYzogdHJ1ZSkge1xuICBAaWYgJHZhbHVlMSA9PSBudWxsIGFuZCAkdmFsdWUyID09IG51bGwge1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIEBpZiAkdmFsdWUxID09IG51bGwge1xuICAgIEByZXR1cm4gLSR2YWx1ZTI7XG4gIH1cblxuICBAaWYgJHZhbHVlMiA9PSBudWxsIHtcbiAgICBAcmV0dXJuICR2YWx1ZTE7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkdmFsdWUxKSA9PSBudW1iZXIgYW5kIHR5cGUtb2YoJHZhbHVlMikgPT0gbnVtYmVyIGFuZCBjb21wYXJhYmxlKCR2YWx1ZTEsICR2YWx1ZTIpIHtcbiAgICBAcmV0dXJuICR2YWx1ZTEgLSAkdmFsdWUyO1xuICB9XG5cbiAgQHJldHVybiBpZigkcmV0dXJuLWNhbGMgPT0gdHJ1ZSwgY2FsYygjeyR2YWx1ZTF9IC0gI3skdmFsdWUyfSksICR2YWx1ZTEgKyB1bnF1b3RlKFwiIC0gXCIpICsgJHZhbHVlMik7XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblxuLy9cbi8vIFRleHR1YWwgZm9ybSBjb250cm9sc1xuLy9cblxuLmZvcm0tY29udHJvbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZy15ICRpbnB1dC1wYWRkaW5nLXg7XG4gIGZvbnQtZmFtaWx5OiAkaW5wdXQtZm9udC1mYW1pbHk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaW5wdXQtZm9udC1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRpbnB1dC1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRpbnB1dC1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJnO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6ICRpbnB1dC1ib3JkZXItd2lkdGggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcblxuICAvLyBOb3RlOiBUaGlzIGhhcyBubyBlZmZlY3Qgb24gPHNlbGVjdD5zIGluIHNvbWUgYnJvd3NlcnMsIGR1ZSB0byB0aGUgbGltaXRlZCBzdHlsYWJpbGl0eSBvZiBgPHNlbGVjdD5gcyBpbiBDU1MuXG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGlucHV0LWJvcmRlci1yYWRpdXMsIDApO1xuXG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJGlucHV0LWJveC1zaGFkb3cpO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKCRpbnB1dC10cmFuc2l0aW9uKTtcblxuICAvLyBVbnN0eWxlIHRoZSBjYXJldCBvbiBgPHNlbGVjdD5gcyBpbiBJRTEwKy5cbiAgJjo6LW1zLWV4cGFuZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICB9XG5cbiAgLy8gUmVtb3ZlIHNlbGVjdCBvdXRsaW5lIGZyb20gc2VsZWN0IGJveCBpbiBGRlxuICAmOi1tb3otZm9jdXNyaW5nIHtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdGV4dC1zaGFkb3c6IDAgMCAwICRpbnB1dC1jb2xvcjtcbiAgfVxuXG4gIC8vIEN1c3RvbWl6ZSB0aGUgYDpmb2N1c2Agc3RhdGUgdG8gaW1pdGF0ZSBuYXRpdmUgV2ViS2l0IHN0eWxlcy5cbiAgQGluY2x1ZGUgZm9ybS1jb250cm9sLWZvY3VzKCRpZ25vcmUtd2FybmluZzogdHJ1ZSk7XG5cbiAgLy8gUGxhY2Vob2xkZXJcbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiAkaW5wdXQtcGxhY2Vob2xkZXItY29sb3I7XG4gICAgLy8gT3ZlcnJpZGUgRmlyZWZveCdzIHVudXN1YWwgZGVmYXVsdCBvcGFjaXR5OyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL3B1bGwvMTE1MjYuXG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIC8vIERpc2FibGVkIGFuZCByZWFkLW9ubHkgaW5wdXRzXG4gIC8vXG4gIC8vIEhUTUw1IHNheXMgdGhhdCBjb250cm9scyB1bmRlciBhIGZpZWxkc2V0ID4gbGVnZW5kOmZpcnN0LWNoaWxkIHdvbid0IGJlXG4gIC8vIGRpc2FibGVkIGlmIHRoZSBmaWVsZHNldCBpcyBkaXNhYmxlZC4gRHVlIHRvIGltcGxlbWVudGF0aW9uIGRpZmZpY3VsdHksIHdlXG4gIC8vIGRvbid0IGhvbm9yIHRoYXQgZWRnZSBjYXNlOyB3ZSBzdHlsZSB0aGVtIGFzIGRpc2FibGVkIGFueXdheS5cbiAgJjpkaXNhYmxlZCxcbiAgJltyZWFkb25seV0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1kaXNhYmxlZC1iZztcbiAgICAvLyBpT1MgZml4IGZvciB1bnJlYWRhYmxlIGRpc2FibGVkIGNvbnRlbnQ7IHNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzExNjU1LlxuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuc2VsZWN0LmZvcm0tY29udHJvbCB7XG4gICY6Zm9jdXM6Oi1tcy12YWx1ZSB7XG4gICAgLy8gU3VwcHJlc3MgdGhlIG5lc3RlZCBkZWZhdWx0IHdoaXRlIHRleHQgb24gYmx1ZSBiYWNrZ3JvdW5kIGhpZ2hsaWdodCBnaXZlbiB0b1xuICAgIC8vIHRoZSBzZWxlY3RlZCBvcHRpb24gdGV4dCB3aGVuIHRoZSAoc3RpbGwgY2xvc2VkKSA8c2VsZWN0PiByZWNlaXZlcyBmb2N1c1xuICAgIC8vIGluIElFIGFuZCAodW5kZXIgY2VydGFpbiBjb25kaXRpb25zKSBFZGdlLCBhcyBpdCBsb29rcyBiYWQgYW5kIGNhbm5vdCBiZSBtYWRlIHRvXG4gICAgLy8gbWF0Y2ggdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIG5hdGl2ZSB3aWRnZXQuXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTkzOTguXG4gICAgY29sb3I6ICRpbnB1dC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmc7XG4gIH1cbn1cblxuLy8gTWFrZSBmaWxlIGlucHV0cyBiZXR0ZXIgbWF0Y2ggdGV4dCBpbnB1dHMgYnkgZm9yY2luZyB0aGVtIHRvIG5ldyBsaW5lcy5cbi5mb3JtLWNvbnRyb2wtZmlsZSxcbi5mb3JtLWNvbnRyb2wtcmFuZ2Uge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG59XG5cblxuLy9cbi8vIExhYmVsc1xuLy9cblxuLy8gRm9yIHVzZSB3aXRoIGhvcml6b250YWwgYW5kIGlubGluZSBmb3Jtcywgd2hlbiB5b3UgbmVlZCB0aGUgbGFiZWwgKG9yIGxlZ2VuZClcbi8vIHRleHQgdG8gYWxpZ24gd2l0aCB0aGUgZm9ybSBjb250cm9scy5cbi5jb2wtZm9ybS1sYWJlbCB7XG4gIHBhZGRpbmctdG9wOiBhZGQoJGlucHV0LXBhZGRpbmcteSwgJGlucHV0LWJvcmRlci13aWR0aCk7XG4gIHBhZGRpbmctYm90dG9tOiBhZGQoJGlucHV0LXBhZGRpbmcteSwgJGlucHV0LWJvcmRlci13aWR0aCk7XG4gIG1hcmdpbi1ib3R0b206IDA7IC8vIE92ZXJyaWRlIHRoZSBgPGxhYmVsPi88bGVnZW5kPmAgZGVmYXVsdFxuICBAaW5jbHVkZSBmb250LXNpemUoaW5oZXJpdCk7IC8vIE92ZXJyaWRlIHRoZSBgPGxlZ2VuZD5gIGRlZmF1bHRcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodDtcbn1cblxuLmNvbC1mb3JtLWxhYmVsLWxnIHtcbiAgcGFkZGluZy10b3A6IGFkZCgkaW5wdXQtcGFkZGluZy15LWxnLCAkaW5wdXQtYm9yZGVyLXdpZHRoKTtcbiAgcGFkZGluZy1ib3R0b206IGFkZCgkaW5wdXQtcGFkZGluZy15LWxnLCAkaW5wdXQtYm9yZGVyLXdpZHRoKTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUtbGcpO1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0LWxnO1xufVxuXG4uY29sLWZvcm0tbGFiZWwtc20ge1xuICBwYWRkaW5nLXRvcDogYWRkKCRpbnB1dC1wYWRkaW5nLXktc20sICRpbnB1dC1ib3JkZXItd2lkdGgpO1xuICBwYWRkaW5nLWJvdHRvbTogYWRkKCRpbnB1dC1wYWRkaW5nLXktc20sICRpbnB1dC1ib3JkZXItd2lkdGgpO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGlucHV0LWZvbnQtc2l6ZS1zbSk7XG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQtc207XG59XG5cblxuLy8gUmVhZG9ubHkgY29udHJvbHMgYXMgcGxhaW4gdGV4dFxuLy9cbi8vIEFwcGx5IGNsYXNzIHRvIGEgcmVhZG9ubHkgaW5wdXQgdG8gbWFrZSBpdCBhcHBlYXIgbGlrZSByZWd1bGFyIHBsYWluXG4vLyB0ZXh0ICh3aXRob3V0IGFueSBib3JkZXIsIGJhY2tncm91bmQgY29sb3IsIGZvY3VzIGluZGljYXRvcilcblxuLmZvcm0tY29udHJvbC1wbGFpbnRleHQge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXkgMDtcbiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gbWF0Y2ggaW5wdXRzIGlmIHRoaXMgY2xhc3MgY29tZXMgb24gaW5wdXRzIHdpdGggZGVmYXVsdCBtYXJnaW5zXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaW5wdXQtZm9udC1zaXplKTtcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRpbnB1dC1wbGFpbnRleHQtY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItd2lkdGg6ICRpbnB1dC1ib3JkZXItd2lkdGggMDtcblxuICAmLmZvcm0tY29udHJvbC1zbSxcbiAgJi5mb3JtLWNvbnRyb2wtbGcge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG59XG5cblxuLy8gRm9ybSBjb250cm9sIHNpemluZ1xuLy9cbi8vIEJ1aWxkIG9uIGAuZm9ybS1jb250cm9sYCB3aXRoIG1vZGlmaWVyIGNsYXNzZXMgdG8gZGVjcmVhc2Ugb3IgaW5jcmVhc2UgdGhlXG4vLyBoZWlnaHQgYW5kIGZvbnQtc2l6ZSBvZiBmb3JtIGNvbnRyb2xzLlxuLy9cbi8vIFJlcGVhdGVkIGluIGBfaW5wdXRfZ3JvdXAuc2Nzc2AgdG8gYXZvaWQgU2FzcyBleHRlbmQgaXNzdWVzLlxuXG4uZm9ybS1jb250cm9sLXNtIHtcbiAgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0LXNtO1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZy15LXNtICRpbnB1dC1wYWRkaW5nLXgtc207XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaW5wdXQtZm9udC1zaXplLXNtKTtcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodC1zbTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cy1zbSk7XG59XG5cbi5mb3JtLWNvbnRyb2wtbGcge1xuICBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQtbGc7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXktbGcgJGlucHV0LXBhZGRpbmcteC1sZztcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRpbnB1dC1mb250LXNpemUtbGcpO1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0LWxnO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRpbnB1dC1ib3JkZXItcmFkaXVzLWxnKTtcbn1cblxuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWR1cGxpY2F0ZS1zZWxlY3RvcnNcbnNlbGVjdC5mb3JtLWNvbnRyb2wge1xuICAmW3NpemVdLFxuICAmW211bHRpcGxlXSB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbnRleHRhcmVhLmZvcm0tY29udHJvbCB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLy8gRm9ybSBncm91cHNcbi8vXG4vLyBEZXNpZ25lZCB0byBoZWxwIHdpdGggdGhlIG9yZ2FuaXphdGlvbiBhbmQgc3BhY2luZyBvZiB2ZXJ0aWNhbCBmb3Jtcy4gRm9yXG4vLyBob3Jpem9udGFsIGZvcm1zLCB1c2UgdGhlIHByZWRlZmluZWQgZ3JpZCBjbGFzc2VzLlxuXG4uZm9ybS1ncm91cCB7XG4gIG1hcmdpbi1ib3R0b206ICRmb3JtLWdyb3VwLW1hcmdpbi1ib3R0b207XG59XG5cbi5mb3JtLXRleHQge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogJGZvcm0tdGV4dC1tYXJnaW4tdG9wO1xufVxuXG5cbi8vIEZvcm0gZ3JpZFxuLy9cbi8vIFNwZWNpYWwgcmVwbGFjZW1lbnQgZm9yIG91ciBncmlkIHN5c3RlbSdzIGAucm93YCBmb3IgdGlnaHRlciBmb3JtIGxheW91dHMuXG5cbi5mb3JtLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgbWFyZ2luLXJpZ2h0OiAtJGZvcm0tZ3JpZC1ndXR0ZXItd2lkdGggLyAyO1xuICBtYXJnaW4tbGVmdDogLSRmb3JtLWdyaWQtZ3V0dGVyLXdpZHRoIC8gMjtcblxuICA+IC5jb2wsXG4gID4gW2NsYXNzKj1cImNvbC1cIl0ge1xuICAgIHBhZGRpbmctcmlnaHQ6ICRmb3JtLWdyaWQtZ3V0dGVyLXdpZHRoIC8gMjtcbiAgICBwYWRkaW5nLWxlZnQ6ICRmb3JtLWdyaWQtZ3V0dGVyLXdpZHRoIC8gMjtcbiAgfVxufVxuXG5cbi8vIENoZWNrYm94ZXMgYW5kIHJhZGlvc1xuLy9cbi8vIEluZGVudCB0aGUgbGFiZWxzIHRvIHBvc2l0aW9uIHJhZGlvcy9jaGVja2JveGVzIGFzIGhhbmdpbmcgY29udHJvbHMuXG5cbi5mb3JtLWNoZWNrIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZy1sZWZ0OiAkZm9ybS1jaGVjay1pbnB1dC1ndXR0ZXI7XG59XG5cbi5mb3JtLWNoZWNrLWlucHV0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXJnaW4tdG9wOiAkZm9ybS1jaGVjay1pbnB1dC1tYXJnaW4teTtcbiAgbWFyZ2luLWxlZnQ6IC0kZm9ybS1jaGVjay1pbnB1dC1ndXR0ZXI7XG5cbiAgLy8gVXNlIFtkaXNhYmxlZF0gYW5kIDpkaXNhYmxlZCBmb3Igd29ya2Fyb3VuZCBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI4MjQ3XG4gICZbZGlzYWJsZWRdIH4gLmZvcm0tY2hlY2stbGFiZWwsXG4gICY6ZGlzYWJsZWQgfiAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICB9XG59XG5cbi5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gT3ZlcnJpZGUgZGVmYXVsdCBgPGxhYmVsPmAgYm90dG9tIG1hcmdpblxufVxuXG4uZm9ybS1jaGVjay1pbmxpbmUge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZy1sZWZ0OiAwOyAvLyBPdmVycmlkZSBiYXNlIC5mb3JtLWNoZWNrXG4gIG1hcmdpbi1yaWdodDogJGZvcm0tY2hlY2staW5saW5lLW1hcmdpbi14O1xuXG4gIC8vIFVuZG8gLmZvcm0tY2hlY2staW5wdXQgZGVmYXVsdHMgYW5kIGFkZCBzb21lIGBtYXJnaW4tcmlnaHRgLlxuICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1yaWdodDogJGZvcm0tY2hlY2staW5saW5lLWlucHV0LW1hcmdpbi14O1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG59XG5cblxuLy8gRm9ybSB2YWxpZGF0aW9uXG4vL1xuLy8gUHJvdmlkZSBmZWVkYmFjayB0byB1c2VycyB3aGVuIGZvcm0gZmllbGQgdmFsdWVzIGFyZSB2YWxpZCBvciBpbnZhbGlkLiBXb3Jrc1xuLy8gcHJpbWFyaWx5IGZvciBjbGllbnQtc2lkZSB2YWxpZGF0aW9uIHZpYSBzY29wZWQgYDppbnZhbGlkYCBhbmQgYDp2YWxpZGBcbi8vIHBzZXVkby1jbGFzc2VzIGJ1dCBhbHNvIGluY2x1ZGVzIGAuaXMtaW52YWxpZGAgYW5kIGAuaXMtdmFsaWRgIGNsYXNzZXMgZm9yXG4vLyBzZXJ2ZXIgc2lkZSB2YWxpZGF0aW9uLlxuXG5AZWFjaCAkc3RhdGUsICRkYXRhIGluICRmb3JtLXZhbGlkYXRpb24tc3RhdGVzIHtcbiAgQGluY2x1ZGUgZm9ybS12YWxpZGF0aW9uLXN0YXRlKCRzdGF0ZSwgbWFwLWdldCgkZGF0YSwgY29sb3IpLCBtYXAtZ2V0KCRkYXRhLCBpY29uKSk7XG59XG5cbi8vIElubGluZSBmb3Jtc1xuLy9cbi8vIE1ha2UgZm9ybXMgYXBwZWFyIGlubGluZSgtYmxvY2spIGJ5IGFkZGluZyB0aGUgYC5mb3JtLWlubGluZWAgY2xhc3MuIElubGluZVxuLy8gZm9ybXMgYmVnaW4gc3RhY2tlZCBvbiBleHRyYSBzbWFsbCAobW9iaWxlKSBkZXZpY2VzIGFuZCB0aGVuIGdvIGlubGluZSB3aGVuXG4vLyB2aWV3cG9ydHMgcmVhY2ggPDc2OHB4LlxuLy9cbi8vIFJlcXVpcmVzIHdyYXBwaW5nIGlucHV0cyBhbmQgbGFiZWxzIHdpdGggYC5mb3JtLWdyb3VwYCBmb3IgcHJvcGVyIGRpc3BsYXkgb2Zcbi8vIGRlZmF1bHQgSFRNTCBmb3JtIGNvbnRyb2xzIGFuZCBvdXIgY3VzdG9tIGZvcm0gY29udHJvbHMgKGUuZy4sIGlucHV0IGdyb3VwcykuXG5cbi5mb3JtLWlubGluZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IC8vIFByZXZlbnQgc2hvcnRlciBlbGVtZW50cyBmcm9tIGdyb3dpbmcgdG8gc2FtZSBoZWlnaHQgYXMgb3RoZXJzIChlLmcuLCBzbWFsbCBidXR0b25zIGdyb3dpbmcgdG8gbm9ybWFsIHNpemVkIGJ1dHRvbiBoZWlnaHQpXG5cbiAgLy8gQmVjYXVzZSB3ZSB1c2UgZmxleCwgdGhlIGluaXRpYWwgc2l6aW5nIG9mIGNoZWNrYm94ZXMgaXMgY29sbGFwc2VkIGFuZFxuICAvLyBkb2Vzbid0IG9jY3VweSB0aGUgZnVsbC13aWR0aCAod2hpY2ggaXMgd2hhdCB3ZSB3YW50IGZvciB4cyBncmlkIHRpZXIpLFxuICAvLyBzbyB3ZSBmb3JjZSB0aGF0IGhlcmUuXG4gIC5mb3JtLWNoZWNrIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC8vIEtpY2sgaW4gdGhlIGlubGluZVxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKHNtKSB7XG4gICAgbGFiZWwge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgLy8gSW5saW5lLWJsb2NrIGFsbCB0aGUgdGhpbmdzIGZvciBcImlubGluZVwiXG4gICAgLmZvcm0tZ3JvdXAge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC8vIEFsbG93IGZvbGtzIHRvICpub3QqIHVzZSBgLmZvcm0tZ3JvdXBgXG4gICAgLmZvcm0tY29udHJvbCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB3aWR0aDogYXV0bzsgLy8gUHJldmVudCBsYWJlbHMgZnJvbSBzdGFja2luZyBhYm92ZSBpbnB1dHMgaW4gYC5mb3JtLWdyb3VwYFxuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICAvLyBNYWtlIHN0YXRpYyBjb250cm9scyBiZWhhdmUgbGlrZSByZWd1bGFyIG9uZXNcbiAgICAuZm9ybS1jb250cm9sLXBsYWludGV4dCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuXG4gICAgLmlucHV0LWdyb3VwLFxuICAgIC5jdXN0b20tc2VsZWN0IHtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSBkZWZhdWx0IG1hcmdpbiBvbiByYWRpb3MvY2hlY2tib3hlcyB0aGF0IHdlcmUgdXNlZCBmb3Igc3RhY2tpbmcsIGFuZFxuICAgIC8vIHRoZW4gdW5kbyB0aGUgZmxvYXRpbmcgb2YgcmFkaW9zIGFuZCBjaGVja2JveGVzIHRvIG1hdGNoLlxuICAgIC5mb3JtLWNoZWNrIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICB9XG4gICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkZm9ybS1jaGVjay1pbnB1dC1tYXJnaW4teDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cblxuICAgIC5jdXN0b20tY29udHJvbCB7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuICAgIC5jdXN0b20tY29udHJvbC1sYWJlbCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgcHJvcGVydHktYmxhY2tsaXN0XG5AbWl4aW4gdHJhbnNpdGlvbigkdHJhbnNpdGlvbi4uLikge1xuICBAaWYgJGVuYWJsZS10cmFuc2l0aW9ucyB7XG4gICAgQGlmIGxlbmd0aCgkdHJhbnNpdGlvbikgPT0gMCB7XG4gICAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbi1iYXNlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XG4gICAgfVxuICB9XG5cbiAgQGlmICRlbmFibGUtcHJlZmVycy1yZWR1Y2VkLW1vdGlvbi1tZWRpYS1xdWVyeSB7XG4gICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3JtIGNvbnRyb2wgZm9jdXMgc3RhdGVcbi8vXG4vLyBHZW5lcmF0ZSBhIGN1c3RvbWl6ZWQgZm9jdXMgc3RhdGUgYW5kIGZvciBhbnkgaW5wdXQgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbG9yLFxuLy8gd2hpY2ggZGVmYXVsdHMgdG8gdGhlIGAkaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yYCB2YXJpYWJsZS5cbi8vXG4vLyBXZSBoaWdobHkgZW5jb3VyYWdlIHlvdSB0byBub3QgY3VzdG9taXplIHRoZSBkZWZhdWx0IHZhbHVlLCBidXQgaW5zdGVhZCB1c2Vcbi8vIHRoaXMgdG8gdHdlYWsgY29sb3JzIG9uIGFuIGFzLW5lZWRlZCBiYXNpcy4gVGhpcyBhZXN0aGV0aWMgY2hhbmdlIGlzIGJhc2VkIG9uXG4vLyBXZWJLaXQncyBkZWZhdWx0IHN0eWxlcywgYnV0IGFwcGxpY2FibGUgdG8gYSB3aWRlciByYW5nZSBvZiBicm93c2Vycy4gSXRzXG4vLyB1c2FiaWxpdHkgYW5kIGFjY2Vzc2liaWxpdHkgc2hvdWxkIGJlIHRha2VuIGludG8gYWNjb3VudCB3aXRoIGFueSBjaGFuZ2UuXG4vL1xuLy8gRXhhbXBsZSB1c2FnZTogY2hhbmdlIHRoZSBkZWZhdWx0IGJsdWUgYm9yZGVyIGFuZCBzaGFkb3cgdG8gd2hpdGUgZm9yIGJldHRlclxuLy8gY29udHJhc3QgYWdhaW5zdCBhIGRhcmsgZ3JheSBiYWNrZ3JvdW5kLlxuQG1peGluIGZvcm0tY29udHJvbC1mb2N1cygkaWdub3JlLXdhcm5pbmc6IGZhbHNlKSB7XG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiAkaW5wdXQtZm9jdXMtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWZvY3VzLWJnO1xuICAgIGJvcmRlci1jb2xvcjogJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvcjtcbiAgICBvdXRsaW5lOiAwO1xuICAgIC8vIEF2b2lkIHVzaW5nIG1peGluIHNvIHdlIGNhbiBwYXNzIGN1c3RvbSBmb2N1cyBzaGFkb3cgcHJvcGVybHlcbiAgICBAaWYgJGVuYWJsZS1zaGFkb3dzIHtcbiAgICAgIGJveC1zaGFkb3c6ICRpbnB1dC1ib3gtc2hhZG93LCAkaW5wdXQtZm9jdXMtYm94LXNoYWRvdztcbiAgICB9IEBlbHNlIHtcbiAgICAgIGJveC1zaGFkb3c6ICRpbnB1dC1mb2N1cy1ib3gtc2hhZG93O1xuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBkZXByZWNhdGUoXCJUaGUgYGZvcm0tY29udHJvbC1mb2N1cygpYCBtaXhpblwiLCBcInY0LjQuMFwiLCBcInY1XCIsICRpZ25vcmUtd2FybmluZyk7XG59XG5cbi8vIFRoaXMgbWl4aW4gdXNlcyBhbiBgaWYoKWAgdGVjaG5pcXVlIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBEYXJ0IFNhc3Ncbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy9zYXNzL2lzc3Vlcy8xODczI2lzc3VlY29tbWVudC0xNTIyOTM3MjUgZm9yIG1vcmUgZGV0YWlsc1xuQG1peGluIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZS1zZWxlY3Rvcigkc3RhdGUpIHtcbiAgQGlmICgkc3RhdGUgPT0gXCJ2YWxpZFwiIG9yICRzdGF0ZSA9PSBcImludmFsaWRcIikge1xuICAgIC53YXMtdmFsaWRhdGVkICN7aWYoJiwgXCImXCIsIFwiXCIpfTojeyRzdGF0ZX0sXG4gICAgI3tpZigmLCBcIiZcIiwgXCJcIil9LmlzLSN7JHN0YXRlfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICN7aWYoJiwgXCImXCIsIFwiXCIpfS5pcy0jeyRzdGF0ZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3JtLXZhbGlkYXRpb24tc3RhdGUoJHN0YXRlLCAkY29sb3IsICRpY29uKSB7XG4gIC4jeyRzdGF0ZX0tZmVlZGJhY2sge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLXRvcDogJGZvcm0tZmVlZGJhY2stbWFyZ2luLXRvcDtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoJGZvcm0tZmVlZGJhY2stZm9udC1zaXplKTtcbiAgICBjb2xvcjogJGNvbG9yO1xuICB9XG5cbiAgLiN7JHN0YXRlfS10b29sdGlwIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxMDAlO1xuICAgIHotaW5kZXg6IDU7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7IC8vIENvbnRhaW4gdG8gcGFyZW50IHdoZW4gcG9zc2libGVcbiAgICBwYWRkaW5nOiAkZm9ybS1mZWVkYmFjay10b29sdGlwLXBhZGRpbmcteSAkZm9ybS1mZWVkYmFjay10b29sdGlwLXBhZGRpbmcteDtcbiAgICBtYXJnaW4tdG9wOiAuMXJlbTtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1mb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiAkZm9ybS1mZWVkYmFjay10b29sdGlwLWxpbmUtaGVpZ2h0O1xuICAgIGNvbG9yOiBjb2xvci15aXEoJGNvbG9yKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvciwgJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1vcGFjaXR5KTtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtYm9yZGVyLXJhZGl1cyk7XG4gIH1cblxuICBAaW5jbHVkZSBmb3JtLXZhbGlkYXRpb24tc3RhdGUtc2VsZWN0b3IoJHN0YXRlKSB7XG4gICAgfiAuI3skc3RhdGV9LWZlZWRiYWNrLFxuICAgIH4gLiN7JHN0YXRlfS10b29sdGlwIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gIC5mb3JtLWNvbnRyb2wge1xuICAgIEBpbmNsdWRlIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZS1zZWxlY3Rvcigkc3RhdGUpIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuXG4gICAgICBAaWYgJGVuYWJsZS12YWxpZGF0aW9uLWljb25zIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogJGlucHV0LWhlaWdodC1pbm5lcjtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogZXNjYXBlLXN2ZygkaWNvbik7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0ICRpbnB1dC1oZWlnaHQtaW5uZXItcXVhcnRlciBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogJGlucHV0LWhlaWdodC1pbm5lci1oYWxmICRpbnB1dC1oZWlnaHQtaW5uZXItaGFsZjtcbiAgICAgIH1cblxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAkaW5wdXQtZm9jdXMtd2lkdGggcmdiYSgkY29sb3IsIC4yNSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuICB0ZXh0YXJlYS5mb3JtLWNvbnRyb2wge1xuICAgIEBpbmNsdWRlIGZvcm0tdmFsaWRhdGlvbi1zdGF0ZS1zZWxlY3Rvcigkc3RhdGUpIHtcbiAgICAgIEBpZiAkZW5hYmxlLXZhbGlkYXRpb24taWNvbnMge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkaW5wdXQtaGVpZ2h0LWlubmVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgJGlucHV0LWhlaWdodC1pbm5lci1xdWFydGVyIHJpZ2h0ICRpbnB1dC1oZWlnaHQtaW5uZXItcXVhcnRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuY3VzdG9tLXNlbGVjdCB7XG4gICAgQGluY2x1ZGUgZm9ybS12YWxpZGF0aW9uLXN0YXRlLXNlbGVjdG9yKCRzdGF0ZSkge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG5cbiAgICAgIEBpZiAkZW5hYmxlLXZhbGlkYXRpb24taWNvbnMge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkY3VzdG9tLXNlbGVjdC1mZWVkYmFjay1pY29uLXBhZGRpbmctcmlnaHQ7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjdXN0b20tc2VsZWN0LWJhY2tncm91bmQsIGVzY2FwZS1zdmcoJGljb24pICRjdXN0b20tc2VsZWN0LWJnIG5vLXJlcGVhdCAkY3VzdG9tLXNlbGVjdC1mZWVkYmFjay1pY29uLXBvc2l0aW9uIC8gJGN1c3RvbS1zZWxlY3QtZmVlZGJhY2staWNvbi1zaXplO1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwICRpbnB1dC1mb2N1cy13aWR0aCByZ2JhKCRjb2xvciwgLjI1KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgQGluY2x1ZGUgZm9ybS12YWxpZGF0aW9uLXN0YXRlLXNlbGVjdG9yKCRzdGF0ZSkge1xuICAgICAgfiAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgIGNvbG9yOiAkY29sb3I7XG4gICAgICB9XG5cbiAgICAgIH4gLiN7JHN0YXRlfS1mZWVkYmFjayxcbiAgICAgIH4gLiN7JHN0YXRlfS10b29sdGlwIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmN1c3RvbS1jb250cm9sLWlucHV0IHtcbiAgICBAaW5jbHVkZSBmb3JtLXZhbGlkYXRpb24tc3RhdGUtc2VsZWN0b3IoJHN0YXRlKSB7XG4gICAgICB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7XG4gICAgICAgIGNvbG9yOiAkY29sb3I7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmOmNoZWNrZWQge1xuICAgICAgICB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6IGxpZ2h0ZW4oJGNvbG9yLCAxMCUpO1xuICAgICAgICAgIEBpbmNsdWRlIGdyYWRpZW50LWJnKGxpZ2h0ZW4oJGNvbG9yLCAxMCUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgJGlucHV0LWZvY3VzLXdpZHRoIHJnYmEoJGNvbG9yLCAuMjUpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpub3QoOmNoZWNrZWQpIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gY3VzdG9tIGZpbGVcbiAgLmN1c3RvbS1maWxlLWlucHV0IHtcbiAgICBAaW5jbHVkZSBmb3JtLXZhbGlkYXRpb24tc3RhdGUtc2VsZWN0b3IoJHN0YXRlKSB7XG4gICAgICB+IC5jdXN0b20tZmlsZS1sYWJlbCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgfiAuY3VzdG9tLWZpbGUtbGFiZWwge1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwICRpbnB1dC1mb2N1cy13aWR0aCByZ2JhKCRjb2xvciwgLjI1KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gR3JhZGllbnRzXG5cbkBtaXhpbiBncmFkaWVudC1iZygkY29sb3IpIHtcbiAgQGlmICRlbmFibGUtZ3JhZGllbnRzIHtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3IgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgbWl4KCRib2R5LWJnLCAkY29sb3IsIDE1JSksICRjb2xvcikgcmVwZWF0LXg7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgfVxufVxuXG4vLyBIb3Jpem9udGFsIGdyYWRpZW50LCBmcm9tIGxlZnQgdG8gcmlnaHRcbi8vXG4vLyBDcmVhdGVzIHR3byBjb2xvciBzdG9wcywgc3RhcnQgYW5kIGVuZCwgYnkgc3BlY2lmeWluZyBhIGNvbG9yIGFuZCBwb3NpdGlvbiBmb3IgZWFjaCBjb2xvciBzdG9wLlxuQG1peGluIGdyYWRpZW50LXgoJHN0YXJ0LWNvbG9yOiAkZ3JheS03MDAsICRlbmQtY29sb3I6ICRncmF5LTgwMCwgJHN0YXJ0LXBlcmNlbnQ6IDAlLCAkZW5kLXBlcmNlbnQ6IDEwMCUpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkc3RhcnQtY29sb3IgJHN0YXJ0LXBlcmNlbnQsICRlbmQtY29sb3IgJGVuZC1wZXJjZW50KTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xufVxuXG4vLyBWZXJ0aWNhbCBncmFkaWVudCwgZnJvbSB0b3AgdG8gYm90dG9tXG4vL1xuLy8gQ3JlYXRlcyB0d28gY29sb3Igc3RvcHMsIHN0YXJ0IGFuZCBlbmQsIGJ5IHNwZWNpZnlpbmcgYSBjb2xvciBhbmQgcG9zaXRpb24gZm9yIGVhY2ggY29sb3Igc3RvcC5cbkBtaXhpbiBncmFkaWVudC15KCRzdGFydC1jb2xvcjogJGdyYXktNzAwLCAkZW5kLWNvbG9yOiAkZ3JheS04MDAsICRzdGFydC1wZXJjZW50OiAwJSwgJGVuZC1wZXJjZW50OiAxMDAlKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICRzdGFydC1jb2xvciAkc3RhcnQtcGVyY2VudCwgJGVuZC1jb2xvciAkZW5kLXBlcmNlbnQpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG59XG5cbkBtaXhpbiBncmFkaWVudC1kaXJlY3Rpb25hbCgkc3RhcnQtY29sb3I6ICRncmF5LTcwMCwgJGVuZC1jb2xvcjogJGdyYXktODAwLCAkZGVnOiA0NWRlZykge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoJGRlZywgJHN0YXJ0LWNvbG9yLCAkZW5kLWNvbG9yKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xufVxuQG1peGluIGdyYWRpZW50LXgtdGhyZWUtY29sb3JzKCRzdGFydC1jb2xvcjogJGJsdWUsICRtaWQtY29sb3I6ICRwdXJwbGUsICRjb2xvci1zdG9wOiA1MCUsICRlbmQtY29sb3I6ICRyZWQpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkc3RhcnQtY29sb3IsICRtaWQtY29sb3IgJGNvbG9yLXN0b3AsICRlbmQtY29sb3IpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xufVxuQG1peGluIGdyYWRpZW50LXktdGhyZWUtY29sb3JzKCRzdGFydC1jb2xvcjogJGJsdWUsICRtaWQtY29sb3I6ICRwdXJwbGUsICRjb2xvci1zdG9wOiA1MCUsICRlbmQtY29sb3I6ICRyZWQpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCRzdGFydC1jb2xvciwgJG1pZC1jb2xvciAkY29sb3Itc3RvcCwgJGVuZC1jb2xvcik7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5AbWl4aW4gZ3JhZGllbnQtcmFkaWFsKCRpbm5lci1jb2xvcjogJGdyYXktNzAwLCAkb3V0ZXItY29sb3I6ICRncmF5LTgwMCkge1xuICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCAkaW5uZXItY29sb3IsICRvdXRlci1jb2xvcik7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5AbWl4aW4gZ3JhZGllbnQtc3RyaXBlZCgkY29sb3I6IHJnYmEoJHdoaXRlLCAuMTUpLCAkYW5nbGU6IDQ1ZGVnKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgkYW5nbGUsICRjb2xvciAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCAkY29sb3IgNTAlLCAkY29sb3IgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtcbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXG4vL1xuLy8gQmFzZSBzdHlsZXNcbi8vXG5cbi5idG4ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtZmFtaWx5OiAkYnRuLWZvbnQtZmFtaWx5O1xuICBmb250LXdlaWdodDogJGJ0bi1mb250LXdlaWdodDtcbiAgY29sb3I6ICRib2R5LWNvbG9yO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdoaXRlLXNwYWNlOiAkYnRuLXdoaXRlLXNwYWNlO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBjdXJzb3I6IGlmKCRlbmFibGUtcG9pbnRlci1jdXJzb3ItZm9yLWJ1dHRvbnMsIHBvaW50ZXIsIG51bGwpO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogJGJ0bi1ib3JkZXItd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG4gIEBpbmNsdWRlIGJ1dHRvbi1zaXplKCRidG4tcGFkZGluZy15LCAkYnRuLXBhZGRpbmcteCwgJGJ0bi1mb250LXNpemUsICRidG4tbGluZS1oZWlnaHQsICRidG4tYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJGJ0bi10cmFuc2l0aW9uKTtcblxuICBAaW5jbHVkZSBob3ZlcigpIHtcbiAgICBjb2xvcjogJGJvZHktY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgJjpmb2N1cyxcbiAgJi5mb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbiAgICBib3gtc2hhZG93OiAkYnRuLWZvY3VzLWJveC1zaGFkb3c7XG4gIH1cblxuICAvLyBEaXNhYmxlZCBjb21lcyBmaXJzdCBzbyBhY3RpdmUgY2FuIHByb3Blcmx5IHJlc3R5bGVcbiAgJi5kaXNhYmxlZCxcbiAgJjpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogJGJ0bi1kaXNhYmxlZC1vcGFjaXR5O1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3cobm9uZSk7XG4gIH1cblxuICAmOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSxcbiAgJjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUge1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGJ0bi1hY3RpdmUtYm94LXNoYWRvdyk7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGJ0bi1mb2N1cy1ib3gtc2hhZG93LCAkYnRuLWFjdGl2ZS1ib3gtc2hhZG93KTtcbiAgICB9XG4gIH1cbn1cblxuLy8gRnV0dXJlLXByb29mIGRpc2FibGluZyBvZiBjbGlja3Mgb24gYDxhPmAgZWxlbWVudHNcbmEuYnRuLmRpc2FibGVkLFxuZmllbGRzZXQ6ZGlzYWJsZWQgYS5idG4ge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuXG4vL1xuLy8gQWx0ZXJuYXRlIGJ1dHRvbnNcbi8vXG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAuYnRuLSN7JGNvbG9yfSB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLXZhcmlhbnQoJHZhbHVlLCAkdmFsdWUpO1xuICB9XG59XG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAuYnRuLW91dGxpbmUtI3skY29sb3J9IHtcbiAgICBAaW5jbHVkZSBidXR0b24tb3V0bGluZS12YXJpYW50KCR2YWx1ZSk7XG4gIH1cbn1cblxuXG4vL1xuLy8gTGluayBidXR0b25zXG4vL1xuXG4vLyBNYWtlIGEgYnV0dG9uIGxvb2sgYW5kIGJlaGF2ZSBsaWtlIGEgbGlua1xuLmJ0bi1saW5rIHtcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG4gIGNvbG9yOiAkbGluay1jb2xvcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiAkbGluay1kZWNvcmF0aW9uO1xuXG4gIEBpbmNsdWRlIGhvdmVyKCkge1xuICAgIGNvbG9yOiAkbGluay1ob3Zlci1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246ICRsaW5rLWhvdmVyLWRlY29yYXRpb247XG4gIH1cblxuICAmOmZvY3VzLFxuICAmLmZvY3VzIHtcbiAgICB0ZXh0LWRlY29yYXRpb246ICRsaW5rLWhvdmVyLWRlY29yYXRpb247XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxuXG4gICY6ZGlzYWJsZWQsXG4gICYuZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkYnRuLWxpbmstZGlzYWJsZWQtY29sb3I7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cblxuICAvLyBObyBuZWVkIGZvciBhbiBhY3RpdmUgc3RhdGUgaGVyZVxufVxuXG5cbi8vXG4vLyBCdXR0b24gU2l6ZXNcbi8vXG5cbi5idG4tbGcge1xuICBAaW5jbHVkZSBidXR0b24tc2l6ZSgkYnRuLXBhZGRpbmcteS1sZywgJGJ0bi1wYWRkaW5nLXgtbGcsICRidG4tZm9udC1zaXplLWxnLCAkYnRuLWxpbmUtaGVpZ2h0LWxnLCAkYnRuLWJvcmRlci1yYWRpdXMtbGcpO1xufVxuXG4uYnRuLXNtIHtcbiAgQGluY2x1ZGUgYnV0dG9uLXNpemUoJGJ0bi1wYWRkaW5nLXktc20sICRidG4tcGFkZGluZy14LXNtLCAkYnRuLWZvbnQtc2l6ZS1zbSwgJGJ0bi1saW5lLWhlaWdodC1zbSwgJGJ0bi1ib3JkZXItcmFkaXVzLXNtKTtcbn1cblxuXG4vL1xuLy8gQmxvY2sgYnV0dG9uXG4vL1xuXG4uYnRuLWJsb2NrIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIC8vIFZlcnRpY2FsbHkgc3BhY2Ugb3V0IG11bHRpcGxlIGJsb2NrIGJ1dHRvbnNcbiAgKyAuYnRuLWJsb2NrIHtcbiAgICBtYXJnaW4tdG9wOiAkYnRuLWJsb2NrLXNwYWNpbmcteTtcbiAgfVxufVxuXG4vLyBTcGVjaWZpY2l0eSBvdmVycmlkZXNcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0sXG5pbnB1dFt0eXBlPVwicmVzZXRcIl0sXG5pbnB1dFt0eXBlPVwiYnV0dG9uXCJdIHtcbiAgJi5idG4tYmxvY2sge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG4iLCIvLyBCdXR0b24gdmFyaWFudHNcbi8vXG4vLyBFYXNpbHkgcHVtcCBvdXQgZGVmYXVsdCBzdHlsZXMsIGFzIHdlbGwgYXMgOmhvdmVyLCA6Zm9jdXMsIDphY3RpdmUsXG4vLyBhbmQgZGlzYWJsZWQgb3B0aW9ucyBmb3IgYWxsIGJ1dHRvbnNcblxuQG1peGluIGJ1dHRvbi12YXJpYW50KCRiYWNrZ3JvdW5kLCAkYm9yZGVyLCAkaG92ZXItYmFja2dyb3VuZDogZGFya2VuKCRiYWNrZ3JvdW5kLCA3LjUlKSwgJGhvdmVyLWJvcmRlcjogZGFya2VuKCRib3JkZXIsIDEwJSksICRhY3RpdmUtYmFja2dyb3VuZDogZGFya2VuKCRiYWNrZ3JvdW5kLCAxMCUpLCAkYWN0aXZlLWJvcmRlcjogZGFya2VuKCRib3JkZXIsIDEyLjUlKSkge1xuICBjb2xvcjogY29sb3IteWlxKCRiYWNrZ3JvdW5kKTtcbiAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGJhY2tncm91bmQpO1xuICBib3JkZXItY29sb3I6ICRib3JkZXI7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJGJ0bi1ib3gtc2hhZG93KTtcblxuICBAaW5jbHVkZSBob3ZlcigpIHtcbiAgICBjb2xvcjogY29sb3IteWlxKCRob3Zlci1iYWNrZ3JvdW5kKTtcbiAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkaG92ZXItYmFja2dyb3VuZCk7XG4gICAgYm9yZGVyLWNvbG9yOiAkaG92ZXItYm9yZGVyO1xuICB9XG5cbiAgJjpmb2N1cyxcbiAgJi5mb2N1cyB7XG4gICAgY29sb3I6IGNvbG9yLXlpcSgkaG92ZXItYmFja2dyb3VuZCk7XG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGhvdmVyLWJhY2tncm91bmQpO1xuICAgIGJvcmRlci1jb2xvcjogJGhvdmVyLWJvcmRlcjtcbiAgICAvLyBBdm9pZCB1c2luZyBtaXhpbiBzbyB3ZSBjYW4gcGFzcyBjdXN0b20gZm9jdXMgc2hhZG93IHByb3Blcmx5XG4gICAgQGlmICRlbmFibGUtc2hhZG93cyB7XG4gICAgICBib3gtc2hhZG93OiAkYnRuLWJveC1zaGFkb3csIDAgMCAwICRidG4tZm9jdXMtd2lkdGggcmdiYShtaXgoY29sb3IteWlxKCRiYWNrZ3JvdW5kKSwgJGJvcmRlciwgMTUlKSwgLjUpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgYm94LXNoYWRvdzogMCAwIDAgJGJ0bi1mb2N1cy13aWR0aCByZ2JhKG1peChjb2xvci15aXEoJGJhY2tncm91bmQpLCAkYm9yZGVyLCAxNSUpLCAuNSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRGlzYWJsZWQgY29tZXMgZmlyc3Qgc28gYWN0aXZlIGNhbiBwcm9wZXJseSByZXN0eWxlXG4gICYuZGlzYWJsZWQsXG4gICY6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiBjb2xvci15aXEoJGJhY2tncm91bmQpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIGJvcmRlci1jb2xvcjogJGJvcmRlcjtcbiAgICAvLyBSZW1vdmUgQ1NTIGdyYWRpZW50cyBpZiB0aGV5J3JlIGVuYWJsZWRcbiAgICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAmOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSxcbiAgJjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsXG4gIC5zaG93ID4gJi5kcm9wZG93bi10b2dnbGUge1xuICAgIGNvbG9yOiBjb2xvci15aXEoJGFjdGl2ZS1iYWNrZ3JvdW5kKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWN0aXZlLWJhY2tncm91bmQ7XG4gICAgQGlmICRlbmFibGUtZ3JhZGllbnRzIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7IC8vIFJlbW92ZSB0aGUgZ3JhZGllbnQgZm9yIHRoZSBwcmVzc2VkL2FjdGl2ZSBzdGF0ZVxuICAgIH1cbiAgICBib3JkZXItY29sb3I6ICRhY3RpdmUtYm9yZGVyO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAvLyBBdm9pZCB1c2luZyBtaXhpbiBzbyB3ZSBjYW4gcGFzcyBjdXN0b20gZm9jdXMgc2hhZG93IHByb3Blcmx5XG4gICAgICBAaWYgJGVuYWJsZS1zaGFkb3dzIGFuZCAkYnRuLWFjdGl2ZS1ib3gtc2hhZG93ICE9IG5vbmUge1xuICAgICAgICBib3gtc2hhZG93OiAkYnRuLWFjdGl2ZS1ib3gtc2hhZG93LCAwIDAgMCAkYnRuLWZvY3VzLXdpZHRoIHJnYmEobWl4KGNvbG9yLXlpcSgkYmFja2dyb3VuZCksICRib3JkZXIsIDE1JSksIC41KTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAkYnRuLWZvY3VzLXdpZHRoIHJnYmEobWl4KGNvbG9yLXlpcSgkYmFja2dyb3VuZCksICRib3JkZXIsIDE1JSksIC41KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGJ1dHRvbi1vdXRsaW5lLXZhcmlhbnQoJGNvbG9yLCAkY29sb3ItaG92ZXI6IGNvbG9yLXlpcSgkY29sb3IpLCAkYWN0aXZlLWJhY2tncm91bmQ6ICRjb2xvciwgJGFjdGl2ZS1ib3JkZXI6ICRjb2xvcikge1xuICBjb2xvcjogJGNvbG9yO1xuICBib3JkZXItY29sb3I6ICRjb2xvcjtcblxuICBAaW5jbHVkZSBob3ZlcigpIHtcbiAgICBjb2xvcjogJGNvbG9yLWhvdmVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY3RpdmUtYmFja2dyb3VuZDtcbiAgICBib3JkZXItY29sb3I6ICRhY3RpdmUtYm9yZGVyO1xuICB9XG5cbiAgJjpmb2N1cyxcbiAgJi5mb2N1cyB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgJGJ0bi1mb2N1cy13aWR0aCByZ2JhKCRjb2xvciwgLjUpO1xuICB9XG5cbiAgJi5kaXNhYmxlZCxcbiAgJjpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuXG4gICY6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLFxuICAmOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSxcbiAgLnNob3cgPiAmLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgY29sb3I6IGNvbG9yLXlpcSgkYWN0aXZlLWJhY2tncm91bmQpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY3RpdmUtYmFja2dyb3VuZDtcbiAgICBib3JkZXItY29sb3I6ICRhY3RpdmUtYm9yZGVyO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAvLyBBdm9pZCB1c2luZyBtaXhpbiBzbyB3ZSBjYW4gcGFzcyBjdXN0b20gZm9jdXMgc2hhZG93IHByb3Blcmx5XG4gICAgICBAaWYgJGVuYWJsZS1zaGFkb3dzIGFuZCAkYnRuLWFjdGl2ZS1ib3gtc2hhZG93ICE9IG5vbmUge1xuICAgICAgICBib3gtc2hhZG93OiAkYnRuLWFjdGl2ZS1ib3gtc2hhZG93LCAwIDAgMCAkYnRuLWZvY3VzLXdpZHRoIHJnYmEoJGNvbG9yLCAuNSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgJGJ0bi1mb2N1cy13aWR0aCByZ2JhKCRjb2xvciwgLjUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBCdXR0b24gc2l6ZXNcbkBtaXhpbiBidXR0b24tc2l6ZSgkcGFkZGluZy15LCAkcGFkZGluZy14LCAkZm9udC1zaXplLCAkbGluZS1oZWlnaHQsICRib3JkZXItcmFkaXVzKSB7XG4gIHBhZGRpbmc6ICRwYWRkaW5nLXkgJHBhZGRpbmcteDtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRmb250LXNpemUpO1xuICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAvLyBNYW51YWxseSBkZWNsYXJlIHRvIHByb3ZpZGUgYW4gb3ZlcnJpZGUgdG8gdGhlIGJyb3dzZXIgZGVmYXVsdFxuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRib3JkZXItcmFkaXVzLCAwKTtcbn1cbiIsIi5mYWRlIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkdHJhbnNpdGlvbi1mYWRlKTtcblxuICAmOm5vdCguc2hvdykge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cblxuLmNvbGxhcHNlIHtcbiAgJjpub3QoLnNob3cpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5jb2xsYXBzaW5nIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJHRyYW5zaXRpb24tY29sbGFwc2UpO1xufVxuIiwiLy8gVGhlIGRyb3Bkb3duIHdyYXBwZXIgKGA8ZGl2PmApXG4uZHJvcHVwLFxuLmRyb3ByaWdodCxcbi5kcm9wZG93bixcbi5kcm9wbGVmdCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgLy8gR2VuZXJhdGUgdGhlIGNhcmV0IGF1dG9tYXRpY2FsbHlcbiAgQGluY2x1ZGUgY2FyZXQoKTtcbn1cblxuLy8gVGhlIGRyb3Bkb3duIG1lbnVcbi5kcm9wZG93bi1tZW51IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR6aW5kZXgtZHJvcGRvd247XG4gIGRpc3BsYXk6IG5vbmU7IC8vIG5vbmUgYnkgZGVmYXVsdCwgYnV0IGJsb2NrIG9uIFwib3BlblwiIG9mIHRoZSBtZW51XG4gIGZsb2F0OiBsZWZ0O1xuICBtaW4td2lkdGg6ICRkcm9wZG93bi1taW4td2lkdGg7XG4gIHBhZGRpbmc6ICRkcm9wZG93bi1wYWRkaW5nLXkgMDtcbiAgbWFyZ2luOiAkZHJvcGRvd24tc3BhY2VyIDAgMDsgLy8gb3ZlcnJpZGUgZGVmYXVsdCB1bFxuICBAaW5jbHVkZSBmb250LXNpemUoJGRyb3Bkb3duLWZvbnQtc2l6ZSk7XG4gIGNvbG9yOiAkZHJvcGRvd24tY29sb3I7XG4gIHRleHQtYWxpZ246IGxlZnQ7IC8vIEVuc3VyZXMgcHJvcGVyIGFsaWdubWVudCBpZiBwYXJlbnQgaGFzIGl0IGNoYW5nZWQgKGUuZy4sIG1vZGFsIGZvb3RlcilcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGRyb3Bkb3duLWJnO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6ICRkcm9wZG93bi1ib3JkZXItd2lkdGggc29saWQgJGRyb3Bkb3duLWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkZHJvcGRvd24tYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJGRyb3Bkb3duLWJveC1zaGFkb3cpO1xufVxuXG5AZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XG5cbiAgICAuZHJvcGRvd24tbWVudSN7JGluZml4fS1sZWZ0IHtcbiAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgbGVmdDogMDtcbiAgICB9XG5cbiAgICAuZHJvcGRvd24tbWVudSN7JGluZml4fS1yaWdodCB7XG4gICAgICByaWdodDogMDtcbiAgICAgIGxlZnQ6IGF1dG87XG4gICAgfVxuICB9XG59XG5cbi8vIEFsbG93IGZvciBkcm9wZG93bnMgdG8gZ28gYm90dG9tIHVwIChha2EsIGRyb3B1cC1tZW51KVxuLy8gSnVzdCBhZGQgLmRyb3B1cCBhZnRlciB0aGUgc3RhbmRhcmQgLmRyb3Bkb3duIGNsYXNzIGFuZCB5b3UncmUgc2V0LlxuLmRyb3B1cCB7XG4gIC5kcm9wZG93bi1tZW51IHtcbiAgICB0b3A6IGF1dG87XG4gICAgYm90dG9tOiAxMDAlO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogJGRyb3Bkb3duLXNwYWNlcjtcbiAgfVxuXG4gIC5kcm9wZG93bi10b2dnbGUge1xuICAgIEBpbmNsdWRlIGNhcmV0KHVwKTtcbiAgfVxufVxuXG4uZHJvcHJpZ2h0IHtcbiAgLmRyb3Bkb3duLW1lbnUge1xuICAgIHRvcDogMDtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiAxMDAlO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWxlZnQ6ICRkcm9wZG93bi1zcGFjZXI7XG4gIH1cblxuICAuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBAaW5jbHVkZSBjYXJldChyaWdodCk7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgdmVydGljYWwtYWxpZ246IDA7XG4gICAgfVxuICB9XG59XG5cbi5kcm9wbGVmdCB7XG4gIC5kcm9wZG93bi1tZW51IHtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDEwMCU7XG4gICAgbGVmdDogYXV0bztcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1yaWdodDogJGRyb3Bkb3duLXNwYWNlcjtcbiAgfVxuXG4gIC5kcm9wZG93bi10b2dnbGUge1xuICAgIEBpbmNsdWRlIGNhcmV0KGxlZnQpO1xuICAgICY6OmJlZm9yZSB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogMDtcbiAgICB9XG4gIH1cbn1cblxuLy8gV2hlbiBlbmFibGVkIFBvcHBlci5qcywgcmVzZXQgYmFzaWMgZHJvcGRvd24gcG9zaXRpb25cbi8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1kdXBsaWNhdGUtc2VsZWN0b3JzXG4uZHJvcGRvd24tbWVudSB7XG4gICZbeC1wbGFjZW1lbnRePVwidG9wXCJdLFxuICAmW3gtcGxhY2VtZW50Xj1cInJpZ2h0XCJdLFxuICAmW3gtcGxhY2VtZW50Xj1cImJvdHRvbVwiXSxcbiAgJlt4LXBsYWNlbWVudF49XCJsZWZ0XCJdIHtcbiAgICByaWdodDogYXV0bztcbiAgICBib3R0b206IGF1dG87XG4gIH1cbn1cblxuLy8gRGl2aWRlcnMgKGJhc2ljYWxseSBhbiBgPGhyPmApIHdpdGhpbiB0aGUgZHJvcGRvd25cbi5kcm9wZG93bi1kaXZpZGVyIHtcbiAgQGluY2x1ZGUgbmF2LWRpdmlkZXIoJGRyb3Bkb3duLWRpdmlkZXItYmcsICRkcm9wZG93bi1kaXZpZGVyLW1hcmdpbi15LCB0cnVlKTtcbn1cblxuLy8gTGlua3MsIGJ1dHRvbnMsIGFuZCBtb3JlIHdpdGhpbiB0aGUgZHJvcGRvd24gbWVudVxuLy9cbi8vIGA8YnV0dG9uPmAtc3BlY2lmaWMgc3R5bGVzIGFyZSBkZW5vdGVkIHdpdGggYC8vIEZvciA8YnV0dG9uPnNgXG4uZHJvcGRvd24taXRlbSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTsgLy8gRm9yIGA8YnV0dG9uPmBzXG4gIHBhZGRpbmc6ICRkcm9wZG93bi1pdGVtLXBhZGRpbmcteSAkZHJvcGRvd24taXRlbS1wYWRkaW5nLXg7XG4gIGNsZWFyOiBib3RoO1xuICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcbiAgY29sb3I6ICRkcm9wZG93bi1saW5rLWNvbG9yO1xuICB0ZXh0LWFsaWduOiBpbmhlcml0OyAvLyBGb3IgYDxidXR0b24+YHNcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgLy8gcHJldmVudCBsaW5rcyBmcm9tIHJhbmRvbWx5IGJyZWFraW5nIG9udG8gbmV3IGxpbmVzXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAvLyBGb3IgYDxidXR0b24+YHNcbiAgYm9yZGVyOiAwOyAvLyBGb3IgYDxidXR0b24+YHNcblxuICAvLyBQcmV2ZW50IGRyb3Bkb3duIG92ZXJmbG93IGlmIHRoZXJlJ3Mgbm8gcGFkZGluZ1xuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL3B1bGwvMjc3MDNcbiAgQGlmICRkcm9wZG93bi1wYWRkaW5nLXkgPT0gMCB7XG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygkZHJvcGRvd24taW5uZXItYm9yZGVyLXJhZGl1cyk7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmFkaXVzKCRkcm9wZG93bi1pbm5lci1ib3JkZXItcmFkaXVzKTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICBjb2xvcjogJGRyb3Bkb3duLWxpbmstaG92ZXItY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIEBpbmNsdWRlIGdyYWRpZW50LWJnKCRkcm9wZG93bi1saW5rLWhvdmVyLWJnKTtcbiAgfVxuXG4gICYuYWN0aXZlLFxuICAmOmFjdGl2ZSB7XG4gICAgY29sb3I6ICRkcm9wZG93bi1saW5rLWFjdGl2ZS1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGRyb3Bkb3duLWxpbmstYWN0aXZlLWJnKTtcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICY6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAvLyBSZW1vdmUgQ1NTIGdyYWRpZW50cyBpZiB0aGV5J3JlIGVuYWJsZWRcbiAgICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLmRyb3Bkb3duLW1lbnUuc2hvdyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vLyBEcm9wZG93biBzZWN0aW9uIGhlYWRlcnNcbi5kcm9wZG93bi1oZWFkZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogJGRyb3Bkb3duLXBhZGRpbmcteSAkZHJvcGRvd24taXRlbS1wYWRkaW5nLXg7XG4gIG1hcmdpbi1ib3R0b206IDA7IC8vIGZvciB1c2Ugd2l0aCBoZWFkaW5nIGVsZW1lbnRzXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udC1zaXplLXNtKTtcbiAgY29sb3I6ICRkcm9wZG93bi1oZWFkZXItY29sb3I7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IC8vIGFzIHdpdGggPiBsaSA+IGFcbn1cblxuLy8gRHJvcGRvd24gdGV4dFxuLmRyb3Bkb3duLWl0ZW0tdGV4dCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAkZHJvcGRvd24taXRlbS1wYWRkaW5nLXkgJGRyb3Bkb3duLWl0ZW0tcGFkZGluZy14O1xuICBjb2xvcjogJGRyb3Bkb3duLWxpbmstY29sb3I7XG59XG4iLCJAbWl4aW4gY2FyZXQtZG93bigpIHtcbiAgYm9yZGVyLXRvcDogJGNhcmV0LXdpZHRoIHNvbGlkO1xuICBib3JkZXItcmlnaHQ6ICRjYXJldC13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWJvdHRvbTogMDtcbiAgYm9yZGVyLWxlZnQ6ICRjYXJldC13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbn1cblxuQG1peGluIGNhcmV0LXVwKCkge1xuICBib3JkZXItdG9wOiAwO1xuICBib3JkZXItcmlnaHQ6ICRjYXJldC13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWJvdHRvbTogJGNhcmV0LXdpZHRoIHNvbGlkO1xuICBib3JkZXItbGVmdDogJGNhcmV0LXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG5AbWl4aW4gY2FyZXQtcmlnaHQoKSB7XG4gIGJvcmRlci10b3A6ICRjYXJldC13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJpZ2h0OiAwO1xuICBib3JkZXItYm90dG9tOiAkY2FyZXQtd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1sZWZ0OiAkY2FyZXQtd2lkdGggc29saWQ7XG59XG5cbkBtaXhpbiBjYXJldC1sZWZ0KCkge1xuICBib3JkZXItdG9wOiAkY2FyZXQtd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodDogJGNhcmV0LXdpZHRoIHNvbGlkO1xuICBib3JkZXItYm90dG9tOiAkY2FyZXQtd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbkBtaXhpbiBjYXJldCgkZGlyZWN0aW9uOiBkb3duKSB7XG4gIEBpZiAkZW5hYmxlLWNhcmV0IHtcbiAgICAmOjphZnRlciB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tbGVmdDogJGNhcmV0LXNwYWNpbmc7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogJGNhcmV0LXZlcnRpY2FsLWFsaWduO1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIEBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgICBAaW5jbHVkZSBjYXJldC1kb3duKCk7XG4gICAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgICBAaW5jbHVkZSBjYXJldC11cCgpO1xuICAgICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgICAgQGluY2x1ZGUgY2FyZXQtcmlnaHQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRjYXJldC1zcGFjaW5nO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogJGNhcmV0LXZlcnRpY2FsLWFsaWduO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBAaW5jbHVkZSBjYXJldC1sZWZ0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjplbXB0eTo6YWZ0ZXIge1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBIb3Jpem9udGFsIGRpdmlkZXJzXG4vL1xuLy8gRGl2aWRlcnMgKGJhc2ljYWxseSBhbiBocikgd2l0aGluIGRyb3Bkb3ducyBhbmQgbmF2IGxpc3RzXG5cbkBtaXhpbiBuYXYtZGl2aWRlcigkY29sb3I6ICRuYXYtZGl2aWRlci1jb2xvciwgJG1hcmdpbi15OiAkbmF2LWRpdmlkZXItbWFyZ2luLXksICRpZ25vcmUtd2FybmluZzogZmFsc2UpIHtcbiAgaGVpZ2h0OiAwO1xuICBtYXJnaW46ICRtYXJnaW4teSAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgJGNvbG9yO1xuICBAaW5jbHVkZSBkZXByZWNhdGUoXCJUaGUgYG5hdi1kaXZpZGVyKClgIG1peGluXCIsIFwidjQuNC4wXCIsIFwidjVcIiwgJGlnbm9yZS13YXJuaW5nKTtcbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXG4vLyBNYWtlIHRoZSBkaXYgYmVoYXZlIGxpa2UgYSBidXR0b25cbi5idG4tZ3JvdXAsXG4uYnRuLWdyb3VwLXZlcnRpY2FsIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgLy8gbWF0Y2ggLmJ0biBhbGlnbm1lbnQgZ2l2ZW4gZm9udC1zaXplIGhhY2sgYWJvdmVcblxuICA+IC5idG4ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmbGV4OiAxIDEgYXV0bztcblxuICAgIC8vIEJyaW5nIHRoZSBob3ZlciwgZm9jdXNlZCwgYW5kIFwiYWN0aXZlXCIgYnV0dG9ucyB0byB0aGUgZnJvbnQgdG8gb3ZlcmxheVxuICAgIC8vIHRoZSBib3JkZXJzIHByb3Blcmx5XG4gICAgQGluY2x1ZGUgaG92ZXIoKSB7XG4gICAgICB6LWluZGV4OiAxO1xuICAgIH1cbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlLFxuICAgICYuYWN0aXZlIHtcbiAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuICB9XG59XG5cbi8vIE9wdGlvbmFsOiBHcm91cCBtdWx0aXBsZSBidXR0b24gZ3JvdXBzIHRvZ2V0aGVyIGZvciBhIHRvb2xiYXJcbi5idG4tdG9vbGJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gIC5pbnB1dC1ncm91cCB7XG4gICAgd2lkdGg6IGF1dG87XG4gIH1cbn1cblxuLmJ0bi1ncm91cCB7XG4gIC8vIFByZXZlbnQgZG91YmxlIGJvcmRlcnMgd2hlbiBidXR0b25zIGFyZSBuZXh0IHRvIGVhY2ggb3RoZXJcbiAgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLFxuICA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgIG1hcmdpbi1sZWZ0OiAtJGJ0bi1ib3JkZXItd2lkdGg7XG4gIH1cblxuICAvLyBSZXNldCByb3VuZGVkIGNvcm5lcnNcbiAgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLFxuICA+IC5idG4tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4ge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yaWdodC1yYWRpdXMoMCk7XG4gIH1cblxuICA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksXG4gID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4ge1xuICAgIEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygwKTtcbiAgfVxufVxuXG4vLyBTaXppbmdcbi8vXG4vLyBSZW1peCB0aGUgZGVmYXVsdCBidXR0b24gc2l6aW5nIGNsYXNzZXMgaW50byBuZXcgb25lcyBmb3IgZWFzaWVyIG1hbmlwdWxhdGlvbi5cblxuLmJ0bi1ncm91cC1zbSA+IC5idG4geyBAZXh0ZW5kIC5idG4tc207IH1cbi5idG4tZ3JvdXAtbGcgPiAuYnRuIHsgQGV4dGVuZCAuYnRuLWxnOyB9XG5cblxuLy9cbi8vIFNwbGl0IGJ1dHRvbiBkcm9wZG93bnNcbi8vXG5cbi5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAkYnRuLXBhZGRpbmcteCAqIC43NTtcbiAgcGFkZGluZy1sZWZ0OiAkYnRuLXBhZGRpbmcteCAqIC43NTtcblxuICAmOjphZnRlcixcbiAgLmRyb3B1cCAmOjphZnRlcixcbiAgLmRyb3ByaWdodCAmOjphZnRlciB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cblxuICAuZHJvcGxlZnQgJjo6YmVmb3JlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuLmJ0bi1zbSArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAkYnRuLXBhZGRpbmcteC1zbSAqIC43NTtcbiAgcGFkZGluZy1sZWZ0OiAkYnRuLXBhZGRpbmcteC1zbSAqIC43NTtcbn1cblxuLmJ0bi1sZyArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAkYnRuLXBhZGRpbmcteC1sZyAqIC43NTtcbiAgcGFkZGluZy1sZWZ0OiAkYnRuLXBhZGRpbmcteC1sZyAqIC43NTtcbn1cblxuXG4vLyBUaGUgY2xpY2thYmxlIGJ1dHRvbiBmb3IgdG9nZ2xpbmcgdGhlIG1lbnVcbi8vIFNldCB0aGUgc2FtZSBpbnNldCBzaGFkb3cgYXMgdGhlIDphY3RpdmUgc3RhdGVcbi5idG4tZ3JvdXAuc2hvdyAuZHJvcGRvd24tdG9nZ2xlIHtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdygkYnRuLWFjdGl2ZS1ib3gtc2hhZG93KTtcblxuICAvLyBTaG93IG5vIHNoYWRvdyBmb3IgYC5idG4tbGlua2Agc2luY2UgaXQgaGFzIG5vIG90aGVyIGJ1dHRvbiBzdHlsZXMuXG4gICYuYnRuLWxpbmsge1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3cobm9uZSk7XG4gIH1cbn1cblxuXG4vL1xuLy8gVmVydGljYWwgYnV0dG9uIGdyb3Vwc1xuLy9cblxuLmJ0bi1ncm91cC12ZXJ0aWNhbCB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICA+IC5idG4sXG4gID4gLmJ0bi1ncm91cCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksXG4gID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgbWFyZ2luLXRvcDogLSRidG4tYm9yZGVyLXdpZHRoO1xuICB9XG5cbiAgLy8gUmVzZXQgcm91bmRlZCBjb3JuZXJzXG4gID4gLmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSxcbiAgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHtcbiAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cygwKTtcbiAgfVxuXG4gID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSxcbiAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXMoMCk7XG4gIH1cbn1cblxuXG4vLyBDaGVja2JveCBhbmQgcmFkaW8gb3B0aW9uc1xuLy9cbi8vIEluIG9yZGVyIHRvIHN1cHBvcnQgdGhlIGJyb3dzZXIncyBmb3JtIHZhbGlkYXRpb24gZmVlZGJhY2ssIHBvd2VyZWQgYnkgdGhlXG4vLyBgcmVxdWlyZWRgIGF0dHJpYnV0ZSwgd2UgaGF2ZSB0byBcImhpZGVcIiB0aGUgaW5wdXRzIHZpYSBgY2xpcGAuIFdlIGNhbm5vdCB1c2Vcbi8vIGBkaXNwbGF5OiBub25lO2Agb3IgYHZpc2liaWxpdHk6IGhpZGRlbjtgIGFzIHRoYXQgYWxzbyBoaWRlcyB0aGUgcG9wb3Zlci5cbi8vIFNpbXBseSB2aXN1YWxseSBoaWRpbmcgdGhlIGlucHV0cyB2aWEgYG9wYWNpdHlgIHdvdWxkIGxlYXZlIHRoZW0gY2xpY2thYmxlIGluXG4vLyBjZXJ0YWluIGNhc2VzIHdoaWNoIGlzIHByZXZlbnRlZCBieSB1c2luZyBgY2xpcGAgYW5kIGBwb2ludGVyLWV2ZW50c2AuXG4vLyBUaGlzIHdheSwgd2UgZW5zdXJlIGEgRE9NIGVsZW1lbnQgaXMgdmlzaWJsZSB0byBwb3NpdGlvbiB0aGUgcG9wb3ZlciBmcm9tLlxuLy9cbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8xMjc5NCBhbmRcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzE0NTU5IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG4uYnRuLWdyb3VwLXRvZ2dsZSB7XG4gID4gLmJ0bixcbiAgPiAuYnRuLWdyb3VwID4gLmJ0biB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDsgLy8gT3ZlcnJpZGUgZGVmYXVsdCBgPGxhYmVsPmAgdmFsdWVcblxuICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbiAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG5cbi8vXG4vLyBCYXNlIHN0eWxlc1xuLy9cblxuLmlucHV0LWdyb3VwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7IC8vIEZvciBmb3JtIHZhbGlkYXRpb24gZmVlZGJhY2tcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIHdpZHRoOiAxMDAlO1xuXG4gID4gLmZvcm0tY29udHJvbCxcbiAgPiAuZm9ybS1jb250cm9sLXBsYWludGV4dCxcbiAgPiAuY3VzdG9tLXNlbGVjdCxcbiAgPiAuY3VzdG9tLWZpbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgLy8gRm9yIGZvY3VzIHN0YXRlJ3Mgei1pbmRleFxuICAgIGZsZXg6IDEgMSAwJTtcbiAgICBtaW4td2lkdGg6IDA7IC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM2MjQ3MTQwL3doeS1kb250LWZsZXgtaXRlbXMtc2hyaW5rLXBhc3QtY29udGVudC1zaXplXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICsgLmZvcm0tY29udHJvbCxcbiAgICArIC5jdXN0b20tc2VsZWN0LFxuICAgICsgLmN1c3RvbS1maWxlIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtJGlucHV0LWJvcmRlci13aWR0aDtcbiAgICB9XG4gIH1cblxuICAvLyBCcmluZyB0aGUgXCJhY3RpdmVcIiBmb3JtIGNvbnRyb2wgdG8gdGhlIHRvcCBvZiBzdXJyb3VuZGluZyBlbGVtZW50c1xuICA+IC5mb3JtLWNvbnRyb2w6Zm9jdXMsXG4gID4gLmN1c3RvbS1zZWxlY3Q6Zm9jdXMsXG4gID4gLmN1c3RvbS1maWxlIC5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7XG4gICAgei1pbmRleDogMztcbiAgfVxuXG4gIC8vIEJyaW5nIHRoZSBjdXN0b20gZmlsZSBpbnB1dCBhYm92ZSB0aGUgbGFiZWxcbiAgPiAuY3VzdG9tLWZpbGUgLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIHtcbiAgICB6LWluZGV4OiA0O1xuICB9XG5cbiAgPiAuZm9ybS1jb250cm9sLFxuICA+IC5jdXN0b20tc2VsZWN0IHtcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkgeyBAaW5jbHVkZSBib3JkZXItcmlnaHQtcmFkaXVzKDApOyB9XG4gICAgJjpub3QoOmZpcnN0LWNoaWxkKSB7IEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygwKTsgfVxuICB9XG5cbiAgLy8gQ3VzdG9tIGZpbGUgaW5wdXRzIGhhdmUgbW9yZSBjb21wbGV4IG1hcmt1cCwgdGh1cyByZXF1aXJpbmcgZGlmZmVyZW50XG4gIC8vIGJvcmRlci1yYWRpdXMgb3ZlcnJpZGVzLlxuICA+IC5jdXN0b20tZmlsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgJjpub3QoOmxhc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbCxcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkgLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7IEBpbmNsdWRlIGJvcmRlci1yaWdodC1yYWRpdXMoMCk7IH1cbiAgICAmOm5vdCg6Zmlyc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbCB7IEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygwKTsgfVxuICB9XG59XG5cblxuLy8gUHJlcGVuZCBhbmQgYXBwZW5kXG4vL1xuLy8gV2hpbGUgaXQgcmVxdWlyZXMgb25lIGV4dHJhIGxheWVyIG9mIEhUTUwgZm9yIGVhY2gsIGRlZGljYXRlZCBwcmVwZW5kIGFuZFxuLy8gYXBwZW5kIGVsZW1lbnRzIGFsbG93IHVzIHRvIDEpIGJlIGxlc3MgY2xldmVyLCAyKSBzaW1wbGlmeSBvdXIgc2VsZWN0b3JzLCBhbmRcbi8vIDMpIHN1cHBvcnQgSFRNTDUgZm9ybSB2YWxpZGF0aW9uLlxuXG4uaW5wdXQtZ3JvdXAtcHJlcGVuZCxcbi5pbnB1dC1ncm91cC1hcHBlbmQge1xuICBkaXNwbGF5OiBmbGV4O1xuXG4gIC8vIEVuc3VyZSBidXR0b25zIGFyZSBhbHdheXMgYWJvdmUgaW5wdXRzIGZvciBtb3JlIHZpc3VhbGx5IHBsZWFzaW5nIGJvcmRlcnMuXG4gIC8vIFRoaXMgaXNuJ3QgbmVlZGVkIGZvciBgLmlucHV0LWdyb3VwLXRleHRgIHNpbmNlIGl0IHNoYXJlcyB0aGUgc2FtZSBib3JkZXItY29sb3JcbiAgLy8gYXMgb3VyIGlucHV0cy5cbiAgLmJ0biB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDI7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIHotaW5kZXg6IDM7XG4gICAgfVxuICB9XG5cbiAgLmJ0biArIC5idG4sXG4gIC5idG4gKyAuaW5wdXQtZ3JvdXAtdGV4dCxcbiAgLmlucHV0LWdyb3VwLXRleHQgKyAuaW5wdXQtZ3JvdXAtdGV4dCxcbiAgLmlucHV0LWdyb3VwLXRleHQgKyAuYnRuIHtcbiAgICBtYXJnaW4tbGVmdDogLSRpbnB1dC1ib3JkZXItd2lkdGg7XG4gIH1cbn1cblxuLmlucHV0LWdyb3VwLXByZXBlbmQgeyBtYXJnaW4tcmlnaHQ6IC0kaW5wdXQtYm9yZGVyLXdpZHRoOyB9XG4uaW5wdXQtZ3JvdXAtYXBwZW5kIHsgbWFyZ2luLWxlZnQ6IC0kaW5wdXQtYm9yZGVyLXdpZHRoOyB9XG5cblxuLy8gVGV4dHVhbCBhZGRvbnNcbi8vXG4vLyBTZXJ2ZXMgYXMgYSBjYXRjaC1hbGwgZWxlbWVudCBmb3IgYW55IHRleHQgb3IgcmFkaW8vY2hlY2tib3ggaW5wdXQgeW91IHdpc2hcbi8vIHRvIHByZXBlbmQgb3IgYXBwZW5kIHRvIGFuIGlucHV0LlxuXG4uaW5wdXQtZ3JvdXAtdGV4dCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nLXkgJGlucHV0LXBhZGRpbmcteDtcbiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gQWxsb3cgdXNlIG9mIDxsYWJlbD4gZWxlbWVudHMgYnkgb3ZlcnJpZGluZyBvdXIgZGVmYXVsdCBtYXJnaW4tYm90dG9tXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaW5wdXQtZm9udC1zaXplKTsgLy8gTWF0Y2ggaW5wdXRzXG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGlucHV0LWdyb3VwLWFkZG9uLWNvbG9yO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1ncm91cC1hZGRvbi1iZztcbiAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLXdpZHRoIHNvbGlkICRpbnB1dC1ncm91cC1hZGRvbi1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGlucHV0LWJvcmRlci1yYWRpdXMpO1xuXG4gIC8vIE51a2UgZGVmYXVsdCBtYXJnaW5zIGZyb20gY2hlY2tib3hlcyBhbmQgcmFkaW9zIHRvIHZlcnRpY2FsbHkgY2VudGVyIHdpdGhpbi5cbiAgaW5wdXRbdHlwZT1cInJhZGlvXCJdLFxuICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbn1cblxuXG4vLyBTaXppbmdcbi8vXG4vLyBSZW1peCB0aGUgZGVmYXVsdCBmb3JtIGNvbnRyb2wgc2l6aW5nIGNsYXNzZXMgaW50byBuZXcgb25lcyBmb3IgZWFzaWVyXG4vLyBtYW5pcHVsYXRpb24uXG5cbi5pbnB1dC1ncm91cC1sZyA+IC5mb3JtLWNvbnRyb2w6bm90KHRleHRhcmVhKSxcbi5pbnB1dC1ncm91cC1sZyA+IC5jdXN0b20tc2VsZWN0IHtcbiAgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0LWxnO1xufVxuXG4uaW5wdXQtZ3JvdXAtbGcgPiAuZm9ybS1jb250cm9sLFxuLmlucHV0LWdyb3VwLWxnID4gLmN1c3RvbS1zZWxlY3QsXG4uaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuYnRuLFxuLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4ge1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZy15LWxnICRpbnB1dC1wYWRkaW5nLXgtbGc7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaW5wdXQtZm9udC1zaXplLWxnKTtcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodC1sZztcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cy1sZyk7XG59XG5cbi5pbnB1dC1ncm91cC1zbSA+IC5mb3JtLWNvbnRyb2w6bm90KHRleHRhcmVhKSxcbi5pbnB1dC1ncm91cC1zbSA+IC5jdXN0b20tc2VsZWN0IHtcbiAgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0LXNtO1xufVxuXG4uaW5wdXQtZ3JvdXAtc20gPiAuZm9ybS1jb250cm9sLFxuLmlucHV0LWdyb3VwLXNtID4gLmN1c3RvbS1zZWxlY3QsXG4uaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuYnRuLFxuLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4ge1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZy15LXNtICRpbnB1dC1wYWRkaW5nLXgtc207XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaW5wdXQtZm9udC1zaXplLXNtKTtcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodC1zbTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cy1zbSk7XG59XG5cbi5pbnB1dC1ncm91cC1sZyA+IC5jdXN0b20tc2VsZWN0LFxuLmlucHV0LWdyb3VwLXNtID4gLmN1c3RvbS1zZWxlY3Qge1xuICBwYWRkaW5nLXJpZ2h0OiAkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXggKyAkY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZztcbn1cblxuXG4vLyBQcmVwZW5kIGFuZCBhcHBlbmQgcm91bmRlZCBjb3JuZXJzXG4vL1xuLy8gVGhlc2UgcnVsZXNldHMgbXVzdCBjb21lIGFmdGVyIHRoZSBzaXppbmcgb25lcyB0byBwcm9wZXJseSBvdmVycmlkZSBzbSBhbmQgbGdcbi8vIGJvcmRlci1yYWRpdXMgdmFsdWVzIHdoZW4gZXh0ZW5kaW5nLiBUaGV5J3JlIG1vcmUgc3BlY2lmaWMgdGhhbiB3ZSdkIGxpa2Vcbi8vIHdpdGggdGhlIGAuaW5wdXQtZ3JvdXAgPmAgcGFydCwgYnV0IHdpdGhvdXQgaXQsIHdlIGNhbm5vdCBvdmVycmlkZSB0aGUgc2l6aW5nLlxuXG5cbi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0bixcbi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuLFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmlucHV0LWdyb3VwLXRleHQsXG4uaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOmxhc3QtY2hpbGQgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpsYXN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpsYXN0LWNoaWxkKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1yaWdodC1yYWRpdXMoMCk7XG59XG5cbi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuLFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuLFxuLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCkgPiAuaW5wdXQtZ3JvdXAtdGV4dCxcbi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kOmZpcnN0LWNoaWxkID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSxcbi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kOmZpcnN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpmaXJzdC1jaGlsZCkge1xuICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoMCk7XG59XG4iLCIvLyBFbWJlZGRlZCBpY29ucyBmcm9tIE9wZW4gSWNvbmljLlxuLy8gUmVsZWFzZWQgdW5kZXIgTUlUIGFuZCBjb3B5cmlnaHQgMjAxNCBXYXlidXJ5LlxuLy8gaHR0cHM6Ly91c2VpY29uaWMuY29tL29wZW5cblxuXG4vLyBDaGVja2JveGVzIGFuZCByYWRpb3Ncbi8vXG4vLyBCYXNlIGNsYXNzIHRha2VzIGNhcmUgb2YgYWxsIHRoZSBrZXkgYmVoYXZpb3JhbCBhc3BlY3RzLlxuXG4uY3VzdG9tLWNvbnRyb2wge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtaW4taGVpZ2h0OiAkZm9udC1zaXplLWJhc2UgKiAkbGluZS1oZWlnaHQtYmFzZTtcbiAgcGFkZGluZy1sZWZ0OiAkY3VzdG9tLWNvbnRyb2wtZ3V0dGVyICsgJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplO1xufVxuXG4uY3VzdG9tLWNvbnRyb2wtaW5saW5lIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIG1hcmdpbi1yaWdodDogJGN1c3RvbS1jb250cm9sLXNwYWNlci14O1xufVxuXG4uY3VzdG9tLWNvbnRyb2wtaW5wdXQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IC0xOyAvLyBQdXQgdGhlIGlucHV0IGJlaGluZCB0aGUgbGFiZWwgc28gaXQgZG9lc24ndCBvdmVybGF5IHRleHRcbiAgd2lkdGg6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZTtcbiAgaGVpZ2h0OiAoJGZvbnQtc2l6ZS1iYXNlICogJGxpbmUtaGVpZ2h0LWJhc2UgKyAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemUpIC8gMjtcbiAgb3BhY2l0eTogMDtcblxuICAmOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gICAgY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1jb2xvcjtcbiAgICBib3JkZXItY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1ib3JkZXItY29sb3I7XG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWJnKTtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1ib3gtc2hhZG93KTtcbiAgfVxuXG4gICY6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gICAgLy8gdGhlIG1peGluIGlzIG5vdCB1c2VkIGhlcmUgdG8gbWFrZSBzdXJlIHRoZXJlIGlzIGZlZWRiYWNrXG4gICAgQGlmICRlbmFibGUtc2hhZG93cyB7XG4gICAgICBib3gtc2hhZG93OiAkaW5wdXQtYm94LXNoYWRvdywgJGlucHV0LWZvY3VzLWJveC1zaGFkb3c7XG4gICAgfSBAZWxzZSB7XG4gICAgICBib3gtc2hhZG93OiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWZvY3VzLWJveC1zaGFkb3c7XG4gICAgfVxuICB9XG5cbiAgJjpmb2N1czpub3QoOmNoZWNrZWQpIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICAgIGJvcmRlci1jb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1mb2N1cy1ib3JkZXItY29sb3I7XG4gIH1cblxuICAmOm5vdCg6ZGlzYWJsZWQpOmFjdGl2ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgICBjb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1hY3RpdmUtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1hY3RpdmUtYmc7XG4gICAgYm9yZGVyLWNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1ib3JkZXItY29sb3I7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1ib3gtc2hhZG93KTtcbiAgfVxuXG4gIC8vIFVzZSBbZGlzYWJsZWRdIGFuZCA6ZGlzYWJsZWQgdG8gd29yayBhcm91bmQgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yODI0N1xuICAmW2Rpc2FibGVkXSxcbiAgJjpkaXNhYmxlZCB7XG4gICAgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwge1xuICAgICAgY29sb3I6ICRjdXN0b20tY29udHJvbC1sYWJlbC1kaXNhYmxlZC1jb2xvcjtcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1kaXNhYmxlZC1iZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gQ3VzdG9tIGNvbnRyb2wgaW5kaWNhdG9yc1xuLy9cbi8vIEJ1aWxkIHRoZSBjdXN0b20gY29udHJvbHMgb3V0IG9mIHBzZXVkby1lbGVtZW50cy5cblxuLmN1c3RvbS1jb250cm9sLWxhYmVsIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBjb2xvcjogJGN1c3RvbS1jb250cm9sLWxhYmVsLWNvbG9yO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICBjdXJzb3I6ICRjdXN0b20tY29udHJvbC1jdXJzb3I7XG5cbiAgLy8gQmFja2dyb3VuZC1jb2xvciBhbmQgKHdoZW4gZW5hYmxlZCkgZ3JhZGllbnRcbiAgJjo6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAoJGZvbnQtc2l6ZS1iYXNlICogJGxpbmUtaGVpZ2h0LWJhc2UgLSAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemUpIC8gMjtcbiAgICBsZWZ0OiAtKCRjdXN0b20tY29udHJvbC1ndXR0ZXIgKyAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemUpO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemU7XG4gICAgaGVpZ2h0OiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemU7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnO1xuICAgIGJvcmRlcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1ib3JkZXItY29sb3Igc29saWQgJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1ib3JkZXItd2lkdGg7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJveC1zaGFkb3cpO1xuICB9XG5cbiAgLy8gRm9yZWdyb3VuZCAoaWNvbilcbiAgJjo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6ICgkZm9udC1zaXplLWJhc2UgKiAkbGluZS1oZWlnaHQtYmFzZSAtICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZSkgLyAyO1xuICAgIGxlZnQ6IC0oJGN1c3RvbS1jb250cm9sLWd1dHRlciArICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZSk7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZTtcbiAgICBoZWlnaHQ6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZTtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJhY2tncm91bmQ6IG5vLXJlcGVhdCA1MCUgLyAjeyRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmctc2l6ZX07XG4gIH1cbn1cblxuXG4vLyBDaGVja2JveGVzXG4vL1xuLy8gVHdlYWsganVzdCBhIGZldyB0aGluZ3MgZm9yIGNoZWNrYm94ZXMuXG5cbi5jdXN0b20tY2hlY2tib3gge1xuICAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1ib3JkZXItcmFkaXVzKTtcbiAgfVxuXG4gIC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWljb24tY2hlY2tlZCk7XG4gICAgfVxuICB9XG5cbiAgLmN1c3RvbS1jb250cm9sLWlucHV0OmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBib3JkZXItY29sb3I6ICRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWluZGV0ZXJtaW5hdGUtYm9yZGVyLWNvbG9yO1xuICAgICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1iZyk7XG4gICAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWluZGV0ZXJtaW5hdGUtYm94LXNoYWRvdyk7XG4gICAgfVxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGVzY2FwZS1zdmcoJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaWNvbi1pbmRldGVybWluYXRlKTtcbiAgICB9XG4gIH1cblxuICAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQge1xuICAgICY6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1kaXNhYmxlZC1iZztcbiAgICB9XG4gICAgJjppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWRpc2FibGVkLWJnO1xuICAgIH1cbiAgfVxufVxuXG4vLyBSYWRpb3Ncbi8vXG4vLyBUd2VhayBqdXN0IGEgZmV3IHRoaW5ncyBmb3IgcmFkaW9zLlxuXG4uY3VzdG9tLXJhZGlvIHtcbiAgLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUge1xuICAgIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9wZXJ0eS1ibGFja2xpc3RcbiAgICBib3JkZXItcmFkaXVzOiAkY3VzdG9tLXJhZGlvLWluZGljYXRvci1ib3JkZXItcmFkaXVzO1xuICB9XG5cbiAgLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwge1xuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGVzY2FwZS1zdmcoJGN1c3RvbS1yYWRpby1pbmRpY2F0b3ItaWNvbi1jaGVja2VkKTtcbiAgICB9XG4gIH1cblxuICAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQge1xuICAgICY6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1kaXNhYmxlZC1iZztcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBzd2l0Y2hlc1xuLy9cbi8vIFR3ZWFrIGEgZmV3IHRoaW5ncyBmb3Igc3dpdGNoZXNcblxuLmN1c3RvbS1zd2l0Y2gge1xuICBwYWRkaW5nLWxlZnQ6ICRjdXN0b20tc3dpdGNoLXdpZHRoICsgJGN1c3RvbS1jb250cm9sLWd1dHRlcjtcblxuICAuY3VzdG9tLWNvbnRyb2wtbGFiZWwge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBsZWZ0OiAtKCRjdXN0b20tc3dpdGNoLXdpZHRoICsgJGN1c3RvbS1jb250cm9sLWd1dHRlcik7XG4gICAgICB3aWR0aDogJGN1c3RvbS1zd2l0Y2gtd2lkdGg7XG4gICAgICBwb2ludGVyLWV2ZW50czogYWxsO1xuICAgICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LWJsYWNrbGlzdFxuICAgICAgYm9yZGVyLXJhZGl1czogJGN1c3RvbS1zd2l0Y2gtaW5kaWNhdG9yLWJvcmRlci1yYWRpdXM7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgdG9wOiBhZGQoKCRmb250LXNpemUtYmFzZSAqICRsaW5lLWhlaWdodC1iYXNlIC0gJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplKSAvIDIsICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm9yZGVyLXdpZHRoICogMik7XG4gICAgICBsZWZ0OiBhZGQoLSgkY3VzdG9tLXN3aXRjaC13aWR0aCArICRjdXN0b20tY29udHJvbC1ndXR0ZXIpLCAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJvcmRlci13aWR0aCAqIDIpO1xuICAgICAgd2lkdGg6ICRjdXN0b20tc3dpdGNoLWluZGljYXRvci1zaXplO1xuICAgICAgaGVpZ2h0OiAkY3VzdG9tLXN3aXRjaC1pbmRpY2F0b3Itc2l6ZTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm9yZGVyLWNvbG9yO1xuICAgICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LWJsYWNrbGlzdFxuICAgICAgYm9yZGVyLXJhZGl1czogJGN1c3RvbS1zd2l0Y2gtaW5kaWNhdG9yLWJvcmRlci1yYWRpdXM7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKHRyYW5zZm9ybSAuMTVzIGVhc2UtaW4tb3V0LCAkY3VzdG9tLWZvcm1zLXRyYW5zaXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCRjdXN0b20tc3dpdGNoLXdpZHRoIC0gJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplKTtcbiAgICB9XG4gIH1cblxuICAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQge1xuICAgICY6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1kaXNhYmxlZC1iZztcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTZWxlY3Rcbi8vXG4vLyBSZXBsYWNlcyB0aGUgYnJvd3NlciBkZWZhdWx0IHNlbGVjdCB3aXRoIGEgY3VzdG9tIG9uZSwgbW9zdGx5IHB1bGxlZCBmcm9tXG4vLyBodHRwczovL3ByaW1lci5naXRodWIuaW8vLlxuLy9cblxuLmN1c3RvbS1zZWxlY3Qge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6ICRjdXN0b20tc2VsZWN0LWhlaWdodDtcbiAgcGFkZGluZzogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15ICgkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXggKyAkY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZykgJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15ICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteDtcbiAgZm9udC1mYW1pbHk6ICRjdXN0b20tc2VsZWN0LWZvbnQtZmFtaWx5O1xuICBAaW5jbHVkZSBmb250LXNpemUoJGN1c3RvbS1zZWxlY3QtZm9udC1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRjdXN0b20tc2VsZWN0LWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGN1c3RvbS1zZWxlY3QtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkY3VzdG9tLXNlbGVjdC1jb2xvcjtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgYmFja2dyb3VuZDogJGN1c3RvbS1zZWxlY3QtYmcgJGN1c3RvbS1zZWxlY3QtYmFja2dyb3VuZDtcbiAgYm9yZGVyOiAkY3VzdG9tLXNlbGVjdC1ib3JkZXItd2lkdGggc29saWQgJGN1c3RvbS1zZWxlY3QtYm9yZGVyLWNvbG9yO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRjdXN0b20tc2VsZWN0LWJvcmRlci1yYWRpdXMsIDApO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tc2VsZWN0LWJveC1zaGFkb3cpO1xuICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICY6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogJGN1c3RvbS1zZWxlY3QtZm9jdXMtYm9yZGVyLWNvbG9yO1xuICAgIG91dGxpbmU6IDA7XG4gICAgQGlmICRlbmFibGUtc2hhZG93cyB7XG4gICAgICBib3gtc2hhZG93OiAkY3VzdG9tLXNlbGVjdC1ib3gtc2hhZG93LCAkY3VzdG9tLXNlbGVjdC1mb2N1cy1ib3gtc2hhZG93O1xuICAgIH0gQGVsc2Uge1xuICAgICAgYm94LXNoYWRvdzogJGN1c3RvbS1zZWxlY3QtZm9jdXMtYm94LXNoYWRvdztcbiAgICB9XG5cbiAgICAmOjotbXMtdmFsdWUge1xuICAgICAgLy8gRm9yIHZpc3VhbCBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIHBsYXRmb3Jtcy9icm93c2VycyxcbiAgICAgIC8vIHN1cHByZXNzIHRoZSBkZWZhdWx0IHdoaXRlIHRleHQgb24gYmx1ZSBiYWNrZ3JvdW5kIGhpZ2hsaWdodCBnaXZlbiB0b1xuICAgICAgLy8gdGhlIHNlbGVjdGVkIG9wdGlvbiB0ZXh0IHdoZW4gdGhlIChzdGlsbCBjbG9zZWQpIDxzZWxlY3Q+IHJlY2VpdmVzIGZvY3VzXG4gICAgICAvLyBpbiBJRSBhbmQgKHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucykgRWRnZS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzE5Mzk4LlxuICAgICAgY29sb3I6ICRpbnB1dC1jb2xvcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iZztcbiAgICB9XG4gIH1cblxuICAmW211bHRpcGxlXSxcbiAgJltzaXplXTpub3QoW3NpemU9XCIxXCJdKSB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICRjdXN0b20tc2VsZWN0LWRpc2FibGVkLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tc2VsZWN0LWRpc2FibGVkLWJnO1xuICB9XG5cbiAgLy8gSGlkZXMgdGhlIGRlZmF1bHQgY2FyZXQgaW4gSUUxMVxuICAmOjotbXMtZXhwYW5kIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLy8gUmVtb3ZlIG91dGxpbmUgZnJvbSBzZWxlY3QgYm94IGluIEZGXG4gICY6LW1vei1mb2N1c3Jpbmcge1xuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0ZXh0LXNoYWRvdzogMCAwIDAgJGN1c3RvbS1zZWxlY3QtY29sb3I7XG4gIH1cbn1cblxuLmN1c3RvbS1zZWxlY3Qtc20ge1xuICBoZWlnaHQ6ICRjdXN0b20tc2VsZWN0LWhlaWdodC1zbTtcbiAgcGFkZGluZy10b3A6ICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteS1zbTtcbiAgcGFkZGluZy1ib3R0b206ICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteS1zbTtcbiAgcGFkZGluZy1sZWZ0OiAkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXgtc207XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkY3VzdG9tLXNlbGVjdC1mb250LXNpemUtc20pO1xufVxuXG4uY3VzdG9tLXNlbGVjdC1sZyB7XG4gIGhlaWdodDogJGN1c3RvbS1zZWxlY3QtaGVpZ2h0LWxnO1xuICBwYWRkaW5nLXRvcDogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15LWxnO1xuICBwYWRkaW5nLWJvdHRvbTogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15LWxnO1xuICBwYWRkaW5nLWxlZnQ6ICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteC1sZztcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRjdXN0b20tc2VsZWN0LWZvbnQtc2l6ZS1sZyk7XG59XG5cblxuLy8gRmlsZVxuLy9cbi8vIEN1c3RvbSBmaWxlIGlucHV0LlxuXG4uY3VzdG9tLWZpbGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJGN1c3RvbS1maWxlLWhlaWdodDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmN1c3RvbS1maWxlLWlucHV0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAyO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAkY3VzdG9tLWZpbGUtaGVpZ2h0O1xuICBtYXJnaW46IDA7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJjpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7XG4gICAgYm9yZGVyLWNvbG9yOiAkY3VzdG9tLWZpbGUtZm9jdXMtYm9yZGVyLWNvbG9yO1xuICAgIGJveC1zaGFkb3c6ICRjdXN0b20tZmlsZS1mb2N1cy1ib3gtc2hhZG93O1xuICB9XG5cbiAgLy8gVXNlIFtkaXNhYmxlZF0gYW5kIDpkaXNhYmxlZCB0byB3b3JrIGFyb3VuZCBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI4MjQ3XG4gICZbZGlzYWJsZWRdIH4gLmN1c3RvbS1maWxlLWxhYmVsLFxuICAmOmRpc2FibGVkIH4gLmN1c3RvbS1maWxlLWxhYmVsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLWZpbGUtZGlzYWJsZWQtYmc7XG4gIH1cblxuICBAZWFjaCAkbGFuZywgJHZhbHVlIGluICRjdXN0b20tZmlsZS10ZXh0IHtcbiAgICAmOmxhbmcoI3skbGFuZ30pIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7XG4gICAgICBjb250ZW50OiAkdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgfiAuY3VzdG9tLWZpbGUtbGFiZWxbZGF0YS1icm93c2VdOjphZnRlciB7XG4gICAgY29udGVudDogYXR0cihkYXRhLWJyb3dzZSk7XG4gIH1cbn1cblxuLmN1c3RvbS1maWxlLWxhYmVsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAxO1xuICBoZWlnaHQ6ICRjdXN0b20tZmlsZS1oZWlnaHQ7XG4gIHBhZGRpbmc6ICRjdXN0b20tZmlsZS1wYWRkaW5nLXkgJGN1c3RvbS1maWxlLXBhZGRpbmcteDtcbiAgZm9udC1mYW1pbHk6ICRjdXN0b20tZmlsZS1mb250LWZhbWlseTtcbiAgZm9udC13ZWlnaHQ6ICRjdXN0b20tZmlsZS1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRjdXN0b20tZmlsZS1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRjdXN0b20tZmlsZS1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1maWxlLWJnO1xuICBib3JkZXI6ICRjdXN0b20tZmlsZS1ib3JkZXItd2lkdGggc29saWQgJGN1c3RvbS1maWxlLWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY3VzdG9tLWZpbGUtYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJGN1c3RvbS1maWxlLWJveC1zaGFkb3cpO1xuXG4gICY6OmFmdGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICB6LWluZGV4OiAzO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogJGN1c3RvbS1maWxlLWhlaWdodC1pbm5lcjtcbiAgICBwYWRkaW5nOiAkY3VzdG9tLWZpbGUtcGFkZGluZy15ICRjdXN0b20tZmlsZS1wYWRkaW5nLXg7XG4gICAgbGluZS1oZWlnaHQ6ICRjdXN0b20tZmlsZS1saW5lLWhlaWdodDtcbiAgICBjb2xvcjogJGN1c3RvbS1maWxlLWJ1dHRvbi1jb2xvcjtcbiAgICBjb250ZW50OiBcIkJyb3dzZVwiO1xuICAgIEBpbmNsdWRlIGdyYWRpZW50LWJnKCRjdXN0b20tZmlsZS1idXR0b24tYmcpO1xuICAgIGJvcmRlci1sZWZ0OiBpbmhlcml0O1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCAkY3VzdG9tLWZpbGUtYm9yZGVyLXJhZGl1cyAkY3VzdG9tLWZpbGUtYm9yZGVyLXJhZGl1cyAwKTtcbiAgfVxufVxuXG4vLyBSYW5nZVxuLy9cbi8vIFN0eWxlIHJhbmdlIGlucHV0cyB0aGUgc2FtZSBhY3Jvc3MgYnJvd3NlcnMuIFZlbmRvci1zcGVjaWZpYyBydWxlcyBmb3IgcHNldWRvXG4vLyBlbGVtZW50cyBjYW5ub3QgYmUgbWl4ZWQuIEFzIHN1Y2gsIHRoZXJlIGFyZSBubyBzaGFyZWQgc3R5bGVzIGZvciBmb2N1cyBvclxuLy8gYWN0aXZlIHN0YXRlcyBvbiBwcmVmaXhlZCBzZWxlY3RvcnMuXG5cbi5jdXN0b20tcmFuZ2Uge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhZGQoJGN1c3RvbS1yYW5nZS10aHVtYi1oZWlnaHQsICRjdXN0b20tcmFuZ2UtdGh1bWItZm9jdXMtYm94LXNoYWRvdy13aWR0aCAqIDIpO1xuICBwYWRkaW5nOiAwOyAvLyBOZWVkIHRvIHJlc2V0IHBhZGRpbmdcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcblxuICAgIC8vIFBzZXVkby1lbGVtZW50cyBtdXN0IGJlIHNwbGl0IGFjcm9zcyBtdWx0aXBsZSBydWxlc2V0cyB0byBoYXZlIGFuIGVmZmVjdC5cbiAgICAvLyBObyBib3gtc2hhZG93KCkgbWl4aW4gZm9yIGZvY3VzIGFjY2Vzc2liaWxpdHkuXG4gICAgJjo6LXdlYmtpdC1zbGlkZXItdGh1bWIgeyBib3gtc2hhZG93OiAkY3VzdG9tLXJhbmdlLXRodW1iLWZvY3VzLWJveC1zaGFkb3c7IH1cbiAgICAmOjotbW96LXJhbmdlLXRodW1iICAgICB7IGJveC1zaGFkb3c6ICRjdXN0b20tcmFuZ2UtdGh1bWItZm9jdXMtYm94LXNoYWRvdzsgfVxuICAgICY6Oi1tcy10aHVtYiAgICAgICAgICAgIHsgYm94LXNoYWRvdzogJGN1c3RvbS1yYW5nZS10aHVtYi1mb2N1cy1ib3gtc2hhZG93OyB9XG4gIH1cblxuICAmOjotbW96LWZvY3VzLW91dGVyIHtcbiAgICBib3JkZXI6IDA7XG4gIH1cblxuICAmOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgd2lkdGg6ICRjdXN0b20tcmFuZ2UtdGh1bWItd2lkdGg7XG4gICAgaGVpZ2h0OiAkY3VzdG9tLXJhbmdlLXRodW1iLWhlaWdodDtcbiAgICBtYXJnaW4tdG9wOiAoJGN1c3RvbS1yYW5nZS10cmFjay1oZWlnaHQgLSAkY3VzdG9tLXJhbmdlLXRodW1iLWhlaWdodCkgLyAyOyAvLyBXZWJraXQgc3BlY2lmaWNcbiAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkY3VzdG9tLXJhbmdlLXRodW1iLWJnKTtcbiAgICBib3JkZXI6ICRjdXN0b20tcmFuZ2UtdGh1bWItYm9yZGVyO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGN1c3RvbS1yYW5nZS10aHVtYi1ib3JkZXItcmFkaXVzKTtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tcmFuZ2UtdGh1bWItYm94LXNoYWRvdyk7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbigkY3VzdG9tLWZvcm1zLXRyYW5zaXRpb24pO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBncmFkaWVudC1iZygkY3VzdG9tLXJhbmdlLXRodW1iLWFjdGl2ZS1iZyk7XG4gICAgfVxuICB9XG5cbiAgJjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xuICAgIHdpZHRoOiAkY3VzdG9tLXJhbmdlLXRyYWNrLXdpZHRoO1xuICAgIGhlaWdodDogJGN1c3RvbS1yYW5nZS10cmFjay1oZWlnaHQ7XG4gICAgY29sb3I6IHRyYW5zcGFyZW50OyAvLyBXaHk/XG4gICAgY3Vyc29yOiAkY3VzdG9tLXJhbmdlLXRyYWNrLWN1cnNvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLXJhbmdlLXRyYWNrLWJnO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY3VzdG9tLXJhbmdlLXRyYWNrLWJvcmRlci1yYWRpdXMpO1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGN1c3RvbS1yYW5nZS10cmFjay1ib3gtc2hhZG93KTtcbiAgfVxuXG4gICY6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgIHdpZHRoOiAkY3VzdG9tLXJhbmdlLXRodW1iLXdpZHRoO1xuICAgIGhlaWdodDogJGN1c3RvbS1yYW5nZS10aHVtYi1oZWlnaHQ7XG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGN1c3RvbS1yYW5nZS10aHVtYi1iZyk7XG4gICAgYm9yZGVyOiAkY3VzdG9tLXJhbmdlLXRodW1iLWJvcmRlcjtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRjdXN0b20tcmFuZ2UtdGh1bWItYm9yZGVyLXJhZGl1cyk7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkY3VzdG9tLXJhbmdlLXRodW1iLWJveC1zaGFkb3cpO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oJGN1c3RvbS1mb3Jtcy10cmFuc2l0aW9uKTtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICAgJjphY3RpdmUge1xuICAgICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGN1c3RvbS1yYW5nZS10aHVtYi1hY3RpdmUtYmcpO1xuICAgIH1cbiAgfVxuXG4gICY6Oi1tb3otcmFuZ2UtdHJhY2sge1xuICAgIHdpZHRoOiAkY3VzdG9tLXJhbmdlLXRyYWNrLXdpZHRoO1xuICAgIGhlaWdodDogJGN1c3RvbS1yYW5nZS10cmFjay1oZWlnaHQ7XG4gICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGN1cnNvcjogJGN1c3RvbS1yYW5nZS10cmFjay1jdXJzb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1yYW5nZS10cmFjay1iZztcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyAvLyBGaXJlZm94IHNwZWNpZmljP1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGN1c3RvbS1yYW5nZS10cmFjay1ib3JkZXItcmFkaXVzKTtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tcmFuZ2UtdHJhY2stYm94LXNoYWRvdyk7XG4gIH1cblxuICAmOjotbXMtdGh1bWIge1xuICAgIHdpZHRoOiAkY3VzdG9tLXJhbmdlLXRodW1iLXdpZHRoO1xuICAgIGhlaWdodDogJGN1c3RvbS1yYW5nZS10aHVtYi1oZWlnaHQ7XG4gICAgbWFyZ2luLXRvcDogMDsgLy8gRWRnZSBzcGVjaWZpY1xuICAgIG1hcmdpbi1yaWdodDogJGN1c3RvbS1yYW5nZS10aHVtYi1mb2N1cy1ib3gtc2hhZG93LXdpZHRoOyAvLyBXb3JrYXJvdW5kIHRoYXQgb3ZlcmZsb3dlZCBib3gtc2hhZG93IGlzIGhpZGRlbi5cbiAgICBtYXJnaW4tbGVmdDogJGN1c3RvbS1yYW5nZS10aHVtYi1mb2N1cy1ib3gtc2hhZG93LXdpZHRoOyAgLy8gV29ya2Fyb3VuZCB0aGF0IG92ZXJmbG93ZWQgYm94LXNoYWRvdyBpcyBoaWRkZW4uXG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGN1c3RvbS1yYW5nZS10aHVtYi1iZyk7XG4gICAgYm9yZGVyOiAkY3VzdG9tLXJhbmdlLXRodW1iLWJvcmRlcjtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRjdXN0b20tcmFuZ2UtdGh1bWItYm9yZGVyLXJhZGl1cyk7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkY3VzdG9tLXJhbmdlLXRodW1iLWJveC1zaGFkb3cpO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oJGN1c3RvbS1mb3Jtcy10cmFuc2l0aW9uKTtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICAgJjphY3RpdmUge1xuICAgICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGN1c3RvbS1yYW5nZS10aHVtYi1hY3RpdmUtYmcpO1xuICAgIH1cbiAgfVxuXG4gICY6Oi1tcy10cmFjayB7XG4gICAgd2lkdGg6ICRjdXN0b20tcmFuZ2UtdHJhY2std2lkdGg7XG4gICAgaGVpZ2h0OiAkY3VzdG9tLXJhbmdlLXRyYWNrLWhlaWdodDtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgY3Vyc29yOiAkY3VzdG9tLXJhbmdlLXRyYWNrLWN1cnNvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci13aWR0aDogJGN1c3RvbS1yYW5nZS10aHVtYi1oZWlnaHQgLyAyO1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGN1c3RvbS1yYW5nZS10cmFjay1ib3gtc2hhZG93KTtcbiAgfVxuXG4gICY6Oi1tcy1maWxsLWxvd2VyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLXJhbmdlLXRyYWNrLWJnO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGN1c3RvbS1yYW5nZS10cmFjay1ib3JkZXItcmFkaXVzKTtcbiAgfVxuXG4gICY6Oi1tcy1maWxsLXVwcGVyIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7IC8vIGFyYml0cmFyeT9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLXJhbmdlLXRyYWNrLWJnO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGN1c3RvbS1yYW5nZS10cmFjay1ib3JkZXItcmFkaXVzKTtcbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgICY6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tcmFuZ2UtdGh1bWItZGlzYWJsZWQtYmc7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgIH1cblxuICAgICY6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1yYW5nZS10aHVtYi1kaXNhYmxlZC1iZztcbiAgICB9XG5cbiAgICAmOjotbW96LXJhbmdlLXRyYWNrIHtcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB9XG5cbiAgICAmOjotbXMtdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1yYW5nZS10aHVtYi1kaXNhYmxlZC1iZztcbiAgICB9XG4gIH1cbn1cblxuLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsXG4uY3VzdG9tLWZpbGUtbGFiZWwsXG4uY3VzdG9tLXNlbGVjdCB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJGN1c3RvbS1mb3Jtcy10cmFuc2l0aW9uKTtcbn1cbiIsIi8vIEJhc2UgY2xhc3Ncbi8vXG4vLyBLaWNrc3RhcnQgYW55IG5hdmlnYXRpb24gY29tcG9uZW50IHdpdGggYSBzZXQgb2Ygc3R5bGUgcmVzZXRzLiBXb3JrcyB3aXRoXG4vLyBgPG5hdj5gcywgYDx1bD5gcyBvciBgPG9sPmBzLlxuXG4ubmF2IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi5uYXYtbGluayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAkbmF2LWxpbmstcGFkZGluZy15ICRuYXYtbGluay1wYWRkaW5nLXg7XG5cbiAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgLy8gRGlzYWJsZWQgc3RhdGUgbGlnaHRlbnMgdGV4dFxuICAmLmRpc2FibGVkIHtcbiAgICBjb2xvcjogJG5hdi1saW5rLWRpc2FibGVkLWNvbG9yO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgfVxufVxuXG4vL1xuLy8gVGFic1xuLy9cblxuLm5hdi10YWJzIHtcbiAgYm9yZGVyLWJvdHRvbTogJG5hdi10YWJzLWJvcmRlci13aWR0aCBzb2xpZCAkbmF2LXRhYnMtYm9yZGVyLWNvbG9yO1xuXG4gIC5uYXYtaXRlbSB7XG4gICAgbWFyZ2luLWJvdHRvbTogLSRuYXYtdGFicy1ib3JkZXItd2lkdGg7XG4gIH1cblxuICAubmF2LWxpbmsge1xuICAgIGJvcmRlcjogJG5hdi10YWJzLWJvcmRlci13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygkbmF2LXRhYnMtYm9yZGVyLXJhZGl1cyk7XG5cbiAgICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJG5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yO1xuICAgIH1cblxuICAgICYuZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICRuYXYtbGluay1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICAubmF2LWxpbmsuYWN0aXZlLFxuICAubmF2LWl0ZW0uc2hvdyAubmF2LWxpbmsge1xuICAgIGNvbG9yOiAkbmF2LXRhYnMtbGluay1hY3RpdmUtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5hdi10YWJzLWxpbmstYWN0aXZlLWJnO1xuICAgIGJvcmRlci1jb2xvcjogJG5hdi10YWJzLWxpbmstYWN0aXZlLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIC5kcm9wZG93bi1tZW51IHtcbiAgICAvLyBNYWtlIGRyb3Bkb3duIGJvcmRlciBvdmVybGFwIHRhYiBib3JkZXJcbiAgICBtYXJnaW4tdG9wOiAtJG5hdi10YWJzLWJvcmRlci13aWR0aDtcbiAgICAvLyBSZW1vdmUgdGhlIHRvcCByb3VuZGVkIGNvcm5lcnMgaGVyZSBzaW5jZSB0aGVyZSBpcyBhIGhhcmQgZWRnZSBhYm92ZSB0aGUgbWVudVxuICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKDApO1xuICB9XG59XG5cblxuLy9cbi8vIFBpbGxzXG4vL1xuXG4ubmF2LXBpbGxzIHtcbiAgLm5hdi1saW5rIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRuYXYtcGlsbHMtYm9yZGVyLXJhZGl1cyk7XG4gIH1cblxuICAubmF2LWxpbmsuYWN0aXZlLFxuICAuc2hvdyA+IC5uYXYtbGluayB7XG4gICAgY29sb3I6ICRuYXYtcGlsbHMtbGluay1hY3RpdmUtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5hdi1waWxscy1saW5rLWFjdGl2ZS1iZztcbiAgfVxufVxuXG5cbi8vXG4vLyBKdXN0aWZpZWQgdmFyaWFudHNcbi8vXG5cbi5uYXYtZmlsbCB7XG4gIC5uYXYtaXRlbSB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG59XG5cbi5uYXYtanVzdGlmaWVkIHtcbiAgLm5hdi1pdGVtIHtcbiAgICBmbGV4LWJhc2lzOiAwO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbn1cblxuXG4vLyBUYWJiYWJsZSB0YWJzXG4vL1xuLy8gSGlkZSB0YWJiYWJsZSBwYW5lcyB0byBzdGFydCwgc2hvdyB0aGVtIHdoZW4gYC5hY3RpdmVgXG5cbi50YWItY29udGVudCB7XG4gID4gLnRhYi1wYW5lIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gID4gLmFjdGl2ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cbiIsIi8vIENvbnRlbnRzXG4vL1xuLy8gTmF2YmFyXG4vLyBOYXZiYXIgYnJhbmRcbi8vIE5hdmJhciBuYXZcbi8vIE5hdmJhciB0ZXh0XG4vLyBOYXZiYXIgZGl2aWRlclxuLy8gUmVzcG9uc2l2ZSBuYXZiYXJcbi8vIE5hdmJhciBwb3NpdGlvblxuLy8gTmF2YmFyIHRoZW1lc1xuXG5cbi8vIE5hdmJhclxuLy9cbi8vIFByb3ZpZGUgYSBzdGF0aWMgbmF2YmFyIGZyb20gd2hpY2ggd2UgZXhwYW5kIHRvIGNyZWF0ZSBmdWxsLXdpZHRoLCBmaXhlZCwgYW5kXG4vLyBvdGhlciBuYXZiYXIgdmFyaWF0aW9ucy5cblxuLm5hdmJhciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwOyAvLyBhbGxvdyB1cyB0byBkbyB0aGUgbGluZSBicmVhayBmb3IgY29sbGFwc2luZyBjb250ZW50XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgLy8gc3BhY2Ugb3V0IGJyYW5kIGZyb20gbG9nb1xuICBwYWRkaW5nOiAkbmF2YmFyLXBhZGRpbmcteSAkbmF2YmFyLXBhZGRpbmcteDtcblxuICAvLyBCZWNhdXNlIGZsZXggcHJvcGVydGllcyBhcmVuJ3QgaW5oZXJpdGVkLCB3ZSBuZWVkIHRvIHJlZGVjbGFyZSB0aGVzZSBmaXJzdFxuICAvLyBmZXcgcHJvcGVydGllcyBzbyB0aGF0IGNvbnRlbnQgbmVzdGVkIHdpdGhpbiBiZWhhdmUgcHJvcGVybHkuXG4gICVjb250YWluZXItZmxleC1wcm9wZXJ0aWVzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgfVxuXG4gIC5jb250YWluZXIsXG4gIC5jb250YWluZXItZmx1aWQge1xuICAgIEBleHRlbmQgJWNvbnRhaW5lci1mbGV4LXByb3BlcnRpZXM7XG4gIH1cblxuICBAZWFjaCAkYnJlYWtwb2ludCwgJGNvbnRhaW5lci1tYXgtd2lkdGggaW4gJGNvbnRhaW5lci1tYXgtd2lkdGhzIHtcbiAgICA+IC5jb250YWluZXIje2JyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRjb250YWluZXItbWF4LXdpZHRocyl9IHtcbiAgICAgIEBleHRlbmQgJWNvbnRhaW5lci1mbGV4LXByb3BlcnRpZXM7XG4gICAgfVxuICB9XG59XG5cblxuLy8gTmF2YmFyIGJyYW5kXG4vL1xuLy8gVXNlZCBmb3IgYnJhbmQsIHByb2plY3QsIG9yIHNpdGUgbmFtZXMuXG5cbi5uYXZiYXItYnJhbmQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmctdG9wOiAkbmF2YmFyLWJyYW5kLXBhZGRpbmcteTtcbiAgcGFkZGluZy1ib3R0b206ICRuYXZiYXItYnJhbmQtcGFkZGluZy15O1xuICBtYXJnaW4tcmlnaHQ6ICRuYXZiYXItcGFkZGluZy14O1xuICBAaW5jbHVkZSBmb250LXNpemUoJG5hdmJhci1icmFuZC1mb250LXNpemUpO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cbn1cblxuXG4vLyBOYXZiYXIgbmF2XG4vL1xuLy8gQ3VzdG9tIG5hdmJhciBuYXZpZ2F0aW9uIChkb2Vzbid0IHJlcXVpcmUgYC5uYXZgLCBidXQgZG9lcyBtYWtlIHVzZSBvZiBgLm5hdi1saW5rYCkuXG5cbi5uYXZiYXItbmF2IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgLy8gY2Fubm90IHVzZSBgaW5oZXJpdGAgdG8gZ2V0IHRoZSBgLm5hdmJhcmBzIHZhbHVlXG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAubmF2LWxpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG5cbiAgLmRyb3Bkb3duLW1lbnUge1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgZmxvYXQ6IG5vbmU7XG4gIH1cbn1cblxuXG4vLyBOYXZiYXIgdGV4dFxuLy9cbi8vXG5cbi5uYXZiYXItdGV4dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZy10b3A6ICRuYXYtbGluay1wYWRkaW5nLXk7XG4gIHBhZGRpbmctYm90dG9tOiAkbmF2LWxpbmstcGFkZGluZy15O1xufVxuXG5cbi8vIFJlc3BvbnNpdmUgbmF2YmFyXG4vL1xuLy8gQ3VzdG9tIHN0eWxlcyBmb3IgcmVzcG9uc2l2ZSBjb2xsYXBzaW5nIGFuZCB0b2dnbGluZyBvZiBuYXZiYXIgY29udGVudHMuXG4vLyBQb3dlcmVkIGJ5IHRoZSBjb2xsYXBzZSBCb290c3RyYXAgSmF2YVNjcmlwdCBwbHVnaW4uXG5cbi8vIFdoZW4gY29sbGFwc2VkLCBwcmV2ZW50IHRoZSB0b2dnbGVhYmxlIG5hdmJhciBjb250ZW50cyBmcm9tIGFwcGVhcmluZyBpblxuLy8gdGhlIGRlZmF1bHQgZmxleGJveCByb3cgb3JpZW50YXRpb24uIFJlcXVpcmVzIHRoZSB1c2Ugb2YgYGZsZXgtd3JhcDogd3JhcGBcbi8vIG9uIHRoZSBgLm5hdmJhcmAgcGFyZW50LlxuLm5hdmJhci1jb2xsYXBzZSB7XG4gIGZsZXgtYmFzaXM6IDEwMCU7XG4gIGZsZXgtZ3JvdzogMTtcbiAgLy8gRm9yIGFsd2F5cyBleHBhbmRlZCBvciBleHRyYSBmdWxsIG5hdmJhcnMsIGVuc3VyZSBjb250ZW50IGFsaWducyBpdHNlbGZcbiAgLy8gcHJvcGVybHkgdmVydGljYWxseS4gQ2FuIGJlIGVhc2lseSBvdmVycmlkZGVuIHdpdGggZmxleCB1dGlsaXRpZXMuXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi8vIEJ1dHRvbiBmb3IgdG9nZ2xpbmcgdGhlIG5hdmJhciB3aGVuIGluIGl0cyBjb2xsYXBzZWQgc3RhdGVcbi5uYXZiYXItdG9nZ2xlciB7XG4gIHBhZGRpbmc6ICRuYXZiYXItdG9nZ2xlci1wYWRkaW5nLXkgJG5hdmJhci10b2dnbGVyLXBhZGRpbmcteDtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRuYXZiYXItdG9nZ2xlci1mb250LXNpemUpO1xuICBsaW5lLWhlaWdodDogMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8vIHJlbW92ZSBkZWZhdWx0IGJ1dHRvbiBzdHlsZVxuICBib3JkZXI6ICRib3JkZXItd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7IC8vIHJlbW92ZSBkZWZhdWx0IGJ1dHRvbiBzdHlsZVxuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRuYXZiYXItdG9nZ2xlci1ib3JkZXItcmFkaXVzKTtcblxuICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cbn1cblxuLy8gS2VlcCBhcyBhIHNlcGFyYXRlIGVsZW1lbnQgc28gZm9sa3MgY2FuIGVhc2lseSBvdmVycmlkZSBpdCB3aXRoIGFub3RoZXIgaWNvblxuLy8gb3IgaW1hZ2UgZmlsZSBhcyBuZWVkZWQuXG4ubmF2YmFyLXRvZ2dsZXItaWNvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEuNWVtO1xuICBoZWlnaHQ6IDEuNWVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBjb250ZW50OiBcIlwiO1xuICBiYWNrZ3JvdW5kOiBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7XG59XG5cbi8vIEdlbmVyYXRlIHNlcmllcyBvZiBgLm5hdmJhci1leHBhbmQtKmAgcmVzcG9uc2l2ZSBjbGFzc2VzIGZvciBjb25maWd1cmluZ1xuLy8gd2hlcmUgeW91ciBuYXZiYXIgY29sbGFwc2VzLlxuLm5hdmJhci1leHBhbmQge1xuICBAZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICAgICRuZXh0OiBicmVha3BvaW50LW5leHQoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJG5leHQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgICYjeyRpbmZpeH0ge1xuICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCRicmVha3BvaW50KSB7XG4gICAgICAgICVjb250YWluZXItbmF2YmFyLWV4cGFuZC0jeyRicmVha3BvaW50fSB7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICA+IC5jb250YWluZXIsXG4gICAgICAgID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICAgICAgQGV4dGVuZCAlY29udGFpbmVyLW5hdmJhci1leHBhbmQtI3skYnJlYWtwb2ludH07XG4gICAgICAgIH1cblxuICAgICAgICBAZWFjaCAkc2l6ZSwgJGNvbnRhaW5lci1tYXgtd2lkdGggaW4gJGNvbnRhaW5lci1tYXgtd2lkdGhzIHtcbiAgICAgICAgICA+IC5jb250YWluZXIje2JyZWFrcG9pbnQtaW5maXgoJHNpemUsICRjb250YWluZXItbWF4LXdpZHRocyl9IHtcbiAgICAgICAgICAgIEBleHRlbmQgJWNvbnRhaW5lci1uYXZiYXItZXhwYW5kLSN7JGJyZWFrcG9pbnR9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRuZXh0KSB7XG4gICAgICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICAgICAgIC5uYXZiYXItbmF2IHtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuXG4gICAgICAgICAgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5uYXYtbGluayB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkbmF2YmFyLW5hdi1saW5rLXBhZGRpbmcteDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJG5hdmJhci1uYXYtbGluay1wYWRkaW5nLXg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9yIG5lc3RpbmcgY29udGFpbmVycywgaGF2ZSB0byByZWRlY2xhcmUgZm9yIGFsaWdubWVudCBwdXJwb3Nlc1xuICAgICAgICAlY29udGFpbmVyLW5lc3RpbmctI3skYnJlYWtwb2ludH0ge1xuICAgICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgICB9XG5cbiAgICAgICAgPiAuY29udGFpbmVyLFxuICAgICAgICA+IC5jb250YWluZXItZmx1aWQge1xuICAgICAgICAgIEBleHRlbmQgJWNvbnRhaW5lci1uZXN0aW5nLSN7JGJyZWFrcG9pbnR9O1xuICAgICAgICB9XG5cbiAgICAgICAgQGVhY2ggJHNpemUsICRjb250YWluZXItbWF4LXdpZHRoIGluICRjb250YWluZXItbWF4LXdpZHRocyB7XG4gICAgICAgICAgPiAuY29udGFpbmVyI3ticmVha3BvaW50LWluZml4KCRzaXplLCAkY29udGFpbmVyLW1heC13aWR0aHMpfSB7XG4gICAgICAgICAgICBAZXh0ZW5kICVjb250YWluZXItbmVzdGluZy0jeyRicmVha3BvaW50fTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubmF2YmFyLWNvbGxhcHNlIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbiAgICAgICAgICAvLyBDaGFuZ2VzIGZsZXgtYmFzZXMgdG8gYXV0byBiZWNhdXNlIG9mIGFuIElFMTAgYnVnXG4gICAgICAgICAgZmxleC1iYXNpczogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIC5uYXZiYXItdG9nZ2xlciB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi8vIE5hdmJhciB0aGVtZXNcbi8vXG4vLyBTdHlsZXMgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIG5hdmJhcnMgd2l0aCBsaWdodCBvciBkYXJrIGJhY2tncm91bmQuXG5cbi8vIERhcmsgbGlua3MgYWdhaW5zdCBhIGxpZ2h0IGJhY2tncm91bmRcbi5uYXZiYXItbGlnaHQge1xuICAubmF2YmFyLWJyYW5kIHtcbiAgICBjb2xvcjogJG5hdmJhci1saWdodC1icmFuZC1jb2xvcjtcblxuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgICAgY29sb3I6ICRuYXZiYXItbGlnaHQtYnJhbmQtaG92ZXItY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm5hdmJhci1uYXYge1xuICAgIC5uYXYtbGluayB7XG4gICAgICBjb2xvcjogJG5hdmJhci1saWdodC1jb2xvcjtcblxuICAgICAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgICAgIGNvbG9yOiAkbmF2YmFyLWxpZ2h0LWhvdmVyLWNvbG9yO1xuICAgICAgfVxuXG4gICAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgY29sb3I6ICRuYXZiYXItbGlnaHQtZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnNob3cgPiAubmF2LWxpbmssXG4gICAgLmFjdGl2ZSA+IC5uYXYtbGluayxcbiAgICAubmF2LWxpbmsuc2hvdyxcbiAgICAubmF2LWxpbmsuYWN0aXZlIHtcbiAgICAgIGNvbG9yOiAkbmF2YmFyLWxpZ2h0LWFjdGl2ZS1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubmF2YmFyLXRvZ2dsZXIge1xuICAgIGNvbG9yOiAkbmF2YmFyLWxpZ2h0LWNvbG9yO1xuICAgIGJvcmRlci1jb2xvcjogJG5hdmJhci1saWdodC10b2dnbGVyLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIC5uYXZiYXItdG9nZ2xlci1pY29uIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRuYXZiYXItbGlnaHQtdG9nZ2xlci1pY29uLWJnKTtcbiAgfVxuXG4gIC5uYXZiYXItdGV4dCB7XG4gICAgY29sb3I6ICRuYXZiYXItbGlnaHQtY29sb3I7XG4gICAgYSB7XG4gICAgICBjb2xvcjogJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3I7XG5cbiAgICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgICAgICBjb2xvcjogJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFdoaXRlIGxpbmtzIGFnYWluc3QgYSBkYXJrIGJhY2tncm91bmRcbi5uYXZiYXItZGFyayB7XG4gIC5uYXZiYXItYnJhbmQge1xuICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstYnJhbmQtY29sb3I7XG5cbiAgICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstYnJhbmQtaG92ZXItY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm5hdmJhci1uYXYge1xuICAgIC5uYXYtbGluayB7XG4gICAgICBjb2xvcjogJG5hdmJhci1kYXJrLWNvbG9yO1xuXG4gICAgICBAaW5jbHVkZSBob3Zlci1mb2N1cygpIHtcbiAgICAgICAgY29sb3I6ICRuYXZiYXItZGFyay1ob3Zlci1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgJi5kaXNhYmxlZCB7XG4gICAgICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnNob3cgPiAubmF2LWxpbmssXG4gICAgLmFjdGl2ZSA+IC5uYXYtbGluayxcbiAgICAubmF2LWxpbmsuc2hvdyxcbiAgICAubmF2LWxpbmsuYWN0aXZlIHtcbiAgICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5uYXZiYXItdG9nZ2xlciB7XG4gICAgY29sb3I6ICRuYXZiYXItZGFyay1jb2xvcjtcbiAgICBib3JkZXItY29sb3I6ICRuYXZiYXItZGFyay10b2dnbGVyLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIC5uYXZiYXItdG9nZ2xlci1pY29uIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRuYXZiYXItZGFyay10b2dnbGVyLWljb24tYmcpO1xuICB9XG5cbiAgLm5hdmJhci10ZXh0IHtcbiAgICBjb2xvcjogJG5hdmJhci1kYXJrLWNvbG9yO1xuICAgIGEge1xuICAgICAgY29sb3I6ICRuYXZiYXItZGFyay1hY3RpdmUtY29sb3I7XG5cbiAgICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgICAgICBjb2xvcjogJG5hdmJhci1kYXJrLWFjdGl2ZS1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBCYXNlIHN0eWxlc1xuLy9cblxuLmNhcmQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG1pbi13aWR0aDogMDsgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzIyNzQwI2lzc3VlY29tbWVudC0zMDU4NjgxMDZcbiAgaGVpZ2h0OiAkY2FyZC1oZWlnaHQ7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNhcmQtYmc7XG4gIGJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiAkY2FyZC1ib3JkZXItd2lkdGggc29saWQgJGNhcmQtYm9yZGVyLWNvbG9yO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRjYXJkLWJvcmRlci1yYWRpdXMpO1xuXG4gID4gaHIge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuXG4gID4gLmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQge1xuICAgIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQge1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXMoJGNhcmQtYm9yZGVyLXJhZGl1cyk7XG4gICAgfVxuICB9XG5cbiAgPiAubGlzdC1ncm91cDpsYXN0LWNoaWxkIHtcbiAgICAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQge1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXMoJGNhcmQtYm9yZGVyLXJhZGl1cyk7XG4gICAgfVxuICB9XG59XG5cbi5jYXJkLWJvZHkge1xuICAvLyBFbmFibGUgYGZsZXgtZ3JvdzogMWAgZm9yIGRlY2tzIGFuZCBncm91cHMgc28gdGhhdCBjYXJkIGJsb2NrcyB0YWtlIHVwXG4gIC8vIGFzIG11Y2ggc3BhY2UgYXMgcG9zc2libGUsIGVuc3VyaW5nIGZvb3RlcnMgYXJlIGFsaWduZWQgdG8gdGhlIGJvdHRvbS5cbiAgZmxleDogMSAxIGF1dG87XG4gIC8vIFdvcmthcm91bmQgZm9yIHRoZSBpbWFnZSBzaXplIGJ1ZyBpbiBJRVxuICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzI4ODU1XG4gIG1pbi1oZWlnaHQ6IDFweDtcbiAgcGFkZGluZzogJGNhcmQtc3BhY2VyLXg7XG4gIGNvbG9yOiAkY2FyZC1jb2xvcjtcbn1cblxuLmNhcmQtdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiAkY2FyZC1zcGFjZXIteTtcbn1cblxuLmNhcmQtc3VidGl0bGUge1xuICBtYXJnaW4tdG9wOiAtJGNhcmQtc3BhY2VyLXkgLyAyO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY2FyZC10ZXh0Omxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY2FyZC1saW5rIHtcbiAgQGluY2x1ZGUgaG92ZXIoKSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgKyAuY2FyZC1saW5rIHtcbiAgICBtYXJnaW4tbGVmdDogJGNhcmQtc3BhY2VyLXg7XG4gIH1cbn1cblxuLy9cbi8vIE9wdGlvbmFsIHRleHR1YWwgY2Fwc1xuLy9cblxuLmNhcmQtaGVhZGVyIHtcbiAgcGFkZGluZzogJGNhcmQtc3BhY2VyLXkgJGNhcmQtc3BhY2VyLXg7XG4gIG1hcmdpbi1ib3R0b206IDA7IC8vIFJlbW92ZXMgdGhlIGRlZmF1bHQgbWFyZ2luLWJvdHRvbSBvZiA8aE4+XG4gIGNvbG9yOiAkY2FyZC1jYXAtY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjYXJkLWNhcC1iZztcbiAgYm9yZGVyLWJvdHRvbTogJGNhcmQtYm9yZGVyLXdpZHRoIHNvbGlkICRjYXJkLWJvcmRlci1jb2xvcjtcblxuICAmOmZpcnN0LWNoaWxkIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRjYXJkLWlubmVyLWJvcmRlci1yYWRpdXMgJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyAwIDApO1xuICB9XG5cbiAgKyAubGlzdC1ncm91cCB7XG4gICAgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7XG4gICAgICBib3JkZXItdG9wOiAwO1xuICAgIH1cbiAgfVxufVxuXG4uY2FyZC1mb290ZXIge1xuICBwYWRkaW5nOiAkY2FyZC1zcGFjZXIteSAkY2FyZC1zcGFjZXIteDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNhcmQtY2FwLWJnO1xuICBib3JkZXItdG9wOiAkY2FyZC1ib3JkZXItd2lkdGggc29saWQgJGNhcmQtYm9yZGVyLWNvbG9yO1xuXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygwIDAgJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyAkY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzKTtcbiAgfVxufVxuXG5cbi8vXG4vLyBIZWFkZXIgbmF2c1xuLy9cblxuLmNhcmQtaGVhZGVyLXRhYnMge1xuICBtYXJnaW4tcmlnaHQ6IC0kY2FyZC1zcGFjZXIteCAvIDI7XG4gIG1hcmdpbi1ib3R0b206IC0kY2FyZC1zcGFjZXIteTtcbiAgbWFyZ2luLWxlZnQ6IC0kY2FyZC1zcGFjZXIteCAvIDI7XG4gIGJvcmRlci1ib3R0b206IDA7XG59XG5cbi5jYXJkLWhlYWRlci1waWxscyB7XG4gIG1hcmdpbi1yaWdodDogLSRjYXJkLXNwYWNlci14IC8gMjtcbiAgbWFyZ2luLWxlZnQ6IC0kY2FyZC1zcGFjZXIteCAvIDI7XG59XG5cbi8vIENhcmQgaW1hZ2Vcbi5jYXJkLWltZy1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHBhZGRpbmc6ICRjYXJkLWltZy1vdmVybGF5LXBhZGRpbmc7XG59XG5cbi5jYXJkLWltZyxcbi5jYXJkLWltZy10b3AsXG4uY2FyZC1pbWctYm90dG9tIHtcbiAgZmxleC1zaHJpbms6IDA7IC8vIEZvciBJRTogaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yOTM5NlxuICB3aWR0aDogMTAwJTsgLy8gUmVxdWlyZWQgYmVjYXVzZSB3ZSB1c2UgZmxleGJveCBhbmQgdGhpcyBpbmhlcmVudGx5IGFwcGxpZXMgYWxpZ24tc2VsZjogc3RyZXRjaFxufVxuXG4uY2FyZC1pbWcsXG4uY2FyZC1pbWctdG9wIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXMoJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyk7XG59XG5cbi5jYXJkLWltZyxcbi5jYXJkLWltZy1ib3R0b20ge1xuICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cygkY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzKTtcbn1cblxuXG4vLyBDYXJkIGRlY2tcblxuLmNhcmQtZGVjayB7XG4gIC5jYXJkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkY2FyZC1kZWNrLW1hcmdpbjtcbiAgfVxuXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gICAgbWFyZ2luLXJpZ2h0OiAtJGNhcmQtZGVjay1tYXJnaW47XG4gICAgbWFyZ2luLWxlZnQ6IC0kY2FyZC1kZWNrLW1hcmdpbjtcblxuICAgIC5jYXJkIHtcbiAgICAgIC8vIEZsZXhidWdzICM0OiBodHRwczovL2dpdGh1Yi5jb20vcGhpbGlwd2FsdG9uL2ZsZXhidWdzI2ZsZXhidWctNFxuICAgICAgZmxleDogMSAwIDAlO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkY2FyZC1kZWNrLW1hcmdpbjtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7IC8vIE92ZXJyaWRlIHRoZSBkZWZhdWx0XG4gICAgICBtYXJnaW4tbGVmdDogJGNhcmQtZGVjay1tYXJnaW47XG4gICAgfVxuICB9XG59XG5cblxuLy9cbi8vIENhcmQgZ3JvdXBzXG4vL1xuXG4uY2FyZC1ncm91cCB7XG4gIC8vIFRoZSBjaGlsZCBzZWxlY3RvciBhbGxvd3MgbmVzdGVkIGAuY2FyZGAgd2l0aGluIGAuY2FyZC1ncm91cGBcbiAgLy8gdG8gZGlzcGxheSBwcm9wZXJseS5cbiAgPiAuY2FyZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGNhcmQtZ3JvdXAtbWFyZ2luO1xuICB9XG5cbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChzbSkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgICAvLyBUaGUgY2hpbGQgc2VsZWN0b3IgYWxsb3dzIG5lc3RlZCBgLmNhcmRgIHdpdGhpbiBgLmNhcmQtZ3JvdXBgXG4gICAgLy8gdG8gZGlzcGxheSBwcm9wZXJseS5cbiAgICA+IC5jYXJkIHtcbiAgICAgIC8vIEZsZXhidWdzICM0OiBodHRwczovL2dpdGh1Yi5jb20vcGhpbGlwd2FsdG9uL2ZsZXhidWdzI2ZsZXhidWctNFxuICAgICAgZmxleDogMSAwIDAlO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgKyAuY2FyZCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICBib3JkZXItbGVmdDogMDtcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIHJvdW5kZWQgY29ybmVyc1xuICAgICAgQGlmICRlbmFibGUtcm91bmRlZCB7XG4gICAgICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJpZ2h0LXJhZGl1cygwKTtcblxuICAgICAgICAgIC5jYXJkLWltZy10b3AsXG4gICAgICAgICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgICAgIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9wZXJ0eS1ibGFja2xpc3RcbiAgICAgICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuY2FyZC1pbWctYm90dG9tLFxuICAgICAgICAgIC5jYXJkLWZvb3RlciB7XG4gICAgICAgICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktYmxhY2tsaXN0XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoMCk7XG5cbiAgICAgICAgICAuY2FyZC1pbWctdG9wLFxuICAgICAgICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICAgICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktYmxhY2tsaXN0XG4gICAgICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuY2FyZC1pbWctYm90dG9tLFxuICAgICAgICAgIC5jYXJkLWZvb3RlciB7XG4gICAgICAgICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktYmxhY2tsaXN0XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi8vXG4vLyBDb2x1bW5zXG4vL1xuXG4uY2FyZC1jb2x1bW5zIHtcbiAgLmNhcmQge1xuICAgIG1hcmdpbi1ib3R0b206ICRjYXJkLWNvbHVtbnMtbWFyZ2luO1xuICB9XG5cbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChzbSkge1xuICAgIGNvbHVtbi1jb3VudDogJGNhcmQtY29sdW1ucy1jb3VudDtcbiAgICBjb2x1bW4tZ2FwOiAkY2FyZC1jb2x1bW5zLWdhcDtcbiAgICBvcnBoYW5zOiAxO1xuICAgIHdpZG93czogMTtcblxuICAgIC5jYXJkIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgLy8gRG9uJ3QgbGV0IHRoZW0gdmVydGljYWxseSBzcGFuIG11bHRpcGxlIGNvbHVtbnNcbiAgICAgIHdpZHRoOiAxMDAlOyAvLyBEb24ndCBsZXQgdGhlaXIgd2lkdGggY2hhbmdlXG4gICAgfVxuICB9XG59XG5cblxuLy9cbi8vIEFjY29yZGlvblxuLy9cblxuLmFjY29yZGlvbiB7XG4gID4gLmNhcmQge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmOm5vdCg6bGFzdC1vZi10eXBlKSB7XG4gICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXMoMCk7XG4gICAgfVxuXG4gICAgJjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKDApO1xuICAgIH1cblxuICAgID4gLmNhcmQtaGVhZGVyIHtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAtJGNhcmQtYm9yZGVyLXdpZHRoO1xuICAgIH1cbiAgfVxufVxuIiwiLmJyZWFkY3J1bWIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIHBhZGRpbmc6ICRicmVhZGNydW1iLXBhZGRpbmcteSAkYnJlYWRjcnVtYi1wYWRkaW5nLXg7XG4gIG1hcmdpbi1ib3R0b206ICRicmVhZGNydW1iLW1hcmdpbi1ib3R0b207XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkYnJlYWRjcnVtYi1mb250LXNpemUpO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnJlYWRjcnVtYi1iZztcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkYnJlYWRjcnVtYi1ib3JkZXItcmFkaXVzKTtcbn1cblxuLmJyZWFkY3J1bWItaXRlbSB7XG4gIC8vIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiBicmVhZGNydW1icyAoYnkgZGVmYXVsdCwgYSBmb3J3YXJkLXNsYXNoOiBcIi9cIilcbiAgKyAuYnJlYWRjcnVtYi1pdGVtIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRicmVhZGNydW1iLWl0ZW0tcGFkZGluZztcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8vIFN1cHByZXNzIHVuZGVybGluaW5nIG9mIHRoZSBzZXBhcmF0b3IgaW4gbW9kZXJuIGJyb3dzZXJzXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkYnJlYWRjcnVtYi1pdGVtLXBhZGRpbmc7XG4gICAgICBjb2xvcjogJGJyZWFkY3J1bWItZGl2aWRlci1jb2xvcjtcbiAgICAgIGNvbnRlbnQ6IGVzY2FwZS1zdmcoJGJyZWFkY3J1bWItZGl2aWRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gSUU5LTExIGhhY2sgdG8gcHJvcGVybHkgaGFuZGxlIGh5cGVybGluayB1bmRlcmxpbmVzIGZvciBicmVhZGNydW1icyBidWlsdFxuICAvLyB3aXRob3V0IGA8dWw+YHMuIFRoZSBgOjpiZWZvcmVgIHBzZXVkby1lbGVtZW50IGdlbmVyYXRlcyBhbiBlbGVtZW50XG4gIC8vICp3aXRoaW4qIHRoZSAuYnJlYWRjcnVtYi1pdGVtIGFuZCB0aGVyZWJ5IGluaGVyaXRzIHRoZSBgdGV4dC1kZWNvcmF0aW9uYC5cbiAgLy9cbiAgLy8gVG8gdHJpY2sgSUUgaW50byBzdXBwcmVzc2luZyB0aGUgdW5kZXJsaW5lLCB3ZSBnaXZlIHRoZSBwc2V1ZG8tZWxlbWVudCBhblxuICAvLyB1bmRlcmxpbmUgYW5kIHRoZW4gaW1tZWRpYXRlbHkgcmVtb3ZlIGl0LlxuICArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIH1cbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWR1cGxpY2F0ZS1zZWxlY3RvcnNcbiAgKyAuYnJlYWRjcnVtYi1pdGVtOmhvdmVyOjpiZWZvcmUge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuXG4gICYuYWN0aXZlIHtcbiAgICBjb2xvcjogJGJyZWFkY3J1bWItYWN0aXZlLWNvbG9yO1xuICB9XG59XG4iLCIucGFnaW5hdGlvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIEBpbmNsdWRlIGxpc3QtdW5zdHlsZWQoKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygpO1xufVxuXG4ucGFnZS1saW5rIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogJHBhZ2luYXRpb24tcGFkZGluZy15ICRwYWdpbmF0aW9uLXBhZGRpbmcteDtcbiAgbWFyZ2luLWxlZnQ6IC0kcGFnaW5hdGlvbi1ib3JkZXItd2lkdGg7XG4gIGxpbmUtaGVpZ2h0OiAkcGFnaW5hdGlvbi1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRwYWdpbmF0aW9uLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGFnaW5hdGlvbi1iZztcbiAgYm9yZGVyOiAkcGFnaW5hdGlvbi1ib3JkZXItd2lkdGggc29saWQgJHBhZ2luYXRpb24tYm9yZGVyLWNvbG9yO1xuXG4gICY6aG92ZXIge1xuICAgIHotaW5kZXg6IDI7XG4gICAgY29sb3I6ICRwYWdpbmF0aW9uLWhvdmVyLWNvbG9yO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGFnaW5hdGlvbi1ob3Zlci1iZztcbiAgICBib3JkZXItY29sb3I6ICRwYWdpbmF0aW9uLWhvdmVyLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIHotaW5kZXg6IDM7XG4gICAgb3V0bGluZTogJHBhZ2luYXRpb24tZm9jdXMtb3V0bGluZTtcbiAgICBib3gtc2hhZG93OiAkcGFnaW5hdGlvbi1mb2N1cy1ib3gtc2hhZG93O1xuICB9XG59XG5cbi5wYWdlLWl0ZW0ge1xuICAmOmZpcnN0LWNoaWxkIHtcbiAgICAucGFnZS1saW5rIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgQGluY2x1ZGUgYm9yZGVyLWxlZnQtcmFkaXVzKCRib3JkZXItcmFkaXVzKTtcbiAgICB9XG4gIH1cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICAucGFnZS1saW5rIHtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci1yaWdodC1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xuICAgIH1cbiAgfVxuXG4gICYuYWN0aXZlIC5wYWdlLWxpbmsge1xuICAgIHotaW5kZXg6IDM7XG4gICAgY29sb3I6ICRwYWdpbmF0aW9uLWFjdGl2ZS1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGFnaW5hdGlvbi1hY3RpdmUtYmc7XG4gICAgYm9yZGVyLWNvbG9yOiAkcGFnaW5hdGlvbi1hY3RpdmUtYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgJi5kaXNhYmxlZCAucGFnZS1saW5rIHtcbiAgICBjb2xvcjogJHBhZ2luYXRpb24tZGlzYWJsZWQtY29sb3I7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgLy8gT3BpbmlvbmF0ZWQ6IHJlbW92ZSB0aGUgXCJoYW5kXCIgY3Vyc29yIHNldCBwcmV2aW91c2x5IGZvciAucGFnZS1saW5rXG4gICAgY3Vyc29yOiBhdXRvO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRwYWdpbmF0aW9uLWRpc2FibGVkLWJnO1xuICAgIGJvcmRlci1jb2xvcjogJHBhZ2luYXRpb24tZGlzYWJsZWQtYm9yZGVyLWNvbG9yO1xuICB9XG59XG5cblxuLy9cbi8vIFNpemluZ1xuLy9cblxuLnBhZ2luYXRpb24tbGcge1xuICBAaW5jbHVkZSBwYWdpbmF0aW9uLXNpemUoJHBhZ2luYXRpb24tcGFkZGluZy15LWxnLCAkcGFnaW5hdGlvbi1wYWRkaW5nLXgtbGcsICRmb250LXNpemUtbGcsICRsaW5lLWhlaWdodC1sZywgJGJvcmRlci1yYWRpdXMtbGcpO1xufVxuXG4ucGFnaW5hdGlvbi1zbSB7XG4gIEBpbmNsdWRlIHBhZ2luYXRpb24tc2l6ZSgkcGFnaW5hdGlvbi1wYWRkaW5nLXktc20sICRwYWdpbmF0aW9uLXBhZGRpbmcteC1zbSwgJGZvbnQtc2l6ZS1zbSwgJGxpbmUtaGVpZ2h0LXNtLCAkYm9yZGVyLXJhZGl1cy1zbSk7XG59XG4iLCIvLyBQYWdpbmF0aW9uXG5cbkBtaXhpbiBwYWdpbmF0aW9uLXNpemUoJHBhZGRpbmcteSwgJHBhZGRpbmcteCwgJGZvbnQtc2l6ZSwgJGxpbmUtaGVpZ2h0LCAkYm9yZGVyLXJhZGl1cykge1xuICAucGFnZS1saW5rIHtcbiAgICBwYWRkaW5nOiAkcGFkZGluZy15ICRwYWRkaW5nLXg7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKCRmb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gIH1cblxuICAucGFnZS1pdGVtIHtcbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIC5wYWdlLWxpbmsge1xuICAgICAgICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xuICAgICAgfVxuICAgIH1cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgLnBhZ2UtbGluayB7XG4gICAgICAgIEBpbmNsdWRlIGJvcmRlci1yaWdodC1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gQmFzZSBjbGFzc1xuLy9cbi8vIFJlcXVpcmVzIG9uZSBvZiB0aGUgY29udGV4dHVhbCwgY29sb3IgbW9kaWZpZXIgY2xhc3NlcyBmb3IgYGNvbG9yYCBhbmRcbi8vIGBiYWNrZ3JvdW5kLWNvbG9yYC5cblxuLmJhZGdlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAkYmFkZ2UtcGFkZGluZy15ICRiYWRnZS1wYWRkaW5nLXg7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkYmFkZ2UtZm9udC1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRiYWRnZS1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRiYWRnZS1ib3JkZXItcmFkaXVzKTtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkYmFkZ2UtdHJhbnNpdGlvbik7XG5cbiAgQGF0LXJvb3QgYSN7Jn0ge1xuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVtcHR5IGJhZGdlcyBjb2xsYXBzZSBhdXRvbWF0aWNhbGx5XG4gICY6ZW1wdHkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLy8gUXVpY2sgZml4IGZvciBiYWRnZXMgaW4gYnV0dG9uc1xuLmJ0biAuYmFkZ2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogLTFweDtcbn1cblxuLy8gUGlsbCBiYWRnZXNcbi8vXG4vLyBNYWtlIHRoZW0gZXh0cmEgcm91bmRlZCB3aXRoIGEgbW9kaWZpZXIgdG8gcmVwbGFjZSB2MydzIGJhZGdlcy5cblxuLmJhZGdlLXBpbGwge1xuICBwYWRkaW5nLXJpZ2h0OiAkYmFkZ2UtcGlsbC1wYWRkaW5nLXg7XG4gIHBhZGRpbmctbGVmdDogJGJhZGdlLXBpbGwtcGFkZGluZy14O1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRiYWRnZS1waWxsLWJvcmRlci1yYWRpdXMpO1xufVxuXG4vLyBDb2xvcnNcbi8vXG4vLyBDb250ZXh0dWFsIHZhcmlhdGlvbnMgKGxpbmtlZCBiYWRnZXMgZ2V0IGRhcmtlciBvbiA6aG92ZXIpLlxuXG5AZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgLmJhZGdlLSN7JGNvbG9yfSB7XG4gICAgQGluY2x1ZGUgYmFkZ2UtdmFyaWFudCgkdmFsdWUpO1xuICB9XG59XG4iLCJAbWl4aW4gYmFkZ2UtdmFyaWFudCgkYmcpIHtcbiAgY29sb3I6IGNvbG9yLXlpcSgkYmcpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmc7XG5cbiAgQGF0LXJvb3QgYSN7Jn0ge1xuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgICAgY29sb3I6IGNvbG9yLXlpcSgkYmcpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRiZywgMTAlKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLFxuICAgICYuZm9jdXMge1xuICAgICAgb3V0bGluZTogMDtcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwICRiYWRnZS1mb2N1cy13aWR0aCByZ2JhKCRiZywgLjUpO1xuICAgIH1cbiAgfVxufVxuIiwiLmp1bWJvdHJvbiB7XG4gIHBhZGRpbmc6ICRqdW1ib3Ryb24tcGFkZGluZyAoJGp1bWJvdHJvbi1wYWRkaW5nIC8gMik7XG4gIG1hcmdpbi1ib3R0b206ICRqdW1ib3Ryb24tcGFkZGluZztcbiAgY29sb3I6ICRqdW1ib3Ryb24tY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRqdW1ib3Ryb24tYmc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMtbGcpO1xuXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgICBwYWRkaW5nOiAoJGp1bWJvdHJvbi1wYWRkaW5nICogMikgJGp1bWJvdHJvbi1wYWRkaW5nO1xuICB9XG59XG5cbi5qdW1ib3Ryb24tZmx1aWQge1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG59XG4iLCIvL1xuLy8gQmFzZSBzdHlsZXNcbi8vXG5cbi5hbGVydCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogJGFsZXJ0LXBhZGRpbmcteSAkYWxlcnQtcGFkZGluZy14O1xuICBtYXJnaW4tYm90dG9tOiAkYWxlcnQtbWFyZ2luLWJvdHRvbTtcbiAgYm9yZGVyOiAkYWxlcnQtYm9yZGVyLXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRhbGVydC1ib3JkZXItcmFkaXVzKTtcbn1cblxuLy8gSGVhZGluZ3MgZm9yIGxhcmdlciBhbGVydHNcbi5hbGVydC1oZWFkaW5nIHtcbiAgLy8gU3BlY2lmaWVkIHRvIHByZXZlbnQgY29uZmxpY3RzIG9mIGNoYW5naW5nICRoZWFkaW5ncy1jb2xvclxuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLy8gUHJvdmlkZSBjbGFzcyBmb3IgbGlua3MgdGhhdCBtYXRjaCBhbGVydHNcbi5hbGVydC1saW5rIHtcbiAgZm9udC13ZWlnaHQ6ICRhbGVydC1saW5rLWZvbnQtd2VpZ2h0O1xufVxuXG5cbi8vIERpc21pc3NpYmxlIGFsZXJ0c1xuLy9cbi8vIEV4cGFuZCB0aGUgcmlnaHQgcGFkZGluZyBhbmQgYWNjb3VudCBmb3IgdGhlIGNsb3NlIGJ1dHRvbidzIHBvc2l0aW9uaW5nLlxuXG4uYWxlcnQtZGlzbWlzc2libGUge1xuICBwYWRkaW5nLXJpZ2h0OiAkY2xvc2UtZm9udC1zaXplICsgJGFsZXJ0LXBhZGRpbmcteCAqIDI7XG5cbiAgLy8gQWRqdXN0IGNsb3NlIGxpbmsgcG9zaXRpb25cbiAgLmNsb3NlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHBhZGRpbmc6ICRhbGVydC1wYWRkaW5nLXkgJGFsZXJ0LXBhZGRpbmcteDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgfVxufVxuXG5cbi8vIEFsdGVybmF0ZSBzdHlsZXNcbi8vXG4vLyBHZW5lcmF0ZSBjb250ZXh0dWFsIG1vZGlmaWVyIGNsYXNzZXMgZm9yIGNvbG9yaXppbmcgdGhlIGFsZXJ0LlxuXG5AZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgLmFsZXJ0LSN7JGNvbG9yfSB7XG4gICAgQGluY2x1ZGUgYWxlcnQtdmFyaWFudCh0aGVtZS1jb2xvci1sZXZlbCgkY29sb3IsICRhbGVydC1iZy1sZXZlbCksIHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvciwgJGFsZXJ0LWJvcmRlci1sZXZlbCksIHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvciwgJGFsZXJ0LWNvbG9yLWxldmVsKSk7XG4gIH1cbn1cbiIsIkBtaXhpbiBhbGVydC12YXJpYW50KCRiYWNrZ3JvdW5kLCAkYm9yZGVyLCAkY29sb3IpIHtcbiAgY29sb3I6ICRjb2xvcjtcbiAgQGluY2x1ZGUgZ3JhZGllbnQtYmcoJGJhY2tncm91bmQpO1xuICBib3JkZXItY29sb3I6ICRib3JkZXI7XG5cbiAgaHIge1xuICAgIGJvcmRlci10b3AtY29sb3I6IGRhcmtlbigkYm9yZGVyLCA1JSk7XG4gIH1cblxuICAuYWxlcnQtbGluayB7XG4gICAgY29sb3I6IGRhcmtlbigkY29sb3IsIDEwJSk7XG4gIH1cbn1cbiIsIi8vIERpc2FibGUgYW5pbWF0aW9uIGlmIHRyYW5zaXRpb25zIGFyZSBkaXNhYmxlZFxuQGlmICRlbmFibGUtdHJhbnNpdGlvbnMge1xuICBAa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHtcbiAgICBmcm9tIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogJHByb2dyZXNzLWhlaWdodCAwOyB9XG4gICAgdG8geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH1cbiAgfVxufVxuXG4ucHJvZ3Jlc3Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6ICRwcm9ncmVzcy1oZWlnaHQ7XG4gIG92ZXJmbG93OiBoaWRkZW47IC8vIGZvcmNlIHJvdW5kZWQgY29ybmVycyBieSBjcm9wcGluZyBpdFxuICBAaW5jbHVkZSBmb250LXNpemUoJHByb2dyZXNzLWZvbnQtc2l6ZSk7XG4gIGJhY2tncm91bmQtY29sb3I6ICRwcm9ncmVzcy1iZztcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkcHJvZ3Jlc3MtYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJHByb2dyZXNzLWJveC1zaGFkb3cpO1xufVxuXG4ucHJvZ3Jlc3MtYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNvbG9yOiAkcHJvZ3Jlc3MtYmFyLWNvbG9yO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJhY2tncm91bmQtY29sb3I6ICRwcm9ncmVzcy1iYXItYmc7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJHByb2dyZXNzLWJhci10cmFuc2l0aW9uKTtcbn1cblxuLnByb2dyZXNzLWJhci1zdHJpcGVkIHtcbiAgQGluY2x1ZGUgZ3JhZGllbnQtc3RyaXBlZCgpO1xuICBiYWNrZ3JvdW5kLXNpemU6ICRwcm9ncmVzcy1oZWlnaHQgJHByb2dyZXNzLWhlaWdodDtcbn1cblxuQGlmICRlbmFibGUtdHJhbnNpdGlvbnMge1xuICAucHJvZ3Jlc3MtYmFyLWFuaW1hdGVkIHtcbiAgICBhbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzICRwcm9ncmVzcy1iYXItYW5pbWF0aW9uLXRpbWluZztcblxuICAgIEBpZiAkZW5hYmxlLXByZWZlcnMtcmVkdWNlZC1tb3Rpb24tbWVkaWEtcXVlcnkge1xuICAgICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLm1lZGlhIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG5cbi5tZWRpYS1ib2R5IHtcbiAgZmxleDogMTtcbn1cbiIsIi8vIEJhc2UgY2xhc3Ncbi8vXG4vLyBFYXNpbHkgdXNhYmxlIG9uIDx1bD4sIDxvbD4sIG9yIDxkaXY+LlxuXG4ubGlzdC1ncm91cCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgLy8gTm8gbmVlZCB0byBzZXQgbGlzdC1zdHlsZTogbm9uZTsgc2luY2UgLmxpc3QtZ3JvdXAtaXRlbSBpcyBibG9jayBsZXZlbFxuICBwYWRkaW5nLWxlZnQ6IDA7IC8vIHJlc2V0IHBhZGRpbmcgYmVjYXVzZSB1bCBhbmQgb2xcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuXG4vLyBJbnRlcmFjdGl2ZSBsaXN0IGl0ZW1zXG4vL1xuLy8gVXNlIGFuY2hvciBvciBidXR0b24gZWxlbWVudHMgaW5zdGVhZCBvZiBgbGlgcyBvciBgZGl2YHMgdG8gY3JlYXRlIGludGVyYWN0aXZlXG4vLyBsaXN0IGl0ZW1zLiBJbmNsdWRlcyBhbiBleHRyYSBgLmFjdGl2ZWAgbW9kaWZpZXIgY2xhc3MgZm9yIHNlbGVjdGVkIGl0ZW1zLlxuXG4ubGlzdC1ncm91cC1pdGVtLWFjdGlvbiB7XG4gIHdpZHRoOiAxMDAlOyAvLyBGb3IgYDxidXR0b24+YHMgKGFuY2hvcnMgYmVjb21lIDEwMCUgYnkgZGVmYXVsdCB0aG91Z2gpXG4gIGNvbG9yOiAkbGlzdC1ncm91cC1hY3Rpb24tY29sb3I7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7IC8vIEZvciBgPGJ1dHRvbj5gcyAoYW5jaG9ycyBpbmhlcml0KVxuXG4gIC8vIEhvdmVyIHN0YXRlXG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgIHotaW5kZXg6IDE7IC8vIFBsYWNlIGhvdmVyL2ZvY3VzIGl0ZW1zIGFib3ZlIHRoZWlyIHNpYmxpbmdzIGZvciBwcm9wZXIgYm9yZGVyIHN0eWxpbmdcbiAgICBjb2xvcjogJGxpc3QtZ3JvdXAtYWN0aW9uLWhvdmVyLWNvbG9yO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlzdC1ncm91cC1ob3Zlci1iZztcbiAgfVxuXG4gICY6YWN0aXZlIHtcbiAgICBjb2xvcjogJGxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlzdC1ncm91cC1hY3Rpb24tYWN0aXZlLWJnO1xuICB9XG59XG5cblxuLy8gSW5kaXZpZHVhbCBsaXN0IGl0ZW1zXG4vL1xuLy8gVXNlIG9uIGBsaWBzIG9yIGBkaXZgcyB3aXRoaW4gdGhlIGAubGlzdC1ncm91cGAgcGFyZW50LlxuXG4ubGlzdC1ncm91cC1pdGVtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogJGxpc3QtZ3JvdXAtaXRlbS1wYWRkaW5nLXkgJGxpc3QtZ3JvdXAtaXRlbS1wYWRkaW5nLXg7XG4gIGNvbG9yOiAkbGlzdC1ncm91cC1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGxpc3QtZ3JvdXAtYmc7XG4gIGJvcmRlcjogJGxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoIHNvbGlkICRsaXN0LWdyb3VwLWJvcmRlci1jb2xvcjtcblxuICAmOmZpcnN0LWNoaWxkIHtcbiAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygkbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzKTtcbiAgfVxuXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXMoJGxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1cyk7XG4gIH1cblxuICAmLmRpc2FibGVkLFxuICAmOmRpc2FibGVkIHtcbiAgICBjb2xvcjogJGxpc3QtZ3JvdXAtZGlzYWJsZWQtY29sb3I7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGxpc3QtZ3JvdXAtZGlzYWJsZWQtYmc7XG4gIH1cblxuICAvLyBJbmNsdWRlIGJvdGggaGVyZSBmb3IgYDxhPmBzIGFuZCBgPGJ1dHRvbj5gc1xuICAmLmFjdGl2ZSB7XG4gICAgei1pbmRleDogMjsgLy8gUGxhY2UgYWN0aXZlIGl0ZW1zIGFib3ZlIHRoZWlyIHNpYmxpbmdzIGZvciBwcm9wZXIgYm9yZGVyIHN0eWxpbmdcbiAgICBjb2xvcjogJGxpc3QtZ3JvdXAtYWN0aXZlLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRsaXN0LWdyb3VwLWFjdGl2ZS1iZztcbiAgICBib3JkZXItY29sb3I6ICRsaXN0LWdyb3VwLWFjdGl2ZS1ib3JkZXItY29sb3I7XG4gIH1cblxuICAmICsgJiB7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDtcblxuICAgICYuYWN0aXZlIHtcbiAgICAgIG1hcmdpbi10b3A6IC0kbGlzdC1ncm91cC1ib3JkZXItd2lkdGg7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAkbGlzdC1ncm91cC1ib3JkZXItd2lkdGg7XG4gICAgfVxuICB9XG59XG5cblxuLy8gSG9yaXpvbnRhbFxuLy9cbi8vIENoYW5nZSB0aGUgbGF5b3V0IG9mIGxpc3QgZ3JvdXAgaXRlbXMgZnJvbSB2ZXJ0aWNhbCAoZGVmYXVsdCkgdG8gaG9yaXpvbnRhbC5cblxuQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkYnJlYWtwb2ludCkge1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuXG4gICAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbCN7JGluZml4fSB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuXG4gICAgICAubGlzdC1ncm91cC1pdGVtIHtcbiAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cygkbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzKTtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJpZ2h0LXJhZGl1cygwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMoJGxpc3QtZ3JvdXAtYm9yZGVyLXJhZGl1cyk7XG4gICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cygwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJiArIC5saXN0LWdyb3VwLWl0ZW0ge1xuICAgICAgICAgIGJvcmRlci10b3Atd2lkdGg6ICRsaXN0LWdyb3VwLWJvcmRlci13aWR0aDtcbiAgICAgICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcblxuICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtJGxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoO1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6ICRsaXN0LWdyb3VwLWJvcmRlci13aWR0aDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG4vLyBGbHVzaCBsaXN0IGl0ZW1zXG4vL1xuLy8gUmVtb3ZlIGJvcmRlcnMgYW5kIGJvcmRlci1yYWRpdXMgdG8ga2VlcCBsaXN0IGdyb3VwIGl0ZW1zIGVkZ2UtdG8tZWRnZS4gTW9zdFxuLy8gdXNlZnVsIHdpdGhpbiBvdGhlciBjb21wb25lbnRzIChlLmcuLCBjYXJkcykuXG5cbi5saXN0LWdyb3VwLWZsdXNoIHtcbiAgLmxpc3QtZ3JvdXAtaXRlbSB7XG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gICAgfVxuICB9XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBDb250ZXh0dWFsIHZhcmlhbnRzXG4vL1xuLy8gQWRkIG1vZGlmaWVyIGNsYXNzZXMgdG8gY2hhbmdlIHRleHQgYW5kIGJhY2tncm91bmQgY29sb3Igb24gaW5kaXZpZHVhbCBpdGVtcy5cbi8vIE9yZ2FuaXphdGlvbmFsbHksIHRoaXMgbXVzdCBjb21lIGFmdGVyIHRoZSBgOmhvdmVyYCBzdGF0ZXMuXG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICBAaW5jbHVkZSBsaXN0LWdyb3VwLWl0ZW0tdmFyaWFudCgkY29sb3IsIHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvciwgLTkpLCB0aGVtZS1jb2xvci1sZXZlbCgkY29sb3IsIDYpKTtcbn1cbiIsIi8vIExpc3QgR3JvdXBzXG5cbkBtaXhpbiBsaXN0LWdyb3VwLWl0ZW0tdmFyaWFudCgkc3RhdGUsICRiYWNrZ3JvdW5kLCAkY29sb3IpIHtcbiAgLmxpc3QtZ3JvdXAtaXRlbS0jeyRzdGF0ZX0ge1xuICAgIGNvbG9yOiAkY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG5cbiAgICAmLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24ge1xuICAgICAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3I7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkYmFja2dyb3VuZCwgNSUpO1xuICAgICAgfVxuXG4gICAgICAmLmFjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIuY2xvc2Uge1xuICBmbG9hdDogcmlnaHQ7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkY2xvc2UtZm9udC1zaXplKTtcbiAgZm9udC13ZWlnaHQ6ICRjbG9zZS1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiAkY2xvc2UtY29sb3I7XG4gIHRleHQtc2hhZG93OiAkY2xvc2UtdGV4dC1zaGFkb3c7XG4gIG9wYWNpdHk6IC41O1xuXG4gIC8vIE92ZXJyaWRlIDxhPidzIGhvdmVyIHN0eWxlXG4gIEBpbmNsdWRlIGhvdmVyKCkge1xuICAgIGNvbG9yOiAkY2xvc2UtY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgJjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7XG4gICAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgICBvcGFjaXR5OiAuNzU7XG4gICAgfVxuICB9XG59XG5cbi8vIEFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgYnV0dG9uIHZlcnNpb25cbi8vIGlPUyByZXF1aXJlcyB0aGUgYnV0dG9uIGVsZW1lbnQgaW5zdGVhZCBvZiBhbiBhbmNob3IgdGFnLlxuLy8gSWYgeW91IHdhbnQgdGhlIGFuY2hvciB2ZXJzaW9uLCBpdCByZXF1aXJlcyBgaHJlZj1cIiNcImAuXG4vLyBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvRXZlbnRzL2NsaWNrI1NhZmFyaV9Nb2JpbGVcblxuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuYnV0dG9uLmNsb3NlIHtcbiAgcGFkZGluZzogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLy8gRnV0dXJlLXByb29mIGRpc2FibGluZyBvZiBjbGlja3Mgb24gYDxhPmAgZWxlbWVudHNcblxuLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuYS5jbG9zZS5kaXNhYmxlZCB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuIiwiLnRvYXN0IHtcbiAgbWF4LXdpZHRoOiAkdG9hc3QtbWF4LXdpZHRoO1xuICBvdmVyZmxvdzogaGlkZGVuOyAvLyBjaGVhcCByb3VuZGVkIGNvcm5lcnMgb24gbmVzdGVkIGl0ZW1zXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkdG9hc3QtZm9udC1zaXplKTtcbiAgY29sb3I6ICR0b2FzdC1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHRvYXN0LWJhY2tncm91bmQtY29sb3I7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlcjogJHRvYXN0LWJvcmRlci13aWR0aCBzb2xpZCAkdG9hc3QtYm9yZGVyLWNvbG9yO1xuICBib3gtc2hhZG93OiAkdG9hc3QtYm94LXNoYWRvdztcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICBvcGFjaXR5OiAwO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCR0b2FzdC1ib3JkZXItcmFkaXVzKTtcblxuICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIG1hcmdpbi1ib3R0b206ICR0b2FzdC1wYWRkaW5nLXg7XG4gIH1cblxuICAmLnNob3dpbmcge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAmLnNob3cge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAmLmhpZGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLnRvYXN0LWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6ICR0b2FzdC1wYWRkaW5nLXkgJHRvYXN0LXBhZGRpbmcteDtcbiAgY29sb3I6ICR0b2FzdC1oZWFkZXItY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICR0b2FzdC1oZWFkZXItYmFja2dyb3VuZC1jb2xvcjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyLWJvdHRvbTogJHRvYXN0LWJvcmRlci13aWR0aCBzb2xpZCAkdG9hc3QtaGVhZGVyLWJvcmRlci1jb2xvcjtcbn1cblxuLnRvYXN0LWJvZHkge1xuICBwYWRkaW5nOiAkdG9hc3QtcGFkZGluZy14OyAvLyBhcHBseSB0byBib3RoIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsXG59XG4iLCIvLyAubW9kYWwtb3BlbiAgICAgIC0gYm9keSBjbGFzcyBmb3Iga2lsbGluZyB0aGUgc2Nyb2xsXG4vLyAubW9kYWwgICAgICAgICAgIC0gY29udGFpbmVyIHRvIHNjcm9sbCB3aXRoaW5cbi8vIC5tb2RhbC1kaWFsb2cgICAgLSBwb3NpdGlvbmluZyBzaGVsbCBmb3IgdGhlIGFjdHVhbCBtb2RhbFxuLy8gLm1vZGFsLWNvbnRlbnQgICAtIGFjdHVhbCBtb2RhbCB3LyBiZyBhbmQgY29ybmVycyBhbmQgc3R1ZmZcblxuXG4ubW9kYWwtb3BlbiB7XG4gIC8vIEtpbGwgdGhlIHNjcm9sbCBvbiB0aGUgYm9keVxuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC5tb2RhbCB7XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gIH1cbn1cblxuLy8gQ29udGFpbmVyIHRoYXQgdGhlIG1vZGFsIHNjcm9sbHMgd2l0aGluXG4ubW9kYWwge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHppbmRleC1tb2RhbDtcbiAgZGlzcGxheTogbm9uZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgLy8gUHJldmVudCBDaHJvbWUgb24gV2luZG93cyBmcm9tIGFkZGluZyBhIGZvY3VzIG91dGxpbmUuIEZvciBkZXRhaWxzLCBzZWVcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL3B1bGwvMTA5NTEuXG4gIG91dGxpbmU6IDA7XG4gIC8vIFdlIGRlbGliZXJhdGVseSBkb24ndCB1c2UgYC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtgIGR1ZSB0byBhXG4gIC8vIGduYXJseSBpT1MgU2FmYXJpIGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM0MlxuICAvLyBTZWUgYWxzbyBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzE3Njk1XG59XG5cbi8vIFNoZWxsIGRpdiB0byBwb3NpdGlvbiB0aGUgbW9kYWwgd2l0aCBib3R0b20gcGFkZGluZ1xuLm1vZGFsLWRpYWxvZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IGF1dG87XG4gIG1hcmdpbjogJG1vZGFsLWRpYWxvZy1tYXJnaW47XG4gIC8vIGFsbG93IGNsaWNrcyB0byBwYXNzIHRocm91Z2ggZm9yIGN1c3RvbSBjbGljayBoYW5kbGluZyB0byBjbG9zZSBtb2RhbFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAvLyBXaGVuIGZhZGluZyBpbiB0aGUgbW9kYWwsIGFuaW1hdGUgaXQgdG8gc2xpZGUgZG93blxuICAubW9kYWwuZmFkZSAmIHtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKCRtb2RhbC10cmFuc2l0aW9uKTtcbiAgICB0cmFuc2Zvcm06ICRtb2RhbC1mYWRlLXRyYW5zZm9ybTtcbiAgfVxuICAubW9kYWwuc2hvdyAmIHtcbiAgICB0cmFuc2Zvcm06ICRtb2RhbC1zaG93LXRyYW5zZm9ybTtcbiAgfVxuXG4gIC8vIFdoZW4gdHJ5aW5nIHRvIGNsb3NlLCBhbmltYXRlIGZvY3VzIHRvIHNjYWxlXG4gIC5tb2RhbC5tb2RhbC1zdGF0aWMgJiB7XG4gICAgdHJhbnNmb3JtOiAkbW9kYWwtc2NhbGUtdHJhbnNmb3JtO1xuICB9XG59XG5cbi5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSB7XG4gIGRpc3BsYXk6IGZsZXg7IC8vIElFMTAvMTFcbiAgbWF4LWhlaWdodDogc3VidHJhY3QoMTAwJSwgJG1vZGFsLWRpYWxvZy1tYXJnaW4gKiAyKTtcblxuICAubW9kYWwtY29udGVudCB7XG4gICAgbWF4LWhlaWdodDogc3VidHJhY3QoMTAwdmgsICRtb2RhbC1kaWFsb2ctbWFyZ2luICogMik7IC8vIElFMTAvMTFcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG5cbiAgLm1vZGFsLWhlYWRlcixcbiAgLm1vZGFsLWZvb3RlciB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gIH1cblxuICAubW9kYWwtYm9keSB7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgfVxufVxuXG4ubW9kYWwtZGlhbG9nLWNlbnRlcmVkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWluLWhlaWdodDogc3VidHJhY3QoMTAwJSwgJG1vZGFsLWRpYWxvZy1tYXJnaW4gKiAyKTtcblxuICAvLyBFbnN1cmUgYG1vZGFsLWRpYWxvZy1jZW50ZXJlZGAgZXh0ZW5kcyB0aGUgZnVsbCBoZWlnaHQgb2YgdGhlIHZpZXcgKElFMTAvMTEpXG4gICY6OmJlZm9yZSB7XG4gICAgZGlzcGxheTogYmxvY2s7IC8vIElFMTBcbiAgICBoZWlnaHQ6IHN1YnRyYWN0KDEwMHZoLCAkbW9kYWwtZGlhbG9nLW1hcmdpbiAqIDIpO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gIH1cblxuICAvLyBFbnN1cmUgYC5tb2RhbC1ib2R5YCBzaG93cyBzY3JvbGxiYXIgKElFMTAvMTEpXG4gICYubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgLm1vZGFsLWNvbnRlbnQge1xuICAgICAgbWF4LWhlaWdodDogbm9uZTtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQWN0dWFsIG1vZGFsXG4ubW9kYWwtY29udGVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IDEwMCU7IC8vIEVuc3VyZSBgLm1vZGFsLWNvbnRlbnRgIGV4dGVuZHMgdGhlIGZ1bGwgd2lkdGggb2YgdGhlIHBhcmVudCBgLm1vZGFsLWRpYWxvZ2BcbiAgLy8gY291bnRlcmFjdCB0aGUgcG9pbnRlci1ldmVudHM6IG5vbmU7IGluIHRoZSAubW9kYWwtZGlhbG9nXG4gIGNvbG9yOiAkbW9kYWwtY29udGVudC1jb2xvcjtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIGJhY2tncm91bmQtY29sb3I6ICRtb2RhbC1jb250ZW50LWJnO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6ICRtb2RhbC1jb250ZW50LWJvcmRlci13aWR0aCBzb2xpZCAkbW9kYWwtY29udGVudC1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJG1vZGFsLWNvbnRlbnQtYm94LXNoYWRvdy14cyk7XG4gIC8vIFJlbW92ZSBmb2N1cyBvdXRsaW5lIGZyb20gb3BlbmVkIG1vZGFsXG4gIG91dGxpbmU6IDA7XG59XG5cbi8vIE1vZGFsIGJhY2tncm91bmRcbi5tb2RhbC1iYWNrZHJvcCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAkemluZGV4LW1vZGFsLWJhY2tkcm9wO1xuICB3aWR0aDogMTAwdnc7XG4gIGhlaWdodDogMTAwdmg7XG4gIGJhY2tncm91bmQtY29sb3I6ICRtb2RhbC1iYWNrZHJvcC1iZztcblxuICAvLyBGYWRlIGZvciBiYWNrZHJvcFxuICAmLmZhZGUgeyBvcGFjaXR5OiAwOyB9XG4gICYuc2hvdyB7IG9wYWNpdHk6ICRtb2RhbC1iYWNrZHJvcC1vcGFjaXR5OyB9XG59XG5cbi8vIE1vZGFsIGhlYWRlclxuLy8gVG9wIHNlY3Rpb24gb2YgdGhlIG1vZGFsIHcvIHRpdGxlIGFuZCBkaXNtaXNzXG4ubW9kYWwtaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IC8vIHNvIHRoZSBjbG9zZSBidG4gYWx3YXlzIHN0YXlzIG9uIHRoZSB1cHBlciByaWdodCBjb3JuZXJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyAvLyBQdXQgbW9kYWwgaGVhZGVyIGVsZW1lbnRzICh0aXRsZSBhbmQgZGlzbWlzcykgb24gb3Bwb3NpdGUgZW5kc1xuICBwYWRkaW5nOiAkbW9kYWwtaGVhZGVyLXBhZGRpbmc7XG4gIGJvcmRlci1ib3R0b206ICRtb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRoIHNvbGlkICRtb2RhbC1oZWFkZXItYm9yZGVyLWNvbG9yO1xuICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygkbW9kYWwtY29udGVudC1pbm5lci1ib3JkZXItcmFkaXVzKTtcblxuICAuY2xvc2Uge1xuICAgIHBhZGRpbmc6ICRtb2RhbC1oZWFkZXItcGFkZGluZztcbiAgICAvLyBhdXRvIG9uIHRoZSBsZWZ0IGZvcmNlIGljb24gdG8gdGhlIHJpZ2h0IGV2ZW4gd2hlbiB0aGVyZSBpcyBubyAubW9kYWwtdGl0bGVcbiAgICBtYXJnaW46ICgtJG1vZGFsLWhlYWRlci1wYWRkaW5nLXkpICgtJG1vZGFsLWhlYWRlci1wYWRkaW5nLXgpICgtJG1vZGFsLWhlYWRlci1wYWRkaW5nLXkpIGF1dG87XG4gIH1cbn1cblxuLy8gVGl0bGUgdGV4dCB3aXRoaW4gaGVhZGVyXG4ubW9kYWwtdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBsaW5lLWhlaWdodDogJG1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0O1xufVxuXG4vLyBNb2RhbCBib2R5XG4vLyBXaGVyZSBhbGwgbW9kYWwgY29udGVudCByZXNpZGVzIChzaWJsaW5nIG9mIC5tb2RhbC1oZWFkZXIgYW5kIC5tb2RhbC1mb290ZXIpXG4ubW9kYWwtYm9keSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLy8gRW5hYmxlIGBmbGV4LWdyb3c6IDFgIHNvIHRoYXQgdGhlIGJvZHkgdGFrZSB1cCBhcyBtdWNoIHNwYWNlIGFzIHBvc3NpYmxlXG4gIC8vIHdoZW4gdGhlcmUgc2hvdWxkIGJlIGEgZml4ZWQgaGVpZ2h0IG9uIGAubW9kYWwtZGlhbG9nYC5cbiAgZmxleDogMSAxIGF1dG87XG4gIHBhZGRpbmc6ICRtb2RhbC1pbm5lci1wYWRkaW5nO1xufVxuXG4vLyBGb290ZXIgKGZvciBhY3Rpb25zKVxuLm1vZGFsLWZvb3RlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgLy8gdmVydGljYWxseSBjZW50ZXJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgLy8gUmlnaHQgYWxpZ24gYnV0dG9ucyB3aXRoIGZsZXggcHJvcGVydHkgYmVjYXVzZSB0ZXh0LWFsaWduIGRvZXNuJ3Qgd29yayBvbiBmbGV4IGl0ZW1zXG4gIHBhZGRpbmc6ICRtb2RhbC1pbm5lci1wYWRkaW5nIC0gJG1vZGFsLWZvb3Rlci1tYXJnaW4tYmV0d2VlbiAvIDI7XG4gIGJvcmRlci10b3A6ICRtb2RhbC1mb290ZXItYm9yZGVyLXdpZHRoIHNvbGlkICRtb2RhbC1mb290ZXItYm9yZGVyLWNvbG9yO1xuICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cygkbW9kYWwtY29udGVudC1pbm5lci1ib3JkZXItcmFkaXVzKTtcblxuICAvLyBQbGFjZSBtYXJnaW4gYmV0d2VlbiBmb290ZXIgZWxlbWVudHNcbiAgLy8gVGhpcyBzb2x1dGlvbiBpcyBmYXIgZnJvbSBpZGVhbCBiZWNhdXNlIG9mIHRoZSB1bml2ZXJzYWwgc2VsZWN0b3IgdXNhZ2UsXG4gIC8vIGJ1dCBpcyBuZWVkZWQgdG8gZml4IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMjQ4MDBcbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlbGVjdG9yLW1heC11bml2ZXJzYWxcbiAgPiAqIHtcbiAgICBtYXJnaW46ICRtb2RhbC1mb290ZXItbWFyZ2luLWJldHdlZW4gLyAyO1xuICB9XG59XG5cbi8vIE1lYXN1cmUgc2Nyb2xsYmFyIHdpZHRoIGZvciBwYWRkaW5nIGJvZHkgZHVyaW5nIG1vZGFsIHNob3cvaGlkZVxuLm1vZGFsLXNjcm9sbGJhci1tZWFzdXJlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC05OTk5cHg7XG4gIHdpZHRoOiA1MHB4O1xuICBoZWlnaHQ6IDUwcHg7XG4gIG92ZXJmbG93OiBzY3JvbGw7XG59XG5cbi8vIFNjYWxlIHVwIHRoZSBtb2RhbFxuQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChzbSkge1xuICAvLyBBdXRvbWF0aWNhbGx5IHNldCBtb2RhbCdzIHdpZHRoIGZvciBsYXJnZXIgdmlld3BvcnRzXG4gIC5tb2RhbC1kaWFsb2cge1xuICAgIG1heC13aWR0aDogJG1vZGFsLW1kO1xuICAgIG1hcmdpbjogJG1vZGFsLWRpYWxvZy1tYXJnaW4teS1zbS11cCBhdXRvO1xuICB9XG5cbiAgLm1vZGFsLWRpYWxvZy1zY3JvbGxhYmxlIHtcbiAgICBtYXgtaGVpZ2h0OiBzdWJ0cmFjdCgxMDAlLCAkbW9kYWwtZGlhbG9nLW1hcmdpbi15LXNtLXVwICogMik7XG5cbiAgICAubW9kYWwtY29udGVudCB7XG4gICAgICBtYXgtaGVpZ2h0OiBzdWJ0cmFjdCgxMDB2aCwgJG1vZGFsLWRpYWxvZy1tYXJnaW4teS1zbS11cCAqIDIpO1xuICAgIH1cbiAgfVxuXG4gIC5tb2RhbC1kaWFsb2ctY2VudGVyZWQge1xuICAgIG1pbi1oZWlnaHQ6IHN1YnRyYWN0KDEwMCUsICRtb2RhbC1kaWFsb2ctbWFyZ2luLXktc20tdXAgKiAyKTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBoZWlnaHQ6IHN1YnRyYWN0KDEwMHZoLCAkbW9kYWwtZGlhbG9nLW1hcmdpbi15LXNtLXVwICogMik7XG4gICAgfVxuICB9XG5cbiAgLm1vZGFsLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJG1vZGFsLWNvbnRlbnQtYm94LXNoYWRvdy1zbS11cCk7XG4gIH1cblxuICAubW9kYWwtc20geyBtYXgtd2lkdGg6ICRtb2RhbC1zbTsgfVxufVxuXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XG4gIC5tb2RhbC1sZyxcbiAgLm1vZGFsLXhsIHtcbiAgICBtYXgtd2lkdGg6ICRtb2RhbC1sZztcbiAgfVxufVxuXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKHhsKSB7XG4gIC5tb2RhbC14bCB7IG1heC13aWR0aDogJG1vZGFsLXhsOyB9XG59XG4iLCIvLyBCYXNlIGNsYXNzXG4udG9vbHRpcCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogJHppbmRleC10b29sdGlwO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAkdG9vbHRpcC1tYXJnaW47XG4gIC8vIE91ciBwYXJlbnQgZWxlbWVudCBjYW4gYmUgYXJiaXRyYXJ5IHNpbmNlIHRvb2x0aXBzIGFyZSBieSBkZWZhdWx0IGluc2VydGVkIGFzIGEgc2libGluZyBvZiB0aGVpciB0YXJnZXQgZWxlbWVudC5cbiAgLy8gU28gcmVzZXQgb3VyIGZvbnQgYW5kIHRleHQgcHJvcGVydGllcyB0byBhdm9pZCBpbmhlcml0aW5nIHdlaXJkIHZhbHVlcy5cbiAgQGluY2x1ZGUgcmVzZXQtdGV4dCgpO1xuICBAaW5jbHVkZSBmb250LXNpemUoJHRvb2x0aXAtZm9udC1zaXplKTtcbiAgLy8gQWxsb3cgYnJlYWtpbmcgdmVyeSBsb25nIHdvcmRzIHNvIHRoZXkgZG9uJ3Qgb3ZlcmZsb3cgdGhlIHRvb2x0aXAncyBib3VuZHNcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICBvcGFjaXR5OiAwO1xuXG4gICYuc2hvdyB7IG9wYWNpdHk6ICR0b29sdGlwLW9wYWNpdHk7IH1cblxuICAuYXJyb3cge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogJHRvb2x0aXAtYXJyb3ctd2lkdGg7XG4gICAgaGVpZ2h0OiAkdG9vbHRpcC1hcnJvdy1oZWlnaHQ7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIH1cbiAgfVxufVxuXG4uYnMtdG9vbHRpcC10b3Age1xuICBwYWRkaW5nOiAkdG9vbHRpcC1hcnJvdy1oZWlnaHQgMDtcblxuICAuYXJyb3cge1xuICAgIGJvdHRvbTogMDtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICB0b3A6IDA7XG4gICAgICBib3JkZXItd2lkdGg6ICR0b29sdGlwLWFycm93LWhlaWdodCAoJHRvb2x0aXAtYXJyb3ctd2lkdGggLyAyKSAwO1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHRvb2x0aXAtYXJyb3ctY29sb3I7XG4gICAgfVxuICB9XG59XG5cbi5icy10b29sdGlwLXJpZ2h0IHtcbiAgcGFkZGluZzogMCAkdG9vbHRpcC1hcnJvdy1oZWlnaHQ7XG5cbiAgLmFycm93IHtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAkdG9vbHRpcC1hcnJvdy1oZWlnaHQ7XG4gICAgaGVpZ2h0OiAkdG9vbHRpcC1hcnJvdy13aWR0aDtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICByaWdodDogMDtcbiAgICAgIGJvcmRlci13aWR0aDogKCR0b29sdGlwLWFycm93LXdpZHRoIC8gMikgJHRvb2x0aXAtYXJyb3ctaGVpZ2h0ICgkdG9vbHRpcC1hcnJvdy13aWR0aCAvIDIpIDA7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICR0b29sdGlwLWFycm93LWNvbG9yO1xuICAgIH1cbiAgfVxufVxuXG4uYnMtdG9vbHRpcC1ib3R0b20ge1xuICBwYWRkaW5nOiAkdG9vbHRpcC1hcnJvdy1oZWlnaHQgMDtcblxuICAuYXJyb3cge1xuICAgIHRvcDogMDtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBib3R0b206IDA7XG4gICAgICBib3JkZXItd2lkdGg6IDAgKCR0b29sdGlwLWFycm93LXdpZHRoIC8gMikgJHRvb2x0aXAtYXJyb3ctaGVpZ2h0O1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHRvb2x0aXAtYXJyb3ctY29sb3I7XG4gICAgfVxuICB9XG59XG5cbi5icy10b29sdGlwLWxlZnQge1xuICBwYWRkaW5nOiAwICR0b29sdGlwLWFycm93LWhlaWdodDtcblxuICAuYXJyb3cge1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAkdG9vbHRpcC1hcnJvdy1oZWlnaHQ7XG4gICAgaGVpZ2h0OiAkdG9vbHRpcC1hcnJvdy13aWR0aDtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgYm9yZGVyLXdpZHRoOiAoJHRvb2x0aXAtYXJyb3ctd2lkdGggLyAyKSAwICgkdG9vbHRpcC1hcnJvdy13aWR0aCAvIDIpICR0b29sdGlwLWFycm93LWhlaWdodDtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkdG9vbHRpcC1hcnJvdy1jb2xvcjtcbiAgICB9XG4gIH1cbn1cblxuLmJzLXRvb2x0aXAtYXV0byB7XG4gICZbeC1wbGFjZW1lbnRePVwidG9wXCJdIHtcbiAgICBAZXh0ZW5kIC5icy10b29sdGlwLXRvcDtcbiAgfVxuICAmW3gtcGxhY2VtZW50Xj1cInJpZ2h0XCJdIHtcbiAgICBAZXh0ZW5kIC5icy10b29sdGlwLXJpZ2h0O1xuICB9XG4gICZbeC1wbGFjZW1lbnRePVwiYm90dG9tXCJdIHtcbiAgICBAZXh0ZW5kIC5icy10b29sdGlwLWJvdHRvbTtcbiAgfVxuICAmW3gtcGxhY2VtZW50Xj1cImxlZnRcIl0ge1xuICAgIEBleHRlbmQgLmJzLXRvb2x0aXAtbGVmdDtcbiAgfVxufVxuXG4vLyBXcmFwcGVyIGZvciB0aGUgdG9vbHRpcCBjb250ZW50XG4udG9vbHRpcC1pbm5lciB7XG4gIG1heC13aWR0aDogJHRvb2x0aXAtbWF4LXdpZHRoO1xuICBwYWRkaW5nOiAkdG9vbHRpcC1wYWRkaW5nLXkgJHRvb2x0aXAtcGFkZGluZy14O1xuICBjb2xvcjogJHRvb2x0aXAtY29sb3I7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHRvb2x0aXAtYmc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJHRvb2x0aXAtYm9yZGVyLXJhZGl1cyk7XG59XG4iLCJAbWl4aW4gcmVzZXQtdGV4dCgpIHtcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1iYXNlO1xuICAvLyBXZSBkZWxpYmVyYXRlbHkgZG8gTk9UIHJlc2V0IGZvbnQtc2l6ZSBvciB3b3JkLXdyYXAuXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQtYmFzZTtcbiAgdGV4dC1hbGlnbjogbGVmdDsgLy8gRmFsbGJhY2sgZm9yIHdoZXJlIGBzdGFydGAgaXMgbm90IHN1cHBvcnRlZFxuICB0ZXh0LWFsaWduOiBzdGFydDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcbiAgd29yZC1zcGFjaW5nOiBub3JtYWw7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gIGxpbmUtYnJlYWs6IGF1dG87XG59XG4iLCIucG9wb3ZlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAkemluZGV4LXBvcG92ZXI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXgtd2lkdGg6ICRwb3BvdmVyLW1heC13aWR0aDtcbiAgLy8gT3VyIHBhcmVudCBlbGVtZW50IGNhbiBiZSBhcmJpdHJhcnkgc2luY2UgdG9vbHRpcHMgYXJlIGJ5IGRlZmF1bHQgaW5zZXJ0ZWQgYXMgYSBzaWJsaW5nIG9mIHRoZWlyIHRhcmdldCBlbGVtZW50LlxuICAvLyBTbyByZXNldCBvdXIgZm9udCBhbmQgdGV4dCBwcm9wZXJ0aWVzIHRvIGF2b2lkIGluaGVyaXRpbmcgd2VpcmQgdmFsdWVzLlxuICBAaW5jbHVkZSByZXNldC10ZXh0KCk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkcG9wb3Zlci1mb250LXNpemUpO1xuICAvLyBBbGxvdyBicmVha2luZyB2ZXJ5IGxvbmcgd29yZHMgc28gdGhleSBkb24ndCBvdmVyZmxvdyB0aGUgcG9wb3ZlcidzIGJvdW5kc1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICRwb3BvdmVyLWJnO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6ICRwb3BvdmVyLWJvcmRlci13aWR0aCBzb2xpZCAkcG9wb3Zlci1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJHBvcG92ZXItYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJHBvcG92ZXItYm94LXNoYWRvdyk7XG5cbiAgLmFycm93IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6ICRwb3BvdmVyLWFycm93LXdpZHRoO1xuICAgIGhlaWdodDogJHBvcG92ZXItYXJyb3ctaGVpZ2h0O1xuICAgIG1hcmdpbjogMCAkcG9wb3Zlci1ib3JkZXItcmFkaXVzO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIH1cbiAgfVxufVxuXG4uYnMtcG9wb3Zlci10b3Age1xuICBtYXJnaW4tYm90dG9tOiAkcG9wb3Zlci1hcnJvdy1oZWlnaHQ7XG5cbiAgPiAuYXJyb3cge1xuICAgIGJvdHRvbTogc3VidHJhY3QoLSRwb3BvdmVyLWFycm93LWhlaWdodCwgJHBvcG92ZXItYm9yZGVyLXdpZHRoKTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBib3R0b206IDA7XG4gICAgICBib3JkZXItd2lkdGg6ICRwb3BvdmVyLWFycm93LWhlaWdodCAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAwO1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHBvcG92ZXItYXJyb3ctb3V0ZXItY29sb3I7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgYm90dG9tOiAkcG9wb3Zlci1ib3JkZXItd2lkdGg7XG4gICAgICBib3JkZXItd2lkdGg6ICRwb3BvdmVyLWFycm93LWhlaWdodCAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAwO1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHBvcG92ZXItYXJyb3ctY29sb3I7XG4gICAgfVxuICB9XG59XG5cbi5icy1wb3BvdmVyLXJpZ2h0IHtcbiAgbWFyZ2luLWxlZnQ6ICRwb3BvdmVyLWFycm93LWhlaWdodDtcblxuICA+IC5hcnJvdyB7XG4gICAgbGVmdDogc3VidHJhY3QoLSRwb3BvdmVyLWFycm93LWhlaWdodCwgJHBvcG92ZXItYm9yZGVyLXdpZHRoKTtcbiAgICB3aWR0aDogJHBvcG92ZXItYXJyb3ctaGVpZ2h0O1xuICAgIGhlaWdodDogJHBvcG92ZXItYXJyb3ctd2lkdGg7XG4gICAgbWFyZ2luOiAkcG9wb3Zlci1ib3JkZXItcmFkaXVzIDA7IC8vIG1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lcyBub3QgdG91Y2ggdGhlIHBvcG92ZXIncyByb3VuZGVkIGNvcm5lcnNcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgYm9yZGVyLXdpZHRoOiAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAkcG9wb3Zlci1hcnJvdy1oZWlnaHQgKCRwb3BvdmVyLWFycm93LXdpZHRoIC8gMikgMDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJHBvcG92ZXItYXJyb3ctb3V0ZXItY29sb3I7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgbGVmdDogJHBvcG92ZXItYm9yZGVyLXdpZHRoO1xuICAgICAgYm9yZGVyLXdpZHRoOiAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAkcG9wb3Zlci1hcnJvdy1oZWlnaHQgKCRwb3BvdmVyLWFycm93LXdpZHRoIC8gMikgMDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJHBvcG92ZXItYXJyb3ctY29sb3I7XG4gICAgfVxuICB9XG59XG5cbi5icy1wb3BvdmVyLWJvdHRvbSB7XG4gIG1hcmdpbi10b3A6ICRwb3BvdmVyLWFycm93LWhlaWdodDtcblxuICA+IC5hcnJvdyB7XG4gICAgdG9wOiBzdWJ0cmFjdCgtJHBvcG92ZXItYXJyb3ctaGVpZ2h0LCAkcG9wb3Zlci1ib3JkZXItd2lkdGgpO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHRvcDogMDtcbiAgICAgIGJvcmRlci13aWR0aDogMCAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAkcG9wb3Zlci1hcnJvdy1oZWlnaHQgKCRwb3BvdmVyLWFycm93LXdpZHRoIC8gMik7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICB0b3A6ICRwb3BvdmVyLWJvcmRlci13aWR0aDtcbiAgICAgIGJvcmRlci13aWR0aDogMCAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAkcG9wb3Zlci1hcnJvdy1oZWlnaHQgKCRwb3BvdmVyLWFycm93LXdpZHRoIC8gMik7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkcG9wb3Zlci1hcnJvdy1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIHdpbGwgcmVtb3ZlIHRoZSBwb3BvdmVyLWhlYWRlcidzIGJvcmRlciBqdXN0IGJlbG93IHRoZSBhcnJvd1xuICAucG9wb3Zlci1oZWFkZXI6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6ICRwb3BvdmVyLWFycm93LXdpZHRoO1xuICAgIG1hcmdpbi1sZWZ0OiAtJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgYm9yZGVyLWJvdHRvbTogJHBvcG92ZXItYm9yZGVyLXdpZHRoIHNvbGlkICRwb3BvdmVyLWhlYWRlci1iZztcbiAgfVxufVxuXG4uYnMtcG9wb3Zlci1sZWZ0IHtcbiAgbWFyZ2luLXJpZ2h0OiAkcG9wb3Zlci1hcnJvdy1oZWlnaHQ7XG5cbiAgPiAuYXJyb3cge1xuICAgIHJpZ2h0OiBzdWJ0cmFjdCgtJHBvcG92ZXItYXJyb3ctaGVpZ2h0LCAkcG9wb3Zlci1ib3JkZXItd2lkdGgpO1xuICAgIHdpZHRoOiAkcG9wb3Zlci1hcnJvdy1oZWlnaHQ7XG4gICAgaGVpZ2h0OiAkcG9wb3Zlci1hcnJvdy13aWR0aDtcbiAgICBtYXJnaW46ICRwb3BvdmVyLWJvcmRlci1yYWRpdXMgMDsgLy8gbWFrZSBzdXJlIHRoZSBhcnJvdyBkb2VzIG5vdCB0b3VjaCB0aGUgcG9wb3ZlcidzIHJvdW5kZWQgY29ybmVyc1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgYm9yZGVyLXdpZHRoOiAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAwICgkcG9wb3Zlci1hcnJvdy13aWR0aCAvIDIpICRwb3BvdmVyLWFycm93LWhlaWdodDtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICByaWdodDogJHBvcG92ZXItYm9yZGVyLXdpZHRoO1xuICAgICAgYm9yZGVyLXdpZHRoOiAoJHBvcG92ZXItYXJyb3ctd2lkdGggLyAyKSAwICgkcG9wb3Zlci1hcnJvdy13aWR0aCAvIDIpICRwb3BvdmVyLWFycm93LWhlaWdodDtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkcG9wb3Zlci1hcnJvdy1jb2xvcjtcbiAgICB9XG4gIH1cbn1cblxuLmJzLXBvcG92ZXItYXV0byB7XG4gICZbeC1wbGFjZW1lbnRePVwidG9wXCJdIHtcbiAgICBAZXh0ZW5kIC5icy1wb3BvdmVyLXRvcDtcbiAgfVxuICAmW3gtcGxhY2VtZW50Xj1cInJpZ2h0XCJdIHtcbiAgICBAZXh0ZW5kIC5icy1wb3BvdmVyLXJpZ2h0O1xuICB9XG4gICZbeC1wbGFjZW1lbnRePVwiYm90dG9tXCJdIHtcbiAgICBAZXh0ZW5kIC5icy1wb3BvdmVyLWJvdHRvbTtcbiAgfVxuICAmW3gtcGxhY2VtZW50Xj1cImxlZnRcIl0ge1xuICAgIEBleHRlbmQgLmJzLXBvcG92ZXItbGVmdDtcbiAgfVxufVxuXG5cbi8vIE9mZnNldCB0aGUgcG9wb3ZlciB0byBhY2NvdW50IGZvciB0aGUgcG9wb3ZlciBhcnJvd1xuLnBvcG92ZXItaGVhZGVyIHtcbiAgcGFkZGluZzogJHBvcG92ZXItaGVhZGVyLXBhZGRpbmcteSAkcG9wb3Zlci1oZWFkZXItcGFkZGluZy14O1xuICBtYXJnaW4tYm90dG9tOiAwOyAvLyBSZXNldCB0aGUgZGVmYXVsdCBmcm9tIFJlYm9vdFxuICBAaW5jbHVkZSBmb250LXNpemUoJGZvbnQtc2l6ZS1iYXNlKTtcbiAgY29sb3I6ICRwb3BvdmVyLWhlYWRlci1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHBvcG92ZXItaGVhZGVyLWJnO1xuICBib3JkZXItYm90dG9tOiAkcG9wb3Zlci1ib3JkZXItd2lkdGggc29saWQgZGFya2VuKCRwb3BvdmVyLWhlYWRlci1iZywgNSUpO1xuICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygkcG9wb3Zlci1pbm5lci1ib3JkZXItcmFkaXVzKTtcblxuICAmOmVtcHR5IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5wb3BvdmVyLWJvZHkge1xuICBwYWRkaW5nOiAkcG9wb3Zlci1ib2R5LXBhZGRpbmcteSAkcG9wb3Zlci1ib2R5LXBhZGRpbmcteDtcbiAgY29sb3I6ICRwb3BvdmVyLWJvZHktY29sb3I7XG59XG4iLCIvLyBOb3RlcyBvbiB0aGUgY2xhc3Nlczpcbi8vXG4vLyAxLiAuY2Fyb3VzZWwucG9pbnRlci1ldmVudCBzaG91bGQgaWRlYWxseSBiZSBwYW4teSAodG8gYWxsb3cgZm9yIHVzZXJzIHRvIHNjcm9sbCB2ZXJ0aWNhbGx5KVxuLy8gICAgZXZlbiB3aGVuIHRoZWlyIHNjcm9sbCBhY3Rpb24gc3RhcnRlZCBvbiBhIGNhcm91c2VsLCBidXQgZm9yIGNvbXBhdGliaWxpdHkgKHdpdGggRmlyZWZveClcbi8vICAgIHdlJ3JlIHByZXZlbnRpbmcgYWxsIGFjdGlvbnMgaW5zdGVhZFxuLy8gMi4gVGhlIC5jYXJvdXNlbC1pdGVtLWxlZnQgYW5kIC5jYXJvdXNlbC1pdGVtLXJpZ2h0IGlzIHVzZWQgdG8gaW5kaWNhdGUgd2hlcmVcbi8vICAgIHRoZSBhY3RpdmUgc2xpZGUgaXMgaGVhZGluZy5cbi8vIDMuIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbSBpcyB0aGUgY3VycmVudCBzbGlkZS5cbi8vIDQuIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0IGFuZCAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcmlnaHQgaXMgdGhlIGN1cnJlbnRcbi8vICAgIHNsaWRlIGluIGl0cyBpbi10cmFuc2l0aW9uIHN0YXRlLiBPbmx5IG9uZSBvZiB0aGVzZSBvY2N1cnMgYXQgYSB0aW1lLlxuLy8gNS4gLmNhcm91c2VsLWl0ZW0tbmV4dC5jYXJvdXNlbC1pdGVtLWxlZnQgYW5kIC5jYXJvdXNlbC1pdGVtLXByZXYuY2Fyb3VzZWwtaXRlbS1yaWdodFxuLy8gICAgaXMgdGhlIHVwY29taW5nIHNsaWRlIGluIHRyYW5zaXRpb24uXG5cbi5jYXJvdXNlbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmNhcm91c2VsLnBvaW50ZXItZXZlbnQge1xuICB0b3VjaC1hY3Rpb246IHBhbi15O1xufVxuXG4uY2Fyb3VzZWwtaW5uZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBjbGVhcmZpeCgpO1xufVxuXG4uY2Fyb3VzZWwtaXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogbm9uZTtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJGNhcm91c2VsLXRyYW5zaXRpb24pO1xufVxuXG4uY2Fyb3VzZWwtaXRlbS5hY3RpdmUsXG4uY2Fyb3VzZWwtaXRlbS1uZXh0LFxuLmNhcm91c2VsLWl0ZW0tcHJldiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uY2Fyb3VzZWwtaXRlbS1uZXh0Om5vdCguY2Fyb3VzZWwtaXRlbS1sZWZ0KSxcbi5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cblxuLmNhcm91c2VsLWl0ZW0tcHJldjpub3QoLmNhcm91c2VsLWl0ZW0tcmlnaHQpLFxuLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xufVxuXG5cbi8vXG4vLyBBbHRlcm5hdGUgdHJhbnNpdGlvbnNcbi8vXG5cbi5jYXJvdXNlbC1mYWRlIHtcbiAgLmNhcm91c2VsLWl0ZW0ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cblxuICAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsXG4gIC5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LFxuICAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQge1xuICAgIHotaW5kZXg6IDE7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0LFxuICAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcmlnaHQge1xuICAgIHotaW5kZXg6IDA7XG4gICAgb3BhY2l0eTogMDtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkgMHMgJGNhcm91c2VsLXRyYW5zaXRpb24tZHVyYXRpb24pO1xuICB9XG59XG5cblxuLy9cbi8vIExlZnQvcmlnaHQgY29udHJvbHMgZm9yIG5hdlxuLy9cblxuLmNhcm91c2VsLWNvbnRyb2wtcHJldixcbi5jYXJvdXNlbC1jb250cm9sLW5leHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICB6LWluZGV4OiAxO1xuICAvLyBVc2UgZmxleCBmb3IgYWxpZ25tZW50ICgxLTMpXG4gIGRpc3BsYXk6IGZsZXg7IC8vIDEuIGFsbG93IGZsZXggc3R5bGVzXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IC8vIDIuIHZlcnRpY2FsbHkgY2VudGVyIGNvbnRlbnRzXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyOyAvLyAzLiBob3Jpem9udGFsbHkgY2VudGVyIGNvbnRlbnRzXG4gIHdpZHRoOiAkY2Fyb3VzZWwtY29udHJvbC13aWR0aDtcbiAgY29sb3I6ICRjYXJvdXNlbC1jb250cm9sLWNvbG9yO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG9wYWNpdHk6ICRjYXJvdXNlbC1jb250cm9sLW9wYWNpdHk7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJGNhcm91c2VsLWNvbnRyb2wtdHJhbnNpdGlvbik7XG5cbiAgLy8gSG92ZXIvZm9jdXMgc3RhdGVcbiAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgY29sb3I6ICRjYXJvdXNlbC1jb250cm9sLWNvbG9yO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBvdXRsaW5lOiAwO1xuICAgIG9wYWNpdHk6ICRjYXJvdXNlbC1jb250cm9sLWhvdmVyLW9wYWNpdHk7XG4gIH1cbn1cbi5jYXJvdXNlbC1jb250cm9sLXByZXYge1xuICBsZWZ0OiAwO1xuICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSgkYmxhY2ssIC4yNSksIHJnYmEoJGJsYWNrLCAuMDAxKSk7XG4gIH1cbn1cbi5jYXJvdXNlbC1jb250cm9sLW5leHQge1xuICByaWdodDogMDtcbiAgQGlmICRlbmFibGUtZ3JhZGllbnRzIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMjcwZGVnLCByZ2JhKCRibGFjaywgLjI1KSwgcmdiYSgkYmxhY2ssIC4wMDEpKTtcbiAgfVxufVxuXG4vLyBJY29ucyBmb3Igd2l0aGluXG4uY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24sXG4uY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkY2Fyb3VzZWwtY29udHJvbC1pY29uLXdpZHRoO1xuICBoZWlnaHQ6ICRjYXJvdXNlbC1jb250cm9sLWljb24td2lkdGg7XG4gIGJhY2tncm91bmQ6IG5vLXJlcGVhdCA1MCUgLyAxMDAlIDEwMCU7XG59XG4uY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24ge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRjYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbi1iZyk7XG59XG4uY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24ge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBlc2NhcGUtc3ZnKCRjYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbi1iZyk7XG59XG5cblxuLy8gT3B0aW9uYWwgaW5kaWNhdG9yIHBpcHNcbi8vXG4vLyBBZGQgYW4gb3JkZXJlZCBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBjbGFzcyBhbmQgYWRkIGEgbGlzdCBpdGVtIGZvciBlYWNoXG4vLyBzbGlkZSB5b3VyIGNhcm91c2VsIGhvbGRzLlxuXG4uY2Fyb3VzZWwtaW5kaWNhdG9ycyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nLWxlZnQ6IDA7IC8vIG92ZXJyaWRlIDxvbD4gZGVmYXVsdFxuICAvLyBVc2UgdGhlIC5jYXJvdXNlbC1jb250cm9sJ3Mgd2lkdGggYXMgbWFyZ2luIHNvIHdlIGRvbid0IG92ZXJsYXkgdGhvc2VcbiAgbWFyZ2luLXJpZ2h0OiAkY2Fyb3VzZWwtY29udHJvbC13aWR0aDtcbiAgbWFyZ2luLWxlZnQ6ICRjYXJvdXNlbC1jb250cm9sLXdpZHRoO1xuICBsaXN0LXN0eWxlOiBub25lO1xuXG4gIGxpIHtcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogJGNhcm91c2VsLWluZGljYXRvci13aWR0aDtcbiAgICBoZWlnaHQ6ICRjYXJvdXNlbC1pbmRpY2F0b3ItaGVpZ2h0O1xuICAgIG1hcmdpbi1yaWdodDogJGNhcm91c2VsLWluZGljYXRvci1zcGFjZXI7XG4gICAgbWFyZ2luLWxlZnQ6ICRjYXJvdXNlbC1pbmRpY2F0b3Itc3BhY2VyO1xuICAgIHRleHQtaW5kZW50OiAtOTk5cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjYXJvdXNlbC1pbmRpY2F0b3ItYWN0aXZlLWJnO1xuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gICAgLy8gVXNlIHRyYW5zcGFyZW50IGJvcmRlcnMgdG8gaW5jcmVhc2UgdGhlIGhpdCBhcmVhIGJ5IDEwcHggb24gdG9wIGFuZCBib3R0b20uXG4gICAgYm9yZGVyLXRvcDogJGNhcm91c2VsLWluZGljYXRvci1oaXQtYXJlYS1oZWlnaHQgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbTogJGNhcm91c2VsLWluZGljYXRvci1oaXQtYXJlYS1oZWlnaHQgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgb3BhY2l0eTogLjU7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbigkY2Fyb3VzZWwtaW5kaWNhdG9yLXRyYW5zaXRpb24pO1xuICB9XG5cbiAgLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG5cbi8vIE9wdGlvbmFsIGNhcHRpb25zXG4vL1xuLy9cblxuLmNhcm91c2VsLWNhcHRpb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAoMTAwJSAtICRjYXJvdXNlbC1jYXB0aW9uLXdpZHRoKSAvIDI7XG4gIGJvdHRvbTogMjBweDtcbiAgbGVmdDogKDEwMCUgLSAkY2Fyb3VzZWwtY2FwdGlvbi13aWR0aCkgLyAyO1xuICB6LWluZGV4OiAxMDtcbiAgcGFkZGluZy10b3A6IDIwcHg7XG4gIHBhZGRpbmctYm90dG9tOiAyMHB4O1xuICBjb2xvcjogJGNhcm91c2VsLWNhcHRpb24tY29sb3I7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbiIsIkBtaXhpbiBjbGVhcmZpeCgpIHtcbiAgJjo6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gIH1cbn1cbiIsIi8vXG4vLyBSb3RhdGluZyBib3JkZXJcbi8vXG5cbkBrZXlmcmFtZXMgc3Bpbm5lci1ib3JkZXIge1xuICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbn1cblxuLnNwaW5uZXItYm9yZGVyIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogJHNwaW5uZXItd2lkdGg7XG4gIGhlaWdodDogJHNwaW5uZXItaGVpZ2h0O1xuICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207XG4gIGJvcmRlcjogJHNwaW5uZXItYm9yZGVyLXdpZHRoIHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LWJsYWNrbGlzdFxuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGFuaW1hdGlvbjogc3Bpbm5lci1ib3JkZXIgLjc1cyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbi5zcGlubmVyLWJvcmRlci1zbSB7XG4gIHdpZHRoOiAkc3Bpbm5lci13aWR0aC1zbTtcbiAgaGVpZ2h0OiAkc3Bpbm5lci1oZWlnaHQtc207XG4gIGJvcmRlci13aWR0aDogJHNwaW5uZXItYm9yZGVyLXdpZHRoLXNtO1xufVxuXG4vL1xuLy8gR3Jvd2luZyBjaXJjbGVcbi8vXG5cbkBrZXlmcmFtZXMgc3Bpbm5lci1ncm93IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbi5zcGlubmVyLWdyb3cge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkc3Bpbm5lci13aWR0aDtcbiAgaGVpZ2h0OiAkc3Bpbm5lci1oZWlnaHQ7XG4gIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktYmxhY2tsaXN0XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgb3BhY2l0eTogMDtcbiAgYW5pbWF0aW9uOiBzcGlubmVyLWdyb3cgLjc1cyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbi5zcGlubmVyLWdyb3ctc20ge1xuICB3aWR0aDogJHNwaW5uZXItd2lkdGgtc207XG4gIGhlaWdodDogJHNwaW5uZXItaGVpZ2h0LXNtO1xufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbi5hbGlnbi1iYXNlbGluZSAgICB7IHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9IC8vIEJyb3dzZXIgZGVmYXVsdFxuLmFsaWduLXRvcCAgICAgICAgIHsgdmVydGljYWwtYWxpZ246IHRvcCAhaW1wb3J0YW50OyB9XG4uYWxpZ24tbWlkZGxlICAgICAgeyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlICFpbXBvcnRhbnQ7IH1cbi5hbGlnbi1ib3R0b20gICAgICB7IHZlcnRpY2FsLWFsaWduOiBib3R0b20gIWltcG9ydGFudDsgfVxuLmFsaWduLXRleHQtYm90dG9tIHsgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tICFpbXBvcnRhbnQ7IH1cbi5hbGlnbi10ZXh0LXRvcCAgICB7IHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcCAhaW1wb3J0YW50OyB9XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuLy8gQ29udGV4dHVhbCBiYWNrZ3JvdW5kc1xuXG5AbWl4aW4gYmctdmFyaWFudCgkcGFyZW50LCAkY29sb3IsICRpZ25vcmUtd2FybmluZzogZmFsc2UpIHtcbiAgI3skcGFyZW50fSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yICFpbXBvcnRhbnQ7XG4gIH1cbiAgYSN7JHBhcmVudH0sXG4gIGJ1dHRvbiN7JHBhcmVudH0ge1xuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzKCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRjb2xvciwgMTAlKSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBkZXByZWNhdGUoXCJUaGUgYGJnLXZhcmlhbnRgIG1peGluXCIsIFwidjQuNC4wXCIsIFwidjVcIiwgJGlnbm9yZS13YXJuaW5nKTtcbn1cblxuQG1peGluIGJnLWdyYWRpZW50LXZhcmlhbnQoJHBhcmVudCwgJGNvbG9yKSB7XG4gICN7JHBhcmVudH0ge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvciBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCBtaXgoJGJvZHktYmcsICRjb2xvciwgMTUlKSwgJGNvbG9yKSByZXBlYXQteCAhaW1wb3J0YW50O1xuICB9XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gIEBpbmNsdWRlIGJnLXZhcmlhbnQoXCIuYmctI3skY29sb3J9XCIsICR2YWx1ZSwgdHJ1ZSk7XG59XG5cbkBpZiAkZW5hYmxlLWdyYWRpZW50cyB7XG4gIEBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAgIEBpbmNsdWRlIGJnLWdyYWRpZW50LXZhcmlhbnQoXCIuYmctZ3JhZGllbnQtI3skY29sb3J9XCIsICR2YWx1ZSk7XG4gIH1cbn1cblxuLmJnLXdoaXRlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5iZy10cmFuc3BhcmVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBwcm9wZXJ0eS1ibGFja2xpc3QsIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG4vL1xuLy8gQm9yZGVyXG4vL1xuXG4uYm9yZGVyICAgICAgICAgeyBib3JkZXI6ICRib3JkZXItd2lkdGggc29saWQgJGJvcmRlci1jb2xvciAhaW1wb3J0YW50OyB9XG4uYm9yZGVyLXRvcCAgICAgeyBib3JkZXItdG9wOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRib3JkZXItY29sb3IgIWltcG9ydGFudDsgfVxuLmJvcmRlci1yaWdodCAgIHsgYm9yZGVyLXJpZ2h0OiAkYm9yZGVyLXdpZHRoIHNvbGlkICRib3JkZXItY29sb3IgIWltcG9ydGFudDsgfVxuLmJvcmRlci1ib3R0b20gIHsgYm9yZGVyLWJvdHRvbTogJGJvcmRlci13aWR0aCBzb2xpZCAkYm9yZGVyLWNvbG9yICFpbXBvcnRhbnQ7IH1cbi5ib3JkZXItbGVmdCAgICB7IGJvcmRlci1sZWZ0OiAkYm9yZGVyLXdpZHRoIHNvbGlkICRib3JkZXItY29sb3IgIWltcG9ydGFudDsgfVxuXG4uYm9yZGVyLTAgICAgICAgIHsgYm9yZGVyOiAwICFpbXBvcnRhbnQ7IH1cbi5ib3JkZXItdG9wLTAgICAgeyBib3JkZXItdG9wOiAwICFpbXBvcnRhbnQ7IH1cbi5ib3JkZXItcmlnaHQtMCAgeyBib3JkZXItcmlnaHQ6IDAgIWltcG9ydGFudDsgfVxuLmJvcmRlci1ib3R0b20tMCB7IGJvcmRlci1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuLmJvcmRlci1sZWZ0LTAgICB7IGJvcmRlci1sZWZ0OiAwICFpbXBvcnRhbnQ7IH1cblxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gIC5ib3JkZXItI3skY29sb3J9IHtcbiAgICBib3JkZXItY29sb3I6ICR2YWx1ZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5ib3JkZXItd2hpdGUge1xuICBib3JkZXItY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4vL1xuLy8gQm9yZGVyLXJhZGl1c1xuLy9cblxuLnJvdW5kZWQtc20ge1xuICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbSAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLXRvcCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC1yaWdodCB7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJGJvcmRlci1yYWRpdXMgIWltcG9ydGFudDtcbn1cblxuLnJvdW5kZWQtYm90dG9tIHtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLWxlZnQge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC1sZyB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLWNpcmNsZSB7XG4gIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC1waWxsIHtcbiAgYm9yZGVyLXJhZGl1czogJHJvdW5kZWQtcGlsbCAhaW1wb3J0YW50O1xufVxuXG4ucm91bmRlZC0wIHtcbiAgYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbi8vXG4vLyBVdGlsaXRpZXMgZm9yIGNvbW1vbiBgZGlzcGxheWAgdmFsdWVzXG4vL1xuXG5AZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XG5cbiAgICBAZWFjaCAkdmFsdWUgaW4gJGRpc3BsYXlzIHtcbiAgICAgIC5kI3skaW5maXh9LSN7JHZhbHVlfSB7IGRpc3BsYXk6ICR2YWx1ZSAhaW1wb3J0YW50OyB9XG4gICAgfVxuICB9XG59XG5cblxuLy9cbi8vIFV0aWxpdGllcyBmb3IgdG9nZ2xpbmcgYGRpc3BsYXlgIGluIHByaW50XG4vL1xuXG5AbWVkaWEgcHJpbnQge1xuICBAZWFjaCAkdmFsdWUgaW4gJGRpc3BsYXlzIHtcbiAgICAuZC1wcmludC0jeyR2YWx1ZX0geyBkaXNwbGF5OiAkdmFsdWUgIWltcG9ydGFudDsgfVxuICB9XG59XG4iLCIvLyBDcmVkaXQ6IE5pY29sYXMgR2FsbGFnaGVyIGFuZCBTVUlUIENTUy5cblxuLmVtYmVkLXJlc3BvbnNpdmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAmOjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gIH1cblxuICAuZW1iZWQtcmVzcG9uc2l2ZS1pdGVtLFxuICBpZnJhbWUsXG4gIGVtYmVkLFxuICBvYmplY3QsXG4gIHZpZGVvIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBib3JkZXI6IDA7XG4gIH1cbn1cblxuQGVhY2ggJGVtYmVkLXJlc3BvbnNpdmUtYXNwZWN0LXJhdGlvIGluICRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpb3Mge1xuICAkZW1iZWQtcmVzcG9uc2l2ZS1hc3BlY3QtcmF0aW8teDogbnRoKCRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpbywgMSk7XG4gICRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpby15OiBudGgoJGVtYmVkLXJlc3BvbnNpdmUtYXNwZWN0LXJhdGlvLCAyKTtcblxuICAuZW1iZWQtcmVzcG9uc2l2ZS0jeyRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpby14fWJ5I3skZW1iZWQtcmVzcG9uc2l2ZS1hc3BlY3QtcmF0aW8teX0ge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBwYWRkaW5nLXRvcDogcGVyY2VudGFnZSgkZW1iZWQtcmVzcG9uc2l2ZS1hc3BlY3QtcmF0aW8teSAvICRlbWJlZC1yZXNwb25zaXZlLWFzcGVjdC1yYXRpby14KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG4vLyBGbGV4IHZhcmlhdGlvblxuLy9cbi8vIEN1c3RvbSBzdHlsZXMgZm9yIGFkZGl0aW9uYWwgZmxleCBhbGlnbm1lbnQgb3B0aW9ucy5cblxuQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkYnJlYWtwb2ludCkge1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuXG4gICAgLmZsZXgjeyRpbmZpeH0tcm93ICAgICAgICAgICAgeyBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxleCN7JGluZml4fS1jb2x1bW4gICAgICAgICB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsgfVxuICAgIC5mbGV4I3skaW5maXh9LXJvdy1yZXZlcnNlICAgIHsgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxleCN7JGluZml4fS1jb2x1bW4tcmV2ZXJzZSB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OyB9XG5cbiAgICAuZmxleCN7JGluZml4fS13cmFwICAgICAgICAgeyBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsgfVxuICAgIC5mbGV4I3skaW5maXh9LW5vd3JhcCAgICAgICB7IGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxleCN7JGluZml4fS13cmFwLXJldmVyc2UgeyBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OyB9XG4gICAgLmZsZXgjeyRpbmZpeH0tZmlsbCAgICAgICAgIHsgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsgfVxuICAgIC5mbGV4I3skaW5maXh9LWdyb3ctMCAgICAgICB7IGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OyB9XG4gICAgLmZsZXgjeyRpbmZpeH0tZ3Jvdy0xICAgICAgIHsgZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxleCN7JGluZml4fS1zaHJpbmstMCAgICAgeyBmbGV4LXNocmluazogMCAhaW1wb3J0YW50OyB9XG4gICAgLmZsZXgjeyRpbmZpeH0tc2hyaW5rLTEgICAgIHsgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsgfVxuXG4gICAgLmp1c3RpZnktY29udGVudCN7JGluZml4fS1zdGFydCAgIHsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgICAuanVzdGlmeS1jb250ZW50I3skaW5maXh9LWVuZCAgICAgeyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgICAuanVzdGlmeS1jb250ZW50I3skaW5maXh9LWNlbnRlciAgeyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gICAgLmp1c3RpZnktY29udGVudCN7JGluZml4fS1iZXR3ZWVuIHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cbiAgICAuanVzdGlmeS1jb250ZW50I3skaW5maXh9LWFyb3VuZCAgeyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9XG5cbiAgICAuYWxpZ24taXRlbXMjeyRpbmZpeH0tc3RhcnQgICAgeyBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLWl0ZW1zI3skaW5maXh9LWVuZCAgICAgIHsgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24taXRlbXMjeyRpbmZpeH0tY2VudGVyICAgeyBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24taXRlbXMjeyRpbmZpeH0tYmFzZWxpbmUgeyBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1pdGVtcyN7JGluZml4fS1zdHJldGNoICB7IGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7IH1cblxuICAgIC5hbGlnbi1jb250ZW50I3skaW5maXh9LXN0YXJ0ICAgeyBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24tY29udGVudCN7JGluZml4fS1lbmQgICAgIHsgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1jb250ZW50I3skaW5maXh9LWNlbnRlciAgeyBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1jb250ZW50I3skaW5maXh9LWJldHdlZW4geyBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24tY29udGVudCN7JGluZml4fS1hcm91bmQgIHsgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24tY29udGVudCN7JGluZml4fS1zdHJldGNoIHsgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG5cbiAgICAuYWxpZ24tc2VsZiN7JGluZml4fS1hdXRvICAgICB7IGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1zZWxmI3skaW5maXh9LXN0YXJ0ICAgIHsgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLXNlbGYjeyRpbmZpeH0tZW5kICAgICAgeyBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLXNlbGYjeyRpbmZpeH0tY2VudGVyICAgeyBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1zZWxmI3skaW5maXh9LWJhc2VsaW5lIHsgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1zZWxmI3skaW5maXh9LXN0cmV0Y2ggIHsgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG4gIH1cbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG5AZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XG5cbiAgICAuZmxvYXQjeyRpbmZpeH0tbGVmdCAgeyBmbG9hdDogbGVmdCAhaW1wb3J0YW50OyB9XG4gICAgLmZsb2F0I3skaW5maXh9LXJpZ2h0IHsgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxvYXQjeyRpbmZpeH0tbm9uZSAgeyBmbG9hdDogbm9uZSAhaW1wb3J0YW50OyB9XG4gIH1cbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG5AZWFjaCAkdmFsdWUgaW4gJG92ZXJmbG93cyB7XG4gIC5vdmVyZmxvdy0jeyR2YWx1ZX0geyBvdmVyZmxvdzogJHZhbHVlICFpbXBvcnRhbnQ7IH1cbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxuXG4vLyBDb21tb24gdmFsdWVzXG5AZWFjaCAkcG9zaXRpb24gaW4gJHBvc2l0aW9ucyB7XG4gIC5wb3NpdGlvbi0jeyRwb3NpdGlvbn0geyBwb3NpdGlvbjogJHBvc2l0aW9uICFpbXBvcnRhbnQ7IH1cbn1cblxuLy8gU2hvcnRoYW5kXG5cbi5maXhlZC10b3Age1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR6aW5kZXgtZml4ZWQ7XG59XG5cbi5maXhlZC1ib3R0b20ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR6aW5kZXgtZml4ZWQ7XG59XG5cbi5zdGlja3ktdG9wIHtcbiAgQHN1cHBvcnRzIChwb3NpdGlvbjogc3RpY2t5KSB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IDA7XG4gICAgei1pbmRleDogJHppbmRleC1zdGlja3k7XG4gIH1cbn1cbiIsIi8vXG4vLyBTY3JlZW5yZWFkZXJzXG4vL1xuXG4uc3Itb25seSB7XG4gIEBpbmNsdWRlIHNyLW9ubHkoKTtcbn1cblxuLnNyLW9ubHktZm9jdXNhYmxlIHtcbiAgQGluY2x1ZGUgc3Itb25seS1mb2N1c2FibGUoKTtcbn1cbiIsIi8vIE9ubHkgZGlzcGxheSBjb250ZW50IHRvIHNjcmVlbiByZWFkZXJzXG4vL1xuLy8gU2VlOiBodHRwczovL2ExMXlwcm9qZWN0LmNvbS9wb3N0cy9ob3ctdG8taGlkZS1jb250ZW50L1xuLy8gU2VlOiBodHRwczovL2h1Z29naXJhdWRlbC5jb20vMjAxNi8xMC8xMy9jc3MtaGlkZS1hbmQtc2Vlay9cblxuQG1peGluIHNyLW9ubHkoKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogLTFweDsgLy8gRml4IGZvciBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI1Njg2XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJvcmRlcjogMDtcbn1cblxuLy8gVXNlIGluIGNvbmp1bmN0aW9uIHdpdGggLnNyLW9ubHkgdG8gb25seSBkaXNwbGF5IGNvbnRlbnQgd2hlbiBpdCdzIGZvY3VzZWQuXG4vL1xuLy8gVXNlZnVsIGZvciBcIlNraXAgdG8gbWFpbiBjb250ZW50XCIgbGlua3M7IHNlZSBodHRwczovL3d3dy53My5vcmcvVFIvMjAxMy9OT1RFLVdDQUcyMC1URUNIUy0yMDEzMDkwNS9HMVxuLy9cbi8vIENyZWRpdDogSFRNTDUgQm9pbGVycGxhdGVcblxuQG1peGluIHNyLW9ubHktZm9jdXNhYmxlKCkge1xuICAmOmFjdGl2ZSxcbiAgJjpmb2N1cyB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgY2xpcDogYXV0bztcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICB9XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuLnNoYWRvdy1zbSB7IGJveC1zaGFkb3c6ICRib3gtc2hhZG93LXNtICFpbXBvcnRhbnQ7IH1cbi5zaGFkb3cgeyBib3gtc2hhZG93OiAkYm94LXNoYWRvdyAhaW1wb3J0YW50OyB9XG4uc2hhZG93LWxnIHsgYm94LXNoYWRvdzogJGJveC1zaGFkb3ctbGcgIWltcG9ydGFudDsgfVxuLnNoYWRvdy1ub25lIHsgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OyB9XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuLy8gV2lkdGggYW5kIGhlaWdodFxuXG5AZWFjaCAkcHJvcCwgJGFiYnJldiBpbiAod2lkdGg6IHcsIGhlaWdodDogaCkge1xuICBAZWFjaCAkc2l6ZSwgJGxlbmd0aCBpbiAkc2l6ZXMge1xuICAgIC4jeyRhYmJyZXZ9LSN7JHNpemV9IHsgI3skcHJvcH06ICRsZW5ndGggIWltcG9ydGFudDsgfVxuICB9XG59XG5cbi5tdy0xMDAgeyBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuLm1oLTEwMCB7IG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgfVxuXG4vLyBWaWV3cG9ydCBhZGRpdGlvbmFsIGhlbHBlcnNcblxuLm1pbi12dy0xMDAgeyBtaW4td2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7IH1cbi5taW4tdmgtMTAwIHsgbWluLWhlaWdodDogMTAwdmggIWltcG9ydGFudDsgfVxuXG4udnctMTAwIHsgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7IH1cbi52aC0xMDAgeyBoZWlnaHQ6IDEwMHZoICFpbXBvcnRhbnQ7IH1cbiIsIi8vXG4vLyBTdHJldGNoZWQgbGlua1xuLy9cblxuLnN0cmV0Y2hlZC1saW5rIHtcbiAgJjo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgei1pbmRleDogMTtcbiAgICAvLyBKdXN0IGluIGNhc2UgYHBvaW50ZXItZXZlbnRzOiBub25lYCBpcyBzZXQgb24gYSBwYXJlbnRcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIC8vIElFMTAgYnVnZml4LCBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTY5NDc5NjcvaWUxMC1ob3Zlci1wc2V1ZG8tY2xhc3MtZG9lc250LXdvcmstd2l0aG91dC1iYWNrZ3JvdW5kLWNvbG9yXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcbiAgfVxufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XG5cbi8vIE1hcmdpbiBhbmQgUGFkZGluZ1xuXG5AZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XG5cbiAgICBAZWFjaCAkcHJvcCwgJGFiYnJldiBpbiAobWFyZ2luOiBtLCBwYWRkaW5nOiBwKSB7XG4gICAgICBAZWFjaCAkc2l6ZSwgJGxlbmd0aCBpbiAkc3BhY2VycyB7XG4gICAgICAgIC4jeyRhYmJyZXZ9I3skaW5maXh9LSN7JHNpemV9IHsgI3skcHJvcH06ICRsZW5ndGggIWltcG9ydGFudDsgfVxuICAgICAgICAuI3skYWJicmV2fXQjeyRpbmZpeH0tI3skc2l6ZX0sXG4gICAgICAgIC4jeyRhYmJyZXZ9eSN7JGluZml4fS0jeyRzaXplfSB7XG4gICAgICAgICAgI3skcHJvcH0tdG9wOiAkbGVuZ3RoICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLiN7JGFiYnJldn1yI3skaW5maXh9LSN7JHNpemV9LFxuICAgICAgICAuI3skYWJicmV2fXgjeyRpbmZpeH0tI3skc2l6ZX0ge1xuICAgICAgICAgICN7JHByb3B9LXJpZ2h0OiAkbGVuZ3RoICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLiN7JGFiYnJldn1iI3skaW5maXh9LSN7JHNpemV9LFxuICAgICAgICAuI3skYWJicmV2fXkjeyRpbmZpeH0tI3skc2l6ZX0ge1xuICAgICAgICAgICN7JHByb3B9LWJvdHRvbTogJGxlbmd0aCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIC4jeyRhYmJyZXZ9bCN7JGluZml4fS0jeyRzaXplfSxcbiAgICAgICAgLiN7JGFiYnJldn14I3skaW5maXh9LSN7JHNpemV9IHtcbiAgICAgICAgICAjeyRwcm9wfS1sZWZ0OiAkbGVuZ3RoICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOZWdhdGl2ZSBtYXJnaW5zIChlLmcuLCB3aGVyZSBgLm1iLW4xYCBpcyBuZWdhdGl2ZSB2ZXJzaW9uIG9mIGAubWItMWApXG4gICAgQGVhY2ggJHNpemUsICRsZW5ndGggaW4gJHNwYWNlcnMge1xuICAgICAgQGlmICRzaXplICE9IDAge1xuICAgICAgICAubSN7JGluZml4fS1uI3skc2l6ZX0geyBtYXJnaW46IC0kbGVuZ3RoICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgLm10I3skaW5maXh9LW4jeyRzaXplfSxcbiAgICAgICAgLm15I3skaW5maXh9LW4jeyRzaXplfSB7XG4gICAgICAgICAgbWFyZ2luLXRvcDogLSRsZW5ndGggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgICAubXIjeyRpbmZpeH0tbiN7JHNpemV9LFxuICAgICAgICAubXgjeyRpbmZpeH0tbiN7JHNpemV9IHtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC0kbGVuZ3RoICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLm1iI3skaW5maXh9LW4jeyRzaXplfSxcbiAgICAgICAgLm15I3skaW5maXh9LW4jeyRzaXplfSB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogLSRsZW5ndGggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgICAubWwjeyRpbmZpeH0tbiN7JHNpemV9LFxuICAgICAgICAubXgjeyRpbmZpeH0tbiN7JHNpemV9IHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogLSRsZW5ndGggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNvbWUgc3BlY2lhbCBtYXJnaW4gdXRpbHNcbiAgICAubSN7JGluZml4fS1hdXRvIHsgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgICAubXQjeyRpbmZpeH0tYXV0byxcbiAgICAubXkjeyRpbmZpeH0tYXV0byB7XG4gICAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5tciN7JGluZml4fS1hdXRvLFxuICAgIC5teCN7JGluZml4fS1hdXRvIHtcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAubWIjeyRpbmZpeH0tYXV0byxcbiAgICAubXkjeyRpbmZpeH0tYXV0byB7XG4gICAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5tbCN7JGluZml4fS1hdXRvLFxuICAgIC5teCN7JGluZml4fS1hdXRvIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuLy9cbi8vIFRleHRcbi8vXG5cbi50ZXh0LW1vbm9zcGFjZSB7IGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlICFpbXBvcnRhbnQ7IH1cblxuLy8gQWxpZ25tZW50XG5cbi50ZXh0LWp1c3RpZnkgIHsgdGV4dC1hbGlnbjoganVzdGlmeSAhaW1wb3J0YW50OyB9XG4udGV4dC13cmFwICAgICB7IHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudDsgfVxuLnRleHQtbm93cmFwICAgeyB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7IH1cbi50ZXh0LXRydW5jYXRlIHsgQGluY2x1ZGUgdGV4dC10cnVuY2F0ZSgpOyB9XG5cbi8vIFJlc3BvbnNpdmUgYWxpZ25tZW50XG5cbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIC50ZXh0I3skaW5maXh9LWxlZnQgICB7IHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsgfVxuICAgIC50ZXh0I3skaW5maXh9LXJpZ2h0ICB7IHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cbiAgICAudGV4dCN7JGluZml4fS1jZW50ZXIgeyB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICB9XG59XG5cbi8vIFRyYW5zZm9ybWF0aW9uXG5cbi50ZXh0LWxvd2VyY2FzZSAgeyB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlICFpbXBvcnRhbnQ7IH1cbi50ZXh0LXVwcGVyY2FzZSAgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7IH1cbi50ZXh0LWNhcGl0YWxpemUgeyB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50OyB9XG5cbi8vIFdlaWdodCBhbmQgaXRhbGljc1xuXG4uZm9udC13ZWlnaHQtbGlnaHQgICB7IGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbGlnaHQgIWltcG9ydGFudDsgfVxuLmZvbnQtd2VpZ2h0LWxpZ2h0ZXIgeyBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWxpZ2h0ZXIgIWltcG9ydGFudDsgfVxuLmZvbnQtd2VpZ2h0LW5vcm1hbCAgeyBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbCAhaW1wb3J0YW50OyB9XG4uZm9udC13ZWlnaHQtYm9sZCAgICB7IGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZCAhaW1wb3J0YW50OyB9XG4uZm9udC13ZWlnaHQtYm9sZGVyICB7IGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZGVyICFpbXBvcnRhbnQ7IH1cbi5mb250LWl0YWxpYyAgICAgICAgIHsgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7IH1cblxuLy8gQ29udGV4dHVhbCBjb2xvcnNcblxuLnRleHQtd2hpdGUgeyBjb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7IH1cblxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gIEBpbmNsdWRlIHRleHQtZW1waGFzaXMtdmFyaWFudChcIi50ZXh0LSN7JGNvbG9yfVwiLCAkdmFsdWUsIHRydWUpO1xufVxuXG4udGV4dC1ib2R5IHsgY29sb3I6ICRib2R5LWNvbG9yICFpbXBvcnRhbnQ7IH1cbi50ZXh0LW11dGVkIHsgY29sb3I6ICR0ZXh0LW11dGVkICFpbXBvcnRhbnQ7IH1cblxuLnRleHQtYmxhY2stNTAgeyBjb2xvcjogcmdiYSgkYmxhY2ssIC41KSAhaW1wb3J0YW50OyB9XG4udGV4dC13aGl0ZS01MCB7IGNvbG9yOiByZ2JhKCR3aGl0ZSwgLjUpICFpbXBvcnRhbnQ7IH1cblxuLy8gTWlzY1xuXG4udGV4dC1oaWRlIHtcbiAgQGluY2x1ZGUgdGV4dC1oaWRlKCRpZ25vcmUtd2FybmluZzogdHJ1ZSk7XG59XG5cbi50ZXh0LWRlY29yYXRpb24tbm9uZSB7IHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OyB9XG5cbi50ZXh0LWJyZWFrIHtcbiAgd29yZC1icmVhazogYnJlYWstd29yZCAhaW1wb3J0YW50OyAvLyBJRSAmIDwgRWRnZSAxOFxuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnQ7XG59XG5cbi8vIFJlc2V0XG5cbi50ZXh0LXJlc2V0IHsgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDsgfVxuIiwiLy8gVGV4dCB0cnVuY2F0ZVxuLy8gUmVxdWlyZXMgaW5saW5lLWJsb2NrIG9yIGJsb2NrIGZvciBwcm9wZXIgc3R5bGluZ1xuXG5AbWl4aW4gdGV4dC10cnVuY2F0ZSgpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuLy8gVHlwb2dyYXBoeVxuXG5AbWl4aW4gdGV4dC1lbXBoYXNpcy12YXJpYW50KCRwYXJlbnQsICRjb2xvciwgJGlnbm9yZS13YXJuaW5nOiBmYWxzZSkge1xuICAjeyRwYXJlbnR9IHtcbiAgICBjb2xvcjogJGNvbG9yICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRlbXBoYXNpemVkLWxpbmstaG92ZXItZGFya2VuLXBlcmNlbnRhZ2UgIT0gMCB7XG4gICAgYSN7JHBhcmVudH0ge1xuICAgICAgQGluY2x1ZGUgaG92ZXItZm9jdXMoKSB7XG4gICAgICAgIGNvbG9yOiBkYXJrZW4oJGNvbG9yLCAkZW1waGFzaXplZC1saW5rLWhvdmVyLWRhcmtlbi1wZXJjZW50YWdlKSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBkZXByZWNhdGUoXCJgdGV4dC1lbXBoYXNpcy12YXJpYW50KClgXCIsIFwidjQuNC4wXCIsIFwidjVcIiwgJGlnbm9yZS13YXJuaW5nKTtcbn1cbiIsIi8vIENTUyBpbWFnZSByZXBsYWNlbWVudFxuQG1peGluIHRleHQtaGlkZSgkaWdub3JlLXdhcm5pbmc6IGZhbHNlKSB7XG4gIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBmb250LWZhbWlseS1uby1taXNzaW5nLWdlbmVyaWMtZmFtaWx5LWtleXdvcmRcbiAgZm9udDogMC8wIGE7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDA7XG5cbiAgQGluY2x1ZGUgZGVwcmVjYXRlKFwiYHRleHQtaGlkZSgpYFwiLCBcInY0LjEuMFwiLCBcInY1XCIsICRpZ25vcmUtd2FybmluZyk7XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcblxuLy9cbi8vIFZpc2liaWxpdHkgdXRpbGl0aWVzXG4vL1xuXG4udmlzaWJsZSB7XG4gIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmludmlzaWJsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50O1xufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50LCBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcblxuLy8gU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vaDVicC9tYWluLmNzcy9ibG9iL21hc3Rlci9zcmMvX3ByaW50LmNzc1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUHJpbnQgc3R5bGVzLlxuLy8gSW5saW5lZCB0byBhdm9pZCB0aGUgYWRkaXRpb25hbCBIVFRQIHJlcXVlc3Q6XG4vLyBodHRwczovL3d3dy5waHBpZWQuY29tL2RlbGF5LWxvYWRpbmcteW91ci1wcmludC1jc3MvXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AaWYgJGVuYWJsZS1wcmludC1zdHlsZXMge1xuICBAbWVkaWEgcHJpbnQge1xuICAgICosXG4gICAgKjo6YmVmb3JlLFxuICAgICo6OmFmdGVyIHtcbiAgICAgIC8vIEJvb3RzdHJhcCBzcGVjaWZpYzsgY29tbWVudCBvdXQgYGNvbG9yYCBhbmQgYGJhY2tncm91bmRgXG4gICAgICAvL2NvbG9yOiAkYmxhY2sgIWltcG9ydGFudDsgLy8gQmxhY2sgcHJpbnRzIGZhc3RlclxuICAgICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIC8vYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgICY6bm90KC5idG4pIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQm9vdHN0cmFwIHNwZWNpZmljOyBjb21tZW50IHRoZSBmb2xsb3dpbmcgc2VsZWN0b3Igb3V0XG4gICAgLy9hW2hyZWZdOjphZnRlciB7XG4gICAgLy8gIGNvbnRlbnQ6IFwiIChcIiBhdHRyKGhyZWYpIFwiKVwiO1xuICAgIC8vfVxuXG4gICAgYWJiclt0aXRsZV06OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIChcIiBhdHRyKHRpdGxlKSBcIilcIjtcbiAgICB9XG5cbiAgICAvLyBCb290c3RyYXAgc3BlY2lmaWM7IGNvbW1lbnQgdGhlIGZvbGxvd2luZyBzZWxlY3RvciBvdXRcbiAgICAvL1xuICAgIC8vIERvbid0IHNob3cgbGlua3MgdGhhdCBhcmUgZnJhZ21lbnQgaWRlbnRpZmllcnMsXG4gICAgLy8gb3IgdXNlIHRoZSBgamF2YXNjcmlwdDpgIHBzZXVkbyBwcm90b2NvbFxuICAgIC8vXG5cbiAgICAvL2FbaHJlZl49XCIjXCJdOjphZnRlcixcbiAgICAvL2FbaHJlZl49XCJqYXZhc2NyaXB0OlwiXTo6YWZ0ZXIge1xuICAgIC8vIGNvbnRlbnQ6IFwiXCI7XG4gICAgLy99XG5cbiAgICBwcmUge1xuICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIHByZSxcbiAgICBibG9ja3F1b3RlIHtcbiAgICAgIGJvcmRlcjogJGJvcmRlci13aWR0aCBzb2xpZCAkZ3JheS01MDA7IC8vIEJvb3RzdHJhcCBjdXN0b20gY29kZTsgdXNpbmcgYCRib3JkZXItd2lkdGhgIGluc3RlYWQgb2YgMXB4XG4gICAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgfVxuXG4gICAgLy9cbiAgICAvLyBQcmludGluZyBUYWJsZXM6XG4gICAgLy8gaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTgwODE1MTUwOTM0L2h0dHA6Ly9jc3MtZGlzY3Vzcy5pbmN1dGlvLmNvbS93aWtpL1ByaW50aW5nX1RhYmxlc1xuICAgIC8vXG5cbiAgICB0aGVhZCB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7XG4gICAgfVxuXG4gICAgdHIsXG4gICAgaW1nIHtcbiAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICB9XG5cbiAgICBwLFxuICAgIGgyLFxuICAgIGgzIHtcbiAgICAgIG9ycGhhbnM6IDM7XG4gICAgICB3aWRvd3M6IDM7XG4gICAgfVxuXG4gICAgaDIsXG4gICAgaDMge1xuICAgICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7XG4gICAgfVxuXG4gICAgLy8gQm9vdHN0cmFwIHNwZWNpZmljIGNoYW5nZXMgc3RhcnRcblxuICAgIC8vIFNwZWNpZnkgYSBzaXplIGFuZCBtaW4td2lkdGggdG8gbWFrZSBwcmludGluZyBjbG9zZXIgYWNyb3NzIGJyb3dzZXJzLlxuICAgIC8vIFdlIGRvbid0IHNldCBtYXJnaW4gaGVyZSBiZWNhdXNlIGl0IGJyZWFrcyBgc2l6ZWAgaW4gQ2hyb21lLiBXZSBhbHNvXG4gICAgLy8gZG9uJ3QgdXNlIGAhaW1wb3J0YW50YCBvbiBgc2l6ZWAgYXMgaXQgYnJlYWtzIGluIENocm9tZS5cbiAgICBAcGFnZSB7XG4gICAgICBzaXplOiAkcHJpbnQtcGFnZS1zaXplO1xuICAgIH1cbiAgICBib2R5IHtcbiAgICAgIG1pbi13aWR0aDogJHByaW50LWJvZHktbWluLXdpZHRoICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5jb250YWluZXIge1xuICAgICAgbWluLXdpZHRoOiAkcHJpbnQtYm9keS1taW4td2lkdGggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAvLyBCb290c3RyYXAgY29tcG9uZW50c1xuICAgIC5uYXZiYXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgLmJhZGdlIHtcbiAgICAgIGJvcmRlcjogJGJvcmRlci13aWR0aCBzb2xpZCAkYmxhY2s7XG4gICAgfVxuXG4gICAgLnRhYmxlIHtcbiAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UgIWltcG9ydGFudDtcblxuICAgICAgdGQsXG4gICAgICB0aCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIC50YWJsZS1ib3JkZXJlZCB7XG4gICAgICB0aCxcbiAgICAgIHRkIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGdyYXktMzAwICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnRhYmxlLWRhcmsge1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG5cbiAgICAgIHRoLFxuICAgICAgdGQsXG4gICAgICB0aGVhZCB0aCxcbiAgICAgIHRib2R5ICsgdGJvZHkge1xuICAgICAgICBib3JkZXItY29sb3I6ICR0YWJsZS1ib3JkZXItY29sb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnRhYmxlIC50aGVhZC1kYXJrIHRoIHtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgYm9yZGVyLWNvbG9yOiAkdGFibGUtYm9yZGVyLWNvbG9yO1xuICAgIH1cblxuICAgIC8vIEJvb3RzdHJhcCBzcGVjaWZpYyBjaGFuZ2VzIGVuZFxuICB9XG59XG4iXX0= */", '', '']] - -/***/ }), - -/***/ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/lib/loader.js?!./src/styles.scss": -/*!**********************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!./node_modules/postcss-loader/src??embedded!./node_modules/sass-loader/lib/loader.js??ref--15-3!./src/styles.scss ***! - \**********************************************************************************************************************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = [[module.i, "/*!\n * DAA Example\n *\n * Copyright (C) 2019 - Miguel Reboiro-Jato.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n/* You can add global styles to this file, and also import other style files */\nhtml, body {\n height: 100%;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9DOlxcVXNlcnNcXE5vZWxpYVxcRGVza3RvcFxcREFBXFxkYWFleGFtcGxlXFxzcmNcXG1haW5cXGFuZ3VsYXIvc3JjXFxzdHlsZXMuc2NzcyIsInNyYy9zdHlsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQW1CQSw4RUFBQTtBQUVBO0VBQ0UsWUFBQTtBQ0RGIiwiZmlsZSI6InNyYy9zdHlsZXMuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxyXG4gKiBEQUEgRXhhbXBsZVxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXHJcbiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXHJcbiAqXHJcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXHJcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcbiAqL1xyXG5cclxuLyogWW91IGNhbiBhZGQgZ2xvYmFsIHN0eWxlcyB0byB0aGlzIGZpbGUsIGFuZCBhbHNvIGltcG9ydCBvdGhlciBzdHlsZSBmaWxlcyAqL1xyXG5cclxuaHRtbCwgYm9keSB7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG59XHJcbiIsIi8qIVxuICogREFBIEV4YW1wbGVcbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSBNaWd1ZWwgUmVib2lyby1KYXRvLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG4vKiBZb3UgY2FuIGFkZCBnbG9iYWwgc3R5bGVzIHRvIHRoaXMgZmlsZSwgYW5kIGFsc28gaW1wb3J0IG90aGVyIHN0eWxlIGZpbGVzICovXG5odG1sLCBib2R5IHtcbiAgaGVpZ2h0OiAxMDAlO1xufSJdfQ== */", '', '']] - -/***/ }), - -/***/ "./node_modules/bootstrap/dist/css/bootstrap.css": -/*!*******************************************************!*\ - !*** ./node_modules/bootstrap/dist/css/bootstrap.css ***! - \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var content = __webpack_require__(/*! !../../../@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!../../../postcss-loader/src??embedded!./bootstrap.css */ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/bootstrap/dist/css/bootstrap.css"); - -if (typeof content === 'string') { - content = [[module.i, content, '']]; -} - -var options = {} - -options.insert = "head"; -options.singleton = false; - -var update = __webpack_require__(/*! ../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js")(content, options); - -if (content.locals) { - module.exports = content.locals; -} - - -/***/ }), - -/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": -/*!****************************************************************************!*\ - !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! - \****************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var stylesInDom = {}; - -var isOldIE = function isOldIE() { - var memo; - return function memorize() { - if (typeof memo === 'undefined') { - // Test for IE <= 9 as proposed by Browserhacks - // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 - // Tests for existence of standard globals is to allow style-loader - // to operate correctly into non-standard environments - // @see https://github.com/webpack-contrib/style-loader/issues/177 - memo = Boolean(window && document && document.all && !window.atob); - } - - return memo; - }; -}(); - -var getTarget = function getTarget() { - var memo = {}; - return function memorize(target) { - if (typeof memo[target] === 'undefined') { - var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself - - if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { - try { - // This will throw an exception if access to iframe is blocked - // due to cross-origin restrictions - styleTarget = styleTarget.contentDocument.head; - } catch (e) { - // istanbul ignore next - styleTarget = null; - } - } - - memo[target] = styleTarget; - } - - return memo[target]; - }; -}(); - -function listToStyles(list, options) { - var styles = []; - var newStyles = {}; - - for (var i = 0; i < list.length; i++) { - var item = list[i]; - var id = options.base ? item[0] + options.base : item[0]; - var css = item[1]; - var media = item[2]; - var sourceMap = item[3]; - var part = { - css: css, - media: media, - sourceMap: sourceMap - }; - - if (!newStyles[id]) { - styles.push(newStyles[id] = { - id: id, - parts: [part] - }); - } else { - newStyles[id].parts.push(part); - } - } - - return styles; -} - -function addStylesToDom(styles, options) { - for (var i = 0; i < styles.length; i++) { - var item = styles[i]; - var domStyle = stylesInDom[item.id]; - var j = 0; - - if (domStyle) { - domStyle.refs++; - - for (; j < domStyle.parts.length; j++) { - domStyle.parts[j](item.parts[j]); - } - - for (; j < item.parts.length; j++) { - domStyle.parts.push(addStyle(item.parts[j], options)); - } - } else { - var parts = []; - - for (; j < item.parts.length; j++) { - parts.push(addStyle(item.parts[j], options)); - } - - stylesInDom[item.id] = { - id: item.id, - refs: 1, - parts: parts - }; - } - } -} - -function insertStyleElement(options) { - var style = document.createElement('style'); - - if (typeof options.attributes.nonce === 'undefined') { - var nonce = true ? __webpack_require__.nc : undefined; - - if (nonce) { - options.attributes.nonce = nonce; - } - } - - Object.keys(options.attributes).forEach(function (key) { - style.setAttribute(key, options.attributes[key]); - }); - - if (typeof options.insert === 'function') { - options.insert(style); - } else { - var target = getTarget(options.insert || 'head'); - - if (!target) { - throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); - } - - target.appendChild(style); - } - - return style; -} - -function removeStyleElement(style) { - // istanbul ignore if - if (style.parentNode === null) { - return false; - } - - style.parentNode.removeChild(style); -} -/* istanbul ignore next */ - - -var replaceText = function replaceText() { - var textStore = []; - return function replace(index, replacement) { - textStore[index] = replacement; - return textStore.filter(Boolean).join('\n'); - }; -}(); - -function applyToSingletonTag(style, index, remove, obj) { - var css = remove ? '' : obj.css; // For old IE - - /* istanbul ignore if */ - - if (style.styleSheet) { - style.styleSheet.cssText = replaceText(index, css); - } else { - var cssNode = document.createTextNode(css); - var childNodes = style.childNodes; - - if (childNodes[index]) { - style.removeChild(childNodes[index]); - } - - if (childNodes.length) { - style.insertBefore(cssNode, childNodes[index]); - } else { - style.appendChild(cssNode); - } - } -} - -function applyToTag(style, options, obj) { - var css = obj.css; - var media = obj.media; - var sourceMap = obj.sourceMap; - - if (media) { - style.setAttribute('media', media); - } - - if (sourceMap && btoa) { - css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); - } // For old IE - - /* istanbul ignore if */ - - - if (style.styleSheet) { - style.styleSheet.cssText = css; - } else { - while (style.firstChild) { - style.removeChild(style.firstChild); - } - - style.appendChild(document.createTextNode(css)); - } -} - -var singleton = null; -var singletonCounter = 0; - -function addStyle(obj, options) { - var style; - var update; - var remove; - - if (options.singleton) { - var styleIndex = singletonCounter++; - style = singleton || (singleton = insertStyleElement(options)); - update = applyToSingletonTag.bind(null, style, styleIndex, false); - remove = applyToSingletonTag.bind(null, style, styleIndex, true); - } else { - style = insertStyleElement(options); - update = applyToTag.bind(null, style, options); - - remove = function remove() { - removeStyleElement(style); - }; - } - - update(obj); - return function updateStyle(newObj) { - if (newObj) { - if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) { - return; - } - - update(obj = newObj); - } else { - remove(); - } - }; -} - -module.exports = function (list, options) { - options = options || {}; - options.attributes = typeof options.attributes === 'object' ? options.attributes : {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of - - - could become: - - -
    - -
    - - Note the use of @polyfill in the comment above a ShadowDOM specific style - declaration. This is a directive to the styling shim to use the selector - in comments in lieu of the next selector when running under polyfill. -*/ -class ShadowCss { - constructor() { - this.strictStyling = true; - } - /* - * Shim some cssText with the given selector. Returns cssText that can - * be included in the document via WebComponents.ShadowCSS.addCssToDocument(css). - * - * When strictStyling is true: - * - selector is the attribute added to all elements inside the host, - * - hostSelector is the attribute added to the host itself. - */ - shimCssText(cssText, selector, hostSelector = '') { - const commentsWithHash = extractCommentsWithHash(cssText); - cssText = stripComments(cssText); - cssText = this._insertDirectives(cssText); - const scopedCssText = this._scopeCssText(cssText, selector, hostSelector); - return [scopedCssText, ...commentsWithHash].join('\n'); - } - _insertDirectives(cssText) { - cssText = this._insertPolyfillDirectivesInCssText(cssText); - return this._insertPolyfillRulesInCssText(cssText); - } - /* - * Process styles to convert native ShadowDOM rules that will trip - * up the css parser; we rely on decorating the stylesheet with inert rules. - * - * For example, we convert this rule: - * - * polyfill-next-selector { content: ':host menu-item'; } - * ::content menu-item { - * - * to this: - * - * scopeName menu-item { - * - **/ - _insertPolyfillDirectivesInCssText(cssText) { - // Difference with webcomponents.js: does not handle comments - return cssText.replace(_cssContentNextSelectorRe, function (...m) { return m[2] + '{'; }); - } - /* - * Process styles to add rules which will only apply under the polyfill - * - * For example, we convert this rule: - * - * polyfill-rule { - * content: ':host menu-item'; - * ... - * } - * - * to this: - * - * scopeName menu-item {...} - * - **/ - _insertPolyfillRulesInCssText(cssText) { - // Difference with webcomponents.js: does not handle comments - return cssText.replace(_cssContentRuleRe, (...m) => { - const rule = m[0].replace(m[1], '').replace(m[2], ''); - return m[4] + rule; - }); - } - /* Ensure styles are scoped. Pseudo-scoping takes a rule like: - * - * .foo {... } - * - * and converts this to - * - * scopeName .foo { ... } - */ - _scopeCssText(cssText, scopeSelector, hostSelector) { - const unscopedRules = this._extractUnscopedRulesFromCssText(cssText); - // replace :host and :host-context -shadowcsshost and -shadowcsshost respectively - cssText = this._insertPolyfillHostInCssText(cssText); - cssText = this._convertColonHost(cssText); - cssText = this._convertColonHostContext(cssText); - cssText = this._convertShadowDOMSelectors(cssText); - if (scopeSelector) { - cssText = this._scopeSelectors(cssText, scopeSelector, hostSelector); - } - cssText = cssText + '\n' + unscopedRules; - return cssText.trim(); - } - /* - * Process styles to add rules which will only apply under the polyfill - * and do not process via CSSOM. (CSSOM is destructive to rules on rare - * occasions, e.g. -webkit-calc on Safari.) - * For example, we convert this rule: - * - * @polyfill-unscoped-rule { - * content: 'menu-item'; - * ... } - * - * to this: - * - * menu-item {...} - * - **/ - _extractUnscopedRulesFromCssText(cssText) { - // Difference with webcomponents.js: does not handle comments - let r = ''; - let m; - _cssContentUnscopedRuleRe.lastIndex = 0; - while ((m = _cssContentUnscopedRuleRe.exec(cssText)) !== null) { - const rule = m[0].replace(m[2], '').replace(m[1], m[4]); - r += rule + '\n\n'; - } - return r; - } - /* - * convert a rule like :host(.foo) > .bar { } - * - * to - * - * .foo > .bar - */ - _convertColonHost(cssText) { - return this._convertColonRule(cssText, _cssColonHostRe, this._colonHostPartReplacer); - } - /* - * convert a rule like :host-context(.foo) > .bar { } - * - * to - * - * .foo > .bar, .foo scopeName > .bar { } - * - * and - * - * :host-context(.foo:host) .bar { ... } - * - * to - * - * .foo .bar { ... } - */ - _convertColonHostContext(cssText) { - return this._convertColonRule(cssText, _cssColonHostContextRe, this._colonHostContextPartReplacer); - } - _convertColonRule(cssText, regExp, partReplacer) { - // m[1] = :host(-context), m[2] = contents of (), m[3] rest of rule - return cssText.replace(regExp, function (...m) { - if (m[2]) { - const parts = m[2].split(','); - const r = []; - for (let i = 0; i < parts.length; i++) { - const p = parts[i].trim(); - if (!p) - break; - r.push(partReplacer(_polyfillHostNoCombinator, p, m[3])); - } - return r.join(','); - } - else { - return _polyfillHostNoCombinator + m[3]; - } - }); - } - _colonHostContextPartReplacer(host, part, suffix) { - if (part.indexOf(_polyfillHost) > -1) { - return this._colonHostPartReplacer(host, part, suffix); - } - else { - return host + part + suffix + ', ' + part + ' ' + host + suffix; - } - } - _colonHostPartReplacer(host, part, suffix) { - return host + part.replace(_polyfillHost, '') + suffix; - } - /* - * Convert combinators like ::shadow and pseudo-elements like ::content - * by replacing with space. - */ - _convertShadowDOMSelectors(cssText) { - return _shadowDOMSelectorsRe.reduce((result, pattern) => result.replace(pattern, ' '), cssText); - } - // change a selector like 'div' to 'name div' - _scopeSelectors(cssText, scopeSelector, hostSelector) { - return processRules(cssText, (rule) => { - let selector = rule.selector; - let content = rule.content; - if (rule.selector[0] != '@') { - selector = - this._scopeSelector(rule.selector, scopeSelector, hostSelector, this.strictStyling); - } - else if (rule.selector.startsWith('@media') || rule.selector.startsWith('@supports') || - rule.selector.startsWith('@page') || rule.selector.startsWith('@document')) { - content = this._scopeSelectors(rule.content, scopeSelector, hostSelector); - } - return new CssRule(selector, content); - }); - } - _scopeSelector(selector, scopeSelector, hostSelector, strict) { - return selector.split(',') - .map(part => part.trim().split(_shadowDeepSelectors)) - .map((deepParts) => { - const [shallowPart, ...otherParts] = deepParts; - const applyScope = (shallowPart) => { - if (this._selectorNeedsScoping(shallowPart, scopeSelector)) { - return strict ? - this._applyStrictSelectorScope(shallowPart, scopeSelector, hostSelector) : - this._applySelectorScope(shallowPart, scopeSelector, hostSelector); - } - else { - return shallowPart; - } - }; - return [applyScope(shallowPart), ...otherParts].join(' '); - }) - .join(', '); - } - _selectorNeedsScoping(selector, scopeSelector) { - const re = this._makeScopeMatcher(scopeSelector); - return !re.test(selector); - } - _makeScopeMatcher(scopeSelector) { - const lre = /\[/g; - const rre = /\]/g; - scopeSelector = scopeSelector.replace(lre, '\\[').replace(rre, '\\]'); - return new RegExp('^(' + scopeSelector + ')' + _selectorReSuffix, 'm'); - } - _applySelectorScope(selector, scopeSelector, hostSelector) { - // Difference from webcomponents.js: scopeSelector could not be an array - return this._applySimpleSelectorScope(selector, scopeSelector, hostSelector); - } - // scope via name and [is=name] - _applySimpleSelectorScope(selector, scopeSelector, hostSelector) { - // In Android browser, the lastIndex is not reset when the regex is used in String.replace() - _polyfillHostRe.lastIndex = 0; - if (_polyfillHostRe.test(selector)) { - const replaceBy = this.strictStyling ? `[${hostSelector}]` : scopeSelector; - return selector - .replace(_polyfillHostNoCombinatorRe, (hnc, selector) => { - return selector.replace(/([^:]*)(:*)(.*)/, (_, before, colon, after) => { - return before + replaceBy + colon + after; - }); - }) - .replace(_polyfillHostRe, replaceBy + ' '); - } - return scopeSelector + ' ' + selector; - } - // return a selector with [name] suffix on each simple selector - // e.g. .foo.bar > .zot becomes .foo[name].bar[name] > .zot[name] /** @internal */ - _applyStrictSelectorScope(selector, scopeSelector, hostSelector) { - const isRe = /\[is=([^\]]*)\]/g; - scopeSelector = scopeSelector.replace(isRe, (_, ...parts) => parts[0]); - const attrName = '[' + scopeSelector + ']'; - const _scopeSelectorPart = (p) => { - let scopedP = p.trim(); - if (!scopedP) { - return ''; - } - if (p.indexOf(_polyfillHostNoCombinator) > -1) { - scopedP = this._applySimpleSelectorScope(p, scopeSelector, hostSelector); - } - else { - // remove :host since it should be unnecessary - const t = p.replace(_polyfillHostRe, ''); - if (t.length > 0) { - const matches = t.match(/([^:]*)(:*)(.*)/); - if (matches) { - scopedP = matches[1] + attrName + matches[2] + matches[3]; - } - } - } - return scopedP; - }; - const safeContent = new SafeSelector(selector); - selector = safeContent.content(); - let scopedSelector = ''; - let startIndex = 0; - let res; - const sep = /( |>|\+|~(?!=))\s*/g; - // If a selector appears before :host it should not be shimmed as it - // matches on ancestor elements and not on elements in the host's shadow - // `:host-context(div)` is transformed to - // `-shadowcsshost-no-combinatordiv, div -shadowcsshost-no-combinator` - // the `div` is not part of the component in the 2nd selectors and should not be scoped. - // Historically `component-tag:host` was matching the component so we also want to preserve - // this behavior to avoid breaking legacy apps (it should not match). - // The behavior should be: - // - `tag:host` -> `tag[h]` (this is to avoid breaking legacy apps, should not match anything) - // - `tag :host` -> `tag [h]` (`tag` is not scoped because it's considered part of a - // `:host-context(tag)`) - const hasHost = selector.indexOf(_polyfillHostNoCombinator) > -1; - // Only scope parts after the first `-shadowcsshost-no-combinator` when it is present - let shouldScope = !hasHost; - while ((res = sep.exec(selector)) !== null) { - const separator = res[1]; - const part = selector.slice(startIndex, res.index).trim(); - shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1; - const scopedPart = shouldScope ? _scopeSelectorPart(part) : part; - scopedSelector += `${scopedPart} ${separator} `; - startIndex = sep.lastIndex; - } - const part = selector.substring(startIndex); - shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1; - scopedSelector += shouldScope ? _scopeSelectorPart(part) : part; - // replace the placeholders with their original values - return safeContent.restore(scopedSelector); - } - _insertPolyfillHostInCssText(selector) { - return selector.replace(_colonHostContextRe, _polyfillHostContext) - .replace(_colonHostRe, _polyfillHost); - } -} -class SafeSelector { - constructor(selector) { - this.placeholders = []; - this.index = 0; - // Replaces attribute selectors with placeholders. - // The WS in [attr="va lue"] would otherwise be interpreted as a selector separator. - selector = selector.replace(/(\[[^\]]*\])/g, (_, keep) => { - const replaceBy = `__ph-${this.index}__`; - this.placeholders.push(keep); - this.index++; - return replaceBy; - }); - // Replaces the expression in `:nth-child(2n + 1)` with a placeholder. - // WS and "+" would otherwise be interpreted as selector separators. - this._content = selector.replace(/(:nth-[-\w]+)(\([^)]+\))/g, (_, pseudo, exp) => { - const replaceBy = `__ph-${this.index}__`; - this.placeholders.push(exp); - this.index++; - return pseudo + replaceBy; - }); - } - restore(content) { - return content.replace(/__ph-(\d+)__/g, (ph, index) => this.placeholders[+index]); - } - content() { return this._content; } -} -const _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\s]*?(['"])(.*?)\1[;\s]*}([^{]*?){/gim; -const _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim; -const _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim; -const _polyfillHost = '-shadowcsshost'; -// note: :host-context pre-processed to -shadowcsshostcontext. -const _polyfillHostContext = '-shadowcsscontext'; -const _parenSuffix = ')(?:\\((' + - '(?:\\([^)(]*\\)|[^)(]*)+?' + - ')\\))?([^,{]*)'; -const _cssColonHostRe = new RegExp('(' + _polyfillHost + _parenSuffix, 'gim'); -const _cssColonHostContextRe = new RegExp('(' + _polyfillHostContext + _parenSuffix, 'gim'); -const _polyfillHostNoCombinator = _polyfillHost + '-no-combinator'; -const _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\s]*)/; -const _shadowDOMSelectorsRe = [ - /::shadow/g, - /::content/g, - // Deprecated selectors - /\/shadow-deep\//g, - /\/shadow\//g, -]; -// The deep combinator is deprecated in the CSS spec -// Support for `>>>`, `deep`, `::ng-deep` is then also deprecated and will be removed in the future. -// see https://github.com/angular/angular/pull/17677 -const _shadowDeepSelectors = /(?:>>>)|(?:\/deep\/)|(?:::ng-deep)/g; -const _selectorReSuffix = '([>\\s~+\[.,{:][\\s\\S]*)?$'; -const _polyfillHostRe = /-shadowcsshost/gim; -const _colonHostRe = /:host/gim; -const _colonHostContextRe = /:host-context/gim; -const _commentRe = /\/\*\s*[\s\S]*?\*\//g; -function stripComments(input) { - return input.replace(_commentRe, ''); -} -const _commentWithHashRe = /\/\*\s*#\s*source(Mapping)?URL=[\s\S]+?\*\//g; -function extractCommentsWithHash(input) { - return input.match(_commentWithHashRe) || []; -} -const _ruleRe = /(\s*)([^;\{\}]+?)(\s*)((?:{%BLOCK%}?\s*;?)|(?:\s*;))/g; -const _curlyRe = /([{}])/g; -const OPEN_CURLY = '{'; -const CLOSE_CURLY = '}'; -const BLOCK_PLACEHOLDER = '%BLOCK%'; -class CssRule { - constructor(selector, content) { - this.selector = selector; - this.content = content; - } -} -function processRules(input, ruleCallback) { - const inputWithEscapedBlocks = escapeBlocks(input); - let nextBlockIndex = 0; - return inputWithEscapedBlocks.escapedString.replace(_ruleRe, function (...m) { - const selector = m[2]; - let content = ''; - let suffix = m[4]; - let contentPrefix = ''; - if (suffix && suffix.startsWith('{' + BLOCK_PLACEHOLDER)) { - content = inputWithEscapedBlocks.blocks[nextBlockIndex++]; - suffix = suffix.substring(BLOCK_PLACEHOLDER.length + 1); - contentPrefix = '{'; - } - const rule = ruleCallback(new CssRule(selector, content)); - return `${m[1]}${rule.selector}${m[3]}${contentPrefix}${rule.content}${suffix}`; - }); -} -class StringWithEscapedBlocks { - constructor(escapedString, blocks) { - this.escapedString = escapedString; - this.blocks = blocks; - } -} -function escapeBlocks(input) { - const inputParts = input.split(_curlyRe); - const resultParts = []; - const escapedBlocks = []; - let bracketCount = 0; - let currentBlockParts = []; - for (let partIndex = 0; partIndex < inputParts.length; partIndex++) { - const part = inputParts[partIndex]; - if (part == CLOSE_CURLY) { - bracketCount--; - } - if (bracketCount > 0) { - currentBlockParts.push(part); - } - else { - if (currentBlockParts.length > 0) { - escapedBlocks.push(currentBlockParts.join('')); - resultParts.push(BLOCK_PLACEHOLDER); - currentBlockParts = []; - } - resultParts.push(part); - } - if (part == OPEN_CURLY) { - bracketCount++; - } - } - if (currentBlockParts.length > 0) { - escapedBlocks.push(currentBlockParts.join('')); - resultParts.push(BLOCK_PLACEHOLDER); - } - return new StringWithEscapedBlocks(resultParts.join(''), escapedBlocks); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const COMPONENT_VARIABLE = '%COMP%'; -const HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`; -const CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`; -class StylesCompileDependency { - constructor(name, moduleUrl, setValue) { - this.name = name; - this.moduleUrl = moduleUrl; - this.setValue = setValue; - } -} -class CompiledStylesheet { - constructor(outputCtx, stylesVar, dependencies, isShimmed, meta) { - this.outputCtx = outputCtx; - this.stylesVar = stylesVar; - this.dependencies = dependencies; - this.isShimmed = isShimmed; - this.meta = meta; - } -} -class StyleCompiler { - constructor(_urlResolver) { - this._urlResolver = _urlResolver; - this._shadowCss = new ShadowCss(); - } - compileComponent(outputCtx, comp) { - const template = comp.template; - return this._compileStyles(outputCtx, comp, new CompileStylesheetMetadata({ - styles: template.styles, - styleUrls: template.styleUrls, - moduleUrl: identifierModuleUrl(comp.type) - }), this.needsStyleShim(comp), true); - } - compileStyles(outputCtx, comp, stylesheet, shim = this.needsStyleShim(comp)) { - return this._compileStyles(outputCtx, comp, stylesheet, shim, false); - } - needsStyleShim(comp) { - return comp.template.encapsulation === ViewEncapsulation.Emulated; - } - _compileStyles(outputCtx, comp, stylesheet, shim, isComponentStylesheet) { - const styleExpressions = stylesheet.styles.map(plainStyle => literal(this._shimIfNeeded(plainStyle, shim))); - const dependencies = []; - stylesheet.styleUrls.forEach((styleUrl) => { - const exprIndex = styleExpressions.length; - // Note: This placeholder will be filled later. - styleExpressions.push(null); - dependencies.push(new StylesCompileDependency(getStylesVarName(null), styleUrl, (value) => styleExpressions[exprIndex] = outputCtx.importExpr(value))); - }); - // styles variable contains plain strings and arrays of other styles arrays (recursive), - // so we set its type to dynamic. - const stylesVar = getStylesVarName(isComponentStylesheet ? comp : null); - const stmt = variable(stylesVar) - .set(literalArr(styleExpressions, new ArrayType(DYNAMIC_TYPE, [TypeModifier.Const]))) - .toDeclStmt(null, isComponentStylesheet ? [StmtModifier.Final] : [ - StmtModifier.Final, StmtModifier.Exported - ]); - outputCtx.statements.push(stmt); - return new CompiledStylesheet(outputCtx, stylesVar, dependencies, shim, stylesheet); - } - _shimIfNeeded(style, shim) { - return shim ? this._shadowCss.shimCssText(style, CONTENT_ATTR, HOST_ATTR) : style; - } -} -function getStylesVarName(component) { - let result = `styles`; - if (component) { - result += `_${identifierName(component.type)}`; - } - return result; -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * A path is an ordered set of elements. Typically a path is to a - * particular offset in a source file. The head of the list is the top - * most node. The tail is the node that contains the offset directly. - * - * For example, the expression `a + b + c` might have an ast that looks - * like: - * + - * / \ - * a + - * / \ - * b c - * - * The path to the node at offset 9 would be `['+' at 1-10, '+' at 7-10, - * 'c' at 9-10]` and the path the node at offset 1 would be - * `['+' at 1-10, 'a' at 1-2]`. - */ -class AstPath { - constructor(path, position = -1) { - this.path = path; - this.position = position; - } - get empty() { return !this.path || !this.path.length; } - get head() { return this.path[0]; } - get tail() { return this.path[this.path.length - 1]; } - parentOf(node) { - return node && this.path[this.path.indexOf(node) - 1]; - } - childOf(node) { return this.path[this.path.indexOf(node) + 1]; } - first(ctor) { - for (let i = this.path.length - 1; i >= 0; i--) { - let item = this.path[i]; - if (item instanceof ctor) - return item; - } - } - push(node) { this.path.push(node); } - pop() { return this.path.pop(); } -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class Text$3 { - constructor(value, sourceSpan, i18n) { - this.value = value; - this.sourceSpan = sourceSpan; - this.i18n = i18n; - } - visit(visitor, context) { return visitor.visitText(this, context); } -} -class Expansion { - constructor(switchValue, type, cases, sourceSpan, switchValueSourceSpan, i18n) { - this.switchValue = switchValue; - this.type = type; - this.cases = cases; - this.sourceSpan = sourceSpan; - this.switchValueSourceSpan = switchValueSourceSpan; - this.i18n = i18n; - } - visit(visitor, context) { return visitor.visitExpansion(this, context); } -} -class ExpansionCase { - constructor(value, expression, sourceSpan, valueSourceSpan, expSourceSpan) { - this.value = value; - this.expression = expression; - this.sourceSpan = sourceSpan; - this.valueSourceSpan = valueSourceSpan; - this.expSourceSpan = expSourceSpan; - } - visit(visitor, context) { return visitor.visitExpansionCase(this, context); } -} -class Attribute { - constructor(name, value, sourceSpan, valueSpan, i18n) { - this.name = name; - this.value = value; - this.sourceSpan = sourceSpan; - this.valueSpan = valueSpan; - this.i18n = i18n; - } - visit(visitor, context) { return visitor.visitAttribute(this, context); } -} -class Element$1 { - constructor(name, attrs, children, sourceSpan, startSourceSpan = null, endSourceSpan = null, i18n) { - this.name = name; - this.attrs = attrs; - this.children = children; - this.sourceSpan = sourceSpan; - this.startSourceSpan = startSourceSpan; - this.endSourceSpan = endSourceSpan; - this.i18n = i18n; - } - visit(visitor, context) { return visitor.visitElement(this, context); } -} -class Comment { - constructor(value, sourceSpan) { - this.value = value; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { return visitor.visitComment(this, context); } -} -function visitAll$1(visitor, nodes, context = null) { - const result = []; - const visit = visitor.visit ? - (ast) => visitor.visit(ast, context) || ast.visit(visitor, context) : - (ast) => ast.visit(visitor, context); - nodes.forEach(ast => { - const astResult = visit(ast); - if (astResult) { - result.push(astResult); - } - }); - return result; -} -class RecursiveVisitor$1 { - constructor() { } - visitElement(ast, context) { - this.visitChildren(context, visit => { - visit(ast.attrs); - visit(ast.children); - }); - } - visitAttribute(ast, context) { } - visitText(ast, context) { } - visitComment(ast, context) { } - visitExpansion(ast, context) { - return this.visitChildren(context, visit => { visit(ast.cases); }); - } - visitExpansionCase(ast, context) { } - visitChildren(context, cb) { - let results = []; - let t = this; - function visit(children) { - if (children) - results.push(visitAll$1(t, children, context)); - } - cb(visit); - return Array.prototype.concat.apply([], results); - } -} -function spanOf(ast) { - const start = ast.sourceSpan.start.offset; - let end = ast.sourceSpan.end.offset; - if (ast instanceof Element$1) { - if (ast.endSourceSpan) { - end = ast.endSourceSpan.end.offset; - } - else if (ast.children && ast.children.length) { - end = spanOf(ast.children[ast.children.length - 1]).end; - } - } - return { start, end }; -} -function findNode(nodes, position) { - const path = []; - const visitor = new class extends RecursiveVisitor$1 { - visit(ast, context) { - const span = spanOf(ast); - if (span.start <= position && position < span.end) { - path.push(ast); - } - else { - // Returning a value here will result in the children being skipped. - return true; - } - } - }; - visitAll$1(visitor, nodes); - return new AstPath(path, position); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -var TokenType; -(function (TokenType) { - TokenType[TokenType["TAG_OPEN_START"] = 0] = "TAG_OPEN_START"; - TokenType[TokenType["TAG_OPEN_END"] = 1] = "TAG_OPEN_END"; - TokenType[TokenType["TAG_OPEN_END_VOID"] = 2] = "TAG_OPEN_END_VOID"; - TokenType[TokenType["TAG_CLOSE"] = 3] = "TAG_CLOSE"; - TokenType[TokenType["TEXT"] = 4] = "TEXT"; - TokenType[TokenType["ESCAPABLE_RAW_TEXT"] = 5] = "ESCAPABLE_RAW_TEXT"; - TokenType[TokenType["RAW_TEXT"] = 6] = "RAW_TEXT"; - TokenType[TokenType["COMMENT_START"] = 7] = "COMMENT_START"; - TokenType[TokenType["COMMENT_END"] = 8] = "COMMENT_END"; - TokenType[TokenType["CDATA_START"] = 9] = "CDATA_START"; - TokenType[TokenType["CDATA_END"] = 10] = "CDATA_END"; - TokenType[TokenType["ATTR_NAME"] = 11] = "ATTR_NAME"; - TokenType[TokenType["ATTR_QUOTE"] = 12] = "ATTR_QUOTE"; - TokenType[TokenType["ATTR_VALUE"] = 13] = "ATTR_VALUE"; - TokenType[TokenType["DOC_TYPE"] = 14] = "DOC_TYPE"; - TokenType[TokenType["EXPANSION_FORM_START"] = 15] = "EXPANSION_FORM_START"; - TokenType[TokenType["EXPANSION_CASE_VALUE"] = 16] = "EXPANSION_CASE_VALUE"; - TokenType[TokenType["EXPANSION_CASE_EXP_START"] = 17] = "EXPANSION_CASE_EXP_START"; - TokenType[TokenType["EXPANSION_CASE_EXP_END"] = 18] = "EXPANSION_CASE_EXP_END"; - TokenType[TokenType["EXPANSION_FORM_END"] = 19] = "EXPANSION_FORM_END"; - TokenType[TokenType["EOF"] = 20] = "EOF"; -})(TokenType || (TokenType = {})); -class Token { - constructor(type, parts, sourceSpan) { - this.type = type; - this.parts = parts; - this.sourceSpan = sourceSpan; - } -} -class TokenError extends ParseError { - constructor(errorMsg, tokenType, span) { - super(span, errorMsg); - this.tokenType = tokenType; - } -} -class TokenizeResult { - constructor(tokens, errors) { - this.tokens = tokens; - this.errors = errors; - } -} -function tokenize(source, url, getTagDefinition, options = {}) { - return new _Tokenizer(new ParseSourceFile(source, url), getTagDefinition, options).tokenize(); -} -const _CR_OR_CRLF_REGEXP = /\r\n?/g; -function _unexpectedCharacterErrorMsg(charCode) { - const char = charCode === $EOF ? 'EOF' : String.fromCharCode(charCode); - return `Unexpected character "${char}"`; -} -function _unknownEntityErrorMsg(entitySrc) { - return `Unknown entity "${entitySrc}" - use the "&#;" or "&#x;" syntax`; -} -class _ControlFlowError { - constructor(error) { - this.error = error; - } -} -// See http://www.w3.org/TR/html51/syntax.html#writing -class _Tokenizer { - /** - * @param _file The html source file being tokenized. - * @param _getTagDefinition A function that will retrieve a tag definition for a given tag name. - * @param options Configuration of the tokenization. - */ - constructor(_file, _getTagDefinition, options) { - this._getTagDefinition = _getTagDefinition; - this._currentTokenStart = null; - this._currentTokenType = null; - this._expansionCaseStack = []; - this._inInterpolation = false; - this.tokens = []; - this.errors = []; - this._tokenizeIcu = options.tokenizeExpansionForms || false; - this._interpolationConfig = options.interpolationConfig || DEFAULT_INTERPOLATION_CONFIG; - this._leadingTriviaCodePoints = - options.leadingTriviaChars && options.leadingTriviaChars.map(c => c.codePointAt(0) || 0); - const range = options.range || { endPos: _file.content.length, startPos: 0, startLine: 0, startCol: 0 }; - this._cursor = options.escapedString ? new EscapedCharacterCursor(_file, range) : - new PlainCharacterCursor(_file, range); - try { - this._cursor.init(); - } - catch (e) { - this.handleError(e); - } - } - _processCarriageReturns(content) { - // http://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream - // In order to keep the original position in the source, we can not - // pre-process it. - // Instead CRs are processed right before instantiating the tokens. - return content.replace(_CR_OR_CRLF_REGEXP, '\n'); - } - tokenize() { - while (this._cursor.peek() !== $EOF) { - const start = this._cursor.clone(); - try { - if (this._attemptCharCode($LT)) { - if (this._attemptCharCode($BANG)) { - if (this._attemptCharCode($LBRACKET)) { - this._consumeCdata(start); - } - else if (this._attemptCharCode($MINUS)) { - this._consumeComment(start); - } - else { - this._consumeDocType(start); - } - } - else if (this._attemptCharCode($SLASH)) { - this._consumeTagClose(start); - } - else { - this._consumeTagOpen(start); - } - } - else if (!(this._tokenizeIcu && this._tokenizeExpansionForm())) { - this._consumeText(); - } - } - catch (e) { - this.handleError(e); - } - } - this._beginToken(TokenType.EOF); - this._endToken([]); - return new TokenizeResult(mergeTextTokens(this.tokens), this.errors); - } - /** - * @returns whether an ICU token has been created - * @internal - */ - _tokenizeExpansionForm() { - if (this.isExpansionFormStart()) { - this._consumeExpansionFormStart(); - return true; - } - if (isExpansionCaseStart(this._cursor.peek()) && this._isInExpansionForm()) { - this._consumeExpansionCaseStart(); - return true; - } - if (this._cursor.peek() === $RBRACE) { - if (this._isInExpansionCase()) { - this._consumeExpansionCaseEnd(); - return true; - } - if (this._isInExpansionForm()) { - this._consumeExpansionFormEnd(); - return true; - } - } - return false; - } - _beginToken(type, start = this._cursor.clone()) { - this._currentTokenStart = start; - this._currentTokenType = type; - } - _endToken(parts, end = this._cursor.clone()) { - if (this._currentTokenStart === null) { - throw new TokenError('Programming error - attempted to end a token when there was no start to the token', this._currentTokenType, this._cursor.getSpan(end)); - } - if (this._currentTokenType === null) { - throw new TokenError('Programming error - attempted to end a token which has no token type', null, this._cursor.getSpan(this._currentTokenStart)); - } - const token = new Token(this._currentTokenType, parts, this._cursor.getSpan(this._currentTokenStart, this._leadingTriviaCodePoints)); - this.tokens.push(token); - this._currentTokenStart = null; - this._currentTokenType = null; - return token; - } - _createError(msg, span) { - if (this._isInExpansionForm()) { - msg += ` (Do you have an unescaped "{" in your template? Use "{{ '{' }}") to escape it.)`; - } - const error = new TokenError(msg, this._currentTokenType, span); - this._currentTokenStart = null; - this._currentTokenType = null; - return new _ControlFlowError(error); - } - handleError(e) { - if (e instanceof CursorError) { - e = this._createError(e.msg, this._cursor.getSpan(e.cursor)); - } - if (e instanceof _ControlFlowError) { - this.errors.push(e.error); - } - else { - throw e; - } - } - _attemptCharCode(charCode) { - if (this._cursor.peek() === charCode) { - this._cursor.advance(); - return true; - } - return false; - } - _attemptCharCodeCaseInsensitive(charCode) { - if (compareCharCodeCaseInsensitive(this._cursor.peek(), charCode)) { - this._cursor.advance(); - return true; - } - return false; - } - _requireCharCode(charCode) { - const location = this._cursor.clone(); - if (!this._attemptCharCode(charCode)) { - throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(location)); - } - } - _attemptStr(chars) { - const len = chars.length; - if (this._cursor.charsLeft() < len) { - return false; - } - const initialPosition = this._cursor.clone(); - for (let i = 0; i < len; i++) { - if (!this._attemptCharCode(chars.charCodeAt(i))) { - // If attempting to parse the string fails, we want to reset the parser - // to where it was before the attempt - this._cursor = initialPosition; - return false; - } - } - return true; - } - _attemptStrCaseInsensitive(chars) { - for (let i = 0; i < chars.length; i++) { - if (!this._attemptCharCodeCaseInsensitive(chars.charCodeAt(i))) { - return false; - } - } - return true; - } - _requireStr(chars) { - const location = this._cursor.clone(); - if (!this._attemptStr(chars)) { - throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(location)); - } - } - _attemptCharCodeUntilFn(predicate) { - while (!predicate(this._cursor.peek())) { - this._cursor.advance(); - } - } - _requireCharCodeUntilFn(predicate, len) { - const start = this._cursor.clone(); - this._attemptCharCodeUntilFn(predicate); - const end = this._cursor.clone(); - if (end.diff(start) < len) { - throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(start)); - } - } - _attemptUntilChar(char) { - while (this._cursor.peek() !== char) { - this._cursor.advance(); - } - } - _readChar(decodeEntities) { - if (decodeEntities && this._cursor.peek() === $AMPERSAND) { - return this._decodeEntity(); - } - else { - // Don't rely upon reading directly from `_input` as the actual char value - // may have been generated from an escape sequence. - const char = String.fromCodePoint(this._cursor.peek()); - this._cursor.advance(); - return char; - } - } - _decodeEntity() { - const start = this._cursor.clone(); - this._cursor.advance(); - if (this._attemptCharCode($HASH)) { - const isHex = this._attemptCharCode($x) || this._attemptCharCode($X); - const codeStart = this._cursor.clone(); - this._attemptCharCodeUntilFn(isDigitEntityEnd); - if (this._cursor.peek() != $SEMICOLON) { - throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan()); - } - const strNum = this._cursor.getChars(codeStart); - this._cursor.advance(); - try { - const charCode = parseInt(strNum, isHex ? 16 : 10); - return String.fromCharCode(charCode); - } - catch (_a) { - throw this._createError(_unknownEntityErrorMsg(this._cursor.getChars(start)), this._cursor.getSpan()); - } - } - else { - const nameStart = this._cursor.clone(); - this._attemptCharCodeUntilFn(isNamedEntityEnd); - if (this._cursor.peek() != $SEMICOLON) { - this._cursor = nameStart; - return '&'; - } - const name = this._cursor.getChars(nameStart); - this._cursor.advance(); - const char = NAMED_ENTITIES[name]; - if (!char) { - throw this._createError(_unknownEntityErrorMsg(name), this._cursor.getSpan(start)); - } - return char; - } - } - _consumeRawText(decodeEntities, endMarkerPredicate) { - this._beginToken(decodeEntities ? TokenType.ESCAPABLE_RAW_TEXT : TokenType.RAW_TEXT); - const parts = []; - while (true) { - const tagCloseStart = this._cursor.clone(); - const foundEndMarker = endMarkerPredicate(); - this._cursor = tagCloseStart; - if (foundEndMarker) { - break; - } - parts.push(this._readChar(decodeEntities)); - } - return this._endToken([this._processCarriageReturns(parts.join(''))]); - } - _consumeComment(start) { - this._beginToken(TokenType.COMMENT_START, start); - this._requireCharCode($MINUS); - this._endToken([]); - this._consumeRawText(false, () => this._attemptStr('-->')); - this._beginToken(TokenType.COMMENT_END); - this._requireStr('-->'); - this._endToken([]); - } - _consumeCdata(start) { - this._beginToken(TokenType.CDATA_START, start); - this._requireStr('CDATA['); - this._endToken([]); - this._consumeRawText(false, () => this._attemptStr(']]>')); - this._beginToken(TokenType.CDATA_END); - this._requireStr(']]>'); - this._endToken([]); - } - _consumeDocType(start) { - this._beginToken(TokenType.DOC_TYPE, start); - const contentStart = this._cursor.clone(); - this._attemptUntilChar($GT); - const content = this._cursor.getChars(contentStart); - this._cursor.advance(); - this._endToken([content]); - } - _consumePrefixAndName() { - const nameOrPrefixStart = this._cursor.clone(); - let prefix = ''; - while (this._cursor.peek() !== $COLON && !isPrefixEnd(this._cursor.peek())) { - this._cursor.advance(); - } - let nameStart; - if (this._cursor.peek() === $COLON) { - prefix = this._cursor.getChars(nameOrPrefixStart); - this._cursor.advance(); - nameStart = this._cursor.clone(); - } - else { - nameStart = nameOrPrefixStart; - } - this._requireCharCodeUntilFn(isNameEnd, prefix === '' ? 0 : 1); - const name = this._cursor.getChars(nameStart); - return [prefix, name]; - } - _consumeTagOpen(start) { - let tagName; - let prefix; - let openTagToken; - let tokensBeforeTagOpen = this.tokens.length; - const innerStart = this._cursor.clone(); - try { - if (!isAsciiLetter(this._cursor.peek())) { - throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(start)); - } - openTagToken = this._consumeTagOpenStart(start); - prefix = openTagToken.parts[0]; - tagName = openTagToken.parts[1]; - this._attemptCharCodeUntilFn(isNotWhitespace); - while (this._cursor.peek() !== $SLASH && this._cursor.peek() !== $GT) { - this._consumeAttributeName(); - this._attemptCharCodeUntilFn(isNotWhitespace); - if (this._attemptCharCode($EQ)) { - this._attemptCharCodeUntilFn(isNotWhitespace); - this._consumeAttributeValue(); - } - this._attemptCharCodeUntilFn(isNotWhitespace); - } - this._consumeTagOpenEnd(); - } - catch (e) { - if (e instanceof _ControlFlowError) { - // When the start tag is invalid (including invalid "attributes"), assume we want a "<" - this._cursor = innerStart; - if (openTagToken) { - this.tokens.length = tokensBeforeTagOpen; - } - // Back to back text tokens are merged at the end - this._beginToken(TokenType.TEXT, start); - this._endToken(['<']); - return; - } - throw e; - } - const contentTokenType = this._getTagDefinition(tagName).contentType; - if (contentTokenType === TagContentType.RAW_TEXT) { - this._consumeRawTextWithTagClose(prefix, tagName, false); - } - else if (contentTokenType === TagContentType.ESCAPABLE_RAW_TEXT) { - this._consumeRawTextWithTagClose(prefix, tagName, true); - } - } - _consumeRawTextWithTagClose(prefix, tagName, decodeEntities) { - const textToken = this._consumeRawText(decodeEntities, () => { - if (!this._attemptCharCode($LT)) - return false; - if (!this._attemptCharCode($SLASH)) - return false; - this._attemptCharCodeUntilFn(isNotWhitespace); - if (!this._attemptStrCaseInsensitive(tagName)) - return false; - this._attemptCharCodeUntilFn(isNotWhitespace); - return this._attemptCharCode($GT); - }); - this._beginToken(TokenType.TAG_CLOSE); - this._requireCharCodeUntilFn(code => code === $GT, 3); - this._cursor.advance(); // Consume the `>` - this._endToken([prefix, tagName]); - } - _consumeTagOpenStart(start) { - this._beginToken(TokenType.TAG_OPEN_START, start); - const parts = this._consumePrefixAndName(); - return this._endToken(parts); - } - _consumeAttributeName() { - const attrNameStart = this._cursor.peek(); - if (attrNameStart === $SQ || attrNameStart === $DQ) { - throw this._createError(_unexpectedCharacterErrorMsg(attrNameStart), this._cursor.getSpan()); - } - this._beginToken(TokenType.ATTR_NAME); - const prefixAndName = this._consumePrefixAndName(); - this._endToken(prefixAndName); - } - _consumeAttributeValue() { - let value; - if (this._cursor.peek() === $SQ || this._cursor.peek() === $DQ) { - this._beginToken(TokenType.ATTR_QUOTE); - const quoteChar = this._cursor.peek(); - this._cursor.advance(); - this._endToken([String.fromCodePoint(quoteChar)]); - this._beginToken(TokenType.ATTR_VALUE); - const parts = []; - while (this._cursor.peek() !== quoteChar) { - parts.push(this._readChar(true)); - } - value = parts.join(''); - this._endToken([this._processCarriageReturns(value)]); - this._beginToken(TokenType.ATTR_QUOTE); - this._cursor.advance(); - this._endToken([String.fromCodePoint(quoteChar)]); - } - else { - this._beginToken(TokenType.ATTR_VALUE); - const valueStart = this._cursor.clone(); - this._requireCharCodeUntilFn(isNameEnd, 1); - value = this._cursor.getChars(valueStart); - this._endToken([this._processCarriageReturns(value)]); - } - } - _consumeTagOpenEnd() { - const tokenType = this._attemptCharCode($SLASH) ? TokenType.TAG_OPEN_END_VOID : TokenType.TAG_OPEN_END; - this._beginToken(tokenType); - this._requireCharCode($GT); - this._endToken([]); - } - _consumeTagClose(start) { - this._beginToken(TokenType.TAG_CLOSE, start); - this._attemptCharCodeUntilFn(isNotWhitespace); - const prefixAndName = this._consumePrefixAndName(); - this._attemptCharCodeUntilFn(isNotWhitespace); - this._requireCharCode($GT); - this._endToken(prefixAndName); - } - _consumeExpansionFormStart() { - this._beginToken(TokenType.EXPANSION_FORM_START); - this._requireCharCode($LBRACE); - this._endToken([]); - this._expansionCaseStack.push(TokenType.EXPANSION_FORM_START); - this._beginToken(TokenType.RAW_TEXT); - const condition = this._readUntil($COMMA); - this._endToken([condition]); - this._requireCharCode($COMMA); - this._attemptCharCodeUntilFn(isNotWhitespace); - this._beginToken(TokenType.RAW_TEXT); - const type = this._readUntil($COMMA); - this._endToken([type]); - this._requireCharCode($COMMA); - this._attemptCharCodeUntilFn(isNotWhitespace); - } - _consumeExpansionCaseStart() { - this._beginToken(TokenType.EXPANSION_CASE_VALUE); - const value = this._readUntil($LBRACE).trim(); - this._endToken([value]); - this._attemptCharCodeUntilFn(isNotWhitespace); - this._beginToken(TokenType.EXPANSION_CASE_EXP_START); - this._requireCharCode($LBRACE); - this._endToken([]); - this._attemptCharCodeUntilFn(isNotWhitespace); - this._expansionCaseStack.push(TokenType.EXPANSION_CASE_EXP_START); - } - _consumeExpansionCaseEnd() { - this._beginToken(TokenType.EXPANSION_CASE_EXP_END); - this._requireCharCode($RBRACE); - this._endToken([]); - this._attemptCharCodeUntilFn(isNotWhitespace); - this._expansionCaseStack.pop(); - } - _consumeExpansionFormEnd() { - this._beginToken(TokenType.EXPANSION_FORM_END); - this._requireCharCode($RBRACE); - this._endToken([]); - this._expansionCaseStack.pop(); - } - _consumeText() { - const start = this._cursor.clone(); - this._beginToken(TokenType.TEXT, start); - const parts = []; - do { - if (this._interpolationConfig && this._attemptStr(this._interpolationConfig.start)) { - parts.push(this._interpolationConfig.start); - this._inInterpolation = true; - } - else if (this._interpolationConfig && this._inInterpolation && - this._attemptStr(this._interpolationConfig.end)) { - parts.push(this._interpolationConfig.end); - this._inInterpolation = false; - } - else { - parts.push(this._readChar(true)); - } - } while (!this._isTextEnd()); - this._endToken([this._processCarriageReturns(parts.join(''))]); - } - _isTextEnd() { - if (this._cursor.peek() === $LT || this._cursor.peek() === $EOF) { - return true; - } - if (this._tokenizeIcu && !this._inInterpolation) { - if (this.isExpansionFormStart()) { - // start of an expansion form - return true; - } - if (this._cursor.peek() === $RBRACE && this._isInExpansionCase()) { - // end of and expansion case - return true; - } - } - return false; - } - _readUntil(char) { - const start = this._cursor.clone(); - this._attemptUntilChar(char); - return this._cursor.getChars(start); - } - _isInExpansionCase() { - return this._expansionCaseStack.length > 0 && - this._expansionCaseStack[this._expansionCaseStack.length - 1] === - TokenType.EXPANSION_CASE_EXP_START; - } - _isInExpansionForm() { - return this._expansionCaseStack.length > 0 && - this._expansionCaseStack[this._expansionCaseStack.length - 1] === - TokenType.EXPANSION_FORM_START; - } - isExpansionFormStart() { - if (this._cursor.peek() !== $LBRACE) { - return false; - } - if (this._interpolationConfig) { - const start = this._cursor.clone(); - const isInterpolation = this._attemptStr(this._interpolationConfig.start); - this._cursor = start; - return !isInterpolation; - } - return true; - } -} -function isNotWhitespace(code) { - return !isWhitespace(code) || code === $EOF; -} -function isNameEnd(code) { - return isWhitespace(code) || code === $GT || code === $SLASH || - code === $SQ || code === $DQ || code === $EQ; -} -function isPrefixEnd(code) { - return (code < $a || $z < code) && (code < $A || $Z < code) && - (code < $0 || code > $9); -} -function isDigitEntityEnd(code) { - return code == $SEMICOLON || code == $EOF || !isAsciiHexDigit(code); -} -function isNamedEntityEnd(code) { - return code == $SEMICOLON || code == $EOF || !isAsciiLetter(code); -} -function isExpansionCaseStart(peek) { - return peek === $EQ || isAsciiLetter(peek) || isDigit(peek); -} -function compareCharCodeCaseInsensitive(code1, code2) { - return toUpperCaseCharCode(code1) == toUpperCaseCharCode(code2); -} -function toUpperCaseCharCode(code) { - return code >= $a && code <= $z ? code - $a + $A : code; -} -function mergeTextTokens(srcTokens) { - const dstTokens = []; - let lastDstToken = undefined; - for (let i = 0; i < srcTokens.length; i++) { - const token = srcTokens[i]; - if (lastDstToken && lastDstToken.type == TokenType.TEXT && token.type == TokenType.TEXT) { - lastDstToken.parts[0] += token.parts[0]; - lastDstToken.sourceSpan.end = token.sourceSpan.end; - } - else { - lastDstToken = token; - dstTokens.push(lastDstToken); - } - } - return dstTokens; -} -class PlainCharacterCursor { - constructor(fileOrCursor, range) { - if (fileOrCursor instanceof PlainCharacterCursor) { - this.file = fileOrCursor.file; - this.input = fileOrCursor.input; - this.end = fileOrCursor.end; - this.state = Object.assign({}, fileOrCursor.state); - } - else { - if (!range) { - throw new Error('Programming error: the range argument must be provided with a file argument.'); - } - this.file = fileOrCursor; - this.input = fileOrCursor.content; - this.end = range.endPos; - this.state = { - peek: -1, - offset: range.startPos, - line: range.startLine, - column: range.startCol, - }; - } - } - clone() { return new PlainCharacterCursor(this); } - peek() { return this.state.peek; } - charsLeft() { return this.end - this.state.offset; } - diff(other) { return this.state.offset - other.state.offset; } - advance() { this.advanceState(this.state); } - init() { this.updatePeek(this.state); } - getSpan(start, leadingTriviaCodePoints) { - start = start || this; - if (leadingTriviaCodePoints) { - start = start.clone(); - while (this.diff(start) > 0 && leadingTriviaCodePoints.indexOf(start.peek()) !== -1) { - start.advance(); - } - } - return new ParseSourceSpan(new ParseLocation(start.file, start.state.offset, start.state.line, start.state.column), new ParseLocation(this.file, this.state.offset, this.state.line, this.state.column)); - } - getChars(start) { - return this.input.substring(start.state.offset, this.state.offset); - } - charAt(pos) { return this.input.charCodeAt(pos); } - advanceState(state) { - if (state.offset >= this.end) { - this.state = state; - throw new CursorError('Unexpected character "EOF"', this); - } - const currentChar = this.charAt(state.offset); - if (currentChar === $LF) { - state.line++; - state.column = 0; - } - else if (!isNewLine(currentChar)) { - state.column++; - } - state.offset++; - this.updatePeek(state); - } - updatePeek(state) { - state.peek = state.offset >= this.end ? $EOF : this.charAt(state.offset); - } -} -class EscapedCharacterCursor extends PlainCharacterCursor { - constructor(fileOrCursor, range) { - if (fileOrCursor instanceof EscapedCharacterCursor) { - super(fileOrCursor); - this.internalState = Object.assign({}, fileOrCursor.internalState); - } - else { - super(fileOrCursor, range); - this.internalState = this.state; - } - } - advance() { - this.state = this.internalState; - super.advance(); - this.processEscapeSequence(); - } - init() { - super.init(); - this.processEscapeSequence(); - } - clone() { return new EscapedCharacterCursor(this); } - getChars(start) { - const cursor = start.clone(); - let chars = ''; - while (cursor.internalState.offset < this.internalState.offset) { - chars += String.fromCodePoint(cursor.peek()); - cursor.advance(); - } - return chars; - } - /** - * Process the escape sequence that starts at the current position in the text. - * - * This method is called to ensure that `peek` has the unescaped value of escape sequences. - */ - processEscapeSequence() { - const peek = () => this.internalState.peek; - if (peek() === $BACKSLASH) { - // We have hit an escape sequence so we need the internal state to become independent - // of the external state. - this.internalState = Object.assign({}, this.state); - // Move past the backslash - this.advanceState(this.internalState); - // First check for standard control char sequences - if (peek() === $n) { - this.state.peek = $LF; - } - else if (peek() === $r) { - this.state.peek = $CR; - } - else if (peek() === $v) { - this.state.peek = $VTAB; - } - else if (peek() === $t) { - this.state.peek = $TAB; - } - else if (peek() === $b) { - this.state.peek = $BSPACE; - } - else if (peek() === $f) { - this.state.peek = $FF; - } - // Now consider more complex sequences - else if (peek() === $u) { - // Unicode code-point sequence - this.advanceState(this.internalState); // advance past the `u` char - if (peek() === $LBRACE) { - // Variable length Unicode, e.g. `\x{123}` - this.advanceState(this.internalState); // advance past the `{` char - // Advance past the variable number of hex digits until we hit a `}` char - const digitStart = this.clone(); - let length = 0; - while (peek() !== $RBRACE) { - this.advanceState(this.internalState); - length++; - } - this.state.peek = this.decodeHexDigits(digitStart, length); - } - else { - // Fixed length Unicode, e.g. `\u1234` - const digitStart = this.clone(); - this.advanceState(this.internalState); - this.advanceState(this.internalState); - this.advanceState(this.internalState); - this.state.peek = this.decodeHexDigits(digitStart, 4); - } - } - else if (peek() === $x) { - // Hex char code, e.g. `\x2F` - this.advanceState(this.internalState); // advance past the `x` char - const digitStart = this.clone(); - this.advanceState(this.internalState); - this.state.peek = this.decodeHexDigits(digitStart, 2); - } - else if (isOctalDigit(peek())) { - // Octal char code, e.g. `\012`, - let octal = ''; - let length = 0; - let previous = this.clone(); - while (isOctalDigit(peek()) && length < 3) { - previous = this.clone(); - octal += String.fromCodePoint(peek()); - this.advanceState(this.internalState); - length++; - } - this.state.peek = parseInt(octal, 8); - // Backup one char - this.internalState = previous.internalState; - } - else if (isNewLine(this.internalState.peek)) { - // Line continuation `\` followed by a new line - this.advanceState(this.internalState); // advance over the newline - this.state = this.internalState; - } - else { - // If none of the `if` blocks were executed then we just have an escaped normal character. - // In that case we just, effectively, skip the backslash from the character. - this.state.peek = this.internalState.peek; - } - } - } - decodeHexDigits(start, length) { - const hex = this.input.substr(start.internalState.offset, length); - const charCode = parseInt(hex, 16); - if (!isNaN(charCode)) { - return charCode; - } - else { - start.state = start.internalState; - throw new CursorError('Invalid hexadecimal escape sequence', start); - } - } -} -class CursorError { - constructor(msg, cursor) { - this.msg = msg; - this.cursor = cursor; - } -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class TreeError extends ParseError { - constructor(elementName, span, msg) { - super(span, msg); - this.elementName = elementName; - } - static create(elementName, span, msg) { - return new TreeError(elementName, span, msg); - } -} -class ParseTreeResult { - constructor(rootNodes, errors) { - this.rootNodes = rootNodes; - this.errors = errors; - } -} -class Parser { - constructor(getTagDefinition) { - this.getTagDefinition = getTagDefinition; - } - parse(source, url, options) { - const tokensAndErrors = tokenize(source, url, this.getTagDefinition, options); - const treeAndErrors = new _TreeBuilder(tokensAndErrors.tokens, this.getTagDefinition).build(); - return new ParseTreeResult(treeAndErrors.rootNodes, tokensAndErrors.errors.concat(treeAndErrors.errors)); - } -} -class _TreeBuilder { - constructor(tokens, getTagDefinition) { - this.tokens = tokens; - this.getTagDefinition = getTagDefinition; - this._index = -1; - this._rootNodes = []; - this._errors = []; - this._elementStack = []; - this._advance(); - } - build() { - while (this._peek.type !== TokenType.EOF) { - if (this._peek.type === TokenType.TAG_OPEN_START) { - this._consumeStartTag(this._advance()); - } - else if (this._peek.type === TokenType.TAG_CLOSE) { - this._consumeEndTag(this._advance()); - } - else if (this._peek.type === TokenType.CDATA_START) { - this._closeVoidElement(); - this._consumeCdata(this._advance()); - } - else if (this._peek.type === TokenType.COMMENT_START) { - this._closeVoidElement(); - this._consumeComment(this._advance()); - } - else if (this._peek.type === TokenType.TEXT || this._peek.type === TokenType.RAW_TEXT || - this._peek.type === TokenType.ESCAPABLE_RAW_TEXT) { - this._closeVoidElement(); - this._consumeText(this._advance()); - } - else if (this._peek.type === TokenType.EXPANSION_FORM_START) { - this._consumeExpansion(this._advance()); - } - else { - // Skip all other tokens... - this._advance(); - } - } - return new ParseTreeResult(this._rootNodes, this._errors); - } - _advance() { - const prev = this._peek; - if (this._index < this.tokens.length - 1) { - // Note: there is always an EOF token at the end - this._index++; - } - this._peek = this.tokens[this._index]; - return prev; - } - _advanceIf(type) { - if (this._peek.type === type) { - return this._advance(); - } - return null; - } - _consumeCdata(startToken) { - this._consumeText(this._advance()); - this._advanceIf(TokenType.CDATA_END); - } - _consumeComment(token) { - const text = this._advanceIf(TokenType.RAW_TEXT); - this._advanceIf(TokenType.COMMENT_END); - const value = text != null ? text.parts[0].trim() : null; - this._addToParent(new Comment(value, token.sourceSpan)); - } - _consumeExpansion(token) { - const switchValue = this._advance(); - const type = this._advance(); - const cases = []; - // read = - while (this._peek.type === TokenType.EXPANSION_CASE_VALUE) { - const expCase = this._parseExpansionCase(); - if (!expCase) - return; // error - cases.push(expCase); - } - // read the final } - if (this._peek.type !== TokenType.EXPANSION_FORM_END) { - this._errors.push(TreeError.create(null, this._peek.sourceSpan, `Invalid ICU message. Missing '}'.`)); - return; - } - const sourceSpan = new ParseSourceSpan(token.sourceSpan.start, this._peek.sourceSpan.end); - this._addToParent(new Expansion(switchValue.parts[0], type.parts[0], cases, sourceSpan, switchValue.sourceSpan)); - this._advance(); - } - _parseExpansionCase() { - const value = this._advance(); - // read { - if (this._peek.type !== TokenType.EXPANSION_CASE_EXP_START) { - this._errors.push(TreeError.create(null, this._peek.sourceSpan, `Invalid ICU message. Missing '{'.`)); - return null; - } - // read until } - const start = this._advance(); - const exp = this._collectExpansionExpTokens(start); - if (!exp) - return null; - const end = this._advance(); - exp.push(new Token(TokenType.EOF, [], end.sourceSpan)); - // parse everything in between { and } - const parsedExp = new _TreeBuilder(exp, this.getTagDefinition).build(); - if (parsedExp.errors.length > 0) { - this._errors = this._errors.concat(parsedExp.errors); - return null; - } - const sourceSpan = new ParseSourceSpan(value.sourceSpan.start, end.sourceSpan.end); - const expSourceSpan = new ParseSourceSpan(start.sourceSpan.start, end.sourceSpan.end); - return new ExpansionCase(value.parts[0], parsedExp.rootNodes, sourceSpan, value.sourceSpan, expSourceSpan); - } - _collectExpansionExpTokens(start) { - const exp = []; - const expansionFormStack = [TokenType.EXPANSION_CASE_EXP_START]; - while (true) { - if (this._peek.type === TokenType.EXPANSION_FORM_START || - this._peek.type === TokenType.EXPANSION_CASE_EXP_START) { - expansionFormStack.push(this._peek.type); - } - if (this._peek.type === TokenType.EXPANSION_CASE_EXP_END) { - if (lastOnStack(expansionFormStack, TokenType.EXPANSION_CASE_EXP_START)) { - expansionFormStack.pop(); - if (expansionFormStack.length == 0) - return exp; - } - else { - this._errors.push(TreeError.create(null, start.sourceSpan, `Invalid ICU message. Missing '}'.`)); - return null; - } - } - if (this._peek.type === TokenType.EXPANSION_FORM_END) { - if (lastOnStack(expansionFormStack, TokenType.EXPANSION_FORM_START)) { - expansionFormStack.pop(); - } - else { - this._errors.push(TreeError.create(null, start.sourceSpan, `Invalid ICU message. Missing '}'.`)); - return null; - } - } - if (this._peek.type === TokenType.EOF) { - this._errors.push(TreeError.create(null, start.sourceSpan, `Invalid ICU message. Missing '}'.`)); - return null; - } - exp.push(this._advance()); - } - } - _consumeText(token) { - let text = token.parts[0]; - if (text.length > 0 && text[0] == '\n') { - const parent = this._getParentElement(); - if (parent != null && parent.children.length == 0 && - this.getTagDefinition(parent.name).ignoreFirstLf) { - text = text.substring(1); - } - } - if (text.length > 0) { - this._addToParent(new Text$3(text, token.sourceSpan)); - } - } - _closeVoidElement() { - const el = this._getParentElement(); - if (el && this.getTagDefinition(el.name).isVoid) { - this._elementStack.pop(); - } - } - _consumeStartTag(startTagToken) { - const prefix = startTagToken.parts[0]; - const name = startTagToken.parts[1]; - const attrs = []; - while (this._peek.type === TokenType.ATTR_NAME) { - attrs.push(this._consumeAttr(this._advance())); - } - const fullName = this._getElementFullName(prefix, name, this._getParentElement()); - let selfClosing = false; - // Note: There could have been a tokenizer error - // so that we don't get a token for the end tag... - if (this._peek.type === TokenType.TAG_OPEN_END_VOID) { - this._advance(); - selfClosing = true; - const tagDef = this.getTagDefinition(fullName); - if (!(tagDef.canSelfClose || getNsPrefix(fullName) !== null || tagDef.isVoid)) { - this._errors.push(TreeError.create(fullName, startTagToken.sourceSpan, `Only void and foreign elements can be self closed "${startTagToken.parts[1]}"`)); - } - } - else if (this._peek.type === TokenType.TAG_OPEN_END) { - this._advance(); - selfClosing = false; - } - const end = this._peek.sourceSpan.start; - const span = new ParseSourceSpan(startTagToken.sourceSpan.start, end); - const el = new Element$1(fullName, attrs, [], span, span, undefined); - this._pushElement(el); - if (selfClosing) { - this._popElement(fullName); - el.endSourceSpan = span; - } - } - _pushElement(el) { - const parentEl = this._getParentElement(); - if (parentEl && this.getTagDefinition(parentEl.name).isClosedByChild(el.name)) { - this._elementStack.pop(); - } - this._addToParent(el); - this._elementStack.push(el); - } - _consumeEndTag(endTagToken) { - const fullName = this._getElementFullName(endTagToken.parts[0], endTagToken.parts[1], this._getParentElement()); - if (this._getParentElement()) { - this._getParentElement().endSourceSpan = endTagToken.sourceSpan; - } - if (this.getTagDefinition(fullName).isVoid) { - this._errors.push(TreeError.create(fullName, endTagToken.sourceSpan, `Void elements do not have end tags "${endTagToken.parts[1]}"`)); - } - else if (!this._popElement(fullName)) { - const errMsg = `Unexpected closing tag "${fullName}". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags`; - this._errors.push(TreeError.create(fullName, endTagToken.sourceSpan, errMsg)); - } - } - _popElement(fullName) { - for (let stackIndex = this._elementStack.length - 1; stackIndex >= 0; stackIndex--) { - const el = this._elementStack[stackIndex]; - if (el.name == fullName) { - this._elementStack.splice(stackIndex, this._elementStack.length - stackIndex); - return true; - } - if (!this.getTagDefinition(el.name).closedByParent) { - return false; - } - } - return false; - } - _consumeAttr(attrName) { - const fullName = mergeNsAndName(attrName.parts[0], attrName.parts[1]); - let end = attrName.sourceSpan.end; - let value = ''; - let valueSpan = undefined; - if (this._peek.type === TokenType.ATTR_QUOTE) { - this._advance(); - } - if (this._peek.type === TokenType.ATTR_VALUE) { - const valueToken = this._advance(); - value = valueToken.parts[0]; - end = valueToken.sourceSpan.end; - valueSpan = valueToken.sourceSpan; - } - if (this._peek.type === TokenType.ATTR_QUOTE) { - const quoteToken = this._advance(); - end = quoteToken.sourceSpan.end; - } - return new Attribute(fullName, value, new ParseSourceSpan(attrName.sourceSpan.start, end), valueSpan); - } - _getParentElement() { - return this._elementStack.length > 0 ? this._elementStack[this._elementStack.length - 1] : null; - } - /** - * Returns the parent in the DOM and the container. - * - * `` elements are skipped as they are not rendered as DOM element. - */ - _getParentElementSkippingContainers() { - let container = null; - for (let i = this._elementStack.length - 1; i >= 0; i--) { - if (!isNgContainer(this._elementStack[i].name)) { - return { parent: this._elementStack[i], container }; - } - container = this._elementStack[i]; - } - return { parent: null, container }; - } - _addToParent(node) { - const parent = this._getParentElement(); - if (parent != null) { - parent.children.push(node); - } - else { - this._rootNodes.push(node); - } - } - /** - * Insert a node between the parent and the container. - * When no container is given, the node is appended as a child of the parent. - * Also updates the element stack accordingly. - * - * @internal - */ - _insertBeforeContainer(parent, container, node) { - if (!container) { - this._addToParent(node); - this._elementStack.push(node); - } - else { - if (parent) { - // replace the container with the new node in the children - const index = parent.children.indexOf(container); - parent.children[index] = node; - } - else { - this._rootNodes.push(node); - } - node.children.push(container); - this._elementStack.splice(this._elementStack.indexOf(container), 0, node); - } - } - _getElementFullName(prefix, localName, parentElement) { - if (prefix === '') { - prefix = this.getTagDefinition(localName).implicitNamespacePrefix || ''; - if (prefix === '' && parentElement != null) { - prefix = getNsPrefix(parentElement.name); - } - } - return mergeNsAndName(prefix, localName); - } -} -function lastOnStack(stack, element) { - return stack.length > 0 && stack[stack.length - 1] === element; -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class HtmlParser extends Parser { - constructor() { super(getHtmlTagDefinition); } - parse(source, url, options) { - return super.parse(source, url, options); - } -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const PRESERVE_WS_ATTR_NAME = 'ngPreserveWhitespaces'; -const SKIP_WS_TRIM_TAGS = new Set(['pre', 'template', 'textarea', 'script', 'style']); -// Equivalent to \s with \u00a0 (non-breaking space) excluded. -// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp -const WS_CHARS = ' \f\n\r\t\v\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff'; -const NO_WS_REGEXP = new RegExp(`[^${WS_CHARS}]`); -const WS_REPLACE_REGEXP = new RegExp(`[${WS_CHARS}]{2,}`, 'g'); -function hasPreserveWhitespacesAttr(attrs) { - return attrs.some((attr) => attr.name === PRESERVE_WS_ATTR_NAME); -} -/** - * Angular Dart introduced &ngsp; as a placeholder for non-removable space, see: - * https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart#L25-L32 - * In Angular Dart &ngsp; is converted to the 0xE500 PUA (Private Use Areas) unicode character - * and later on replaced by a space. We are re-implementing the same idea here. - */ -function replaceNgsp(value) { - // lexer is replacing the &ngsp; pseudo-entity with NGSP_UNICODE - return value.replace(new RegExp(NGSP_UNICODE, 'g'), ' '); -} -/** - * This visitor can walk HTML parse tree and remove / trim text nodes using the following rules: - * - consider spaces, tabs and new lines as whitespace characters; - * - drop text nodes consisting of whitespace characters only; - * - for all other text nodes replace consecutive whitespace characters with one space; - * - convert &ngsp; pseudo-entity to a single space; - * - * Removal and trimming of whitespaces have positive performance impact (less code to generate - * while compiling templates, faster view creation). At the same time it can be "destructive" - * in some cases (whitespaces can influence layout). Because of the potential of breaking layout - * this visitor is not activated by default in Angular 5 and people need to explicitly opt-in for - * whitespace removal. The default option for whitespace removal will be revisited in Angular 6 - * and might be changed to "on" by default. - */ -class WhitespaceVisitor { - visitElement(element, context) { - if (SKIP_WS_TRIM_TAGS.has(element.name) || hasPreserveWhitespacesAttr(element.attrs)) { - // don't descent into elements where we need to preserve whitespaces - // but still visit all attributes to eliminate one used as a market to preserve WS - return new Element$1(element.name, visitAll$1(this, element.attrs), element.children, element.sourceSpan, element.startSourceSpan, element.endSourceSpan, element.i18n); - } - return new Element$1(element.name, element.attrs, visitAll$1(this, element.children), element.sourceSpan, element.startSourceSpan, element.endSourceSpan, element.i18n); - } - visitAttribute(attribute, context) { - return attribute.name !== PRESERVE_WS_ATTR_NAME ? attribute : null; - } - visitText(text, context) { - const isNotBlank = text.value.match(NO_WS_REGEXP); - if (isNotBlank) { - return new Text$3(replaceNgsp(text.value).replace(WS_REPLACE_REGEXP, ' '), text.sourceSpan, text.i18n); - } - return null; - } - visitComment(comment, context) { return comment; } - visitExpansion(expansion, context) { return expansion; } - visitExpansionCase(expansionCase, context) { return expansionCase; } -} -function removeWhitespaces(htmlAstWithErrors) { - return new ParseTreeResult(visitAll$1(new WhitespaceVisitor(), htmlAstWithErrors.rootNodes), htmlAstWithErrors.errors); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -// http://cldr.unicode.org/index/cldr-spec/plural-rules -const PLURAL_CASES = ['zero', 'one', 'two', 'few', 'many', 'other']; -/** - * Expands special forms into elements. - * - * For example, - * - * ``` - * { messages.length, plural, - * =0 {zero} - * =1 {one} - * other {more than one} - * } - * ``` - * - * will be expanded into - * - * ``` - * - * zero - * one - * more than one - * - * ``` - */ -function expandNodes(nodes) { - const expander = new _Expander(); - return new ExpansionResult(visitAll$1(expander, nodes), expander.isExpanded, expander.errors); -} -class ExpansionResult { - constructor(nodes, expanded, errors) { - this.nodes = nodes; - this.expanded = expanded; - this.errors = errors; - } -} -class ExpansionError extends ParseError { - constructor(span, errorMsg) { super(span, errorMsg); } -} -/** - * Expand expansion forms (plural, select) to directives - * - * @internal - */ -class _Expander { - constructor() { - this.isExpanded = false; - this.errors = []; - } - visitElement(element, context) { - return new Element$1(element.name, element.attrs, visitAll$1(this, element.children), element.sourceSpan, element.startSourceSpan, element.endSourceSpan); - } - visitAttribute(attribute, context) { return attribute; } - visitText(text, context) { return text; } - visitComment(comment, context) { return comment; } - visitExpansion(icu, context) { - this.isExpanded = true; - return icu.type == 'plural' ? _expandPluralForm(icu, this.errors) : - _expandDefaultForm(icu, this.errors); - } - visitExpansionCase(icuCase, context) { - throw new Error('Should not be reached'); - } -} -// Plural forms are expanded to `NgPlural` and `NgPluralCase`s -function _expandPluralForm(ast, errors) { - const children = ast.cases.map(c => { - if (PLURAL_CASES.indexOf(c.value) == -1 && !c.value.match(/^=\d+$/)) { - errors.push(new ExpansionError(c.valueSourceSpan, `Plural cases should be "=" or one of ${PLURAL_CASES.join(", ")}`)); - } - const expansionResult = expandNodes(c.expression); - errors.push(...expansionResult.errors); - return new Element$1(`ng-template`, [new Attribute('ngPluralCase', `${c.value}`, c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan); - }); - const switchAttr = new Attribute('[ngPlural]', ast.switchValue, ast.switchValueSourceSpan); - return new Element$1('ng-container', [switchAttr], children, ast.sourceSpan, ast.sourceSpan, ast.sourceSpan); -} -// ICU messages (excluding plural form) are expanded to `NgSwitch` and `NgSwitchCase`s -function _expandDefaultForm(ast, errors) { - const children = ast.cases.map(c => { - const expansionResult = expandNodes(c.expression); - errors.push(...expansionResult.errors); - if (c.value === 'other') { - // other is the default case when no values match - return new Element$1(`ng-template`, [new Attribute('ngSwitchDefault', '', c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan); - } - return new Element$1(`ng-template`, [new Attribute('ngSwitchCase', `${c.value}`, c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan); - }); - const switchAttr = new Attribute('[ngSwitch]', ast.switchValue, ast.switchValueSourceSpan); - return new Element$1('ng-container', [switchAttr], children, ast.sourceSpan, ast.sourceSpan, ast.sourceSpan); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -/** - * A segment of text within the template. - */ -class TextAst { - constructor(value, ngContentIndex, sourceSpan) { - this.value = value; - this.ngContentIndex = ngContentIndex; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { return visitor.visitText(this, context); } -} -/** - * A bound expression within the text of a template. - */ -class BoundTextAst { - constructor(value, ngContentIndex, sourceSpan) { - this.value = value; - this.ngContentIndex = ngContentIndex; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { - return visitor.visitBoundText(this, context); - } -} -/** - * A plain attribute on an element. - */ -class AttrAst { - constructor(name, value, sourceSpan) { - this.name = name; - this.value = value; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { return visitor.visitAttr(this, context); } -} -const BoundPropertyMapping = { - [4 /* Animation */]: 4 /* Animation */, - [1 /* Attribute */]: 1 /* Attribute */, - [2 /* Class */]: 2 /* Class */, - [0 /* Property */]: 0 /* Property */, - [3 /* Style */]: 3 /* Style */, -}; -/** - * A binding for an element property (e.g. `[property]="expression"`) or an animation trigger (e.g. - * `[@trigger]="stateExp"`) - */ -class BoundElementPropertyAst { - constructor(name, type, securityContext, value, unit, sourceSpan) { - this.name = name; - this.type = type; - this.securityContext = securityContext; - this.value = value; - this.unit = unit; - this.sourceSpan = sourceSpan; - this.isAnimation = this.type === 4 /* Animation */; - } - static fromBoundProperty(prop) { - const type = BoundPropertyMapping[prop.type]; - return new BoundElementPropertyAst(prop.name, type, prop.securityContext, prop.value, prop.unit, prop.sourceSpan); - } - visit(visitor, context) { - return visitor.visitElementProperty(this, context); - } -} -/** - * A binding for an element event (e.g. `(event)="handler()"`) or an animation trigger event (e.g. - * `(@trigger.phase)="callback($event)"`). - */ -class BoundEventAst { - constructor(name, target, phase, handler, sourceSpan, handlerSpan) { - this.name = name; - this.target = target; - this.phase = phase; - this.handler = handler; - this.sourceSpan = sourceSpan; - this.handlerSpan = handlerSpan; - this.fullName = BoundEventAst.calcFullName(this.name, this.target, this.phase); - this.isAnimation = !!this.phase; - } - static calcFullName(name, target, phase) { - if (target) { - return `${target}:${name}`; - } - if (phase) { - return `@${name}.${phase}`; - } - return name; - } - static fromParsedEvent(event) { - const target = event.type === 0 /* Regular */ ? event.targetOrPhase : null; - const phase = event.type === 1 /* Animation */ ? event.targetOrPhase : null; - return new BoundEventAst(event.name, target, phase, event.handler, event.sourceSpan, event.handlerSpan); - } - visit(visitor, context) { - return visitor.visitEvent(this, context); - } -} -/** - * A reference declaration on an element (e.g. `let someName="expression"`). - */ -class ReferenceAst { - constructor(name, value, originalValue, sourceSpan) { - this.name = name; - this.value = value; - this.originalValue = originalValue; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { - return visitor.visitReference(this, context); - } -} -/** - * A variable declaration on a (e.g. `var-someName="someLocalName"`). - */ -class VariableAst { - constructor(name, value, sourceSpan) { - this.name = name; - this.value = value; - this.sourceSpan = sourceSpan; - } - static fromParsedVariable(v) { - return new VariableAst(v.name, v.value, v.sourceSpan); - } - visit(visitor, context) { - return visitor.visitVariable(this, context); - } -} -/** - * An element declaration in a template. - */ -class ElementAst { - constructor(name, attrs, inputs, outputs, references, directives, providers, hasViewContainer, queryMatches, children, ngContentIndex, sourceSpan, endSourceSpan) { - this.name = name; - this.attrs = attrs; - this.inputs = inputs; - this.outputs = outputs; - this.references = references; - this.directives = directives; - this.providers = providers; - this.hasViewContainer = hasViewContainer; - this.queryMatches = queryMatches; - this.children = children; - this.ngContentIndex = ngContentIndex; - this.sourceSpan = sourceSpan; - this.endSourceSpan = endSourceSpan; - } - visit(visitor, context) { - return visitor.visitElement(this, context); - } -} -/** - * A `` element included in an Angular template. - */ -class EmbeddedTemplateAst { - constructor(attrs, outputs, references, variables, directives, providers, hasViewContainer, queryMatches, children, ngContentIndex, sourceSpan) { - this.attrs = attrs; - this.outputs = outputs; - this.references = references; - this.variables = variables; - this.directives = directives; - this.providers = providers; - this.hasViewContainer = hasViewContainer; - this.queryMatches = queryMatches; - this.children = children; - this.ngContentIndex = ngContentIndex; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { - return visitor.visitEmbeddedTemplate(this, context); - } -} -/** - * A directive property with a bound value (e.g. `*ngIf="condition"). - */ -class BoundDirectivePropertyAst { - constructor(directiveName, templateName, value, sourceSpan) { - this.directiveName = directiveName; - this.templateName = templateName; - this.value = value; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { - return visitor.visitDirectiveProperty(this, context); - } -} -/** - * A directive declared on an element. - */ -class DirectiveAst { - constructor(directive, inputs, hostProperties, hostEvents, contentQueryStartId, sourceSpan) { - this.directive = directive; - this.inputs = inputs; - this.hostProperties = hostProperties; - this.hostEvents = hostEvents; - this.contentQueryStartId = contentQueryStartId; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { - return visitor.visitDirective(this, context); - } -} -/** - * A provider declared on an element - */ -class ProviderAst { - constructor(token, multiProvider, eager, providers, providerType, lifecycleHooks, sourceSpan, isModule) { - this.token = token; - this.multiProvider = multiProvider; - this.eager = eager; - this.providers = providers; - this.providerType = providerType; - this.lifecycleHooks = lifecycleHooks; - this.sourceSpan = sourceSpan; - this.isModule = isModule; - } - visit(visitor, context) { - // No visit method in the visitor for now... - return null; - } -} -var ProviderAstType; -(function (ProviderAstType) { - ProviderAstType[ProviderAstType["PublicService"] = 0] = "PublicService"; - ProviderAstType[ProviderAstType["PrivateService"] = 1] = "PrivateService"; - ProviderAstType[ProviderAstType["Component"] = 2] = "Component"; - ProviderAstType[ProviderAstType["Directive"] = 3] = "Directive"; - ProviderAstType[ProviderAstType["Builtin"] = 4] = "Builtin"; -})(ProviderAstType || (ProviderAstType = {})); -/** - * Position where content is to be projected (instance of `` in a template). - */ -class NgContentAst { - constructor(index, ngContentIndex, sourceSpan) { - this.index = index; - this.ngContentIndex = ngContentIndex; - this.sourceSpan = sourceSpan; - } - visit(visitor, context) { - return visitor.visitNgContent(this, context); - } -} -/** - * A visitor that accepts each node but doesn't do anything. It is intended to be used - * as the base class for a visitor that is only interested in a subset of the node types. - */ -class NullTemplateVisitor { - visitNgContent(ast, context) { } - visitEmbeddedTemplate(ast, context) { } - visitElement(ast, context) { } - visitReference(ast, context) { } - visitVariable(ast, context) { } - visitEvent(ast, context) { } - visitElementProperty(ast, context) { } - visitAttr(ast, context) { } - visitBoundText(ast, context) { } - visitText(ast, context) { } - visitDirective(ast, context) { } - visitDirectiveProperty(ast, context) { } -} -/** - * Base class that can be used to build a visitor that visits each node - * in an template ast recursively. - */ -class RecursiveTemplateAstVisitor extends NullTemplateVisitor { - constructor() { super(); } - // Nodes with children - visitEmbeddedTemplate(ast, context) { - return this.visitChildren(context, visit => { - visit(ast.attrs); - visit(ast.references); - visit(ast.variables); - visit(ast.directives); - visit(ast.providers); - visit(ast.children); - }); - } - visitElement(ast, context) { - return this.visitChildren(context, visit => { - visit(ast.attrs); - visit(ast.inputs); - visit(ast.outputs); - visit(ast.references); - visit(ast.directives); - visit(ast.providers); - visit(ast.children); - }); - } - visitDirective(ast, context) { - return this.visitChildren(context, visit => { - visit(ast.inputs); - visit(ast.hostProperties); - visit(ast.hostEvents); - }); - } - visitChildren(context, cb) { - let results = []; - let t = this; - function visit(children) { - if (children && children.length) - results.push(templateVisitAll(t, children, context)); - } - cb(visit); - return Array.prototype.concat.apply([], results); - } -} -/** - * Visit every node in a list of {@link TemplateAst}s with the given {@link TemplateAstVisitor}. - */ -function templateVisitAll(visitor, asts, context = null) { - const result = []; - const visit = visitor.visit ? - (ast) => visitor.visit(ast, context) || ast.visit(visitor, context) : - (ast) => ast.visit(visitor, context); - asts.forEach(ast => { - const astResult = visit(ast); - if (astResult) { - result.push(astResult); - } - }); - return result; -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class ProviderError extends ParseError { - constructor(message, span) { super(span, message); } -} -class ProviderViewContext { - constructor(reflector, component) { - this.reflector = reflector; - this.component = component; - this.errors = []; - this.viewQueries = _getViewQueries(component); - this.viewProviders = new Map(); - component.viewProviders.forEach((provider) => { - if (this.viewProviders.get(tokenReference(provider.token)) == null) { - this.viewProviders.set(tokenReference(provider.token), true); - } - }); - } -} -class ProviderElementContext { - constructor(viewContext, _parent, _isViewRoot, _directiveAsts, attrs, refs, isTemplate, contentQueryStartId, _sourceSpan) { - this.viewContext = viewContext; - this._parent = _parent; - this._isViewRoot = _isViewRoot; - this._directiveAsts = _directiveAsts; - this._sourceSpan = _sourceSpan; - this._transformedProviders = new Map(); - this._seenProviders = new Map(); - this._queriedTokens = new Map(); - this.transformedHasViewContainer = false; - this._attrs = {}; - attrs.forEach((attrAst) => this._attrs[attrAst.name] = attrAst.value); - const directivesMeta = _directiveAsts.map(directiveAst => directiveAst.directive); - this._allProviders = - _resolveProvidersFromDirectives(directivesMeta, _sourceSpan, viewContext.errors); - this._contentQueries = _getContentQueries(contentQueryStartId, directivesMeta); - Array.from(this._allProviders.values()).forEach((provider) => { - this._addQueryReadsTo(provider.token, provider.token, this._queriedTokens); - }); - if (isTemplate) { - const templateRefId = createTokenForExternalReference(this.viewContext.reflector, Identifiers.TemplateRef); - this._addQueryReadsTo(templateRefId, templateRefId, this._queriedTokens); - } - refs.forEach((refAst) => { - let defaultQueryValue = refAst.value || - createTokenForExternalReference(this.viewContext.reflector, Identifiers.ElementRef); - this._addQueryReadsTo({ value: refAst.name }, defaultQueryValue, this._queriedTokens); - }); - if (this._queriedTokens.get(this.viewContext.reflector.resolveExternalReference(Identifiers.ViewContainerRef))) { - this.transformedHasViewContainer = true; - } - // create the providers that we know are eager first - Array.from(this._allProviders.values()).forEach((provider) => { - const eager = provider.eager || this._queriedTokens.get(tokenReference(provider.token)); - if (eager) { - this._getOrCreateLocalProvider(provider.providerType, provider.token, true); - } - }); - } - afterElement() { - // collect lazy providers - Array.from(this._allProviders.values()).forEach((provider) => { - this._getOrCreateLocalProvider(provider.providerType, provider.token, false); - }); - } - get transformProviders() { - // Note: Maps keep their insertion order. - const lazyProviders = []; - const eagerProviders = []; - this._transformedProviders.forEach(provider => { - if (provider.eager) { - eagerProviders.push(provider); - } - else { - lazyProviders.push(provider); - } - }); - return lazyProviders.concat(eagerProviders); - } - get transformedDirectiveAsts() { - const sortedProviderTypes = this.transformProviders.map(provider => provider.token.identifier); - const sortedDirectives = this._directiveAsts.slice(); - sortedDirectives.sort((dir1, dir2) => sortedProviderTypes.indexOf(dir1.directive.type) - - sortedProviderTypes.indexOf(dir2.directive.type)); - return sortedDirectives; - } - get queryMatches() { - const allMatches = []; - this._queriedTokens.forEach((matches) => { allMatches.push(...matches); }); - return allMatches; - } - _addQueryReadsTo(token, defaultValue, queryReadTokens) { - this._getQueriesFor(token).forEach((query) => { - const queryValue = query.meta.read || defaultValue; - const tokenRef = tokenReference(queryValue); - let queryMatches = queryReadTokens.get(tokenRef); - if (!queryMatches) { - queryMatches = []; - queryReadTokens.set(tokenRef, queryMatches); - } - queryMatches.push({ queryId: query.queryId, value: queryValue }); - }); - } - _getQueriesFor(token) { - const result = []; - let currentEl = this; - let distance = 0; - let queries; - while (currentEl !== null) { - queries = currentEl._contentQueries.get(tokenReference(token)); - if (queries) { - result.push(...queries.filter((query) => query.meta.descendants || distance <= 1)); - } - if (currentEl._directiveAsts.length > 0) { - distance++; - } - currentEl = currentEl._parent; - } - queries = this.viewContext.viewQueries.get(tokenReference(token)); - if (queries) { - result.push(...queries); - } - return result; - } - _getOrCreateLocalProvider(requestingProviderType, token, eager) { - const resolvedProvider = this._allProviders.get(tokenReference(token)); - if (!resolvedProvider || ((requestingProviderType === ProviderAstType.Directive || - requestingProviderType === ProviderAstType.PublicService) && - resolvedProvider.providerType === ProviderAstType.PrivateService) || - ((requestingProviderType === ProviderAstType.PrivateService || - requestingProviderType === ProviderAstType.PublicService) && - resolvedProvider.providerType === ProviderAstType.Builtin)) { - return null; - } - let transformedProviderAst = this._transformedProviders.get(tokenReference(token)); - if (transformedProviderAst) { - return transformedProviderAst; - } - if (this._seenProviders.get(tokenReference(token)) != null) { - this.viewContext.errors.push(new ProviderError(`Cannot instantiate cyclic dependency! ${tokenName(token)}`, this._sourceSpan)); - return null; - } - this._seenProviders.set(tokenReference(token), true); - const transformedProviders = resolvedProvider.providers.map((provider) => { - let transformedUseValue = provider.useValue; - let transformedUseExisting = provider.useExisting; - let transformedDeps = undefined; - if (provider.useExisting != null) { - const existingDiDep = this._getDependency(resolvedProvider.providerType, { token: provider.useExisting }, eager); - if (existingDiDep.token != null) { - transformedUseExisting = existingDiDep.token; - } - else { - transformedUseExisting = null; - transformedUseValue = existingDiDep.value; - } - } - else if (provider.useFactory) { - const deps = provider.deps || provider.useFactory.diDeps; - transformedDeps = - deps.map((dep) => this._getDependency(resolvedProvider.providerType, dep, eager)); - } - else if (provider.useClass) { - const deps = provider.deps || provider.useClass.diDeps; - transformedDeps = - deps.map((dep) => this._getDependency(resolvedProvider.providerType, dep, eager)); - } - return _transformProvider(provider, { - useExisting: transformedUseExisting, - useValue: transformedUseValue, - deps: transformedDeps - }); - }); - transformedProviderAst = - _transformProviderAst(resolvedProvider, { eager: eager, providers: transformedProviders }); - this._transformedProviders.set(tokenReference(token), transformedProviderAst); - return transformedProviderAst; - } - _getLocalDependency(requestingProviderType, dep, eager = false) { - if (dep.isAttribute) { - const attrValue = this._attrs[dep.token.value]; - return { isValue: true, value: attrValue == null ? null : attrValue }; - } - if (dep.token != null) { - // access builtints - if ((requestingProviderType === ProviderAstType.Directive || - requestingProviderType === ProviderAstType.Component)) { - if (tokenReference(dep.token) === - this.viewContext.reflector.resolveExternalReference(Identifiers.Renderer) || - tokenReference(dep.token) === - this.viewContext.reflector.resolveExternalReference(Identifiers.ElementRef) || - tokenReference(dep.token) === - this.viewContext.reflector.resolveExternalReference(Identifiers.ChangeDetectorRef) || - tokenReference(dep.token) === - this.viewContext.reflector.resolveExternalReference(Identifiers.TemplateRef)) { - return dep; - } - if (tokenReference(dep.token) === - this.viewContext.reflector.resolveExternalReference(Identifiers.ViewContainerRef)) { - this.transformedHasViewContainer = true; - } - } - // access the injector - if (tokenReference(dep.token) === - this.viewContext.reflector.resolveExternalReference(Identifiers.Injector)) { - return dep; - } - // access providers - if (this._getOrCreateLocalProvider(requestingProviderType, dep.token, eager) != null) { - return dep; - } - } - return null; - } - _getDependency(requestingProviderType, dep, eager = false) { - let currElement = this; - let currEager = eager; - let result = null; - if (!dep.isSkipSelf) { - result = this._getLocalDependency(requestingProviderType, dep, eager); - } - if (dep.isSelf) { - if (!result && dep.isOptional) { - result = { isValue: true, value: null }; - } - } - else { - // check parent elements - while (!result && currElement._parent) { - const prevElement = currElement; - currElement = currElement._parent; - if (prevElement._isViewRoot) { - currEager = false; - } - result = currElement._getLocalDependency(ProviderAstType.PublicService, dep, currEager); - } - // check @Host restriction - if (!result) { - if (!dep.isHost || this.viewContext.component.isHost || - this.viewContext.component.type.reference === tokenReference(dep.token) || - this.viewContext.viewProviders.get(tokenReference(dep.token)) != null) { - result = dep; - } - else { - result = dep.isOptional ? { isValue: true, value: null } : null; - } - } - } - if (!result) { - this.viewContext.errors.push(new ProviderError(`No provider for ${tokenName(dep.token)}`, this._sourceSpan)); - } - return result; - } -} -class NgModuleProviderAnalyzer { - constructor(reflector, ngModule, extraProviders, sourceSpan) { - this.reflector = reflector; - this._transformedProviders = new Map(); - this._seenProviders = new Map(); - this._errors = []; - this._allProviders = new Map(); - ngModule.transitiveModule.modules.forEach((ngModuleType) => { - const ngModuleProvider = { token: { identifier: ngModuleType }, useClass: ngModuleType }; - _resolveProviders([ngModuleProvider], ProviderAstType.PublicService, true, sourceSpan, this._errors, this._allProviders, /* isModule */ true); - }); - _resolveProviders(ngModule.transitiveModule.providers.map(entry => entry.provider).concat(extraProviders), ProviderAstType.PublicService, false, sourceSpan, this._errors, this._allProviders, - /* isModule */ false); - } - parse() { - Array.from(this._allProviders.values()).forEach((provider) => { - this._getOrCreateLocalProvider(provider.token, provider.eager); - }); - if (this._errors.length > 0) { - const errorString = this._errors.join('\n'); - throw new Error(`Provider parse errors:\n${errorString}`); - } - // Note: Maps keep their insertion order. - const lazyProviders = []; - const eagerProviders = []; - this._transformedProviders.forEach(provider => { - if (provider.eager) { - eagerProviders.push(provider); - } - else { - lazyProviders.push(provider); - } - }); - return lazyProviders.concat(eagerProviders); - } - _getOrCreateLocalProvider(token, eager) { - const resolvedProvider = this._allProviders.get(tokenReference(token)); - if (!resolvedProvider) { - return null; - } - let transformedProviderAst = this._transformedProviders.get(tokenReference(token)); - if (transformedProviderAst) { - return transformedProviderAst; - } - if (this._seenProviders.get(tokenReference(token)) != null) { - this._errors.push(new ProviderError(`Cannot instantiate cyclic dependency! ${tokenName(token)}`, resolvedProvider.sourceSpan)); - return null; - } - this._seenProviders.set(tokenReference(token), true); - const transformedProviders = resolvedProvider.providers.map((provider) => { - let transformedUseValue = provider.useValue; - let transformedUseExisting = provider.useExisting; - let transformedDeps = undefined; - if (provider.useExisting != null) { - const existingDiDep = this._getDependency({ token: provider.useExisting }, eager, resolvedProvider.sourceSpan); - if (existingDiDep.token != null) { - transformedUseExisting = existingDiDep.token; - } - else { - transformedUseExisting = null; - transformedUseValue = existingDiDep.value; - } - } - else if (provider.useFactory) { - const deps = provider.deps || provider.useFactory.diDeps; - transformedDeps = - deps.map((dep) => this._getDependency(dep, eager, resolvedProvider.sourceSpan)); - } - else if (provider.useClass) { - const deps = provider.deps || provider.useClass.diDeps; - transformedDeps = - deps.map((dep) => this._getDependency(dep, eager, resolvedProvider.sourceSpan)); - } - return _transformProvider(provider, { - useExisting: transformedUseExisting, - useValue: transformedUseValue, - deps: transformedDeps - }); - }); - transformedProviderAst = - _transformProviderAst(resolvedProvider, { eager: eager, providers: transformedProviders }); - this._transformedProviders.set(tokenReference(token), transformedProviderAst); - return transformedProviderAst; - } - _getDependency(dep, eager = false, requestorSourceSpan) { - let foundLocal = false; - if (!dep.isSkipSelf && dep.token != null) { - // access the injector - if (tokenReference(dep.token) === - this.reflector.resolveExternalReference(Identifiers.Injector) || - tokenReference(dep.token) === - this.reflector.resolveExternalReference(Identifiers.ComponentFactoryResolver)) { - foundLocal = true; - // access providers - } - else if (this._getOrCreateLocalProvider(dep.token, eager) != null) { - foundLocal = true; - } - } - return dep; - } -} -function _transformProvider(provider, { useExisting, useValue, deps }) { - return { - token: provider.token, - useClass: provider.useClass, - useExisting: useExisting, - useFactory: provider.useFactory, - useValue: useValue, - deps: deps, - multi: provider.multi - }; -} -function _transformProviderAst(provider, { eager, providers }) { - return new ProviderAst(provider.token, provider.multiProvider, provider.eager || eager, providers, provider.providerType, provider.lifecycleHooks, provider.sourceSpan, provider.isModule); -} -function _resolveProvidersFromDirectives(directives, sourceSpan, targetErrors) { - const providersByToken = new Map(); - directives.forEach((directive) => { - const dirProvider = { token: { identifier: directive.type }, useClass: directive.type }; - _resolveProviders([dirProvider], directive.isComponent ? ProviderAstType.Component : ProviderAstType.Directive, true, sourceSpan, targetErrors, providersByToken, /* isModule */ false); - }); - // Note: directives need to be able to overwrite providers of a component! - const directivesWithComponentFirst = directives.filter(dir => dir.isComponent).concat(directives.filter(dir => !dir.isComponent)); - directivesWithComponentFirst.forEach((directive) => { - _resolveProviders(directive.providers, ProviderAstType.PublicService, false, sourceSpan, targetErrors, providersByToken, /* isModule */ false); - _resolveProviders(directive.viewProviders, ProviderAstType.PrivateService, false, sourceSpan, targetErrors, providersByToken, /* isModule */ false); - }); - return providersByToken; -} -function _resolveProviders(providers, providerType, eager, sourceSpan, targetErrors, targetProvidersByToken, isModule) { - providers.forEach((provider) => { - let resolvedProvider = targetProvidersByToken.get(tokenReference(provider.token)); - if (resolvedProvider != null && !!resolvedProvider.multiProvider !== !!provider.multi) { - targetErrors.push(new ProviderError(`Mixing multi and non multi provider is not possible for token ${tokenName(resolvedProvider.token)}`, sourceSpan)); - } - if (!resolvedProvider) { - const lifecycleHooks = provider.token.identifier && - provider.token.identifier.lifecycleHooks ? - provider.token.identifier.lifecycleHooks : - []; - const isUseValue = !(provider.useClass || provider.useExisting || provider.useFactory); - resolvedProvider = new ProviderAst(provider.token, !!provider.multi, eager || isUseValue, [provider], providerType, lifecycleHooks, sourceSpan, isModule); - targetProvidersByToken.set(tokenReference(provider.token), resolvedProvider); - } - else { - if (!provider.multi) { - resolvedProvider.providers.length = 0; - } - resolvedProvider.providers.push(provider); - } - }); -} -function _getViewQueries(component) { - // Note: queries start with id 1 so we can use the number in a Bloom filter! - let viewQueryId = 1; - const viewQueries = new Map(); - if (component.viewQueries) { - component.viewQueries.forEach((query) => _addQueryToTokenMap(viewQueries, { meta: query, queryId: viewQueryId++ })); - } - return viewQueries; -} -function _getContentQueries(contentQueryStartId, directives) { - let contentQueryId = contentQueryStartId; - const contentQueries = new Map(); - directives.forEach((directive, directiveIndex) => { - if (directive.queries) { - directive.queries.forEach((query) => _addQueryToTokenMap(contentQueries, { meta: query, queryId: contentQueryId++ })); - } - }); - return contentQueries; -} -function _addQueryToTokenMap(map, query) { - query.meta.selectors.forEach((token) => { - let entry = map.get(tokenReference(token)); - if (!entry) { - entry = []; - map.set(tokenReference(token), entry); - } - entry.push(query); - }); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -class StyleWithImports { - constructor(style, styleUrls) { - this.style = style; - this.styleUrls = styleUrls; - } -} -function isStyleUrlResolvable(url) { - if (url == null || url.length === 0 || url[0] == '/') - return false; - const schemeMatch = url.match(URL_WITH_SCHEMA_REGEXP); - return schemeMatch === null || schemeMatch[1] == 'package' || schemeMatch[1] == 'asset'; -} -/** - * Rewrites stylesheets by resolving and removing the @import urls that - * are either relative or don't have a `package:` scheme - */ -function extractStyleUrls(resolver, baseUrl, cssText) { - const foundUrls = []; - const modifiedCssText = cssText.replace(CSS_STRIPPABLE_COMMENT_REGEXP, '') - .replace(CSS_IMPORT_REGEXP, (...m) => { - const url = m[1] || m[2]; - if (!isStyleUrlResolvable(url)) { - // Do not attempt to resolve non-package absolute URLs with URI - // scheme - return m[0]; - } - foundUrls.push(resolver.resolve(baseUrl, url)); - return ''; - }); - return new StyleWithImports(modifiedCssText, foundUrls); -} -const CSS_IMPORT_REGEXP = /@import\s+(?:url\()?\s*(?:(?:['"]([^'"]*))|([^;\)\s]*))[^;]*;?/g; -const CSS_STRIPPABLE_COMMENT_REGEXP = /\/\*(?!#\s*(?:sourceURL|sourceMappingURL)=)[\s\S]+?\*\//g; -const URL_WITH_SCHEMA_REGEXP = /^([^:/?#]+):/; - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const PROPERTY_PARTS_SEPARATOR = '.'; -const ATTRIBUTE_PREFIX = 'attr'; -const CLASS_PREFIX = 'class'; -const STYLE_PREFIX = 'style'; -const ANIMATE_PROP_PREFIX = 'animate-'; -/** - * Parses bindings in templates and in the directive host area. - */ -class BindingParser { - constructor(_exprParser, _interpolationConfig, _schemaRegistry, pipes, errors) { - this._exprParser = _exprParser; - this._interpolationConfig = _interpolationConfig; - this._schemaRegistry = _schemaRegistry; - this.errors = errors; - this.pipesByName = null; - this._usedPipes = new Map(); - // When the `pipes` parameter is `null`, do not check for used pipes - // This is used in IVY when we might not know the available pipes at compile time - if (pipes) { - const pipesByName = new Map(); - pipes.forEach(pipe => pipesByName.set(pipe.name, pipe)); - this.pipesByName = pipesByName; - } - } - get interpolationConfig() { return this._interpolationConfig; } - getUsedPipes() { return Array.from(this._usedPipes.values()); } - createBoundHostProperties(dirMeta, sourceSpan) { - if (dirMeta.hostProperties) { - const boundProps = []; - Object.keys(dirMeta.hostProperties).forEach(propName => { - const expression = dirMeta.hostProperties[propName]; - if (typeof expression === 'string') { - this.parsePropertyBinding(propName, expression, true, sourceSpan, sourceSpan.start.offset, undefined, [], boundProps); - } - else { - this._reportError(`Value of the host property binding "${propName}" needs to be a string representing an expression but got "${expression}" (${typeof expression})`, sourceSpan); - } - }); - return boundProps; - } - return null; - } - createDirectiveHostPropertyAsts(dirMeta, elementSelector, sourceSpan) { - const boundProps = this.createBoundHostProperties(dirMeta, sourceSpan); - return boundProps && - boundProps.map((prop) => this.createBoundElementProperty(elementSelector, prop)); - } - createDirectiveHostEventAsts(dirMeta, sourceSpan) { - if (dirMeta.hostListeners) { - const targetEvents = []; - Object.keys(dirMeta.hostListeners).forEach(propName => { - const expression = dirMeta.hostListeners[propName]; - if (typeof expression === 'string') { - // TODO: pass a more accurate handlerSpan for this event. - this.parseEvent(propName, expression, sourceSpan, sourceSpan, [], targetEvents); - } - else { - this._reportError(`Value of the host listener "${propName}" needs to be a string representing an expression but got "${expression}" (${typeof expression})`, sourceSpan); - } - }); - return targetEvents; - } - return null; - } - parseInterpolation(value, sourceSpan) { - const sourceInfo = sourceSpan.start.toString(); - try { - const ast = this._exprParser.parseInterpolation(value, sourceInfo, sourceSpan.start.offset, this._interpolationConfig); - if (ast) - this._reportExpressionParserErrors(ast.errors, sourceSpan); - this._checkPipes(ast, sourceSpan); - return ast; - } - catch (e) { - this._reportError(`${e}`, sourceSpan); - return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, sourceSpan.start.offset); - } - } - // Parse an inline template binding. ie `` - parseInlineTemplateBinding(tplKey, tplValue, sourceSpan, absoluteOffset, targetMatchableAttrs, targetProps, targetVars) { - const bindings = this._parseTemplateBindings(tplKey, tplValue, sourceSpan); - for (let i = 0; i < bindings.length; i++) { - const binding = bindings[i]; - if (binding.keyIsVar) { - targetVars.push(new ParsedVariable(binding.key, binding.name, sourceSpan)); - } - else if (binding.expression) { - this._parsePropertyAst(binding.key, binding.expression, sourceSpan, undefined, targetMatchableAttrs, targetProps); - } - else { - targetMatchableAttrs.push([binding.key, '']); - this.parseLiteralAttr(binding.key, null, sourceSpan, absoluteOffset, undefined, targetMatchableAttrs, targetProps); - } - } - } - _parseTemplateBindings(tplKey, tplValue, sourceSpan) { - const sourceInfo = sourceSpan.start.toString(); - try { - const bindingsResult = this._exprParser.parseTemplateBindings(tplKey, tplValue, sourceInfo, sourceSpan.start.offset); - this._reportExpressionParserErrors(bindingsResult.errors, sourceSpan); - bindingsResult.templateBindings.forEach((binding) => { - if (binding.expression) { - this._checkPipes(binding.expression, sourceSpan); - } - }); - bindingsResult.warnings.forEach((warning) => { this._reportError(warning, sourceSpan, ParseErrorLevel.WARNING); }); - return bindingsResult.templateBindings; - } - catch (e) { - this._reportError(`${e}`, sourceSpan); - return []; - } - } - parseLiteralAttr(name, value, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps) { - if (isAnimationLabel(name)) { - name = name.substring(1); - if (value) { - this._reportError(`Assigning animation triggers via @prop="exp" attributes with an expression is invalid.` + - ` Use property bindings (e.g. [@prop]="exp") or use an attribute without a value (e.g. @prop) instead.`, sourceSpan, ParseErrorLevel.ERROR); - } - this._parseAnimation(name, value, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps); - } - else { - targetProps.push(new ParsedProperty(name, this._exprParser.wrapLiteralPrimitive(value, '', absoluteOffset), ParsedPropertyType.LITERAL_ATTR, sourceSpan, valueSpan)); - } - } - parsePropertyBinding(name, expression, isHost, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps) { - let isAnimationProp = false; - if (name.startsWith(ANIMATE_PROP_PREFIX)) { - isAnimationProp = true; - name = name.substring(ANIMATE_PROP_PREFIX.length); - } - else if (isAnimationLabel(name)) { - isAnimationProp = true; - name = name.substring(1); - } - if (isAnimationProp) { - this._parseAnimation(name, expression, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps); - } - else { - this._parsePropertyAst(name, this._parseBinding(expression, isHost, valueSpan || sourceSpan, absoluteOffset), sourceSpan, valueSpan, targetMatchableAttrs, targetProps); - } - } - parsePropertyInterpolation(name, value, sourceSpan, valueSpan, targetMatchableAttrs, targetProps) { - const expr = this.parseInterpolation(value, valueSpan || sourceSpan); - if (expr) { - this._parsePropertyAst(name, expr, sourceSpan, valueSpan, targetMatchableAttrs, targetProps); - return true; - } - return false; - } - _parsePropertyAst(name, ast, sourceSpan, valueSpan, targetMatchableAttrs, targetProps) { - targetMatchableAttrs.push([name, ast.source]); - targetProps.push(new ParsedProperty(name, ast, ParsedPropertyType.DEFAULT, sourceSpan, valueSpan)); - } - _parseAnimation(name, expression, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps) { - // This will occur when a @trigger is not paired with an expression. - // For animations it is valid to not have an expression since */void - // states will be applied by angular when the element is attached/detached - const ast = this._parseBinding(expression || 'undefined', false, valueSpan || sourceSpan, absoluteOffset); - targetMatchableAttrs.push([name, ast.source]); - targetProps.push(new ParsedProperty(name, ast, ParsedPropertyType.ANIMATION, sourceSpan, valueSpan)); - } - _parseBinding(value, isHostBinding, sourceSpan, absoluteOffset) { - const sourceInfo = (sourceSpan && sourceSpan.start || '(unknown)').toString(); - try { - const ast = isHostBinding ? - this._exprParser.parseSimpleBinding(value, sourceInfo, absoluteOffset, this._interpolationConfig) : - this._exprParser.parseBinding(value, sourceInfo, absoluteOffset, this._interpolationConfig); - if (ast) - this._reportExpressionParserErrors(ast.errors, sourceSpan); - this._checkPipes(ast, sourceSpan); - return ast; - } - catch (e) { - this._reportError(`${e}`, sourceSpan); - return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, absoluteOffset); - } - } - createBoundElementProperty(elementSelector, boundProp, skipValidation = false, mapPropertyName = true) { - if (boundProp.isAnimation) { - return new BoundElementProperty(boundProp.name, 4 /* Animation */, SecurityContext.NONE, boundProp.expression, null, boundProp.sourceSpan, boundProp.valueSpan); - } - let unit = null; - let bindingType = undefined; - let boundPropertyName = null; - const parts = boundProp.name.split(PROPERTY_PARTS_SEPARATOR); - let securityContexts = undefined; - // Check for special cases (prefix style, attr, class) - if (parts.length > 1) { - if (parts[0] == ATTRIBUTE_PREFIX) { - boundPropertyName = parts[1]; - if (!skipValidation) { - this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, true); - } - securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, true); - const nsSeparatorIdx = boundPropertyName.indexOf(':'); - if (nsSeparatorIdx > -1) { - const ns = boundPropertyName.substring(0, nsSeparatorIdx); - const name = boundPropertyName.substring(nsSeparatorIdx + 1); - boundPropertyName = mergeNsAndName(ns, name); - } - bindingType = 1 /* Attribute */; - } - else if (parts[0] == CLASS_PREFIX) { - boundPropertyName = parts[1]; - bindingType = 2 /* Class */; - securityContexts = [SecurityContext.NONE]; - } - else if (parts[0] == STYLE_PREFIX) { - unit = parts.length > 2 ? parts[2] : null; - boundPropertyName = parts[1]; - bindingType = 3 /* Style */; - securityContexts = [SecurityContext.STYLE]; - } - } - // If not a special case, use the full property name - if (boundPropertyName === null) { - const mappedPropName = this._schemaRegistry.getMappedPropName(boundProp.name); - boundPropertyName = mapPropertyName ? mappedPropName : boundProp.name; - securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, mappedPropName, false); - bindingType = 0 /* Property */; - if (!skipValidation) { - this._validatePropertyOrAttributeName(mappedPropName, boundProp.sourceSpan, false); - } - } - return new BoundElementProperty(boundPropertyName, bindingType, securityContexts[0], boundProp.expression, unit, boundProp.sourceSpan, boundProp.valueSpan); - } - parseEvent(name, expression, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents) { - if (isAnimationLabel(name)) { - name = name.substr(1); - this._parseAnimationEvent(name, expression, sourceSpan, handlerSpan, targetEvents); - } - else { - this._parseRegularEvent(name, expression, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents); - } - } - calcPossibleSecurityContexts(selector, propName, isAttribute) { - const prop = this._schemaRegistry.getMappedPropName(propName); - return calcPossibleSecurityContexts(this._schemaRegistry, selector, prop, isAttribute); - } - _parseAnimationEvent(name, expression, sourceSpan, handlerSpan, targetEvents) { - const matches = splitAtPeriod(name, [name, '']); - const eventName = matches[0]; - const phase = matches[1].toLowerCase(); - if (phase) { - switch (phase) { - case 'start': - case 'done': - const ast = this._parseAction(expression, handlerSpan); - targetEvents.push(new ParsedEvent(eventName, phase, 1 /* Animation */, ast, sourceSpan, handlerSpan)); - break; - default: - this._reportError(`The provided animation output phase value "${phase}" for "@${eventName}" is not supported (use start or done)`, sourceSpan); - break; - } - } - else { - this._reportError(`The animation trigger output event (@${eventName}) is missing its phase value name (start or done are currently supported)`, sourceSpan); - } - } - _parseRegularEvent(name, expression, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents) { - // long format: 'target: eventName' - const [target, eventName] = splitAtColon(name, [null, name]); - const ast = this._parseAction(expression, handlerSpan); - targetMatchableAttrs.push([name, ast.source]); - targetEvents.push(new ParsedEvent(eventName, target, 0 /* Regular */, ast, sourceSpan, handlerSpan)); - // Don't detect directives for event names for now, - // so don't add the event name to the matchableAttrs - } - _parseAction(value, sourceSpan) { - const sourceInfo = (sourceSpan && sourceSpan.start || '(unknown').toString(); - const absoluteOffset = (sourceSpan && sourceSpan.start) ? sourceSpan.start.offset : 0; - try { - const ast = this._exprParser.parseAction(value, sourceInfo, absoluteOffset, this._interpolationConfig); - if (ast) { - this._reportExpressionParserErrors(ast.errors, sourceSpan); - } - if (!ast || ast.ast instanceof EmptyExpr) { - this._reportError(`Empty expressions are not allowed`, sourceSpan); - return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, absoluteOffset); - } - this._checkPipes(ast, sourceSpan); - return ast; - } - catch (e) { - this._reportError(`${e}`, sourceSpan); - return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, absoluteOffset); - } - } - _reportError(message, sourceSpan, level = ParseErrorLevel.ERROR) { - this.errors.push(new ParseError(sourceSpan, message, level)); - } - _reportExpressionParserErrors(errors, sourceSpan) { - for (const error of errors) { - this._reportError(error.message, sourceSpan); - } - } - // Make sure all the used pipes are known in `this.pipesByName` - _checkPipes(ast, sourceSpan) { - if (ast && this.pipesByName) { - const collector = new PipeCollector(); - ast.visit(collector); - collector.pipes.forEach((ast, pipeName) => { - const pipeMeta = this.pipesByName.get(pipeName); - if (!pipeMeta) { - this._reportError(`The pipe '${pipeName}' could not be found`, new ParseSourceSpan(sourceSpan.start.moveBy(ast.span.start), sourceSpan.start.moveBy(ast.span.end))); - } - else { - this._usedPipes.set(pipeName, pipeMeta); - } - }); - } - } - /** - * @param propName the name of the property / attribute - * @param sourceSpan - * @param isAttr true when binding to an attribute - */ - _validatePropertyOrAttributeName(propName, sourceSpan, isAttr) { - const report = isAttr ? this._schemaRegistry.validateAttribute(propName) : - this._schemaRegistry.validateProperty(propName); - if (report.error) { - this._reportError(report.msg, sourceSpan, ParseErrorLevel.ERROR); - } - } -} -class PipeCollector extends RecursiveAstVisitor$1 { - constructor() { - super(...arguments); - this.pipes = new Map(); - } - visitPipe(ast, context) { - this.pipes.set(ast.name, ast); - ast.exp.visit(this); - this.visitAll(ast.args, context); - return null; - } -} -function isAnimationLabel(name) { - return name[0] == '@'; -} -function calcPossibleSecurityContexts(registry, selector, propName, isAttribute) { - const ctxs = []; - CssSelector.parse(selector).forEach((selector) => { - const elementNames = selector.element ? [selector.element] : registry.allKnownElementNames(); - const notElementNames = new Set(selector.notSelectors.filter(selector => selector.isElementSelector()) - .map((selector) => selector.element)); - const possibleElementNames = elementNames.filter(elementName => !notElementNames.has(elementName)); - ctxs.push(...possibleElementNames.map(elementName => registry.securityContext(elementName, propName, isAttribute))); - }); - return ctxs.length === 0 ? [SecurityContext.NONE] : Array.from(new Set(ctxs)).sort(); -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const NG_CONTENT_SELECT_ATTR = 'select'; -const LINK_ELEMENT = 'link'; -const LINK_STYLE_REL_ATTR = 'rel'; -const LINK_STYLE_HREF_ATTR = 'href'; -const LINK_STYLE_REL_VALUE = 'stylesheet'; -const STYLE_ELEMENT = 'style'; -const SCRIPT_ELEMENT = 'script'; -const NG_NON_BINDABLE_ATTR = 'ngNonBindable'; -const NG_PROJECT_AS = 'ngProjectAs'; -function preparseElement(ast) { - let selectAttr = null; - let hrefAttr = null; - let relAttr = null; - let nonBindable = false; - let projectAs = ''; - ast.attrs.forEach(attr => { - const lcAttrName = attr.name.toLowerCase(); - if (lcAttrName == NG_CONTENT_SELECT_ATTR) { - selectAttr = attr.value; - } - else if (lcAttrName == LINK_STYLE_HREF_ATTR) { - hrefAttr = attr.value; - } - else if (lcAttrName == LINK_STYLE_REL_ATTR) { - relAttr = attr.value; - } - else if (attr.name == NG_NON_BINDABLE_ATTR) { - nonBindable = true; - } - else if (attr.name == NG_PROJECT_AS) { - if (attr.value.length > 0) { - projectAs = attr.value; - } - } - }); - selectAttr = normalizeNgContentSelect(selectAttr); - const nodeName = ast.name.toLowerCase(); - let type = PreparsedElementType.OTHER; - if (isNgContent(nodeName)) { - type = PreparsedElementType.NG_CONTENT; - } - else if (nodeName == STYLE_ELEMENT) { - type = PreparsedElementType.STYLE; - } - else if (nodeName == SCRIPT_ELEMENT) { - type = PreparsedElementType.SCRIPT; - } - else if (nodeName == LINK_ELEMENT && relAttr == LINK_STYLE_REL_VALUE) { - type = PreparsedElementType.STYLESHEET; - } - return new PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs); -} -var PreparsedElementType; -(function (PreparsedElementType) { - PreparsedElementType[PreparsedElementType["NG_CONTENT"] = 0] = "NG_CONTENT"; - PreparsedElementType[PreparsedElementType["STYLE"] = 1] = "STYLE"; - PreparsedElementType[PreparsedElementType["STYLESHEET"] = 2] = "STYLESHEET"; - PreparsedElementType[PreparsedElementType["SCRIPT"] = 3] = "SCRIPT"; - PreparsedElementType[PreparsedElementType["OTHER"] = 4] = "OTHER"; -})(PreparsedElementType || (PreparsedElementType = {})); -class PreparsedElement { - constructor(type, selectAttr, hrefAttr, nonBindable, projectAs) { - this.type = type; - this.selectAttr = selectAttr; - this.hrefAttr = hrefAttr; - this.nonBindable = nonBindable; - this.projectAs = projectAs; - } -} -function normalizeNgContentSelect(selectAttr) { - if (selectAttr === null || selectAttr.length === 0) { - return '*'; - } - return selectAttr; -} - -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -const BIND_NAME_REGEXP = /^(?:(?:(?:(bind-)|(let-)|(ref-|#)|(on-)|(bindon-)|(@))(.+))|\[\(([^\)]+)\)\]|\[([^\]]+)\]|\(([^\)]+)\))$/; -// Group 1 = "bind-" -const KW_BIND_IDX = 1; -// Group 2 = "let-" -const KW_LET_IDX = 2; -// Group 3 = "ref-/#" -const KW_REF_IDX = 3; -// Group 4 = "on-" -const KW_ON_IDX = 4; -// Group 5 = "bindon-" -const KW_BINDON_IDX = 5; -// Group 6 = "@" -const KW_AT_IDX = 6; -// Group 7 = the identifier after "bind-", "let-", "ref-/#", "on-", "bindon-" or "@" -const IDENT_KW_IDX = 7; -// Group 8 = identifier inside [()] -const IDENT_BANANA_BOX_IDX = 8; -// Group 9 = identifier inside [] -const IDENT_PROPERTY_IDX = 9; -// Group 10 = identifier inside () -const IDENT_EVENT_IDX = 10; -const TEMPLATE_ATTR_PREFIX = '*'; -const CLASS_ATTR = 'class'; -let _TEXT_CSS_SELECTOR; -function TEXT_CSS_SELECTOR() { - if (!_TEXT_CSS_SELECTOR) { - _TEXT_CSS_SELECTOR = CssSelector.parse('*')[0]; - } - return _TEXT_CSS_SELECTOR; -} -class TemplateParseError extends ParseError { - constructor(message, span, level) { - super(span, message, level); - } -} -class TemplateParseResult { - constructor(templateAst, usedPipes, errors) { - this.templateAst = templateAst; - this.usedPipes = usedPipes; - this.errors = errors; - } -} -class TemplateParser { - constructor(_config, _reflector, _exprParser, _schemaRegistry, _htmlParser, _console, transforms) { - this._config = _config; - this._reflector = _reflector; - this._exprParser = _exprParser; - this._schemaRegistry = _schemaRegistry; - this._htmlParser = _htmlParser; - this._console = _console; - this.transforms = transforms; - } - get expressionParser() { return this._exprParser; } - parse(component, template, directives, pipes, schemas, templateUrl, preserveWhitespaces) { - const result = this.tryParse(component, template, directives, pipes, schemas, templateUrl, preserveWhitespaces); - const warnings = result.errors.filter(error => error.level === ParseErrorLevel.WARNING); - const errors = result.errors.filter(error => error.level === ParseErrorLevel.ERROR); - if (warnings.length > 0) { - this._console.warn(`Template parse warnings:\n${warnings.join('\n')}`); - } - if (errors.length > 0) { - const errorString = errors.join('\n'); - throw syntaxError(`Template parse errors:\n${errorString}`, errors); - } - return { template: result.templateAst, pipes: result.usedPipes }; - } - tryParse(component, template, directives, pipes, schemas, templateUrl, preserveWhitespaces) { - let htmlParseResult = typeof template === 'string' ? - this._htmlParser.parse(template, templateUrl, { - tokenizeExpansionForms: true, - interpolationConfig: this.getInterpolationConfig(component) - }) : - template; - if (!preserveWhitespaces) { - htmlParseResult = removeWhitespaces(htmlParseResult); - } - return this.tryParseHtml(this.expandHtml(htmlParseResult), component, directives, pipes, schemas); - } - tryParseHtml(htmlAstWithErrors, component, directives, pipes, schemas) { - let result; - const errors = htmlAstWithErrors.errors; - const usedPipes = []; - if (htmlAstWithErrors.rootNodes.length > 0) { - const uniqDirectives = removeSummaryDuplicates(directives); - const uniqPipes = removeSummaryDuplicates(pipes); - const providerViewContext = new ProviderViewContext(this._reflector, component); - let interpolationConfig = undefined; - if (component.template && component.template.interpolation) { - interpolationConfig = { - start: component.template.interpolation[0], - end: component.template.interpolation[1] - }; - } - const bindingParser = new BindingParser(this._exprParser, interpolationConfig, this._schemaRegistry, uniqPipes, errors); - const parseVisitor = new TemplateParseVisitor(this._reflector, this._config, providerViewContext, uniqDirectives, bindingParser, this._schemaRegistry, schemas, errors); - result = visitAll$1(parseVisitor, htmlAstWithErrors.rootNodes, EMPTY_ELEMENT_CONTEXT); - errors.push(...providerViewContext.errors); - usedPipes.push(...bindingParser.getUsedPipes()); - } - else { - result = []; - } - this._assertNoReferenceDuplicationOnTemplate(result, errors); - if (errors.length > 0) { - return new TemplateParseResult(result, usedPipes, errors); - } - if (this.transforms) { - this.transforms.forEach((transform) => { result = templateVisitAll(transform, result); }); - } - return new TemplateParseResult(result, usedPipes, errors); - } - expandHtml(htmlAstWithErrors, forced = false) { - const errors = htmlAstWithErrors.errors; - if (errors.length == 0 || forced) { - // Transform ICU messages to angular directives - const expandedHtmlAst = expandNodes(htmlAstWithErrors.rootNodes); - errors.push(...expandedHtmlAst.errors); - htmlAstWithErrors = new ParseTreeResult(expandedHtmlAst.nodes, errors); - } - return htmlAstWithErrors; - } - getInterpolationConfig(component) { - if (component.template) { - return InterpolationConfig.fromArray(component.template.interpolation); - } - return undefined; - } - /** @internal */ - _assertNoReferenceDuplicationOnTemplate(result, errors) { - const existingReferences = []; - result.filter(element => !!element.references) - .forEach(element => element.references.forEach((reference) => { - const name = reference.name; - if (existingReferences.indexOf(name) < 0) { - existingReferences.push(name); - } - else { - const error = new TemplateParseError(`Reference "#${name}" is defined several times`, reference.sourceSpan, ParseErrorLevel.ERROR); - errors.push(error); - } - })); - } -} -class TemplateParseVisitor { - constructor(reflector, config, providerViewContext, directives, _bindingParser, _schemaRegistry, _schemas, _targetErrors) { - this.reflector = reflector; - this.config = config; - this.providerViewContext = providerViewContext; - this._bindingParser = _bindingParser; - this._schemaRegistry = _schemaRegistry; - this._schemas = _schemas; - this._targetErrors = _targetErrors; - this.selectorMatcher = new SelectorMatcher(); - this.directivesIndex = new Map(); - this.ngContentCount = 0; - // Note: queries start with id 1 so we can use the number in a Bloom filter! - this.contentQueryStartId = providerViewContext.component.viewQueries.length + 1; - directives.forEach((directive, index) => { - const selector = CssSelector.parse(directive.selector); - this.selectorMatcher.addSelectables(selector, directive); - this.directivesIndex.set(directive, index); - }); - } - visitExpansion(expansion, context) { return null; } - visitExpansionCase(expansionCase, context) { return null; } - visitText(text, parent) { - const ngContentIndex = parent.findNgContentIndex(TEXT_CSS_SELECTOR()); - const valueNoNgsp = replaceNgsp(text.value); - const expr = this._bindingParser.parseInterpolation(valueNoNgsp, text.sourceSpan); - return expr ? new BoundTextAst(expr, ngContentIndex, text.sourceSpan) : - new TextAst(valueNoNgsp, ngContentIndex, text.sourceSpan); - } - visitAttribute(attribute, context) { - return new AttrAst(attribute.name, attribute.value, attribute.sourceSpan); - } - visitComment(comment, context) { return null; } - visitElement(element, parent) { - const queryStartIndex = this.contentQueryStartId; - const elName = element.name; - const preparsedElement = preparseElement(element); - if (preparsedElement.type === PreparsedElementType.SCRIPT || - preparsedElement.type === PreparsedElementType.STYLE) { - // Skipping -
    -

    Surefire Report

    -
    -

    Summary


    - - - - - - - - - - - - - - -
    TestsErrors FailuresSkippedSuccess RateTime
    00000%0

    -

    Note: failures are anticipated and checked for with assertions while errors are unanticipated.


    -
    -
    -
    -
    -
    - - - diff --git a/target/test-classes/contexts/hsql-context.xml b/target/test-classes/contexts/hsql-context.xml deleted file mode 100644 index 0e1ec2eef039755bb68f9542a745806772e5cf22..0000000000000000000000000000000000000000 --- a/target/test-classes/contexts/hsql-context.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/target/test-classes/contexts/mem-context.xml b/target/test-classes/contexts/mem-context.xml deleted file mode 100644 index a37be3358a4bdc5d6e9e630b12210a2da842f9d2..0000000000000000000000000000000000000000 --- a/target/test-classes/contexts/mem-context.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/target/test-classes/datasets/dataset-add-pets.xml b/target/test-classes/datasets/dataset-add-pets.xml deleted file mode 100644 index afee7e05eac9cb0992ae46661bbf746e595d15d1..0000000000000000000000000000000000000000 --- a/target/test-classes/datasets/dataset-add-pets.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/target/test-classes/datasets/dataset-add.xml b/target/test-classes/datasets/dataset-add.xml deleted file mode 100644 index 4e7432a9668d40e303503b041c849f93b92b8f18..0000000000000000000000000000000000000000 --- a/target/test-classes/datasets/dataset-add.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/target/test-classes/datasets/dataset-delete-pets.xml b/target/test-classes/datasets/dataset-delete-pets.xml deleted file mode 100644 index b989f9ddec9be1bb88bfa9c08dac354c40a233ef..0000000000000000000000000000000000000000 --- a/target/test-classes/datasets/dataset-delete-pets.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/target/test-classes/datasets/dataset-delete.xml b/target/test-classes/datasets/dataset-delete.xml deleted file mode 100644 index f023ce0aaf0aa2e3f91c95da2bf4565b03d061fb..0000000000000000000000000000000000000000 --- a/target/test-classes/datasets/dataset-delete.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/target/test-classes/datasets/dataset-modify-pets.xml b/target/test-classes/datasets/dataset-modify-pets.xml deleted file mode 100644 index 0170c264fb7e13d9af9bcbef2b2cb82f89f5dea3..0000000000000000000000000000000000000000 --- a/target/test-classes/datasets/dataset-modify-pets.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/target/test-classes/datasets/dataset-modify.xml b/target/test-classes/datasets/dataset-modify.xml deleted file mode 100644 index 3140031aabfd7ccf3c2beedaf4e340cf8a89c6dc..0000000000000000000000000000000000000000 --- a/target/test-classes/datasets/dataset-modify.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/target/test-classes/datasets/dataset.dtd b/target/test-classes/datasets/dataset.dtd deleted file mode 100644 index a770b8e52b9067b7a859cf074fe3b9210fd0348e..0000000000000000000000000000000000000000 --- a/target/test-classes/datasets/dataset.dtd +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/target/test-classes/datasets/dataset.xml b/target/test-classes/datasets/dataset.xml deleted file mode 100644 index 71f1e02b912c6bcd6312cc983244e0439a5306e7..0000000000000000000000000000000000000000 --- a/target/test-classes/datasets/dataset.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/target/test-classes/db/hsqldb-drop.sql b/target/test-classes/db/hsqldb-drop.sql deleted file mode 100644 index 18f5517885b9692b020f0e18cd33180c1013a19d..0000000000000000000000000000000000000000 --- a/target/test-classes/db/hsqldb-drop.sql +++ /dev/null @@ -1,4 +0,0 @@ -DROP TABLE Pets IF EXISTS; -DROP TABLE People IF EXISTS; -DROP TABLE Users IF EXISTS; - diff --git a/target/test-classes/db/hsqldb.sql b/target/test-classes/db/hsqldb.sql deleted file mode 100644 index f1d5f56c82e83263ce8fe5f5342599f05147afcc..0000000000000000000000000000000000000000 --- a/target/test-classes/db/hsqldb.sql +++ /dev/null @@ -1,22 +0,0 @@ -CREATE TABLE people ( - id INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1) NOT NULL, - name VARCHAR(50) NOT NULL, - surname VARCHAR(100) NOT NULL, - PRIMARY KEY (id) -); - -CREATE TABLE users ( - login VARCHAR(100) NOT NULL, - password VARCHAR(64) NOT NULL, - role VARCHAR(5) NOT NULL, - PRIMARY KEY (login) -); - -CREATE TABLE pets ( - id INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1) NOT NULL, - name varchar(50) NOT NULL, - kind varchar(100) NOT NULL, - owner INTEGER NOT NULL, - FOREIGN KEY (owner) REFERENCES people(id) ON DELETE CASCADE, - PRIMARY KEY (id) -); \ No newline at end of file